0

如何检测 pcap 文件的原始字节中是否存在 radiotap 数据?我没有使用 libpcap,而是自己检查有效负载。在我看来,我可以使用包含此功能的 tcpdump 创建一个新文件,但如果我得到一个可能具有或不具有此功能的文件,则无法确定原始字节是否包含它。我唯一想到的是寻找 pcap 数据中 incl_len 和 orig_len 中字节数的差异。

4

2 回答 2

0

通过检查 pcap 文件头中的链路层头类型;如果是 127,那么您有 radiotap 标头,后跟 802.11 标头。

pcap 文件头中的链路层头类型(以及 pcap-ng 文件中接口描述块中的链路层头类型)的值是tcpdump.org 链路层列表中给出的值之一标头类型值

于 2013-09-05T07:18:06.870 回答
0

数据链接类型包含在 pcap 文件头中。

WireShark Doc中,您可以看到数据链接类型在字节 21-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;

这是一个带有无线电分接头头的 pcap 文件头示例

0xd4 0xc3 0xb2 0xa1 
0x02 0x00 0x04 0x00
0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 
0xff 0xff 0x00 0x00 
0x7f 0x00 0x00 0x00   --> 0x7f = 127 = LINKTYPE_IEEE802_11_RADIOTAP
0x0d 0x06 0x5c 0x4a 
0xee 0x1a 0x02 0x00 
0xac 0x00 0x00 0x00 
0xac 0x00 0x00 0x00

而在下面的另一个示例中,我们有另一种链路层类型

0xd4 0xc3 0xb2 0xa1 
0x02 0x00 0x04 0x00 
0x00 0x00 0x00 0x00 
0x00 0x00 0x00 0x00 
0xff 0xff 0x00 0x00 
0x69 0x00 0x00 0x00   --> 0x69 = 105 = LINKTYPE_IEEE802_11
0x3a 0xcb 0x38 0x56 
0xc5 0x73 0x00 0x00 
0xd4 0x00 0x00 0x00 
0xd4 0x00 0x00 0x00

当然要跟踪我们的字节顺序:)

于 2015-12-09T13:01:00.377 回答