Wireshark—捕获数据包 - 逆袭学霸
一、学习导图
二、使用捕获文件
1、保存和导出捕获文件
(1)保存,选择【File—>Save As】。文件格式,.pcap。另外,还有一个功能,可以指定需要保存的数据包范围,可以选择只保存一定序号范围内数据包、标记了数据包、或者经过过滤筛选后显示出来的数据包等。
(2)导出,选择【File—>Export】。可导出的格式为,文本文件、PostScript、逗号分隔值(CSV)、XML。
2、合并捕获文件
首先打开一个想要合并的文件,然后选择【File—>Merge】,再选择希望合并到当前文件的另一个文件,再选择希望进行合并的方式。
三、分析数据包
1、查找
找到符合特定条件的数据包,按Ctrl+F打开Find Packet对话框
用来查找数据包的搜索类型:
(1)Display filter:not ip/ip.addr==192.168.1.1/arp
(2)Hex value:00:ff/fff:ff/00:AB:B1:f0
(3)String:Workstation1/UserB/domain
注意:单击Find,就会找到满足关键词的第一个数据包,Ctrl+N找到下一个满足关键词的数据包,Ctrl+B找到前一个满足关键词的数据包。
2、标记
鼠标右击Packet List面板,在弹出菜单中选择Mark Packet,或者在Packet List面板中选中一个数据包,然后按Ctrl+M。再一次按Ctrl+M则就取消标记。
如果想在标记的数据包中间前后切换,分别按shift+ctrl+N和shift+ctrl+B。
3、打印
打印,选择【File—>Print】。有格式的选择,也可以按一定的范围打印数据包,或者作为过滤器筛选结果显示出来的数据包。
四、设定时间显示格式和相对参考
1、时间显示格式
与时间相关的选项在主菜单中的View菜单中找到。
2、数据包的相对时间参考
以一个数据包作为基准,之后的数据包都以此计算相对时间戳。当一系列的顺序事件不是在捕获开始时被触发,而是在中间某个地方被触发,这个功能非常好用。
某一个数据包设定为时间参考:在Packet List面板中选择作为相对参考的数据包,然后在主菜单中选择【Edit—>Set Time Reference】。被设定的数据包的Time列会显示*REF*。
注意:只有当捕获的时间显示格式设定为相对于捕获开始的时间,设定数据包时间参考才有用处。使用其他设定都不会生成有用的结果,并且其产生的一堆时间会使人困惑。
五、设定捕获项
六、使用过滤器
过滤器可以找到所希望进行分析的数据包。也就是,一个过滤器就是定义了一个条件,用来包含或者排除数据包的表达式。
Wireshark,主要提供两种过滤器,捕获过滤器和显示过滤器。
1、捕获过滤器
(1)定义:当进行数据包捕获时,只有那些满足给定的包含/排除表达式的数据包会被捕获。
(2)捕获过滤器的BPF语法:由于大部分的数据包嗅探软件都依赖于使用BPF的libpcap/WinPcap库,Berkeley Packet Filter(BPF)语法广泛应用于多种数据包嗅探软件。使用BPF语法创建的过滤器被称为表达式,并且每个表达式包含一个或多个原语,每个原语包含一个或多个限定词,然后跟着ID名字或者数字。BPF限定词如下:
限定词 | 说明 | 例子 |
Type | 指出名字或数字所代表的意义 | host/net/port |
Dir | 指明传输方向是前往还是来自名字或数字 | src/dst |
Proto | 限定所要匹配的协议 | ether/ip/tcp/udp/http/ftp |
例:dst host 192.168.1.2 && tcp port 80
(3)主机名和地址过滤器
a.基于IPV4.IPV6地址的host限定词过滤:host 172.16.16.111 或 host 2001:db8:85a3:8a2e:370:7334
b.基于一台设备的主机名host限定词过滤:host testserver1
c.MAC地址进行过滤:ether host 00-1a-a0-52-e2-a0
d.对源/目的主机流量:src/dst host 172.16.16.111
(4)端口和协议的过滤器
a.port 8080
b.!port 8080
c.dst port 8080
(5)协议过滤器
(6)协议域过滤器
a.icmp[0]==3的含义:类型域位于icmp包的最开头,即就是偏移量为0的位置,将返回一个1字节的整数值进行比较,类型3代表目标不可达
b.icmp[0:2]==0x0301的含义:创建一个检查数据包头部偏移量为0处2个字节数据的过滤器,并与16进制值0301(类型3,代码1)进行比较
c.tcp[13]&4==4的含义:指定希望在这个tcp[13]这个字节中检查的第4个比特位置
(7)捕获过滤器表达式样例
过滤器 | 说明 |
tcp[13]&32==32 | 设置了URG位的TCP数据包 |
tcp[13]&16==16 | 设置了ACK位的TCP数据包 |
tcp[13]&8==8 | 设置了PSH位的TCP数据包 |
tcp[13]&4==4 | 设置了RST位的TCP数据包 |
tcp[13]&2==2 | 设置了SYN位的TCP数据包 |
tcp[13]&1==1 | 设置了FIN位的TCP数据包 |
tcp[13]==18 | TCP SYN-ACK数据包 |
ether host 00:00:00:00:00:00 | 流入或流出你的MAC地址的流量 |
!ether host 00:00:00:00:00:00 | 不流入或流出你的MAC地址的流量 |
broadcast | 仅广播流量 |
icmp | ICMP流量 |
icmp[0:2]==0x0301 | ICMP目标不可达、主机不可达 |
ip | 仅IPV4流量 |
ip6 | 仅IPV6流量 |
udp | 仅UDP流量 |
2、显示过滤器
显示过滤器应用于捕获文件,只显示那些符合过滤条件的数据包。
(1)过滤器表达式对话框,Capture Option对话框中单击Capture Filter按钮,再单击Expression按钮
(2)过滤器表达式语法结构
a. ip.addr==192.168.1.1——只显示192.168.1.1这个ip地址相关数据包的过滤器
b. frame.len<128——查看长度小于128字节的数据包
(3)显示过滤器表达式样例
过滤器 | 说明 |
!tcp.port==3389 | 排除RDP流量 |
tcp.flags.syn==1 | 具有SYN标志位的TCP数据包 |
tcp.flags.rst==1 | 具有RST标志位的TCP数据包 |
!arp | 排除ARP流量 |
http | 所有HTTP流量 |
tcp.port==23||tcp.port==21 | 文本管理流量 |
smtp||pop||imap | 文本email流量 |