Tcp
如何記錄互動 socat TCP/TLS 會話?
Socat非常適合互動式測試基於行的人類可讀協議,例如 HTTP 或 IMAP。
例如:
$ socat -d -d READLINE,history=$HOME/s.hist openssl:host:port,crnl,cafile=some.ca
為了更好地分析,我需要擷取這樣一個互動式會話——即接收和發送的字節。
僅僅通過 eg 硬拷貝終端輸出
tux
是不夠的,因為客戶端/伺服器部分沒有被標記,並且像 ‘\t’ 這樣的字元會失去/被靜默轉換。使用
tcpdump
擷取僅有助於未加密的連接。因此我的問題。
答案不一定是基於 socat 的。如果另一種工具更適合該案例,我想了解一下。
解決方案的獎勵積分
- 時間戳也被記錄下來
- 可以選擇交錯記錄(客戶端/伺服器端)或記錄到單獨的文件
我非常喜歡 tcpdump 來記錄網路連接。您實際上可以將它用於您想要實現的目標。不要在 socat 連接中使用 READLINE 端點,而是讓它監聽某個埠。
remote server with ssl ^ | (ssl-encrypted) socat | (not ssl-encrypted) v local port <-- run tcpdump here ^ | socat | v your terminal
然後,您使用第二個 socat 連接連接到第一個 socat 正在偵聽的本地埠。這是未加密的。在這個埠上你可以執行 tcpdump。
$ # easiest to use a separate terminal window for each command $ socat TCP-LISTEN:9000,reuseaddr openssl:host:port,cafile=some.ca $ tcpdump -i lo -w /tmp/tcpdump.output port 9000 $ socat READLINE,history=$HOME/.socat.hist TCP:localhost:9000