Linux tcpdump常用抓包语法

一、基本语法

过滤主机:
tcpdump -i any host 192.168.1.1

过滤端口:
tcpdump -i any port 80

过滤某一网段:
tcpdump -i any net 192.168.0.0/16

过滤协议:
tcpdump -i eth1 arp/ip/tcp/udp/icmp


常用表达式
非 : ! 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)))'

常用参数:
-n  不把IP地址解析成域名
-nn    不用域名,不用端口名,使用IP+端口号
-i   指定要抓取数据包的网卡名称  例如:-i  ens33  或者  -i  any
-c   指定抓取包的个数
tcpdump  -i  ens33  -c  10  #只抓取10个包 
-w   把抓取到的数据存放到文件中供以后分析

常用语句:
tcpdump -i any host 41.50.5.28 -s 0 -w /tmp/28stream.cap      #抓包并保存
tcpdump -nn host 172.16.8.56       #抓包实时查看
tcpdump -i bond0 -s 0 -vv -w /tmp/605_5458.pcap host 236.0.1.178 and port 5458     #展示抓到的包数量
tcpdump -X -i any host 41.50.5.28   #实时展示包内容
tcpdump igmp -i bond0 -c 40 and host 239.252.15.220 -s 0 -w /tmp/igmp.cap             #抓固定数量的igmp包


二、高级包头过滤

在网关可以用下面的命令看看网络中谁在使用traceroute
tcpdump -i eth1 'ip[8] < 5'

抓大于X字节的包
大于600字节
tcpdump -i eth1 'ip[2:2] > 600'

抓取源端口大于1024的TCP数据包
tcpdump -i eth1 'tcp[0:2] > 1024'

只抓SYN包,第十四字节是二进制的00000010,也就是十进制的2
tcpdump -i eth1 'tcp[13] = 2'


抓SYN, ACK (00010010 or 18)
tcpdump -i eth1 'tcp[13] = 18'


抓SYN或者SYN-ACK
tcpdump -i eth1 'tcp[13] & 2 = 2'


抓PSH-ACK
tcpdump -i eth1 'tcp[13] = 24'


抓所有包含FIN标记的包(FIN通常和ACK一起,表示幽会完了,回见)
tcpdump -i eth1 'tcp[13] & 1 = 1'


抓RST(勾搭没成功,伟大的greatwall对她认为有敏感信息的连接发RST包,典型的棒打鸳鸯)
tcpdump -i eth1 'tcp[13] & 4 = 4'

只抓SYN包
tcpdump -i eth1 'tcp[tcpflags] = tcp-syn'


抓SYN, ACK
tcpdump -i eth1 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack != 0'


抓SMTP数据
tcpdump -i eth1 '((port 25) and (tcp[(tcp[12]>>2):4] = 0x4d41494c))'

抓取数据区开始为"MAIL"的包,"MAIL"的十六进制为0x4d41494c。

 

抓HTTP GET数据
tcpdump -i eth1 'tcp[(tcp[12]>>2):4] = 0x47455420'

"GET "的十六进制是47455420

 

抓SSH返回
tcpdump -i eth1 'tcp[(tcp[12]>>2):4] = 0x5353482D'


"SSH-"的十六进制是0x5353482D
tcpdump -i eth1 '(tcp[(tcp[12]>>2):4] = 0x5353482D) and (tcp[((tcp[12]>>2)+4):2] = 0x312E)'
 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值