Python - 获取数据包的偏移量(dpkt)

时间:2013-11-06 10:53:54

标签: python

我有一个示例pcap文件,我需要在列表中存储每个数据包的偏移量。 如果我这样做:

for ts, pkt in dpkt.pcap.Reader(f):
    mylist.append(f.tell())

我得到列表中的第一个值为'114',实际上是第二个数据包的偏移量。我想在第一次迭代中,文件指针在tspkt中存储值后立即移动到第二个数据包。

有没有办法正确地获得数据包的偏移?

另一种方法可能是,如果Pcap文件的全局标题具有固定大小,那么我可以简单地将该值用作第一个值。

1 个答案:

答案 0 :(得分:0)

Pcap文件的全局标头具有24字节的固定大小。全局标题的结构如下:

    typedef struct pcap_hdr_s {
        guint32 magic_number;   /* magic number */
        guint16 version_major;  /* major version number */
        guint16 version_minor;  /* minor version number */
        gint32  thiszone;       /* GMT to local correction */
        guint32 sigfigs;        /* accuracy of timestamps */
        guint32 snaplen;        /* max length of captured packets, in octets */
        guint32 network;        /* data link type */
} pcap_hdr_t;

您可以参考http://wiki.wireshark.org/Development/LibpcapFileFormat#Global_Header了解详情。