0

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

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

我将列表中的第一个值设为“114”,这实际上是第二个数据包的偏移量。我想在第一次迭代中,文件指针一旦将值存储在ts和中,就会移动到第二个数据包pkt

有没有办法正确获取数据包的偏移量?

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

4

1 回答 1

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了解更多详情。

于 2013-11-06T13:30:47.013 回答