Linux - Tcpdump命令
是一個用於抓取網路資料包並輸出的工具,命令格式如下:
tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ]
[ -C file_size ] [ -F expr_file ]
[ -i interface ] [ -m module ] [ -M secret ]
[ -r read_file ] [ -s snaplen ] [ -T type ] [ -w save_file ]
[ -W file_count ]
[ -E spi@ipaddr algo:secret,... ]
[ -y datalinktype ] [ -Z user ]
[ expression ]
二、選項
-A 以ASCII格式列印出所有資訊包並將鏈路層的頭最小化。
-c 在收到指定的數量的資料包後退出
-C 將資料包以一百萬位元組為單位的file_size指定的大小寫入連續的多個檔案中
-d 將匹配的資料包的程式碼以可讀的形式輸出到標準輸出
-dd 將匹配的資料包的程式碼以c語言程式段的格式給出
-ddd 將匹配的資料包的程式碼以十進位制的形式給出
-D 列印出系統中所有tcpdump可以抓取包的網路介面列表
-e 在輸出行列印出資料鏈路層的頭部資訊
-E 用 spi@ipaddr algo:secret 解密那些以addr作為地址並且包含了安全引數索引值spi的IPsec ESP包
-f 以數字而非符號方式顯示外來 IPv4 地址
-F 從指定的檔案中讀取過濾表示式,忽略命令列中給出的表示式
-i 指定監聽的網路介面,可以通過-D檢視
-l 使標準輸出變為緩衝行形式,可以把資料匯出到檔案
-L 列出網路介面的已知資料鏈路
-m 從其指定的Module檔案中匯入SMI MIB模組定義
-M 如果TCP報文中存在TCP-MD5選項,使用secret作為用於驗證TCP分段中籤名的共享金鑰
-n 不把網路地址轉換成名稱
-nn 不把協議和埠號轉換成名稱
-N 不輸出主機名中的域名部分
-O 不執行資料包匹配的程式碼優化器
-p 不將網路介面設定成混雜模式。
-q 只輸出較少的協議資訊一遍快速輸出
-r 從指定的檔案中讀取包(這些包一般通過-w選項產生)
-S 將Tcp的序列號以絕對值而非相對值的形式輸出
-s 從每個資料包中讀取最開始的snaplen個位元組,而不是預設的68個位元組
-T 將監聽到的包直接解釋為type指定型別的報文,常見的型別有rpc和snmp等
-t 不在每一行中輸出時間戳
-tt 在每一行中輸出非格式化的時間戳
-ttt 在本行和前面一行之間輸出一個時間差
-tttt 在每一行中輸出由date處理的預設格式的時間戳
-u 輸出未解碼的NFS控制程式碼
-v 輸出一個稍微詳細的資訊,例如在Ip包中可以包括ttl和服務型別的資訊
-vv 輸出更為詳細的報文資訊
-w 直接將資料包寫入save_file檔案中,而不是不解析並列印出來
-W 與-C一起使用以限制建立檔案的數量,達到file_count則開始覆蓋
-x 以十六進位制顯示每個資訊包,減去其連結級別標題
-xx 以十六進位制顯示每個資訊包,包括其連結級別標題
-X 以十六進位制和ASCII顯示每個資訊包,減去其連結級別標題
-y 設定在將資訊包捕獲到datalinktype時要使用的資料鏈路型別
三、表示式
表示式用於過濾報文的條件,如果沒有則抓取所有的資料包,表示式有三種型別的關鍵字:
第一種是關於型別的關鍵字,主要的型別包括 host、net、port,預設為host
第二種是傳輸方向的關鍵字,主要的方向包括 src、dst、src or dst、src and dst,預設為 src or dst
第三種是通訊協議的關鍵字,主要的協議包括 wlan、ip、ip6、arp、rarp、decnet、tcp、udp,預設時監聽所有協議
四、輸出內容
[root@xl usr]# tcpdump -e -nn -S -X host 192.168.2.231
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
11:18:40.804021 00:22:64:2d:35:1c > 00:0c:29:85:0b:14, ethertype IPv4 (0x0800),
length 74: 192.168.3.43.57889 > 192.168.2.222.8080: S 1808454045:1808454045(0)
win 5840 <mss 1460,sackOK,timestamp 113878982 0,nop,wscale 7>
0x0000: 4510 003c 765b 4000 4006 3d3b c0a8 02e7 E..<v[@.@.=;....
0x0010: c0a8 02de e221 1f90 6bca d19d 0000 0000 .....!..k.......
0x0020: a002 16d0 bc70 0000 0204 05b4 0402 080a .....p..........
0x0030: 06c9 a7c6 0000 0000 0103 0307 ............
第一行:執行tcpdump命令,指定顯示資料鏈路層頭部、不轉換協議和埠號、以絕對值顯示包的INS序列號、以十六進位制和ASCII顯示資料包 第二行:提示使用選項-v和-vv,可以看到更全的輸出內容
第三行:監聽通過eth0這個NIC裝置的網路包,且它的鏈路層是基於乙太網的,要抓的包大小限制是96位元組
第四行:11:18:40.804021 表示抓包的時、分、秒、微秒;00:22:64:2d:35:1c > 00:0c:29:85:0b:14 表示從mac地址傳送到mac地址的主機;ethertype IPv4 (0x0800) 表示Ethernet幀的協議型別為ipv4(即程式碼為0x0800)
第五行:length 74 表示以太幀長度為66;192.168.3.43.57889 > 192.168.2.222.8080 表示從ip的埠傳送到ip的埠,>標識傳輸方向; S 建立連線的連線標識;1808454045:1808454045(0) 表示包的順序號是768512且沒有資料,格式為 first:last(n bytes),即包中資料的是從順序號first開始直到last結束的不包括last的n個位元組的使用者資料;
第六行:win 5840 表示視窗大小為5840位元組;mss 1460 表示由傳送端指明的最大報文段長度,傳送端將不接收超過這個長度的TCP報文段;sackOK 表示傳送端支援並同意使用SACK選擇性確認技術;nop是一個空操作選項, wscale 7 表示傳送端使用的視窗擴大因子為7
注:TCP連線標識有 SYN(建立連線)、FIN(關閉連線)、ACK(響應確認)、PSH(資料推送)、RST(連線重置)、URG(緊急置位),當出現SYN和SYN+ACK包時表示客戶端與伺服器端建立了一個連線,當出現PSH包時表示有DATA資料包被傳遞,當出現FIN包或RST包時表示客戶端與伺服器端斷開了連線
五、使用舉例
# 抓取所有和主機192.168.3.43通訊的包含傳送給和接收到的資料包
[root@xl usr]# tcpdump host 192.168.3.43
# 抓取所有與本機的tcp 80埠通訊的資料包
[root@xl usr]# tcpdump udp port 80
# 抓取所有在eth0網路介面上傳送給主機192.168.3.43的資料包
[root@xl usr]# tcpdump -i eth0 dst host 192.168.3.43
# 抓取與主機192.168.3.43的80埠通訊的資料包
[root@xl usr]# tcpdump -i eth0 host 192.168.3.43 and port 80
# 抓取主機192.168.2.222和主機192.168.3.43之外的所有主機通訊的ip包並寫入檔案
[root@xl usr]# tcpdump ip host 192.168.2.222 and ! 192.168.3.43 -w ./target.cap
相關文章
- 說說Linux抓包命令tcpdumpLinuxTCP
- tcpdump命令TCP
- 在 Linux 命令列中使用 tcpdump 抓包Linux命令列TCP
- Linux 基礎教程 30-tcpdump命令-2LinuxTCP
- tcpdump命令詳解TCP
- tcpdump 命令的常用選項:一TCP
- tcpdump 命令的常用選項:二TCP
- tcpdump 命令的常用選項:三TCP
- tcpdump 命令的個常用選項:一TCP
- tcpdump 命令的個常用選項:三TCP
- tcpdump 命令的個常用選項:二TCP
- 監聽網路流量命令tcpdump學習知識?Linux要學習什麼TCPLinux
- tcpdumpTCP
- Linux伺服器抓包工具tcpdump示例詳解Linux伺服器TCP
- Linux 網路分析必備技能:tcpdump 實戰詳解LinuxTCP
- tcpdump抓包TCP
- Tcpdump使用示例TCP
- tcpdump歷史TCP
- 019 Linux tcpdump 抓包案例入門可真簡單啊?LinuxTCP
- 【Linux命令】grep命令Linux
- Linux命令—–CP命令Linux
- linux命令大全-linux命令使用和管理Linux
- TcpDump使用手冊TCP
- Linux命令Linux
- Linux命令(1)——xargs命令Linux
- Linux命令之lldptool命令Linux
- Linux命令篇 - sed 命令Linux
- Linux命令篇 - grep 命令Linux
- Linux命令篇 - tar 命令Linux
- Linux命令之rz命令與sz命令Linux
- linux每日命令(5):mkdir命令Linux
- linux-mysql命令,tomcat命令LinuxMySqlTomcat
- linux每日命令(2):cd命令Linux
- linux每日命令(18):whereis命令Linux
- linux每日命令(12):nl命令Linux
- linux每日命令(10):touch命令Linux
- linux每日命令(11):cat命令Linux
- linux每日命令(38):iostat命令LinuxiOS