再研究網絡封包

先前研究過網上行網絡的封包,這次又做做其他實驗。

SSL/TLS 解碼
先前嘗試過將私鑰放到 Wireshark 為 SSL/TLS 解碼,但原來現在的瀏覽器都用上 RSA 以外的演算法,不能單純用私鑰就能將以 SSL/TLS 加密的內容解碼。原來,Chrome 和 Firefox 都支援將 Session Key 放到 SSLKEYLOGFILE 所指定的檔案內,當 Wireshark 讀取此檔案的 Session Key,就能將加密的內容解碼,方便除錯。

Capture-wireshark1
Capture-wireshark4

交換證書和密鑰的過程:
Capture-wireshark3

解碼後的 HTTP 內容:
Capture-wireshark2

IP Camera
原來網上行的華為 HG8045Q Modem 有 Telnet 介面,而這介面可用於啟動 Port Mirroring,所以我用來將 IP Camera 和 Now TV 機頂盒的封包,複製到另一台電腦作研究,而不用接上我的 RouterOS Router。

啟動 Port Mirroring 的指令例子:
set ethportmirror sourceport 1 destport 2 mirrordate 2 enable 1

一如所料,現在所用的 IP Camera 用上 UDP Hole Punching 的方法,讓在另一受 NAT 限制的客戶端可以突破 NAT 的限制,直接連接到 IP Camera 以獲得串流,只是沒想到它同時用上了 Amazon 和中國大陸的雲伺服器作 UDP Hole Punching 之用。另外,我明明停止了它用 UPnP,但似乎仍見它嘗試連接。而圖中的 DNS 查詢,似乎是用來測試 IP Camera 本身能否連接互聯網:
Capture-wireshark5

傳送影像的封包,收發端都在 NAT 裡面,但用了 UDP Hole Punching 就能成功連接:
Capture-wireshark6

Now TV 機頂盒
上次看過 Now TV 的一些封包,這次試一試用它的手機 App 去遙控機頂盒開關機。它並不是直接遙控機頂盒,而是連接 Now TV 的伺服器,再由伺服器發出 HTTP 要求叫機頂盒內置的 HTTP 伺服器作出反應。從圖中可見機頂盒又有另一個 10 字頭的 IP 地址,專門負責接收 HTTP 要求:
Capture-wireshark7

那個 key 應該就是對應遙控器上不同的按鈕:
Capture-wireshark8
Untitled

開機後就接收 Multicast MPEG2 封包:
Capture-wireshark9

用手機 App 也可以遙控關機,關機後可見它仍繼續連接 PPPoE :
Capture-wireshark10

有了 Port Mirroring,我也再次測試連接機頂盒的電源,比起上次經 RouterOS 複製出來的封包多得多(上次因為部分封包只經過較快速的 Switch Chip 而非 CPU,不能藉 Sniffer 複製出來,而我上次沒有為意這個問題)。發現它開機就連接 PPPoE,也有指定的使用者名稱及密碼:
Capture-wireshark11

在此得到了剛才提到 10 字頭的 IP 地址,也連接 NTP 伺服器校準時鐘,之後便開始一連串用戶和頻道資料下載,最後加入 Multicast Group: Capture-wireshark12
Capture-wireshark13
Capture-wireshark14

本文連結