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端口进行输出

原文地址:https://www.cnblogs.com/fanren224/p/8457197.html