一、概述
tcpdump可以將網路中傳送的數據包的“頭”完全截獲下來提供分析。支持網絡層、協議、主機、網絡或端口的過濾,并提供and、or、not等。
二、使用
默認啟動
tcpdump
普通情況下,直接啟動tcpdump將監視第一個網絡接口上所有流過的數據包。
監視指定的網絡接口的數據包
tcpdump -i eth1
如果不指定網卡,默認tcpdump只會監視第一個網絡接口,一般是eth0
監視指定主機的數據包
tcpdump host sundown
打印所有進入或離開sundown的數據包
tcpdump host 192.168.5.163
截獲指定ip的主機收到發出的所有數據包
tcpdump host A and \(B or C\)
打印A與B或者與C之間通信的數據包(同樣適用IP)
tcpdump ip host A and not B
打印A與任何其他主機之間通信的IP數據包,但不包括與B之間的數據包
tcpdump ip host IP1 and ! IP2
獲取主機ip1除了和主機ip2之外所有主機通信的ip包
tcpdump -i eth0 src host hostname
獲取主機hostname發送的所有數據
tcpdump -i eth0 dst host hostname
監視所有送到主機hostname的數據包
監視指定主機和端口的數據包
tcpdump tcp port 23 and host 210.27.48.1
獲取主機210.27.48.1接受和發出的telnet包
tcpdump udp port 123
對主機的udp 123端口進行監視(123為ntp的服務端口)
tcpdump與wireshark
tcpdump抓包,wireshark解析
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.1/24 -w ./target.cap
tcp: ip icmp arp rarp 和tcp、udp、icmp這些選項都要放在第一個參數位置,用來過濾數據報的類型
-i eht1: 只抓經過接口eht1的包
-t : 不顯示時間戳
-s 0 : 抓取數據包時默認抓取長度為68字節。加上-s 0后可以抓到完整的數據包
-c 100 :只抓取100個包
dst port ! 22:不抓取目標端口是22的數據包
src net 192.168.1.1/24 :數據包的源網絡地址為192.168.1.1/24
-w ./target.cap : 保存成cap文件,方便wireshark分析
抓取HTTP包
tcpdump -XvvennSs 0 -i eht0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
0x4745為“GET”前兩個字母“GE”,0x4854為“HTTP”前兩個字母“HT”
tcpdump對截獲的數據并沒有徹底解析,使用-w參數保存用wireshark解析