2016-06-17 36 views

回答

5

這個問題有been asked(和回答)在wireshark自己的版本的堆棧溢出之前。但是我會在這裏再詳細一點。

所有接口捕獲在Linux熟插座(SLL,不與SSL混淆)使用由wireshark。繞過不同接口具有不同MAC地址的事實是一種聰明的方式。 SLL格式在鏈路層上沒有MAC地址,這在從多個接口捕獲時是有益的,但在嘗試將其轉換爲具有MAC地址的鏈路層時是個問題。

tshark絕對不能這樣做。 tshark不具備更改捕獲文件格式的功能。

editcapwireshark的捕獲文件編輯器,它是用來更改捕獲文件格式的工具。仍然editcap只改變文件格式,它不能自己重寫包。而你所問的關於重寫鏈接層。

沒有任何與wireshark一起發貨的東西能夠重寫捕獲文件中的鏈接層。


你需要的是(適當命名的)tcprewrite工具,其船舶在tcpreplay package。你需要在命令行上添加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