PCAP Repair Tutorial (pcapfix) - f00ls bl0ghttps://f00l.de/blog/pcap-repair-tutorial-pcapfix/
PCAP 修复教程 (pc
PCAP 修复教程 (pcapfix)
发表于2012 年 3 月 2 日 通过 拉弗
本文档描述了如何手动修复 PCAP 文件或如何解决此类问题。如果您不想手动修复文件,也可以使用“ pcapfix ”工具。
1.打开故障PCAP并分析错误代码
在此示例中,使用了 file1.pcap。
PCAP 修复教程 - Wireshark 损坏的 PCAP 文件
此 PCAP 文件的格式无法识别,乍一看表明文件头有问题。
2. 创建您自己的 PCAP 并将其与有故障的 PCAP 进行比较
首先,您创建自己的新 PCAP 文件“file2.pcap”,例如使用 tcpdump。
接下来,跳转到文件的开头并检查第一个数据包。
这里的开头是 HEX:FF FF FF FF FF FF 00 30 05 7C D2 4A 08 06
这些是以太网报头中的 MAC 地址。
在此之前,数据包头仍然有 16 个字节,在 Wireshark 中不显示。但是,您应该记住这一点!
接下来你在Hex Editor的file2.pcap中比较或查找这些HEX值。这些值可以在文件开头相对找到。
只有 40 个字节仍然是前缀。16 个字节确定第一个数据包的数据包头,24 个字节构成文件的全局头。
全局标题: D4 C3 B2 A1 02 00 04 00 00 00 00 00 00 00 00 00 FF FF 00 00
01 00 00 00 E9 80 4C 4F F7 34 03 00 2A 00 00 00 2A 00 00 00
现在使用错误文件“file1.pcap”重复完整的步骤。
许多FF可能指向第一个数据包的MAC地址。前面的 16 个字节因此确定了数据包头,而全局头完全丢失了。
3. 在错误的 PCAP 文件中插入全局头文件
现在,要修复全局头文件,我们只需将工作 PCAP 文件中的 24 字节头文件粘贴到损坏的文件中。在这样做时,我们接受诸如最大数据包长度之类的信息也从我们复制的全局标头中接管。
完成此步骤后,将文件另存为"file3.pcap"。
宾果游戏,现在 Wireshark 可以识别 file3.pcap 并可以打开它。
但是如果出现其他错误信息会怎样?
4.分析其他错误信息
此错误表明 Wireshark 无法识别特定数据包,因为它大于允许的 65535 字节。结果,Wireshark 会打开 PCAP 文件,但不会完全打开,因为它会在损坏的数据包处停止。
现在必须检查这个包。
5.查找坏包
为此,请跳转到 Wireshark 中的最后一个数据包。
记住最后 8 个字节(02 04 05 B4 01 01 CA BC)并在十六进制编辑器的 file3.pcap 中查找它们。
下一个标头在最后一个识别的数据包 (SYN/ACK) 之后立即开始。
在:3E 3C 60 50 ......
6.修复损坏的包
在本例中,故障数据包是 HTTP 数据包,可以通过 GET 请求识别。现在你有几个选项来处理这个有问题的包。
6.1。删除包
为此,您只需查看请求以哪个 HTTP 标头结束。
=> 接受字符集:windows-949,utf-8;q=0.7,*;q=0.3\r\n\r\n
41 63 63 65 70 74 2D 43 68 61 72 73 65 74 3a 20 77 69 6e 64 6f 77 73 2d 39 34
39 2c 75 74 66 2d 38 3b 71 3d 30 22 32c 2a 3b 71 3d 30 22 33 0d 0a 0d 0a 0d 0A
所以你有包的开头和结尾,然后你可以简单地删除它们。
6.2. 将包推入上一个
为此,最后一个运行的 SYN/ACK 包的包长度被改变,GET 请求的内容因此被推入 SYN/ACK。为此,您必须将 GET 数据包的长度 (0x01E7 = 487) 添加到 SYN/ACK (0x3E = 62) 的长度,并替换 D24-D28 位置的数据包长度或捕获长度(数据包标头的)或 D29-D0B 。
删除:0x3E (62) = SYN/ACK 的原始长度
设置:0x0225 (549 = 62+487) = SYN/ACK + GET 请求的长度
整个事情以网络字节顺序指定,如下所示:
6.3. Spoof Packet 包头
在第三个选项中,简单地重新创建 GET 请求的标头并将其插入到最后一个完整数据包 (SYN/ACK) 之后。如前所述,包头由 16 个字节组成(网络字节顺序的信息):
4 个字节用于时间戳,以秒为单位 F4 8D 3B 4F
4 个字节用于时间戳,以纳秒为单位 1C 9E 00 00
4 个字节用于捕获长度 3E 00 00 00
4 个字节用于原始长度 3E 00 00 00
在这个例子中,SYN/ACK 的数据包头被简单地复制,只有数据包长度或捕获长度被调整为 GET 数据包。
然后 GET 数据包具有相同的时间戳,但这并不重要。
在步骤 6.2。已经提到了 GET 数据包的长度(0x01E7 = 487)。
这样您就可以得到以下数据包标头:
F4 8D 3B 4F 1C 9E 00 00 E7 01 00 00 E7 01 00 00
7.再次保存完整的PCAP文件
使用上述三个选项之一,您现在可以保存“file4.pcap”,然后将其读入 Wireshark。该文件现在功能齐全,可以在 Wireshark 中顺利分析。