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