我编写了一个程序,可以创建命名管道,然后将数据包写入其中,然后使用wireshark从中读取(将命名管道作为接口 - > wireshark -k -i tmp / myfifo)。以下是已发送到管道的字节列表。
D4 C3 B2 A104 0008 0000 00 00 0000 00 00 00FF FF 00 0001 00 00 00AA 77 9F 4790 A2 04 004d000000 4d00000000 00 00 00 00 0000 00 00 00 00 0008 004500003f00 0040 00 403A3c837f 00 00 017f 00 00 01A0 0100 0148 69 20 74 68 69 73 20 69 73 20 5061 72 76 61 74 68 69 20 66 72 6f 6d20 56 49 54 20 55 6e 69 76 65 72 7369 74 79
D4C3B2A1 0400 0800 00000000 00000000 FFFF0000 01000000
- 全球标题为AA779F47 90A20400 4d000000 4d000000
-packet标题为00 00 00 00 00 0000 00 00 00 00 00 08 00
-ethernet标题为4500 003f 00 00 40 00 40 3A3c837f 00 00 017f 00 00 01
-ip标题> 9B 01 00 01
-icmp标题为48 69 20 74 68 69 73 20 69 73 20 5061 72 76 61 74 68 69 20 66 72 6f 6d20 56 49 54 20 55 6e 69 76 65 72 7369 74 79
- 最后是消息
我尝试通过将十六进制格式及其ASCII字符串代码发送到接口(管道)来打开wireshark。 但在这两种情况下,一旦我打开wireshark,就会提示它是" 无法识别的libpcap格式"。 根据下面链接中的libpcap格式,字节为框架
[1] Wireshark的Libpcap文件格式:https://wiki.wireshark.org/Development/LibpcapFileFormat [2]用于生成pcap文件的示例python代码: http://www.codeproject.com/Tips/612847/Generate-a-quick-and-easy-custom-pcap-file-using-P
我应该发送什么才能让wireshark嗅探?
答案 0 :(得分:2)
如果我们查看the man page for the pcap file format,我们发现你需要发送一个字节序列,所有多字节整数值都按照机器的字节顺序写出字节流:
LINKTYPE_
values的4字节链路层标头类型值。因此,如果你的机器是小端的 - 任何带有x86兼容处理器的机器都是(即32位IA-32或64位x86-64,AMD或Intel或......),因此,如果您在PC或基于Intel的Mac上执行此操作,则您的计算机是小端的 - 字节序列将用于捕获具有微秒分辨率的时间戳,并且数据包是以太网数据包,每个数据包都以以太网头,以:
开头D4 C3 B2 A1 (magic number)
00 02 (major version number)
00 04 (minor version number)
00 00 00 00 (time zone offset)
00 00 00 00 (time stamp accuracy)
00 04 00 00 (snapshot length = 262144)
00 00 00 01 (link-layer header type value, LINKTYPE_ETHERNET)
然后,在那之后,你会为每个数据包写出一个包含字节的字节流,其中所有多字节整数值都按照机器的字节顺序写出字节流,包头:
然后将包含分组数据的原始字节,没有填充。