wireshark学习笔记(二)

来源:互联网 发布:表白二维码生成器软件 编辑:程序博客网 时间:2024/06/02 20:45
Wireshark学习笔记(二)
显示过滤器
过滤规则


wireshark自带了很多的过滤正则表达式,点击输入框的表达式就可以看到,有很多,根本需要查就可以。


点击菜单栏的分析查看过滤器就可以看默认的过滤规则


我们可以通过+号来添加心的过滤规则


另外我们可以自行定义一些过滤规则方便自己使用


Wireshark的规则语法












显示过滤器 用于显示我们要看到的内容,便于对数据进行分析
过滤IP


指定来源IP或者目标IP等于某个IP: 
例:ip.src eq 192.168.1.107 or ip.dst eq 202.102.192.68 
或者模糊书写:ip.addr eq 202.102.192.68将能显示出源和目的等于该IP的会话; 




过滤端口: 
例:tcp.port eq 80或者tcp.port==80不区分源或者目的端口只要数据包包含有80端口都将被过滤; 
tcp.port eq 80 or udp.port eq 80多条件匹配,匹配TCP或者UDP端口为80的数据包,不区分源或者目的端口; 
tcp.dst port==80显示目的端口为80的数据包; 
tcp.src port==80显示源端口为80的数据包; 
tcp.port>=1and tcp.port<=80过滤显示TCP端口大于等于1小于等于80范围内的数据包; 


过滤协议: 
例:在Filter(过滤)框内直接输入tcp、udp、arp、icmp、http、smtp、ftp、dns、msnms、ip、ssl、oicq、bootp、等等;可直接过滤协议。假如想要排除哪个协议不显示我们可以直接在前面加上 ! 来进行排除。例如:!arp 就对ARP协议的数据包不做显示; 




过滤MAC: 
eth.dst==A0:00:00:04:C5:84过滤目标mac为A0:00:00:04:C5:84的数据包; 
eth.src eq A0:00:00:04:C5:84过滤源mac为A0:00:00:04:C5:84的数据包; 
eth.addr eq A0:00:00:04:C5:84无论源或者目的地址为A0:00:00:04:C5:84的数据包都会进行过滤;




包长度过滤: 
例:udp.length==26这个长度是指udp本身固定长度8加上udp携带的数据字段的长度之和; 
tcp.len>=7指的是ip数据包(tcp下面那块数据),不包括tcp协议本身的长度; 
ip.len==94除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后; 
frame.len==119整个数据包长度,从eth开始到最后; 
eth--->ip or arp--->tcp or udp--->data 数据包长度层次区分; 




http模式过滤: 
例:http.request.method=="GET" 过滤HTTP协议的GET请求数据包; 
http.request.method=="POST" 过滤HTTP协议的POST请求数据包; 
http.request.uri=="/img/logo-edu.gif" 过滤HTTP协议所请求的特定URL字段的数据包; 
http contains"GET" 过滤包含GET请求字段的HTTP协议的数据包; 
http contains"HTTP/1." 过滤包含HTTP.1.1字段的HTTP协议数据包; 




GET包: 
http.request.method=="GET"&& http contains"Host:" 过滤HTTP请求类型为GET以及包含Host: 字段的数据包; 


http.request.method=="GET"&& http contains"User-Agent:" 过滤HTTP请求类型为GET并且携带User-Agent: 字段的数据包; 


POST包: 
http.request.method=="POST"&& http contains"Host:" 过滤HTTP请求类型为POST并且携带Host: 字段的数据包; 
http.request.method=="POST"&& http contains"User-Agent:" 过滤HTTP请求类型为POST并且携带User-Agent: 字段的数据包; 




响应包: 
http contains"HTTP/1.1 200OK"&& http contains"Content-Type:" 过滤返回值为200OK 并且携带Content-Type: 字段的数据包; 




TCP参数过滤: 
tcp.flags 显示包含TCP标志的封包; 
tcp.flags.syn==0x02显示包含TCPSYN标志的封包; 
tcp.window_size==0&&tcp.flags.reset!=1 过滤TCP滑动窗口为0并且tcp标志位不等于1的数据包; 




过滤内容: 
语法:tcp[offset,n](以下语法中的协议可变) 
例:tcp[0:20]或者tcp[20] 表示排除TCP头部长度后(即除去20Bye后),取1个携带的数据字段的字符; 
tcp[20:]表示排除TCP头部字段后,取数据字段1个以上字符; 
tcp[20:8]表示排除TCP头部长度后,取8个携带的数据字段的字符; 


语法:udp[offset:n] 
例:udp[8:3]==81:60:03排除UDP头部(8个bytes)后,再取3个数据字段的数值,判断是否与==后面的数据相同; 


语法:ip[offset:n] 
例:ip[20:4]==c0:e9:00:50除去IP头部20字节数后IP字段所携带的数据的前四个字节是否匹配==后面的数值; 


语法:eth.addr[offset:n](注意:该表达式用来匹配MAC地址,与前几个小有差异) 
例:eth.addr[0:3]==02:1a:11匹配MAC地址的前三个字段为==后面的值的数据包; 


例:判断upd下面那块数据包前三个是否等于0x20 0x21 0x22(0x20 0x21 0x22因为是16进制所以在这里书写格式为0xnn) 
我们都知道udp固定长度为8所以排除8字节的首部长度后就是UDP协议的Data字段的值了; 
格式:udp[8:3]==20:21:22 


例:判断排除tcp头部长度后有哪些数据包前三个数值是否等于0x20 0x21 0x22; 
tcp一般情况下,长度为20,但也有不是20的时候。比如增加了Option字段后; 
格式:tcp[20:3]==20:21:22 








matches(匹配)和contains(包含某字符串): 
matches(匹配):语法:tcp[8:n] matches "\\xnn\\xnn\\xnn" 
例:udp[8:2] matches "\\x00\\x35" 精确匹配除去UDP头部字段(即UDP协议携带的数据字段)载荷中十六进制数值为x00 x35 的数据包; 
例:udp[0:2] matches "\\x00\\x35" and ip.src==192.168.43.1 精确匹配udp协议载荷中前两个十六进制数值为x00 x35并且源地址是192.168.43.1的数据包; 
tcp[20:] matches "\\x75\\x05\\x62\\x64\\x69\\x6d\\x67\\x06\\x62\\x61\\x65" 匹配包含(是包含,和上面的精确匹配是有差别的)除去tcp协议头部字段长度后,载荷中为以上数值的数据包; 




Contains(包含):语法:udp contains nn;nn;nn;nn 
例:udp contains 66:0c:81:80:00:01 过滤包含 66:0c:81:80:00:01 十六进制数值的udp协议的数据包; 
ip.src==192.168.1.107 and tcp contains "GET" 匹源地址为192.168.1.107并且TCP协议携带GET请求的数据包; 
udp contains 7c:7c:7d:7d 匹配载荷中含有0x7c7c7d7d的UDP数据包;
0 0
原创粉丝点击