gopacket 抓包和httpassembly样例分析

我执行的环境是Mac OSX

例子代码地址:
main.go

此代码例子是展示 gopacket 和pcap 和tcpassembly。
gopacket的pcap是调用的c库libpcap。

原始代码片段1

var iface = flag.String("i", "eth0", "Interface to get packets from")

我在Mac下面网卡名称改成: en0。
这个含义是从 eth0(我的是en0)网卡抓包。

代码片段2

var snaplen = flag.Int("s", 1600, "SnapLen for pcap packet capture")
var filter = flag.String("f", "tcp and dst portrange 80-443", "BPF filter for pcap")

源代码只监听TCP 80端口,我改成了80--443;
因为我没有找到设置80,443两个端口的方法,pcap提供监听一个范围。
我想监听http和https。

代码片段3

                handle, err = pcap.OpenLive(*iface, int32(*snaplen), true, pcap.BlockForever)

实时监听网卡

      if err := handle.SetBPFFilter(*filter); err != nil {

只监听 en0 80-443 端口

       packetSource := gopacket.NewPacketSource(handle, handle.LinkType())
        packets := packetSource.Packets()

读取packet。通过for +select 循环读取,并用 assembler处理。

                       tcp := packet.TransportLayer().(*layers.TCP)
                        assembler.AssembleWithTimestamp(packet.NetworkLayer().NetworkFlow(), tcp, packet.Metadata().Timestamp)

你可能感兴趣的:(gopacket 抓包和httpassembly样例分析)