一、Wireshark使用
打开软件,选择以太网
1、时间设置时间显示格式
这个时间戳不易直观,我们修改
2、抓包使用的命令
1)IP地址过滤
ip.addr==192.168.1.114 //筛选出源IP或者目的IP地址是192.168.1.114的全部数据包。
ip.src==192.168.1.114 //筛选出源IP地址是182.254.110.91的数据包
ip.dst==192.168.1.114 //筛选出目的地址是192.168.1.114的数据包。
2)MAC地址过滤
常用命令:
eth.addr==31:rf:e7:c7:41:c4 //筛选出源MAC地址或者目的MAC地址使用的是 31:rf:e7:c7:41:c4的全部数据包。
eth.src==31:rf:e7:c7:41:c4 //筛选出源MAC地址是31:rf:e7:c7:41:c4的数据包
eth.dst==31:rf:e7:c7:41:c4 //筛选出目的MAC地址是31:rf:e7:c7:41:c4的数据包。
3)端口过滤
tcp.port==80 //根据TCP端口筛选数据包,包括源端口或者目的端口
tcp.dstport==80 //根据目的TCP端口筛选数据包。
tcp.srcport==80 //根据源TCP端口筛选数据包。
udp.port==4010 //根据UDP端口筛选数据包,包括源端口或者目的端口
udp.srcport==4010 //根据源UDP端口筛选数据包。
udp.dstport==4010 //根据目的UDP端口筛选数据包。
4)逻辑条件组合筛选
逻辑表达式汇总:
|| //逻辑或
&& //逻辑与
! //逻辑非
1、逻辑与筛选方法
命令:(ip.src==192.168.1.114)&&(ip.dst==180.114.144.101)
或(ip.src==192.168.1.114)&&(ip.dst==121.114.244.119)
含义:筛选出源ip地址是192.168.1.114并且目的地址是180.114.144.101的数据包。
2、逻辑或筛选
命令:(ip.src==192.168.1.114)||(ip.src==182.254.110.91)
含义:筛选出源IP地址是192.168.1.114或者源ip地址是182.254.110.91的数据包
3、逻辑非筛选
命令:!(ip.addr==192.168.1.114)
含义:筛选出不是192.168.1.114的数据包。
5)包长度过滤
udp.length == 26 这个长度是指udp本身固定长度8加上udp下面那块数据包之和
tcp.len >= 7 指的是ip数据包(tcp下面那块数据),不包括tcp本身
ip.len == 94 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后
frame.len == 119 整个数据包长度,从eth开始到最后
我试过TCP协议发送数据,抓取某个长度数据包以及由那个IP发出的就是使用组合指令,如下图
注意:()一定要,不加会出错
6)http模式过滤
例子:
http.request.method == "GET"
http.request.method == "POST"
http.request.uri == "/img/logo-edu.gif"
http contains "GET"
http contains "HTTP/1."
http.request.method == "GET" && http contains "Host: "
http.request.method == "GET" && http contains "User-Agent: "
// POST包
http.request.method == "POST" && http contains "Host: "
http.request.method == "POST" && http contains "User-Agent: "
// 响应包
http contains "HTTP/1.1 200 OK" && http contains "Content-Type: "
http contains "HTTP/1.0 200 OK" && http contains "Content-Type: "
7)TCP参数过滤
tcp.flags 显示包含TCP标志的封包。
tcp.flags.syn == 0x02 显示包含TCP SYN标志的封包。
tcp.window_size == 0 && tcp.flags.reset != 1
8)包内容过滤
tcp[20:8]表示从20开始,取8个字符
tcp[offset,n]
udp[8:3]==81:60:03 // 偏移8个bytes,再取3个数,是否与==后面的数据相等?
udp[8:1]==32 如果我猜的没有错的话,应该是udp[offset:截取个数]=nValue
eth.addr[0:3]==00:06:5B
例子:
判断upd下面那块数据包前三个是否等于0x20 0x21 0x22
我们都知道udp固定长度为8
udp[8:3]==20:21:22
判断tcp那块数据包前三个是否等于0x20 0x21 0x22
tcp一般情况下,长度为20,但也有不是20的时候
tcp[8:3]==20:21:22
如果想得到最准确的,应该先知道tcp长度
二、pinginfoview抓包工具(有中文版和英文版)
这个工具好处就可以长ping多个ip
实际应用如下图
三、安装包
链接:https://pan.baidu.com/s/1ByVFtHdOmTQOSj3rDAqDdQ
提取码:mg7o