在我們分析前一天 Day08-明文被抓怎麼不找找自己的問題(上) 的封包前有必要先去了解一些 TCP 協定相關的內容。
TCP 是一個傳輸層(L4)的協定,它給應用層的協定提供可靠的資料傳輸,發送方按順序發送,接收方按順序接收,如果發生丟包、亂序由 TCP 協定負責重傳和排序。
接著我們來看 TCP 封包的部分片段,請參考下圖及下表
TCP 協定傳輸資料前,需要先建立 TCP 連線,TCP 連線是一個三向交握的過程,流程圖請參考下圖((SYN, ACK為對應的位元碼,seq 為序號、ack 為確認號)
此圖欲表達本地端和伺服器端建立 TCP 連線時,需要先讓本地端傳送封包給伺服器端,而封包裡面 SYN 的 FLAG 為 1 且 ack 和 seq 的值為零。之後如果伺服器順利接受到封包,則會回傳 SYN 和 ACK 的 FLAG 為 1,並且回傳 ack 值加一,最後本地端收到伺服器的訊息,會傳送 ACK FLAG 為 1 並且 ack 值為前一個 seq 值加一。
如果三向交握的過程沒有問題,設備間會建立 TCP 連線。
回來看封包,可以看到藍色圈選的部分就是三向交握的封包,如下圖
而最後 TCP 因為傳輸完內容(我們用 telnet 連到 router 後就中止了)
所以在 wireshark 中我們可以在這個封包截取的地方右鍵選擇 follow > tcp stream
應該能看到以下畫面
畫面中用紅色代表本地端發給伺服器端的封包,而藍色則是伺服器發給本地端的封包(為了提示我們有東西輸入到伺服器中了)。我們可以看到 telnet 是明文傳輸,只要有心人去想辦法截取封包,你的網路流量都會被看光。
題外話,根據官網這篇 文件 昨天之所以沒辦法解析域名是因為 ROS 中的 DHCP 設定不當導致。