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仿真器位置数据格式
