【講清楚,說明白!】tcpdump命令行網絡抓包工具

目錄:
(一)tcpdump命令
(二)tcpdump篩選數組


(一)tcpdump命令
(1.1)tcpdump是一個用於截取網絡分組,並輸出分組內容的工具。憑藉強大的功能和靈活的截取策略,使其成爲類Unix系統下用於網絡分析和問題排查的首選工具。tcpdump支持針對網絡層、協議、主機、網絡或端口的過濾,並提供and、or、not等語句來幫助你去掉無用的信息。
(1.2)tcpdump指令默認只抓取每一個數據包的前68個字節,一般狀況下會將TCP/IP以及二層包頭信息會完整抓取的,若是須要作完整的數據包的內容分析是不夠的,通常68個字節中只是包含了源地址、目的地址、端口等信息。
(1.3)首先咱們可使用「-i」參數指定網卡名,使用「-s」指定抓的數據包的大小,使用「-w」參數表示將數據包保存到指定的文件中。咱們指定vms001主機的網卡是eno16777728,而後指定數據包的大小爲0表示抓所有的數據包,使用-w表示將抓取的數據包的信息存放到a.cap文件中。
# tcpdump -i eno16777728 -s 0 -w a.cap---指定vms001主機的網卡是eno16777728,而後指定數據包的大小爲0表示抓所有的數據包,使用-w表示將抓取的數據包的信息存放到a.cap文件中
【講清楚,說明白!】tcpdump命令行網絡抓包工具
【講清楚,說明白!】tcpdump命令行網絡抓包工具
(1.4)若是咱們但願查看所抓的包的內容,可使用「-r」參數對數據包進行查看。
# tcpdump -r a.cap---表示讀取數據包中內容
【講清楚,說明白!】tcpdump命令行網絡抓包工具
(1.5)若是咱們但願經過ASCII碼的形式將數據包顯示出來,咱們能夠經過使用「-A」的參數將數據包顯示出來。
# tcpdump -A -r a.cap---以ASCII碼的形式進行顯示
【講清楚,說明白!】tcpdump命令行網絡抓包工具
(1.6)若是咱們但願經過十六進制的形式去顯示數據包中的內容,則咱們能夠經過「-X」的參數來進行查看。
# tcpdump -X -r a.cap---以十六進制的形式顯示數據包中的內容
【講清楚,說明白!】tcpdump命令行網絡抓包工具網絡


(二)tcpdump篩選
(2.1)tcpdump也可使用抓包篩選器進行信息的篩選,若是咱們但願抓某種類型或者某種端口的包,則能夠指定網卡或者端口號。
# nc -nv 192.168.26.102 22---從vms001主機上嘗試鏈接vms002主機的22端口
# tcpdump -i eno16777728 tcp port 80---在vms001主機上抓eno16777728網卡上80端口的數據包
【講清楚,說明白!】tcpdump命令行網絡抓包工具
【講清楚,說明白!】tcpdump命令行網絡抓包工具
(2.2)tcpdump指令也是能夠實現顯示篩選器的功能,咱們首先建立一個http.cap的文件,而後使用「tcpdump -n -r」將全部的信息顯示出來,其中「-n」表示不解析主機名,「-r」表示讀取文件,並使用awk顯示文件的第3列信息,最後使用sort命令去重,此時咱們便獲得了全部的IP地址和端口號信息。
# tcpdump -i eno16777728 -w http.cap---收集網卡eno16777728的信息並寫入到http.cap文件中
# tcpdump -n -r http.cap---顯示http.cap文件中全部記錄的信息,「-n」表示不解析主機名
# tcpdump -n -r http.cap | awk '{print $3}'| sort -u---使用「tcpdump -n -r」將全部的信息顯示出來,並使用awk顯示文件的第3列信息,最後使用sort命令去重,注意sort -u命令和sort | uniq -c意義相同一致
【講清楚,說明白!】tcpdump命令行網絡抓包工具
【講清楚,說明白!】tcpdump命令行網絡抓包工具
(2.3)若是咱們想查詢來源IP的主機名爲192.168.26.101的全部的信息行,咱們可使用tcpdump -n src host來指定來源IP地址的信息,此時咱們便獲得了源IP是192.168.26.101的全部信息行(圖1-10)。若是咱們須要查詢目標IP地址爲192.168.26.102的全部信息行,則咱們可使用tcpdump -n dst host來指定目標IP地址的信息(圖1-11)。
# tcpdump -n src host 192.168.26.101 -r http.cap---在vms002主機查詢源地址爲192.168.26.101主機的全部符合要求的行
# tcpdump -n dst host 192.168.26.102 -r http.cap---在vms002主機查詢目標地址爲192.168.26.102主機的全部符合要求的行
【講清楚,說明白!】tcpdump命令行網絡抓包工具
【講清楚,說明白!】tcpdump命令行網絡抓包工具
(2.4)咱們也能夠經過端口號來進行篩選,咱們可使用tcpdump -n tcp port來指定端口號,以此來查詢對應的信息行。
# tcpdump -n tcp port 22 -r http.cap---指定抓取端口號爲22的信息行
【講清楚,說明白!】tcpdump命令行網絡抓包工具
(2.5)若是但願以十六進制的形式將數據包的篩選信息顯示出來,則可使用-X參數。
# tcpdump -n -X port 22 -r http.cap---以十六進制的形式將數據包的篩選信息顯示出來,「-n」表示不解析主機名
【講清楚,說明白!】tcpdump命令行網絡抓包工具
(2.6)tcpdump指令還能夠執行不少高級篩選的功能,其中每一行8位表示一個字節,每一行表示有4個字節共有32位,其中第5部分開頭Date Offset表示的是數據的偏移量,其中cwr、ece、urg、ack、psh、rst、ayn、fin表示的是TCP的標籤位。例如咱們但願將ack和psh標籤位爲1的數據所有篩選出來,此時咱們將兩個位的值加起來能夠獲得10進制的結果爲24。其中「source port」和「Destination Port」一行表示的是標號0-3共4個字節,以res.cwr開頭的字節表示的是標號0-13的第14個字節,因此咱們在tcp數組中使用tcp[13]表示的是標籤位的信息,咱們只須要指定「tcp[13]=24」,就能夠篩選出ack和psh標籤位爲1的全部數據行信息。此時咱們即可以實現tcp包中任何位置、任何數值的篩選,顆粒度很是的細化了。
# tcpdump -A -n 'tcp[13]=24' -r http.cap---篩選出來tcp包的0-13,即第14個字節的和爲24的全部信息行,以ASCII碼的形式顯示
【講清楚,說明白!】tcpdump命令行網絡抓包工具
【講清楚,說明白!】tcpdump命令行網絡抓包工具tcp

—————— 本文至此結束,感謝閱讀 ——————ide

相關文章
相關標籤/搜索