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数据包;
显示过滤器
过滤规则
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
- wireshark学习笔记(二)
- WireShark学习笔记(二)数据包过滤
- (二)wireshark入门教程---学习笔记
- wireshark学习(二)
- Wireshark使用方法(学习笔记二——查询统计)
- Wireshark使用方法(学习笔记二——查询统计)
- Wireshark使用方法(学习笔记二——查询统计)
- Wireshark使用方法(学习笔记二——查询统计)
- Wireshark使用方法(学习笔记二——查询统计)
- wireshark学习笔记(一)
- wireshark学习笔记(三)
- wireshark学习笔记(四)
- 学习Wireshark(二):应用Wireshark观察基本网络协议
- Wireshark学习二:TCP
- Wireshark使用方法(学习笔记一)
- Wireshark使用方法(学习笔记一)
- Wireshark使用方法(学习笔记一)
- Wireshark使用方法(学习笔记一)
- 二维码-clipboard的使用
- 大数据:Spark Shuffle(二)Executor、Driver之间Shuffle结果消息传递、追踪
- FTS数据库优化(Android)原理与应用详解(1)
- LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 大三学前端第二阶段--js第一部分总结
- wireshark学习笔记(二)
- Python插件cx_Oracle的安装
- MFC判断指定路径下目标文件、目标文件夹是否存在
- 7.scala:继承
- 图像的矩特征
- NumPy 数学函数
- vue初始化篇
- Python-排序用法-sort、sorted、reverse、reversed
- 蓝桥杯 分巧克力