将pcap格式从LINKTYPE_LINUX_SSL转换为LINKTYPE_ETHERNET

wKa*_*vey 1 pcap wireshark tshark

我试图解析一个pcap文件,但我需要linktype LINKTYPE_ETHERNET,而我当前的文件正在使用LINKTYPE_LINUX_SSL(文档http://www.tcpdump.org/linktypes/LINKTYPE_LINUX_SLL.html)

有谁知道这可能是我可以完成使用的任务tshark,或者我将不得不一起修改一些自定义以获得转换.

谢谢!

gro*_*mal 5

在自己的堆栈溢出版本之前,已经问过(并回答过)这个问题wireshark.但我会在这里重复一下细节.

所有接口上捕获时,都会使用linux cooked套接字(SLL,不要与SSL混淆).这是一种巧妙的方法来解决不同接口具有不同MAC地址的事实.SLL格式在链路层上没有MAC地址,这在从多个接口捕获时很有用,但在尝试将其转换为具有MAC地址的链路层时出现问题.wireshark

tshark绝对做不到. tshark无法更改捕获文件的格式.

editcapwireshark捕获文件编辑器,它是用于更改捕获文件格式的工具.仍然editcap只更改文件格式,它不能自己重写包.你要问的是关于重写链接层.

没有任何东西wireshark能够重写捕获文件内的链接层.


您需要的是(适当命名的)tcprewrite实用程序,它包含在tcpreplay包中.您需要在命令行上添加tcprewrite源地址和目标地址的MAC 地址:

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
Run Code Online (Sandbox Code Playgroud)

如果你有信心,两个设备谈论你可以用逗号语法--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
Run Code Online (Sandbox Code Playgroud)

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

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