0

サンプルの pcap ファイルがあり、各パケットのオフセットをリストに保存する必要があります。私がこれを行う場合:

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

リストの最初の値を「114」として取得しますが、これは実際には 2 番目のパケットのオフセットです。最初の反復では、ファイル ポインタが と に値を格納するとすぐに 2 番目のパケットに移動したと思い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 に答える