如何在pcap文件的原始字节中检测radiotap数据的存在与否? 我不是在使用libpcap而是自己检查有效负载。 在我看来,我可以使用包含此功能的tcpdump创建一个新文件,但如果我给出的文件可能有也可能没有此功能,那么就无法确定原始字节是否包含它。我唯一想到的是在pcap数据中查找incl_len和orig_len中的字节数差异。
答案 0 :(得分:0)
通过检查pcap文件头中的链接层头类型;如果它是127,那么你有radiotap头,后面是802.11头。
pcap文件头中的链接层头类型(以及pcap-ng文件中接口描述块中的链接层头类型)的值是the tcpdump.org list of link-layer header type values中给出的值之一。
答案 1 :(得分: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
当然要跟踪我们的字节顺序:)