tcpdump——數據包截獲和分析工具
tcpdump可以將網絡中傳送的數據包的“頭”完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的信息。
#截獲所有192.168.131.128主機收到的和發出的所有的分組
# tcpdump host 192.168.131.128
#截獲主機192.168.131.130和主機192.168.131.128的通信
# tcpdump host 192.168.131.130 and 192.168.131.128
# tcpdump -n -i eth1 host 192.168.131.130 and host 192.168.131.128
#獲取主機192.168.131.130除了和主機192.168.131.128之外所有主機通信的ip包
# tcpdump host 192.168.131.130 and ! 192.168.131.128
#獲取主機192.168.131.128接收或發出的ssh包,並且不轉換主機名
# tcpdump -nn -n src host 192.168.131.128 and port 22 and tcp
#獲取主機192.168.131.130接收或發出的ssh包,並把mac地址也一同顯示
# tcpdump -e src host 192.168.131.130 and port 22 and tcp -n -nn
#過濾的是源主機爲192.168.131.130與目的網絡爲192.168.131.0的報頭
# tcpdump src host 192.168.131.130 and dst net 192.168.131.0/24
#過濾源主機物理地址爲XXX的報頭
# tcpdump ether src 00:0C:29:A1:47:12
#過濾源主機192.168.131.130和目的端口不是telnet的報頭,並導入到t.txt文件中
# tcpdump src host 192.168.131.130 and dst port not telnet -l >t.txt
#監聽來自eth1適配卡且通信協議爲port 22,目標來源爲192.168.131.128的數據包
# tcpdump -i eth1 -nn port 22 and src host 192.168.131.128
#抓取訪問eth1適配卡且訪問端口爲tcp 9080
# tcpdump -i eth1 dst 192.168.131.130 and tcp port 9080
#抓取與主機192.168.131.130或着與主機192.168.131.128通信報文,並且顯示在控制檯上
# tcpdump -X -s 1024 -i eth1 host 192.168.131.130 or 192.168.131.128 and host 192.168.0.112
#截取全部進入服務器的數據
# tcpdump -n -i eth1 dst 192.168.131.130
##tcpdump 與wireshark
Wireshark(以前是ethereal)是Windows下非常簡單易用的抓包工具。但在Linux下很難找到一個好用的圖形化抓包工具。還好有Tcpdump。我們可以用Tcpdump + Wireshark 的完美組合實現:在 Linux 裏抓包,然後在Windows 裏分析包。
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
1、tcp: ip icmp arp rarp 和 tcp、udp、icmp這些選項等都要放到第一個參數的位置,用來過濾數據報的類型
2、-i eth1 : 只抓經過接口eth1的包
3、-t : 不顯示時間戳
4、-s 0 : 抓取數據包時默認抓取長度爲68字節。加上-S 0 後可以抓到完整的數據包
5、-c 100 : 只抓取100個數據包
6、dst port ! 22 : 不抓取目標端口是22的數據包
7、src net 192.168.1.0/24 : 數據包的源網絡地址爲192.168.1.0/24
8、-w ./target.cap : 保存成cap文件,方便用wireshark分析