ssh遠端抓包
阿新 • • 發佈:2020-09-19
需求思路
基本的想法就是用ssh
登入到遠端主機上,發起tcpdump
抓包,並將tcpdump
抓到的結果輸出到stdout
,再傳回本地PC
機,而本地PC
機上的wireshark
以stdin
為輸入,兩者以管道連線傳輸。
可行方案
生成資料包檔案檢視
ssh dev "tcpdump -s0 -U -ni any -w - not port 22">wireshark.cap
然後再使用wireshark
檢視wireshark
檔案
這種方式各種環境都適用
tcpdump中引數解析
-s0
表示設定最大資料包長度為預設值(262144Bytes)
-U
表示讓資料包列印時直接輸出到stdout
-n
表示地址已數字方式顯示,不做域名解析-i
表示抓包的網絡卡,any
表示抓取所有的網絡卡的資料,-w
表示儲存檔案,當檔名為-
時,輸出原資料包到stdout
直接在本地檢視
Mac中解決方案
ssh dev "tcpdump -s0 -U -ni any -w - not port 22" | wireshark -k -i -
這種方式在mac下行,但是在window中使用不了,不知道什麼問題,可以看見資料報文打印出來,但是就是不能輸入到wireshark中.
window
中的解決方案
window
環境
使用下面方式可行
ssh dev "tcpdump -s0 -U -ni any -w - not port 22" | D:\Scoop\apps\wireshark\current\App\Wireshark\Wireshark.exe -k -i -
使用下面兩種方式不行。
ssh dev "tcpdump -s0 -U -ni any -w - not port 22" | D:\Scoop\apps\wireshark\current\WiresharkPortable.exe -k -i -
ssh dev "tcpdump -s0 -U -ni any -w - not port 22" | D:\Scoop\shims\wireshark.exe -k -i -
wsl
環境
使用window
中的WSL
方式可以實現直接使用wireshark
檢視
ssh dev "tcpdump -s0 -U -ni any -w - not port 22" | /mnt/d/Scoop/apps/wireshark/current/App/Wireshark/Wireshark.exe -k -i -
但是使用下面的就不可行,不知為什麼
ssh dev "tcpdump -s0 -U -ni any -w - not port 22" | /mnt/d/Scoop/apps/wireshark/current/WiresharkPortable.exe -k -i -
ssh dev "tcpdump -s0 -U -ni any -w - not port 22" | /mnt/d/Scoop/shims/wireshark.exe -k -i -
不清楚上面兩種方式啟動wireshark
有什麼差別,但是嘗試了不可行。
wireshark中引數解析
|
通過管道來傳輸資料-k
馬上開始捕獲資料-i -
從指定介面獲取資料,源為標準輸入,如果介面名為-
時,就從stdin讀取資料.
window中的其他方案,未走通,待參考
sudo plink -batch -pw shitouit@2017 -ssh [email protected] "tcpdump -s0 -U -ni any -w - not port 22"|wireshark -k -i -
跳板機遠端抓包
參考:
用wireshark+tcpdump+ssh遠端抓包並實時顯示
Capturing remote packet using Wireshark on Windows
Windows remote ssh capture not getting packets