tcpdump
tcpdump命令格式
tcpdump option filter
filter 是过滤包的条件,可以使用not,or,and进行组合 。windows下用wireshark
命令需要root身份执行。
选项:
-i 指定网卡接口,-i any 监听所有端口,不指定表示数字最小的网卡接口
-n 显示ip,不显示域名
-N 不打印主机的域名部分. 比如, 如果设置了此选现, tcpdump 将会打印'tieba' 而不是 'tieba.baidu.com'
-w - |strings 把包数据用字符展示出来,-w a.cap 把抓包结果写入a.cap中,
-C 1 如果a.cap 超过1M 大小,则新开一个文件, -C fileSize , 单位是MB
-r 从某个文件读取, -r a.cap
-X 以十六进制以及ASCII的形式打印数据内容
-x 除了打印出header外,还打印packet里面的数据(十六进制的形式)
-xx 以十六进制的形式打印header, data内容
-A 把每一个packet都用以ASCII的形式打印出来
-c 100 表示抓100个包
-D 查看机器上有哪些网络接口
-e 把连接层的头打印出来
-j timestamp type 修改输出的时间格式
-J 显示支持的时间格式
-l |tee dump.log tee是一个命令,在屏幕上显示dump内容,并把内容输出到dump.log中 ,tcpdump -l > dump.log
-q 就是quiet output, 尽量少的打印一些信息
-S 打印真实的,绝对的tcp seq no
-s 256 指定抓包文件的大小,默认抓取包长度是65535,单位是字节
-t 不要打时间戳
-tt 打出timstamp,从1970-1-1 以来的秒数,以及微秒数
-v 打印出详细结果
-vv 打印出更加详细的结果
一、基本语法
1.1、过滤主机
tcpdump -i eth1 host 192.168.1.1
tcpdump -i eth1 src host 192.168.1.1
tcpdump -i eth1 dst host 192.168.1.1
1.2、过滤端口
tcpdump -i eth1 port 25
tcpdump -i eth1 src port 25
tcpdump -i eth1 dst port 25
1.3、网络过滤
tcpdump -i eth1 net 192.168
tcpdump -i eth1 src net 192.168
tcpdump -i eth1 dst net 192.168
1.4、协议过滤
tcpdump -i eth1 arp
tcpdump -i eth1 ip
tcpdump -i eth1 tcp
tcpdump -i eth1 udp
tcpdump -i eth1 icmp
1.5、常用表达式
非 : ! or "not" (去掉双引号)
且 : && or "and"
或 : || or "or"
抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数据
tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'
抓取所有经过eth1,目标MAC地址是00:01:02:03:04:05的ICMP数据
tcpdump -i eth1 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'
抓取所有经过eth1,目的网络是192.168,但目的主机不是192.168.1.200的TCP数据
tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'
使用tcpdump抓取HTTP包
tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
0x4745 为"GET"前两个字母"GE",0x4854 为"HTTP"前两个字母"HT"。
tcpdump tcp port 80 -n -X -s 0 指定80端口进行输出