【问题标题】:Getting ByteArray from TCP Header in pypcapfile从 pypcapfile 中的 TCP Header 获取 ByteArray
【发布时间】:2017-07-22 23:14:22
【问题描述】:

我想单独解析 TCP 数据包,而不使用 PCAPLib 自己的数据结构。因此,我需要获取 TCP 标头的字节数组。

from pcapfile import savefile

capfile = open('delta_capture.pcap')
sf = savefile.load_savefile(capfile)

for packet in sf.packets:
    print packet.timestamp
    print packet.packet
    print packet.header # Returns a library object, I need the bytearray instead, as I want to use my own data structure and parse.

capfile.close()

我尝试调试和检查对象结构,但看不到任何将实际字节存储在 TCP 标头中的对象。

变量“packet”的调试器结果截图:

在这个库中甚至可以这样做吗?

【问题讨论】:

    标签: python tcp pcap


    【解决方案1】:

    标头的bytearray 不可直接访问。解析header中的各个字段,可以得到整个数据包:

    for packet in sf.packets:
        print(packet.timestamp)
        print(packet.packet)
    
        # show header fields
        print(packet.header.contents.magic)          # file magic number
        print(packet.header.contents.major)          # major version number
        print(packet.header.contents.minor)          # minor version number
        print(packet.header.contents.tz_off)         # timezone offset
        print(packet.header.contents.ts_acc)         # timestamp accuracy
        print(packet.header.contents.snaplen)        # snapshot length
        print(packet.header.contents.ll_type)        # link layer header type
        print(packet.header.contents.byteorder)      # byte order specifier
        print(packet.header.contents.ns_resolution)  # nanosecond resolution
    
        # show entire packet
        print(packet.raw())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      相关资源
      最近更新 更多