pcap:检测radiotap header是否存在

问题描述 投票:0回答:2

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

wifi pcap tcpdump
2个回答
0
投票

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

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


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;

这是带有无线电 Tap 标头的 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

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

© www.soinside.com 2019 - 2024. All rights reserved.