此处用于记录下本人所使用 wireshark 所可能用到的小技巧。Wireshark是一款强大的数据包分析工具,此处仅介绍常用功能。
Wireshark常用功能使用说明
1.相关介绍
WireShark 是一款网络数据包分析工具,常用于测试分析网络数据交互的相应过程。
1.1.工具栏功能介绍
1@主工具栏:wireshark 常用工具的快捷按钮。
2@过滤器工具栏:在分析数据包时指定特定的过滤规则以便于分析。
3@分组列表:所有数据包/分组的列表展示。
4@分组详情:选中单个数据包/分组的详情展示。
5@分组字节流:选中单个数据包/分组的字节展示。
6@状态栏:部分概略数据流。
自动换行
仅在此处介绍工具栏功能介绍:
1@:4 个按钮分别表示--开始抓包、停止当前抓包、基于当前网卡适配器重新抓包、网卡配置器捕获选项。
2@:4 个按钮分别表示--打开文件、保存文件、关闭文件、重新打开文件。
3@:8 个按钮分别表示--查找分组、查看上一个分组、查看下一个分组、查看特定分组、查看第一个分组、查看最后一个分组、实时捕获时滚动查看最新分组、应用分组着色。
这里的 packet 分组指的数据包或数据帧。
4@:4 个按钮分别表示--放大、缩小、初始大小、调整分组列表。
1.1.1.时间戳/分组列表概况等设置
时间戳:
在抓包分析时,往往需要考虑抓包的时间来辅助分析报文交互过程。此时需要在 wireshark 上开启以时间来显示数据包。
在菜单栏中依次选择:【视图】->【时间显示格式】->【---】,此时可根据需要选择对应的时间格式。效果展示如分组列表中所展示。
自动换行Note:博主之前遇到过一次时间戳格式显示错误的bug (重装wireshark及改变时间格式都无法解决),这里给出wireshark时间戳只显示 UTC 时间故障的一个解决办法。
可以通过删除分组列表的时间戳一列,再重新将该列添加至分组列表中解决。
分组列表概况:
为了更直观的观察数据包的相关信息,可以进行分组列表数据列的相关设置。
菜单栏中依次选择:【编辑】->【首选项】->【外观】->【列】,此时可根据需要选择分组列表中展示列信息。建议添加 vlan-id 便于观察。
1.2.Windows抓包
在网络分析时,通常会通过 SPAN/RSPAN/ERSPAN 技术将网络设备的某个端口的收发包方向的数据包镜像到其他端口的出方向上。此时可以在该端口上连接具有抓包功能的终端进行抓包分析。
Windows 系统终端抓包过程:
1@:由于终端往往可能有多个网卡适配器 (外接USB网卡适配器等),此时首先应确定所需抓包的网卡适配器。
此处仅给出示例确认:
首先可同时按下通过键盘上的【win】+【R】打开运行窗格,输入 control。
运行打开控制面板。此时打开控制面板,在控制面版中可选择【网络和Internet】中的【网络连接】可观察到 Windowns 系统的所有网卡适配器。
【控制面板】->【网络和Internet】->【网络连接】可通过禁用启用网卡适配器 (网卡适配器灯灭) 等方式来确认所使用的网卡适配器。
2@:打开 wireshark 选择对应的抓包网卡适配器。
双击网卡适配器进入对应的抓包界面。
Note:wireshark 不能动态读取网卡适配器。因此如果发现控制面板与 wireshark 欢迎界面显示的网卡适配器不一致,可重新打开 wireshark。
自动换行
如果需要重新选择网卡适配器,可暂停当前抓包后点击【捕获】->【选项】重新选择网卡适配器。
2.wireshark过滤器规则
2.1.wireshark过滤器规则
为了便于进行数据包的相关分析,在此处介绍下过滤器常用的表达式。
这是一种称为BPF(Berkeley Packet Filter) 过滤器规则,此处仅介绍常用的逻辑运算符规则。
自动换行使用过滤器过滤数据包时,如果无法精确知道所应选中的过滤原则,可通过如下方式进行查找:
点击【分析】->【显示过滤器表达式】,在【显示过滤器表达式】中搜索对应的规则并指定规则对应的值后,便可依照对应的规则进行数据包的筛选。
自动换行
例如,此时表示过滤源IP或目的IP为1.1.1.1的数据包。
常用比较运算符/逻辑运算符:
1@"is present":出现该字段,内涵规则。
2@"== ", "!=":值等于,值不等于。
3@"===", "!=== ":值完全,值完全不等于。
4@">","<",">=","<=":值大于,值小于,值大于等于,值小于等于。
5@"contains":包含。
6@"matches":字符串匹配
7@"in":包含于集合。
8@"and/&&":且。同时包含两条规则。
9@"or/||":或。匹配任意其中一条规则。
10@"()":合并。作为整体出现。
使用示例:
ip.src == 192.168.1.1:表示筛选任意源ip为192.168.1.1的数据包。
ip.len > 395:表示筛选IP包长大于395的数据包。
radius contains 0101007204:表示筛选radius包含0101007204字段的数据包。
radius.User_Name matches "test":表示筛选radius用户名为test的数据包。
ospf.advrouter in {1.1.1.1,2.2.2.2}:表示筛选ospf通告路由器为1.1.1.1或2.2.2.2的数据包。
自动换行
不同的比较运算符/逻辑运算符有时会有相同的结果,请灵活使用。
2.2.wireshark过滤器使用
使用比较运算符/逻辑运算符进行数据包过滤的方式略显繁琐,wireshark 工具支持更灵活的过滤方式。
首选选中数据包中相应字段,并右键。随后点击【作为过滤器应用】->【选中】。此时 wireshark 工具可自动生成对应的过滤规则,比手动选择规则更加方便灵活。
这里的【...且选中】表示在已经过一次过滤的基础上添加新的过滤规则。例如,按此处给出的示例在点击【...且选中】后会自动生成如下过滤规则:
(radius.User_Name == "test") && (radius.Framed-IP-Address == 255.1.2.3)。
2.3.从文本中读取数据包
实际应用时,往往无法直接获得 wireshark 数据包文件而只能获得 16 进制的字节流。wireshark 工具支持从文本中读取数据包。
1@:首先将 16 进制以如下方式保存于文本文件中。
每行 16 个字节,并在每行字节流前依次排列0000,0010等。
2@:以 HEX 方式打开文件。
依次点击【文件】->【从Hex转储导入】->【文件】->【封装类型】->【导入】。随后即可通过wireshark读取相应的数据流。