分类: LINUX
2015-06-04 08:14:13
-i
-v指定详细模式输出详细的报文信息
-vv指定更详细模式输出更详细的报文信息
-x指定以16进制数格式显示数据包
-X规定以ASCII码格式显示输出
-n规定在捕获过程中不需向DNS查询IP地址
-F
-D显示可用网络接口
-s
TCPDump的表达式:
默认情况下TCPDump将捕获所有到达网络的数据包.这并不是我们想要的,因此就必须通过表达式来限制不必要的流量,只输出我们需要监听的数据包.
1.类型限定词
类型限定词有: host, port和net. host用来指定主机或目的地址,port指定端口,net可以用来指定某一子网. 如:
tcpdump 'port 80' 监听80端口
tcpdump 'net 192.168.1' 监听子网192.168.1.0
tcpdump 'net 192.168.1.0/24'
2.逻辑运算符
逻辑运算符有AND,OR和NOT. ()可将多个表达式组合起来.
tcpdump 'port 80 and (host 192.168.1.10 or host 192.168.1.11)'
监听主机192.168.1.10 或192.168.1.11的80端口.
3.传输方向限定词
关键词src指定源地址,dst指定目的地址
tcpdump 'port 80 and (src 192.168.1.10 or src 192.168.1.11)'
tcpdump 'dst port 25'
4.协议限定词
用来捕获特定协议的数据包有: ether(Ethernet), TCP,UDP,ICMP,IP,ip6(IPv6),ARP,rarp(reverse ARP)等.
5.原语
原语主要有: 算术运算符(+,-,*,/,>,<,>=,<=,!=等), broadcast, gateway, greater, less.
broadcast捕获广播数据包, greater和less相当于>=和<=.
小例子:
//本机20000端口通讯数据抓包
tcpdump -s 0 -i lo port 20000 -w /tmp/20000.pcap
//10.8.2.181:7001端口通讯数据抓包
tcpdump -i eth0 -s 0 host 10.8.2.181 and port 7001 -w /tmp/syrk.pcap
指定范围 tcpdump -n -nn 'ip[16] == 192 and ip[17] == 168 and ip[18] == 1 and ip[19] > 9 and ip[19] < 101'
ip[16]是取得ip协议偏移为16的那个字节的值。这个
方法也可用于其他协议,例如:
icmp[0], icmp[1]是取得icmp协议偏移是0或1的值。
我要抓取ping命令发出和接收报文,我可以用这样的命令:
tcpdump 'icmp and (icmp[0] == 0 or icmp[0] == 8)'