Linux 抓包还不会?这篇文章赶紧收藏
什么是TCPDUMP?
TCPdump,全稱(chēng)dump the traffic on a network,是一個(gè)運(yùn)行在linux平臺(tái)可以根據(jù)使用者需求對(duì)網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包進(jìn)行捕獲的抓包工具。
tcpdump可以支持的功能:
1、在Linux平臺(tái)將網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包全部捕獲過(guò)來(lái)進(jìn)行分析
2、支持網(wǎng)絡(luò)層、傳輸層協(xié)議等協(xié)議捕獲過(guò)濾;
3、數(shù)據(jù)發(fā)送和接收的主機(jī)、網(wǎng)卡和端口等各種過(guò)濾捕獲數(shù)據(jù)規(guī)則
4、提供and、or、not等語(yǔ)句進(jìn)行邏輯組合捕獲數(shù)據(jù)包或去掉不用的信息
5、結(jié)合wireshark工具分析捕獲的報(bào)文
TCPDump工具詳細(xì)演示
tcpdump輸出內(nèi)容解釋
默認(rèn)輸入 tcpdump 這個(gè)命令,回車(chē)操作之后,它將監(jiān)視第一個(gè)網(wǎng)絡(luò)接口上所有流過(guò)的數(shù)據(jù)包,一般是 eth0,如下圖所示:
21:26:49.013621 IP 172.20.20.1.15605 > 172.20.20.2.5920: Flags [P.], seq 49:97, ack 106048, win 4723, length 48
從上面的輸出來(lái)看,可以總結(jié)出:
第一列:時(shí)分秒毫秒 21:26:49.013621
第二列:網(wǎng)絡(luò)協(xié)議 IP
第三列:發(fā)送方的ip地址+端口號(hào),其中172.20.20.1是 ip,而15605 是端口號(hào) / iZuf65wtzat3ohpxwn7on0Z是主機(jī),ssh是協(xié)議 22端口;
第四列:箭頭 >, 表示數(shù)據(jù)流向
第五列:接收方的ip地址+端口號(hào),其中 172.20.20.2 是 ip,而5920 是端口號(hào)
第六列:數(shù)據(jù)包內(nèi)容,包括Flags 標(biāo)識(shí)符,seq 號(hào),ack 號(hào),win 窗口,數(shù)據(jù)長(zhǎng)度 length,其中 [P.] 表示 PUSH 標(biāo)志位為 1,更多標(biāo)識(shí)符大家需要了解TCP協(xié)議的標(biāo)志位。
TCPDUMP詳細(xì)參數(shù)使用
1、-i #指定監(jiān)聽(tīng)網(wǎng)絡(luò)接口
tcpdump -i eth0
默認(rèn)監(jiān)聽(tīng)在第一塊網(wǎng)卡上,監(jiān)聽(tīng)所有經(jīng)過(guò)此網(wǎng)卡通過(guò)的數(shù)據(jù)包;但是我們可能關(guān)心的數(shù)據(jù)并不是 eth0 的接口,這時(shí)就需要指定端口進(jìn)行數(shù)據(jù)包的捕獲。
在 tcpdump 后面加一個(gè) -i 的參數(shù),后面跟具體需要捕獲的接口名稱(chēng),就可以抓取經(jīng)過(guò)這個(gè)具體接口的所有數(shù)據(jù)包。
tcpdump -i any 監(jiān)聽(tīng)所有的網(wǎng)卡接口、用來(lái)查看是否有網(wǎng)絡(luò)流量
2、-w #將捕獲到的信息保存到文件中,且不分析和打印在屏幕
tcpdump -i eth0 -w tt
報(bào)文打印在shell里會(huì)太多且不方便查看,我們可以保存成文件;然后通過(guò)xftp導(dǎo)出到本地,可以詳細(xì)查看。
擴(kuò)展:導(dǎo)出的文件可以設(shè)置為cap或者pcap的格式,可以直接用wireshark工具打開(kāi);
可以用wireshark工具分析報(bào)文具體信息!
3、-r #從文件中讀取數(shù)據(jù),讀取后,我們照樣可以使用上述的過(guò)濾器語(yǔ)法進(jìn)行過(guò)濾分析。
tcpdump -r tt.pcap
這個(gè)參數(shù)也可以實(shí)現(xiàn)“流量回放”的功能,就是把歷史上的某一時(shí)間段的流量,重新模擬回放出來(lái),用于流量分析。
4、-n:不把ip轉(zhuǎn)化成域名,直接顯示 ip
避免執(zhí)行 DNS lookups 的過(guò)程,速度會(huì)快很多
-nn:不把協(xié)議和端口號(hào)轉(zhuǎn)化成名字,速度也會(huì)快很多。
-N:不打印出host 的域名部分,比如,如果設(shè)置了此選現(xiàn),tcpdump 將會(huì)打印’nic’ 而不是 ‘nic.ddn.mil’.
5、-t:在每行的輸出中不輸出時(shí)間
-tt:在每行的輸出中會(huì)輸出時(shí)間戳
-ttt:輸出每?jī)尚写蛴〉臅r(shí)間間隔(以毫秒為單位)
-tttt:在每行打印的時(shí)間戳之前添加日期的打印(此種選項(xiàng),輸出的時(shí)間最直觀(guān))
6、-c #指定收取數(shù)據(jù)包的次數(shù),即在收到指定數(shù)量的數(shù)據(jù)包后退出tcpdump,停止抓包
tcpdump -c 20 -w tt.pcap
解釋:抓滿(mǎn)20個(gè)報(bào)文之后,就停止tcpdump抓包。
7、-C #與 -w FILE 保存文件選項(xiàng)配合使用
該選項(xiàng)使得 tcpdump 在把原始數(shù)據(jù)包直接保存到文件中之前,檢查此文件大小是否超過(guò) file-size。如果超過(guò)了,將關(guān)閉此文件,另創(chuàng)一個(gè)文件繼續(xù)保存原始數(shù)據(jù)包。新創(chuàng)建的文件名與 -w 選項(xiàng)指定的文件名一致, 但文件名后多了一個(gè)數(shù)字,該數(shù)字會(huì)從1開(kāi)始隨著新創(chuàng)建文件的增多而增加。file-size的單位是百萬(wàn)字節(jié)(這里指1,000,000個(gè)字節(jié),并非1,048,576個(gè)字節(jié))。
tcpdump -C 1 -w tt
保存的文件大小不能超過(guò)1個(gè)單位(百萬(wàn)字節(jié)),結(jié)果如下圖:
這里還可以結(jié)合另外一個(gè)參數(shù)使用:-W,限制一下最多寫(xiě)入多少個(gè)文件。
tcpdump -C 1 -W 3 -w abc 指定一個(gè)單位后(1MB)就換文件,最多寫(xiě)3個(gè)文件,名字是abc0 , abc1, abc2。
8、-s #指定每個(gè)包捕獲的長(zhǎng)度、單位是 byte,而不是默認(rèn)的262144bytes;
如果超過(guò)了設(shè)定的大小限制,包就會(huì)被截?cái)?#xff0c;而在打印行出現(xiàn)[|proto]這種標(biāo)識(shí),這個(gè)proto就是被截?cái)嗟膱?bào)文的協(xié)議名字。但是抓取len越長(zhǎng),包的處理時(shí)間越長(zhǎng),并且會(huì)減少tcpdump可緩存的數(shù)據(jù)包的數(shù)量,從而會(huì)導(dǎo)致數(shù)據(jù)包的丟失,所以在能抓取我們想要的包的前提下,抓取長(zhǎng)度越小越好(-s 0 使用默認(rèn)長(zhǎng)度262144)。
注意:不同的tcpdump版本,這個(gè)默認(rèn)抓取的報(bào)文的長(zhǎng)度不一樣。
9、-F 指定使用哪個(gè)文件的過(guò)濾表達(dá)式抓包。此時(shí)命令行上的輸入過(guò)濾規(guī)則將被忽略.
tcpdump -F filter_rule -c10
這種情況適用于將表達(dá)式放置在文件中長(zhǎng)期維護(hù)。
10、-l #對(duì)標(biāo)準(zhǔn)輸出進(jìn)行行緩沖–使標(biāo)準(zhǔn)輸出設(shè)備遇到一個(gè)換行符就馬上把這行的內(nèi)容打印出來(lái)。
在需要同時(shí)觀(guān)察抓包打印以及保存抓包記錄的時(shí)候很有用.
比如, 可通過(guò)以下命令組合來(lái)達(dá)到此抓包時(shí)保存到文件的同時(shí)查看包的內(nèi)容。
tcpdump -l | tee dat
這命令是使用tee來(lái)把tcpdump 的輸出同時(shí)放到文件dat和標(biāo)準(zhǔn)輸出中
tee 功能說(shuō)明:讀取標(biāo)準(zhǔn)輸入的數(shù)據(jù),并將其內(nèi)容輸出成文件
tcpdump -l > dat1 & tail -f dat1
這個(gè)命令是通過(guò)重定向操作’>’
11、-A:#以ASCII格式打印出所有的分組并且讀取此文件
這樣可以使讀取更加簡(jiǎn)單,方便使用 grep 等工具解析輸出內(nèi)容
tcpdump -A -r tt2
tcpdump -A | grep baidu
12、-X 表示同時(shí)使用十六進(jìn)制和 ASCII 字符串打印報(bào)文的全部數(shù)據(jù)。
這-X和-A兩個(gè)參數(shù)不能一起使用
tcpdump -X -r tt2
13、-e:#在輸出行打印出數(shù)據(jù)鏈路層的頭部信息。
默認(rèn)情況下 tcpdump 不會(huì)顯示數(shù)據(jù)鏈路層信息,使用 -e 選項(xiàng)可以顯示源和目的 MAC 地址,以及 VLAN tag 信息。例如:
tcpdump -e -r tt2
現(xiàn)在我邀請(qǐng)你進(jìn)入我們的軟件測(cè)試學(xué)習(xí)交流群:【746506216】,備注“入群”, 大家可以一起探討交流軟件測(cè)試,共同學(xué)習(xí)軟件測(cè)試技術(shù)、面試等軟件測(cè)試方方面面,還會(huì)有免費(fèi)直播課,收獲更多測(cè)試技巧,我們一起進(jìn)階Python自動(dòng)化測(cè)試/測(cè)試開(kāi)發(fā),走向高薪之路。
喜歡軟件測(cè)試的小伙伴們,如果我的博客對(duì)你有幫助、如果你喜歡我的博客內(nèi)容,請(qǐng) “點(diǎn)贊” “評(píng)論” “收藏” 一 鍵三連哦!
軟件測(cè)試工程師自學(xué)教程:
這才是2022最精細(xì)的自動(dòng)化測(cè)試自學(xué)教程,我把它刷了無(wú)數(shù)遍才上岸字節(jié)跳動(dòng),做到漲薪20K【值得自學(xué)軟件測(cè)試的人刷】
接口性能測(cè)試 — 軟件測(cè)試人必會(huì)618實(shí)戰(zhàn)場(chǎng)景分析
軟件測(cè)試工程師月薪2W以上薪資必學(xué)技能 — Python接口自動(dòng)化框架封裝.
美團(tuán)面試真題_高級(jí)測(cè)試25K崗位面試 — 軟件測(cè)試人都應(yīng)該看看
測(cè)試開(kāi)發(fā)之全面剖析自動(dòng)化測(cè)試平臺(tái) — 軟件測(cè)試人的必經(jīng)之路
軟件測(cè)試必會(huì)_Jmeter大廠(chǎng)實(shí)戰(zhàn) — 僅6步可實(shí)現(xiàn)接口自動(dòng)化測(cè)試
Jmeter實(shí)戰(zhàn)講解案例 — 軟件測(cè)試人必會(huì)
總結(jié)
以上是生活随笔為你收集整理的Linux 抓包还不会?这篇文章赶紧收藏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 超全的概率公式和线性代数公式
- 下一篇: 网络编程资源大集合(包含前端、java、