美文网首页
gopacket 抓包和httpassembly样例分析

gopacket 抓包和httpassembly样例分析

作者: asmcos | 来源:发表于2018-09-13 12:01 被阅读0次

    我执行的环境是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样例分析

          本文链接:https://www.haomeiwen.com/subject/nllwgftx.html