我知道你一定聽過(guò)wireshark,wireshark真的很好用盛撑,可是有個(gè)更輕量的Linux命令:tcpdump雕旨。它能很容易的抓到包的糕伐,最關(guān)鍵的是命令可以直接結(jié)合linux的管道饲宿,威力無(wú)窮魁索。
比如,最簡(jiǎn)單的
sudo tcpdump host jianshu.com
它會(huì)抓取于jianshu.com這個(gè)host相通信的所有包勉耀,當(dāng)然缆娃,你可再細(xì)一點(diǎn)指定過(guò)濾條件:
指定協(xié)議
sudo tcpdump ip host jianshu.com
sudo tcpdump tcp port 80
注意:sudo tcpdump tcp port 80 host jianshu.com
這樣寫,會(huì)報(bào)
tcpdump: 'tcp' modifier applied to host
的錯(cuò)
這時(shí)有兩種方法:
1.使用and 關(guān)鍵字
sudo tcpdump tcp port 80 and host jianshu.com
2.使用管道來(lái)查看
ping jianshu.com
得到j(luò)ianshu.com的ip 120.132.92.21
sudo tcpdump tcp port 80 | grep 120.132.92.21
指定源和目標(biāo)
這很簡(jiǎn)單瑰排,用src代表源;用dist代表目標(biāo)
sudo tcpdump src host 120.132.92.21
使用與或非過(guò)濾
非是 'not ' '! ',與運(yùn)算是'and','&&';或運(yùn)算 是'or','││';
我還是推薦用not and or 這樣的詞暖侨,當(dāng)然符號(hào)也行椭住,但這樣更好理解。
比如我們上面用到了and
還可以用not或者or來(lái)篩選主機(jī)
sudo tcpdump host \(210.27.48.2 or 210.27.48.3 \)
這里用到了括號(hào)字逗,用以簡(jiǎn)化形式京郑,**一定注意,使用命令行時(shí)葫掉,括號(hào)要帶上這兩個(gè)斜杠些举,并且不能和括號(hào)直接有空格! **
查看抓到的數(shù)據(jù)
如果你不帶-X參數(shù)俭厚,那么抓到的只是這樣的概述:
16:08:18.731680 IP 120.132.92.21.http > 192.168.16.163.45134: Flags [.], ack 43441, win 461, options [nop,nop,TS val 766985341 ecr 5849335], length 0
大體是 系統(tǒng)時(shí)間 來(lái)源主機(jī).端口 > 目標(biāo)主機(jī).端口 數(shù)據(jù)包參數(shù)
如果要查看詳細(xì)的使用 -w 參數(shù)指定輸出文件户魏,或者帶上-X參數(shù)。
我的建議是把數(shù)據(jù)輸出到文件。輸出的文件是16進(jìn)制的叼丑,你可以用一些處理十六進(jìn)制的命令讀出來(lái)关翎,例如使用xxd輸出抓到的包的文件 zhuabao.txt
cat zhuabao.txt | xxd
00000000: d4c3 b2a1 0200 0400 0000 0000 0000 0000 ................
00000010: 0000 0400 0100 0000 d9a6 fc57 9311 0300 ...........W....
00000020: 4a00 0000 4a00 0000 c83a 3560 0630 8c89 J...J....:5`.0..
00000030: a5c3 787f 0800 4500 003c f8f6 4000 4006 ..x...E..<..@.@.
00000040: 8440 c0a8 10a3 b7fc 343d c530 0050 d40d .@......4=.0.P..
00000050: 0ae4 0000 0000 a002 7210 8184 0000 0204 ........r.......