欢迎访问我的博客,你的支持,是我最大的动力!

tcpdump使用简明手册

Linux 小马奔腾 7483℃ 评论
目录:
[显示]

tcpdump支持对网络层、协议、主机、网络或端口的过滤,并支持and/or/not逻辑语句进行过滤操作

常用命令

#获取20个HTTP包,0x4745 为"GET"前两个字母"GE",0x4854 为"HTTP"前两个字母"HT"
tcpdump -nn -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854 -c 20 -w a.cap
#获取200个端口为9000的包并保存到文件
tcpdump tcp -i eth0 -c 200 port 9000 -w aaa.cap
#监听来自主机123.207.116.169在端口22上的TCP数据包
tcpdump tcp port 22 and src host 123.207.116.169
#抓取指定目标端口ip和端口的包
tcpdump -i eth0 dst 10.84.102.32 and port 3336 -nnn -c 10
#抓取指定来源ip的包
tcpdump -i eth0 src 10.84.102.32 -nnn -c 10
#抓取指定目标端口的详细数据包
tcpdump -i eth0 dst port 3336 -X -s 0 -c 10

实用命令实例

监视指定网络接口的数据包

tcpdump -i eth0

监视指定主机的数据包

#监视所有进入和离开某IP/域名的数据包
tcpdump -i eth0 host 192.168.1.10
tcpdump -i eth0 host www.baidu.com
#打印主机192.168.1.214与主机192.168.1.240或192.168.1.250间的通信,括号需要转义
tcpdump -i eth0 host 192.168.1.214 and \(192.168.1.240 or 192.168.1.250\)
#打印host1与其他主机间的ip数据包,但不包括与host2的
tcpdump -i eth0 ip host1 and not host2
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
#显示host1发送的所有数据
tcpdump -i eth0 src host host1
#显示host1收到的所有数据
tcpdump -i eth0 dst host host1

监视指定主机和端口的数据包

#所有192.168.1.10接收或发送的telnet数据包
tcpdump tcp port 23 and host 192.168.1.10
#对本机udp 123端口进行监控
tcpdump udp port 123

监视指定网络的数据包

#打印所有通过网关snup的ftp数据包(注意, 表达式被单引号括起来了, 这可以防止shell对其中的括号进行错误解析)
tcpdump 'gateway snup and (port ftp or ftp-data)'
tcpdump net ucb-ether

监视指定协议的数据包

#打印TCP会话中的的开始和结束数据包, 并且数据包的源或目的不是本地网络上的主机
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'
#打印所有源或目的端口是80, 网络层协议为IPv4, 并且含有数据,而不是SYN,FIN以及ACK-only等不含数据的数据包
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

综合运用

#抓取HTTP包
tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
0x4745 为"GET"前两个字母"GE",0x4854 为"HTTP"前两个字母"HT"
-X 16进制;-vv 详细信息;-e 二层头;-nn 不解析地址和端口;-S 绝对序号;-s  0 抓取长度不限制
tcpdump -nn -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854 -c 20 -w a.cap  简化方式

安装及依赖关系

yum install tcpdump

依赖关系
libpcap-1.5.3-11.el7.x86_64.rpm
openssl-1.0.2k-12.el7.x86_64.rpm
openssl-libs-1.0.2k-12.el7.x86_64.rpm
tcpdump-4.9.2-3.el7.x86_64.rpm

命令格式

选项说明:

-A 以ASCII码方式显示数据包,不含链路头信息,抓取网页数据时可方便查看数据
-c num 限制获取数据包的个数,随后停止
-C file-size 文件大小限制,单位M,与-w files配合使用,当文件超过file-size后,创建新的文件:原文件名.1
-d -dd -ddd 以容易阅读/c语言形式/十进制形式打印包匹配码,随后停止
-D 打印网络接口,显示数字和接口名,可用于-i interface的interface参数,随后停止
-e 显示二层(数据链路层)头信息
-E spi@ipaddr algo:secret,... 解码IPset ESP包
-f 显示外部IPv4地址时,采用数字方式
-F file 使用file文件作为过滤条件表达式,命令行上的输入将忽略
-i interface 指定接口
-l 对标准输出进行缓冲,同时需要打印和保存抓包记录时有用
-L 列出指定网络接口所支持的数据链路层类型后退出
-m module 通过module指定的file装载MIB库
-M secret 处理TCP-MD5
-n 地址:主机地址、端口号不做数字到名字的转换
-N 不打印host的域名部分,nic.ddn.mil -> nic
-O 禁用包匹配时使用的优化代码
-p 将网络接口设置为非混杂模式
-q 简化模式,打印尽可能少的信息
-R 设置对ESP/AH数据包的解析
-r file 从文件file中读取包数据
-S 使用绝对顺序打印TCP顺序号
-s snaplen 设置数据包抓取长度,默认为68字节
-T type 强制按type指定的协议分析包结构,如snmp
-t 不打印时间戳
-tt 显示为Unix时间戳 1527232436.361479
-ttt 显示为两行间的时间差 00:00:00.000299
-tttt 显示为 2018-05-25 15:12:55.979615
-u 打印未加密的NFS
-U 禁用保存文件时的文件输出缓冲
-v -vv -vvv 输出的详细级别,包的生存时间、标识、总长度、头部较验和等
-w 数据直接写入文件
-W filecount 与-C配合使用,限制打开文件的数目,超过时,循环文件
-x -xx 以16进制打印包内容
-XX 以16进制和ASCII方式打印数据
-y datalinktype 只捕获链路层协议类型为datalinktype的数据包
-z user 设置tcpdump运行的用户

转载请注明:轻风博客 » tcpdump使用简明手册

喜欢 (0)or分享 (0)