从pypcapfi中的TCP头获取ByteArray

2024-03-29 12:52:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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”的调试器结果屏幕截图:

Screenshot for debugger result for the variable "packet"

在这个图书馆里甚至可以这样做吗?在


Tags: 对象fromimport数据结构packetopensf数据包
1条回答
网友
1楼 · 发布于 2024-03-29 12:52:17

标头的bytearray无法直接访问。解析头中的各个字段,整个数据包都可用:

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())

相关问题 更多 >