gopacket 在 windows 上面遇到的问题
发布时间:2020-12-14 05:33:38 所属栏目:Windows 来源:网络整理
导读:我按照网上的方法进行使用 OpenLive 抓包,发现并不行,报错 error open adapter 啥啥啥。 经过调试发现根本找不到这个网卡,需要用 DeviceNPF_ 开头的网卡设备名,我去看了 scapy 的实现,发现使用的是 winpcap/npcap 驱动的 pcap_findalldevs 这个方法,
我按照网上的方法进行使用 OpenLive 抓包,发现并不行,报错 error open adapter 啥啥啥。 经过调试发现根本找不到这个网卡,需要用 DeviceNPF_ 开头的网卡设备名,我去看了 scapy 的实现,发现使用的是 winpcap/npcap 驱动的 pcap_findalldevs 这个方法,我去 gopacket 里面找了下,发现有个方法 pcap.FindAllDevs() 可以得到所有的网卡信息。 但是用这个方法得到的数据里面的 windows 自带的网卡的 Description 描述字段上就只有个 microsoft,压根不知道是什么东西,结合 net.interifaces() 方法中的 ip 与之前得到的数据对应起来,得到了一个简陋的方案 直接上代码 package main import ( "fmt" "log" "net" "github.com/google/gopacket/pcap" ) type IfaceInfo struct { NPFName string Description string NickName string IPv4 string } func get_if_list() []IfaceInfo { var ifaceInfoList []IfaceInfo // 得到所有的(网络)设备 devices,err := pcap.FindAllDevs() if err != nil { log.Fatal(err) } interface_list,err := net.Interfaces() if err != nil { log.Fatal(err) } for _,i := range interface_list { byName,err := net.InterfaceByName(i.Name) if err != nil { log.Fatal(err) } address,err := byName.Addrs() ifaceInfoList = append(ifaceInfoList,IfaceInfo{NickName: byName.Name,IPv4: address[1].String()}) } // 打印设备信息 // fmt.Println("Devices found:") // for _,device := range devices { // fmt.Println("nName: ",device.Name) // fmt.Println("Description: ",device.Description) // fmt.Println("Devices addresses: ",device.Description) // for _,address := range device.Addresses { // fmt.Println("- IP address: ",address.IP) // fmt.Println("- Subnet mask: ",address.Netmask) // } // } var vaildIfaces []IfaceInfo for _,device := range devices { for _,address := range device.Addresses { for _,ifaceinfo := range ifaceInfoList { if strings.Contains(ifaceinfo.IPv4,address.IP.String()) { vaildIfaces = append(vaildIfaces,IfaceInfo{NPFName: device.Name,Description: device.Description,NickName: ifaceinfo.NickName,IPv4: ifaceinfo.IPv4}) break } } } } return vaildIfaces } func main() { fmt.Println(get_if_list()) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-7 – 如何手动将程序集复制到GAC中?
- Windows平台下Doxygen+GraphViz+HtmlHelp
- 为Winthreads for XP实现CRITICAL_SECTIONs的条件变量
- 在Windows上安装Haskell,cabal配置
- windows – 删除和创建目录的奇怪情况
- 如何实时监控Windows日志文件?
- windows-xp – 在Windows XP中自动安装软件
- windows – 如何使用schtasks.exe安排一个月中的多天任务?
- windows – LDIFde.exe和CSVde.exe之间的区别
- windows-phone-7 – Windows Phone 7仿真器位置数据格式