學(xué)生怎樣做網(wǎng)站/模板建站哪里有
在 Linux 系統(tǒng)中使用 Tcpdump 抓包后分析數(shù)據(jù)包不是很方便。
通常 Wireshark 比 tcpdump 更容易分析應(yīng)用層協(xié)議。
一般的做法是在遠(yuǎn)程主機(jī)上先使用 tcpdump 抓取數(shù)據(jù)并寫入文件,然后再將文件拷貝到本地工作站上用 Wireshark 分析。
還有一種更高效的方法,可以通過 ssh 連接將抓取到的數(shù)據(jù)實(shí)時(shí)發(fā)送給 Wireshark 進(jìn)行分析。
經(jīng)過我的測試,已經(jīng)實(shí)現(xiàn)把 Tcpdump 抓到的數(shù)據(jù)包轉(zhuǎn)到 Windows 環(huán)境中用 Wireshark 打開。
方式1:數(shù)據(jù)包文件的拷貝
思路:Tcpdump 抓包并保存包數(shù)據(jù)文件,再把保存的包數(shù)據(jù)文件拷貝到 Windows 中,最后使用 Windows 上安裝的 Wireshark 打開包數(shù)據(jù)文件。
使用工具:Xshell (使用 Xshell 連接遠(yuǎn)程主機(jī))+ Xftp (把遠(yuǎn)程主機(jī)上的包數(shù)據(jù)拷貝到本地)
使用 Xshell 和 Xftp 連接遠(yuǎn)程主機(jī)的過程省略……
假設(shè)你已經(jīng)很熟悉在 Linux 環(huán)境下使用 tcpdump 命令和在 Windows 環(huán)境下使用 wireshark 基礎(chǔ)操作了。
tcpdump 官方文檔:
tcpdump(1) man page | TCPDUMP & LIBPCAP
比如:我要在遠(yuǎn)程主機(jī)上抓取 eth0 網(wǎng)卡的 20 條 tcp 數(shù)據(jù)包,并保存為 test.pcap 文件:
tcpdump -i eth0 -c 20 tcp -w test.pcap
上面的命令,我是 cd 進(jìn)入?/usr/local/tcpdump 目錄下執(zhí)行的。
所以,我用 Xftp工具打開此目錄后就看到生成的包文件 test.pcap?
用 Xftp 工具把 Linux 中的文件 test.pcap 下載到 Windows 中
接下來使用 Wireshark 打開 test.pcap 包文件,此時(shí)即可分析抓到的 20 條 tcp 數(shù)據(jù)包
方式2:通過 ssh 連接遠(yuǎn)程主機(jī),將 tcpdump 抓取到的數(shù)據(jù)包實(shí)時(shí)發(fā)送給 Wireshark 進(jìn)行分析
思路:Windows 環(huán)境中使用?ssh 命令實(shí)現(xiàn)遠(yuǎn)程主機(jī)登錄,登錄后用?tcpdump 命令抓包并把數(shù)據(jù)包設(shè)置標(biāo)準(zhǔn)輸出,運(yùn)行 wireshark 程序從標(biāo)準(zhǔn)輸入讀取包數(shù)據(jù)。
工具:cmd 控制臺 + Wireshark
1.右擊 wireshark 進(jìn)入到安裝目錄,在目錄欄輸入cmd ,然后回車進(jìn)入 cmd 控制臺。
2.準(zhǔn)備命令
2.1 先在打開的 cmd 控制臺中測試這條命令:ssh root@xxx.xxx.xxx.xxx -p 22
ssh?命令用于通過 SSH 協(xié)議連接到遠(yuǎn)程主機(jī),實(shí)現(xiàn)遠(yuǎn)程登錄和執(zhí)行命令,它加密會話中的所有通信,確保數(shù)據(jù)傳輸?shù)陌踩浴?/p>
ssh root@xxx.xxx.xxx.xxx -p 22
參數(shù)說明
[root@]xxx.xxx.xxx.xxx
:要連接的遠(yuǎn)程主機(jī)的用戶名和主機(jī)名。- -p 22:指定連接到遠(yuǎn)程主機(jī)的端口號。
根據(jù)提示輸入遠(yuǎn)程主機(jī)的密碼,登錄遠(yuǎn)程主機(jī)
2.2 登錄成功后在遠(yuǎn)程主機(jī)抓取 eth0 網(wǎng)卡的 20 條 tcp 數(shù)據(jù)包的命令
tcpdump -i eth0 -c 20 tcp
通過以上兩步可以知道目前和遠(yuǎn)程主機(jī)是建立連接的。
2.3 Wireshark 命令
在 wireshark 官網(wǎng)找到文檔,選擇自己需要的命令
線鯊(1) (wireshark.org)https://www.wireshark.org/docs/man-pages/wireshark.html比如:我后續(xù)會新打開?wireshark 安裝目錄進(jìn)入 cmd 控制臺,輸入:?Wireshark.exe -k -i -?
命令拆分,說明:
(1)Wireshark.exe(可以看看你的安裝目錄是不是這個名稱),在 cmd 控制臺啟動 wireshark 應(yīng)用程序
(2)-k -i -
官網(wǎng)文檔中說:-k 是立即捕獲會話;-i - 表示從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù)。
如果在 cmd 控制臺執(zhí)行命令:Wireshark.exe -k -i -
命令則會打開?Windows 中安裝的 wireshark 程序并開始監(jiān)聽(-i - 從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù))。
3. 把剛才的命令組合起來
命令組合初期的樣子:
ssh root@xxx.xxx.xxx.xxx -p 22??tcpdump -i eth0 -c 20 tcp??Wireshark.exe -k -i -
看起來是這個樣子,但現(xiàn)在有個問題是“抓包的數(shù)據(jù)怎么傳送?”,所以組合后的命令還不完整,接下來對 tcpdump 的抓包命令進(jìn)行改進(jìn)。查看 tcpdump 官方文檔。
通過文檔可以知道 -l -w - 對我接下來有用。
比如:抓取 eth0 網(wǎng)卡的 20 條 tcp 數(shù)據(jù)包輸出到標(biāo)準(zhǔn)輸出。
命令是:tcpdump -i etho -c 20 tcp -l -w -
回頭看剛才的 “Wireshark.exe -k -i -”是從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù),那么現(xiàn)在“tcpdump -i etho -c 20 -l -w -”是輸出到標(biāo)準(zhǔn)輸出,再結(jié)合 ssh 命令則可以實(shí)現(xiàn):遠(yuǎn)程 + 輸出包數(shù)據(jù) + 讀取包數(shù)據(jù)
4. ssh + tcpdump + wireshark
新打開一個wireshark安裝目錄的 cmd 控制臺,輸入命令:
ssh root@xxx.xxx.xxx.xxx -p 22 "tcpdump -i eth0 -c 20 tcp -l -w -" | Wireshark.exe -k -i -
接著 cmd 控制臺會提示讓輸入登錄遠(yuǎn)程主機(jī)的密碼,同時(shí) Wireshark 程序啟動。
輸入密碼后回車,遠(yuǎn)程連接主機(jī)成功,然后執(zhí)行 tcpdump 抓包,同時(shí)包數(shù)據(jù)在 wireshark 程序中呈現(xiàn)。
方式3:在遠(yuǎn)程主機(jī)打開本地的 wireshark 軟件
方式3參考下面的博客,但是沒有成功。
因?yàn)榉绞揭缓头绞蕉呀?jīng)夠用了,所以后續(xù)在測試方式三……
參考:Linux下使用Wireshark抓包教程_wireshark linux-CSDN博客