golang抓包 gopacket使用记录

背景

使用谷歌的包github.com/google/gopacket 可以用golang实现网络抓包
这里记录了一些使用过程中的问题 以及解决方法
备忘 也欢迎大家提出改进意见

问题

  1. 由于gopacket是基于libpcap(数据包捕获函数库)的,所以在一台服务器上使用gopacket必须先安装libpcap
sudo apt-get install libpcap-dev

如果想要集成到自己服务的deb包中 当然可以将这个包包含进去
我这里的处理方法是 找到缺失文件 在安装自己的deb包过程中将缺失文件复制到了目标服务器内
这里使用了gopacket之后的服务启动后会收到如下报警

error while loading shared libraries: libpcap.so.0.8: cannot open...

我在本地找到了这个文件
在这里插入图片描述
复制了这里的1.5.3 重命名为0.8放进了deb包中
验证可行

2.抓取的数据非实时 有一定延时
使用pcap.OpenLive()函数生成了handle
定义gopacket.NewPacketSource(handle, handle.LinkType())为packetSource
在packetSource.Packets()的过程中会有一定的延时 并没有实时获取抓包信息

查看godoc文档 https://www.godoc.org/github.com/google/gopacket/pcap#Handle
发现func (*InactiveHandle) SetImmediateMode 可以设置实时获取
将handle变成通过InactiveHandle.Activate()获取
验证可行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值