我希望有人能帮助我...问题在于合并多个 .pcap 文件。最近 - 大约一周前,我使用 mergecap 将多个 pcap 文件合并为一个。一切正常。
以下是我的做法:
mergecap -w 28_30.11.dump.pcap testdump.pcap17 testdump.pcap19 testdump.pcap21 testdump.pcap23 testdump.pcap25
这是head
输出文件(请注意右侧列中的 ASCII):
00000000 D4 C3 B2 A1 02 00 04 00 00 00 00 00 00 00 00 00 FF FF 00 00 01 00 00 00 32 38 B3 50 7F 11 09 00 ........................28.P....
00000020 3C 00 00 00 3C 00 00 00 00 1F D0 03 A4 9C 00 25 9C 8B F5 3E 08 06 00 01 08 00 06 04 00 01 00 25 <...<..........%...>...........%
00000040 9C 8B F5 3E 01 00 00 01 00 00 00 00 00 00 01 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...>............................
00000060 00 00 00 00 32 38 B3 50 89 11 09 00 2A 00 00 00 2A 00 00 00 00 25 9C 8B F5 3E 00 1F D0 03 A4 9C ....28.P....*...*....%...>......
00000080 08 06 00 01 08 00 06 04 00 02 00 1F D0 03 A4 9C 01 00 00 02 00 25 9C 8B F5 3E 01 00 00 01 39 38 .....................%...>....98
000000A0 B3 50 C6 78 05 00 57 00 00 00 57 00 00 00 00 25 9C 8B F5 3E 00 1F D0 03 A4 9C 08 00 45 00 00 49 .P.x..W...W....%...>........E..I
000000C0 8F 7F 40 00 40 11 81 50 01 00 00 02 3E E9 E9 E9 A1 5A 00 35 00 35 44 D5 9A FF 01 00 00 01 00 00 ..@[email protected]....>....Z.5.5D.........
一切都很棒。但是……现在当我对任何捕获的文件执行相同操作并使用命令时:
mergecap -w test3.pcap testdump.pcap133 testdump.pcap134 testdump.pcap135
输出文件在文件顶部包含附加信息(在右侧的 ASCII 列中清晰可见):
00000000 0A 0D 0D 0A 98 00 00 00 4D 3C 2B 1A 01 00 00 00 FF FF FF FF FF FF FF FF 01 00 65 00 46 69 6C 65 ........M<+...............e.File
00000020 20 63 72 65 61 74 65 64 20 62 79 20 6D 65 72 67 69 6E 67 3A 20 0A 46 69 6C 65 31 3A 20 74 65 73 created by merging: .File1: tes
00000040 74 64 75 6D 70 2E 70 63 61 70 31 33 33 20 0A 46 69 6C 65 32 3A 20 74 65 73 74 64 75 6D 70 2E 70 tdump.pcap133 .File2: testdump.p
00000060 63 61 70 31 33 34 20 0A 46 69 6C 65 33 3A 20 74 65 73 74 64 75 6D 70 2E 70 63 61 70 31 33 35 20 cap134 .File3: testdump.pcap135
00000080 0A 00 00 00 04 00 08 00 6D 65 72 67 65 63 61 70 00 00 00 00 98 00 00 00 01 00 00 00 20 00 00 00 ........mergecap............ ...
伙计们,我完全不知道 - 任何建议(除了从文件中删除前几个字节)都将非常感谢。
操作系统:Backtrack 5 R2(Ubuntu衍生产品)
uname: Linux z 3.2.6 #1 SMP 星期五 2 月 17 日 10:40:05 EST 2012 i686 GNU/Linux
tcpdump 版本 4.3.0
libpcap 版本 1.0.0
附加信息:
ls /usr/local/bin/mergecap
-rwxr-xr-x 1 root root 37572 2012-10-31 08:09 /usr/local/bin/mergecap
~ > md5sum /usr/local/bin/mergecap
e7dde01867c1e3f84dc48e5dae266f67 /usr/local/bin/mergecap
这对我来说为什么是个问题?
因为我无法再读取合并的文件tcpdump -r
。Tcpdump 返回错误,表示转储文件格式不正确。
答案1
我想你一定做了一些奇怪的事情,它对我来说似乎效果很好:
$ head oo.pcap.merged | hexdump -C
00000000 0a 0d 0d 0a 84 00 00 00 4d 3c 2b 1a 01 00 00 00 |........M<+.....|
00000010 ff ff ff ff ff ff ff ff 01 00 52 00 46 69 6c 65 |..........R.File|
00000020 20 63 72 65 61 74 65 64 20 62 79 20 6d 65 72 67 | created by merg|
00000030 69 6e 67 3a 20 0a 46 69 6c 65 31 3a 20 61 61 61 |ing: .File1: aaa|
00000040 61 2e 70 63 61 70 20 0a 46 69 6c 65 32 3a 20 62 |a.pcap .File2: b|
00000050 62 62 62 62 2e 70 63 61 70 20 0a 46 69 6c 65 33 |bbbb.pcap .File3|
00000060 3a 20 63 63 63 63 63 2e 70 63 61 70 20 0a 00 00 |: ccccc.pcap ...|
00000070 04 00 08 00 6d 65 72 67 65 63 61 70 00 00 00 00 |....mergecap....|
因此,它显示了您描述的相同行为,但是当我尝试在文件上使用 tcpdump 时,它似乎有效:
$ tcpdump -r oo.pcap.merged | head
reading from file oo.pcap.merged, link-type EN10MB (Ethernet)
然后正常继续369行。
tcpdump 版本 4.3.0
Mergecap 1.8.0
答案2
好的。我找到了解决方案,但没有找到原因。
我会与未来遭遇这场不幸的“受害者”分享它;)
作为一个暗示我要补充一点:最近我所做的apt-get update & upgrade
事情可能以某种方式影响了我的系统,但说实话,我不知道它会如何以及为什么会影响合并帽。
解决方案是手动指定mergecap
输出文件类型。默认情况下应该是 libpcap,但我的版本似乎mergecap
突然切换到其他类型的输出文件并默认使用其他类型。
所以如果我mergecap -F libpcap -w out.pcap test1.pcap test2.pcap
现在使用 - 一切都会正常。输出文件的开头没有文件列表或其他信息,tcpdump 可以正确读取文件 - 太棒了!
答案3
“0a 0d 0d 0a”是pcapng格式的头文件。第二个文件是pcapng格式的。
mergecap 接受 pcap 或 pcapng 格式的文件。更新后的 libpcap 看起来是罪魁祸首。