Golang案例开发之gopacket抓包入门(1)

文章目录


前言

说起网络抓包,我们一定听过大名鼎鼎的Tcpdump和WireShark。他们分别是Linux平台和Windows平台的抓包工具。

Wireshark抓包工具,其底层抓包库是npcap(以前是winpcap);

Tcpdump,其抓包库是libpcap;


一、gopacket是什么?

gopacket库可以说是libpcap和npcap的go封装,提供了更方便的go语言操作接口。

项目地址:项目地址

项目文档:项目文档

二、gopacket前提

在使用gopacket包时,首先要确保在windows平台下安装了npcap或winpcap,或者是在linux平台下安装了libpcap库。

npcap下载地址:https://nmap.org/npcap/

libpcap下载地址:https://www.tcpdump.org/

下载自己电脑对应的操作系统版本的库

我们本次是在Centos操作系统下进行。

安装libpcap

bash 复制代码
# yum 安装
yum install libpcap libpcap-devel

# 查看安装
rpm -qa | grep libpcap

安装gopacket

bash 复制代码
go get github.com/google/gopacket

二、实践 枚举主机上网络设备的接口

1、代码

代码如下(示例):

go 复制代码
package main

import (
	"fmt"
	"log"

	"github.com/google/gopacket/pcap"
)

func main() {
	devices, err := pcap.FindAllDevs()
	if err != nil {
		log.Fatal(err)
	}
	for _, device := range devices {
		// fmt.Printf("Device: %v ", device)
		fmt.Printf("Device NAME: %v \n", device.Name)
		// fmt.Printf("Device Description: %v \n", device.Description)
		// fmt.Printf("Device Flags: %v \n", device.Flags)
		// fmt.Printf("Device Addresses: %v \n", device.Addresses)
		for _, address := range device.Addresses {
			fmt.Printf("IP NAME: %v \n", address.IP)
		}
	}
}

2、结果

代码如下(示例):

bash 复制代码
[root@work gopacket]# go run day01/main.go 
Device NAME: docker0 
IP NAME: 172.17.0.1 
Device NAME: nflog 
Device NAME: nfqueue 
Device NAME: usbmon1 
Device NAME: usbmon2 
Device NAME: ens33 
IP NAME: 192.168.37.100 
IP NAME: fe80::28eb:debf:57bc:2980 
Device NAME: any 
Device NAME: lo 
IP NAME: 127.0.0.1 
IP NAME: ::1 

文档

我们可以打开gopacket下面的pcap查看具体的定义:
pcap


总结

本节,主要是搭建下开发环境,尝试获取网络设备的接口。下一节,尝试在一个网络设备上抓包。

相关推荐
灯澜忆梦38 分钟前
【Docker】#5 | 网络配置
网络·docker·容器
程序喵大人42 分钟前
【C++入门】编译链接模型 - 07 链接器怎样把符号对上号
开发语言·c++·编译器·编译链接·链接器
微三云 - 廖会灵 (私域系统开发)1 小时前
供应链系统实战:多渠道订单聚合与分布式库存一致性方案总结
开发语言·分布式·php
学逆向的1 小时前
C 数据溢出与精度丢失
c语言·开发语言·网络安全
xixiaoyunya1 小时前
监控网页插件异常:用 HTTP 探针做第三方依赖的“外视”监测
网络·网络协议·http
霸道流氓气质2 小时前
AgentFlow 入门与实战:Task-Based 并发、EWMA 动态调度与四道门禁的 Java 生产级编排
java·开发语言
是真的小外套2 小时前
第14章:恶意代码防范技术原理与应用
网络·网络安全
虎头金猫2 小时前
从上传PPT到观众远程打开互动页面:Claper在CentOS 7上的Docker部署、互动组件设置与固定访问地址实战
linux·运维·网络·人工智能·docker·centos·powerpoint
weixin_511840473 小时前
2026年10月14日 Cisco and Nvidia 联合 USFP 调研报告
网络·人工智能·市场分析
释厄6233 小时前
错误无误公理——错误正确本同源都迭代定律——逆转有价值
android·开发语言·kotlin