用Wireshark還原TFTP的檔案

首先要製作TFTP的封包出來,這裡把一張圖片用TFTP的協定傳過去。

mylogo.png
TFTP成功傳遞

選擇第一個 Date Packet,右鍵 > Follow > UDP Streams

方向選擇 Server > Client,Show Data as 「Raw」。

向選擇 Server > Client,Show Data as 「Raw」。

這裡可以看到每一個段落前面會有 0003000X ,0003表示從Server發出,而000X是該Data的其中第X部分,X是十六進位。

因此只需要把每段的 0003000X 去掉,就可以得到一個還原的檔案。

按下 Save as,儲存為 Raw.png。

接下使用 Python,幫忙把裡面的 0003000X去掉,由於0003000X的出現位置是固定的,只需要拿掉特定區間就可以了。

"""JN的網路日常"""
with open('raw.png', 'rb') as f:
    content = f.read().hex()
    f.close()    

# tftp per part data size = unit
unit = content.find("00030002") - content.find("00030001")
content = content[content.find("00030001"):]
content = "".join([content[i+8: i+unit] for i in range(0, len(content), unit)])

with open("mylogo.png", "wb") as f2:
    f2.write(bytes.fromhex(content))
    f2.close()

執行之後,打開圖,發現可以正常顯示。

場加映,利用Mirror去截取TFTP檔案。

有了前述的概念之後,接下來可以Mirror去攔截別的Port的TFTP檔案,然後還原出來。

用一台具有Mirror功能的Switch,個人使用NETGEAR。

現在要複製一份從TFTP SERVER傳到第四埠的檔案,目前筆電接在第五埠。

啟用Mirror功能,把第四埠的流量複製到第五埠。

接下來要讓筆電的網路介面卡單純地聽,把IPv4的功能取消掉,以免干擾。

接收mirror的介面卡取消IPv4的功能

然後啟動TFTP傳輸,用Wireshark可以看到接收Mirror的介面卡有鏡像過來的TFTP封包。

按照一樣的方法去還原檔案。