我有两个pcap文件
$ capinfos cap1_stego0.pcap
File name: cap1_stego0.pcap
File type: Wireshark/tcpdump/... - libpcap
File encapsulation: Raw IP
Number of packets: 713
和
$ capinfos cap1_wlan0.pcap
File name: cap1_wlan0.pcap
File type: Wireshark/tcpdump/... - libpcap
File encapsulation: Ethernet
我想把它们合并,但是封装不一样。如果我使用
mergecap -v -w asd.pcap cap1_stego0.pcap cap1_wlan0.pcap -T rawip
或
mergecap -v -w asd.pcap cap1_wlan0.pcap cap1_stego0.pcap -T rawip
Wireshark 无法识别过去的第二个文件并将 cap1_wlan0.pcap
或 cap1_stego0.pcap
的数据包显示为 原始数据包数据
分别。还使用“tcpslice”删除 cap1_wlan0.pcap
的以太网层(让两个文件都使用 rawip
封装)显示无法识别的数据包数据。
我该怎么办?有没有办法合并不同封装的pcap或者转换eth->rawip或者rawip->eth?谢谢。
最佳答案
一种将 RAW_IP 文件转换为以太网封装文件(然后可以与其他以太网封装文件合并)的方法:
使用 tshark 从 RAW_IP 文件中获取数据包的十六进制转储:
tshark -nxr pcap-file-name | grep -vP "^ +\d" > foo.txt
(grep 用于从 tshark 输出中删除“摘要”行)。
使用 text2pcap 在添加 dummy 的同时转换回 pcap 文件 以太网 header :
text2pacp -e 0x0800 foo.txt foo.pcap
如果你想保留时间戳,你将不得不尝试一下 tshark 输出 获取一个文本文件,其中包含 text2pcap 将接受的格式的时间戳,还包含十六进制数据包信息。
[[ tcpslice 是否有删除以太网 header 的选项? (查看手册页,tcpslice 似乎用于从 pcap 文件中提取时间范围)。
如果您确实有办法从捕获文件中删除以太网 header ,则必须确保生成的 pcap 文件具有 RAW_IP 的封装类型,然后再尝试使用 wireshark、mergecap 等读取它。
另请注意,mergecap 的 -T 开关只是强制文件中指定的封装类型;实际的封装没有改变(即没有字节被添加/更改/删除)。 ]]
关于merge - Pcap捕获合并问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6388890/