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


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

方向選擇 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傳到第四埠的檔案,目前筆電接在第五埠。

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

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

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