Tcpdump是壹個攔截網絡數據包並輸出數據包內容的工具。以其強大的功能和靈活的攔截策略,成為類UNIX系統中網絡分析和問題排查的首選工具。
Tcpdump支持對網絡層、協議、主機、網絡或端口進行過濾,並提供and、or、not等邏輯語句幫助妳剔除無用信息。
-c:指定要抓取的包的數量。
-i interface:指定tcpdump需要監聽的接口。默認情況下,將抓取第壹個網絡接口。
-n:地址以數字形式顯式表示,否則顯式表示為主機名,這意味著-n選項不解析主機名。
-nn:除了-n的作用,端口顯示為數值,否則顯示端口服務名。
-P:指定要抓取的包是流入包還是流出包。可以給出的值有“in”、“out”、“inout”,默認值為“inout”。
-s len:將tcpdump的包捕獲長度設置為len,否則默認為65535字節。當要捕獲的數據包較大時,如果長度設置得不夠,可能會發生數據包截斷。如果發生分組截斷,
:符號“[|proto]”將出現在輸出行中(proto將實際顯示為協議名稱)。但是抓取len的時間越長,數據包處理時間就會越長,tcpdump可以緩存的數據包數量就會減少。
這樣會導致數據包丟失,所以只要能搶到想要的包,長度越小越好。
-e:每壹行輸出都將包含數據鏈路層報頭信息,例如源MAC和目的MAC。
-問:快速打印輸出。也就是說,打印的協議信息非常少,因此輸出行相對較短。
-X:輸出包的頭數據將以16十六進制和ASCII模式輸出。
-XX:輸出包的頭數據會同時以16和ASCII輸出。
-v:在分析和打印時,產生詳細的輸出。
-vv:產生比-v更詳細的輸出。
-vvv:產生比-vv更詳細的輸出。
-D:列出可用於抓取包的接口。會列出接口號和接口名,可以在“-i”後使用。
-F:從文件中讀取抓取包的表情。如果使用此選項,命令行上給出的所有其他表達式都將無效。
-w:將捕獲的數據輸出到文件,而不是標準輸出。可以同時合作"-G
時間"選項使得輸出文件每隔壹秒鐘自動切換到另壹個文件。這些文件可以用“-r”選項加載,以便進行分析和打印。
-r:從給定的數據包文件中讀取數據。使用“-”從標準輸入中讀取。
= =基本表達式單元格式是“原目錄類型ID”= =
有關表達式語法,請參考pcap-filter pcap-filter-包過濾語法。
主機、網絡、端口、端口範圍
例如:主機192.168.201.128,網絡128.3,端口20,端口範圍6000-6008 '
src,dst,src或dst,src和dst
Tcp、udp、icmp,如果沒有給出協議類型,則匹配所有可能的類型。
= =運算符"和/&;& amp/ or / || / not /!"連接形成壹個復雜的條件表達式= =。如“host foo and not port FTP and not port FTP-data”,即過濾後的數據包要滿足“host為foo且端口不是FTP (port 21)和FTP-data (port 20)的包”的要求,常見端口與名稱的對應關系可以在linux系統中的/etc/service文件中找到。
此外,可以省略相同的修飾符,如“tcp dstport ftp或ftp-data或domain”與“tcp dstport ftp或TCP dstport FTP-data或TCP dstport domain”含義相同,表示數據包的協議為TCP,目的端口為FTP或FTP-data或domain(端口53)。
用括號“()”來改變表達式的優先級,但是需要註意的是,括號會被shell解釋,所以要用反斜杠“,”轉義到“()”,必要的話需要用引號括起來。
==**tcpdump只能捕獲流經此計算機的數據包* * = =
默認情況下,直接啟動tcpdump會監控第壹個網絡接口(非lo端口)上流通的所有數據包。這樣抓取的結果會非常多,滾動會非常快。
請註意,表達式用單引號括起來,這可以防止shell誤解其中的括號。