我有一个示例pcap文件,我需要在列表中存储每个数据包的偏移量。 如果我这样做:
for ts, pkt in dpkt.pcap.Reader(f):
mylist.append(f.tell())
我得到列表中的第一个值为'114',实际上是第二个数据包的偏移量。我想在第一次迭代中,文件指针在ts
和pkt
中存储值后立即移动到第二个数据包。
有没有办法正确地获得数据包的偏移?
另一种方法可能是,如果Pcap文件的全局标题具有固定大小,那么我可以简单地将该值用作第一个值。
答案 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了解详情。