本帖最后由 紫寒梦轩 于 2025-4-10 10:58 编辑
tcpdump抓包高级过滤技巧 注意:例子中都用-i参数指定了抓取的网卡为eth1,实际使用时请自行变化。翻译此文的目的是加深记忆,可能理解有偏差,建议看原文或man手册。注:由于大部分是翻译的,所以只是高级技巧,并非权威指南! 基本语法 过滤主机
抓取所有经过eth1,目的或源地址是192.168.1.1的网络数据 #tcpdump -i eth1 host192.168.1.1 源地址 #tcpdump -i eth1 srchost 192.168.1.1 目的地址 #tcpdump -i eth1 dsthost 192.168.1.1 过滤端口 抓取所有经过eth1,目的或源端口是25的网络数据 #tcpdump -i eth1 port25 源端口 #tcpdump -i eth1 srcport25 目的端口 #tcpdump -i eth1 dstport25 网络过滤 #tcpdump -i eth1 net 192.168.1.1 #tcpdump -i eth1 srcnet 192.1681.1 #tcpdump -i eth1 dstnet 192.168.1.1 协议过滤 常用表达式 非:!or"not"(去掉双引号)且:&&or"and"或:||or"or"-抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数据#tcpdump-ieth1'((tcp)and(port80)and((dsthost192.168.1.254)or(dsthost192.168.1.200)))'-抓取所有经过eth1,目标MAC地址是00:01:02:03:04:05的ICMP数据 #tcpdump -i eth1'((icmp) and ((etherdsthost00:01:02:03:04:05)))'-抓取所有经过eth1,目的网络是192.168.1.1,但目的主机不是192.168.1.200的TCP数据 #tcpdump -i eth1'((tcp) and ((dstnet192.168) and (notdsthost192.168.1.200)))' 高级包头过滤 首先了解如何从包头过滤信息 proto【x:y】:过滤从x字节开始的y字节数 ,比如ip[2:2]过滤出3,4字节(第一字节从0字节开始编排) proto[x:y] & z =0 :proto[x:y]和z的与操作为0 proto[x:y] & z ! =0 :proto[x:y]和z的与操作不为0 proto[x:y] & z =z :proto[x:y]和z的与操作为z proto[x:y] =z :proto[x:y]和z的与操作为z |