一、whireshark过滤器分类
- 抓包过滤器(在抓包之前设置的过滤器,限制抓包过程中,只抓取某一类型的数据包)
- 显示过滤器(对已经或正在抓取的数据包进行实时过滤)
二、抓包过滤器学习
1、语法(BPF语法,Berkeley Packet fillter),基于libpcap/wincap库
2、类型Type(host,net,port)
3、方向(src,dst)
4、协议Proto(ether,ip,tcp,udp,http,ftp)
5、逻辑运算符(&&,||,!)
语法例子 ---------->
protocal(协议) | direction(方向) | host(类型) | value(值) | logical(逻辑运算符) | other expresstion(其他表达式) |
tcp | src | host | 192.168.1.1 | && | tcp dst port 192.168.1.3 |
例如:
tcp dst port 8080 显示目的地的tcp端口为8080的封包
ip src host 192.168.1.1 显示源地址为192.168.1.1的封包
not icmp (! icmp) 显示除了icmp以外的所有封包
host 192.168.1.1 显示目的地址和源地位为192.168.1.1的封包
src 192.168.1.1 and port 80 显示源地址为192.168.1.1并且端口号为80的封包
ether src host 00:88:cb:8e:9d:ff 过滤源mac地址为00:88:cb:8e:9d:ff的封包
三、显示过滤器(与抓包过滤器语法有区别)
1、比较操作符(==,<,>,>=,<=,!=)
2、逻辑运算符(and,or,xor,not)
3、IP地址(ip.addr,ip.src,ip.dst)
4、端口过滤(tcp.port,tcpsrc.port,tcpdst.port,tcp.flag.syn,tcp.flag.ack)
5、协议过滤(ip,http,arp,icmp,udp,tcp,dns...)
语法例子-------------->
协议 | 协议子类 | 协议子类 | 比较操作符 | 值 | 逻辑运算符 | 其他表达式 |
ip | addr | == | 192.168.1.12 | || | tcp.port==80 |
例如:
snmp || icmp || dns (显示snmo,或icmp或dns的封包)
ip.addr == 10.1.1.1 (只显示来源或目的ip地址为10.1.1.1的封包)
tcp.dstprot == 25 (只显示目的端口号为25的封包)