将 pcap 格式从 LINKTYPE_LINUX_SSL 转换为 LINKTYPE_ETHERNET

Converting pcap format from LINKTYPE_LINUX_SSL to LINKTYPE_ETHERNET

我正在尝试解析一个 pcap 文件,但是我需要链接类型为 LINKTYPE_ETHERNET,而我当前的文件使用的是 LINKTYPE_LINUX_SSL(此处的文档 http://www.tcpdump.org/linktypes/LINKTYPE_LINUX_SLL.html

有谁知道这是否是我可以使用 tshark 完成的任务,或者我是否必须一起修改一些自定义内容才能获得转换。

谢谢!

这个问题在 wireshark 自己的堆栈溢出版本之前有 been asked(并已回答)。但我会在这里更详细地重复一遍。

一个linux熟套接字(SLL,不要与SSL混淆)被[=12=使用] 在 所有 接口上捕获时。这是解决不同接口具有不同 MAC 地址这一事实的聪明方法。 SLL 格式在 link 层上没有 MAC 地址,这在从多个接口捕获时很有用,但在尝试将其转换为具有 [=59= 的 link 层时会出现问题] 地址。

tshark肯定做不到。 tshark 无法更改捕获文件的格式。

editcapwireshark的抓包文件编辑器,是用来改变抓包文件格式的工具。仍然 editcap 只改变文件格式,它不能重写包本身。你问的是关于重写 link 层。

wireshark 一起提供的任何东西都无法重写捕获文件中的 link 层。


您需要的是 tcpreplay package 中附带的(适当命名的)tcprewrite 实用程序。需要在命令行添加MAC地址到tcprewrite,源地址和目的地址都为:

tcprewrite --dlt=enet --enet-dmac=52:54:00:11:11:11 \
    --enet-smac=52:54:00:22:22:22 -i in.pcap -o out.pcap

如果您确信两个设备正在通话,您可以使用 --enet-dmac--enet-smac.

的逗号语法
tcprewrite --dlt=enet --enet-dmac=52:54:00:11:11:11,52:54:00:22:22:22 \
    --enet-smac=52:54:00:22:22:22,52:54:00:11:11:11 -i in.pcap -o out.pcap

您很可能想使用第二个命令,因为它看起来更可信 ethernet 对话。

大多数操作系统的软件包存储库中都有 tcpreplay