merge - Pcap捕获合并问题

标签 merge capture wireshark pcap tcpdump

我有两个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.pcapcap1_stego0.pcap 的数据包显示为 原始数据包数据分别。还使用“tcpslice”删除 cap1_wlan0.pcap 的以太网层(让两个文件都使用 rawip 封装)显示无法识别的数据包数据。

我该怎么办?有没有办法合并不同封装的pcap或者转换eth->rawip或者rawip->eth?谢谢。

最佳答案

一种将 RAW_IP 文件转换为以太网封装文件(然后可以与其他以太网封装文件合并)的方法:

  1. 使用 tshark 从 RAW_IP 文件中获取数据包的十六进制转储:

    tshark -nxr pcap-file-name | grep -vP "^ +\d" > foo.txt
    

    (grep 用于从 tshark 输出中删除“摘要”行)。

  2. 使用 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/

相关文章:

python - 如何使用 Pandas Merge 函数删除重复的列名

java - 捕获流

IPv6 示例 Wireshark 示例

java - 在JAVA中合并两个JSONArray到JSONObject中

python - 添加计算列,然后将新数据迭代地添加到 Pandas 数据框(python 3.7.1)

linux - 从linux命令行抓图(uvccapture抓黑图)

c# - 在 C# 中捕获键盘笔画

windows - TShark 输出重定向

Perl RawIP CWR 标志

svn - 合并后无法将 jar 文件提交到 svn : 502 'Bad Gateway'