2、Wireshark核心操作:数据包列表、数据包详情、数据包字节流、抓包过滤器与显示过滤器
说实话,很多刚入行的朋友拿到Wireshark,第一反应就是「点开始,然后看那一堆花花绿绿的包飘过去」。嗯,这其实跟没看差不多。我见过太多人对着满屏的报文发呆,完全不知道从哪下手。
今天我就带你把这四个核心模块彻底捋清楚。说白了,Wireshark就三板斧:怎么看包、怎么过滤包、怎么分析包。掌握了这些,你才算真正入了抓包的门。
2.1 数据包列表:你的第一战场
打开Wireshark,最显眼的就是上面那个不停滚动的列表。这就是数据包列表,也叫Packet List面板。它默认展示每个包的编号、时间、源地址、目标地址、协议、长度和Info信息。
我个人习惯,一上来先做两件事:
- 调整时间格式:默认是「相对时间」,我一般改成「绝对时间(时:分:秒.微秒)」。这样方便跟服务器日志对时间。
- 开启着色规则:Wireshark默认就有颜色标记。比如TCP SYN包是深红色,HTTP是绿色,DNS是浅蓝。一眼扫过去,你就能知道流量的大致构成。
我在项目中遇到过一个问题:客户说网络卡,我抓了5分钟包,列表里密密麻麻全是TCP重传的红色包。根本不用看详情,光看颜色就知道问题出在哪了。
2.2 数据包详情:层层剥开看本质
在列表里点中一个包,下面就会出现详情面板。这里Wireshark帮你把二进制数据解析成了人类能读懂的层级结构。从上到下依次是:
- Frame:物理层信息,比如帧大小、时间戳
- Ethernet II:数据链路层,源MAC和目标MAC
- IP:网络层,源IP和目标IP
- TCP/UDP:传输层,端口号、序列号、标志位
- 应用层:比如HTTP的请求行、响应码
你想想看,一个网络包从网线到应用,中间经历了多少层封装?Wireshark帮你一层层拆开,每一层都对应一个协议头。我经常跟团队说:「看详情,就是看每一层协议头里的字段值」。
我记得有一次排查一个诡异的HTTP 400错误。应用层日志只说了「请求格式错误」,但没说是哪错了。我打开详情面板,一层层往下翻,最后在HTTP Header里发现了一个非法字符。嗯,这就是细节的力量。
2.3 数据包字节流:最原始的二进制
最下面那个面板,就是字节流面板。左边是十六进制,右边是对应的ASCII字符。说实话,日常分析中你很少需要直接看二进制。但有两个场景,我建议你一定要看:
- 协议解析出错时:Wireshark有时候会解析错。这时候你得看原始字节,自己判断。
- 分析加密流量:虽然内容看不懂,但你可以看握手阶段的随机数、证书等关键字段。
字节流面板里,灰色的是协议头,黑色的是数据载荷。你点中详情面板里的某个字段,字节流面板就会自动选中对应的字节。这个联动,说白了就是Wireshark最核心的交互逻辑。
2.4 抓包过滤器:别什么都往兜里装
很多人一上来就点「开始捕获」,结果抓了一堆没用的广播包、ARP包。我建议你养成一个好习惯:抓包之前,先想清楚你要看什么。
抓包过滤器是在抓包之前设置的,它决定了哪些包能进入Wireshark的缓冲区。语法用的是BPF(Berkeley Packet Filter),格式是:协议 方向 类型 值。
常用的几个,我列出来:
| 需求 | 过滤器表达式 |
|---|---|
| 只抓某个IP的流量 | host 192.168.1.100 |
| 只抓HTTP流量 | tcp port 80 |
| 排除广播包 | not broadcast |
| 抓某个网段的流量 | net 192.168.1.0/24 |
2.5 显示过滤器:大海捞针的利器
显示过滤器是在抓包之后用的。它不会删除任何包,只是把不符合条件的包隐藏起来。这个功能我几乎每时每刻都在用。
语法跟抓包过滤器完全不同,它用的是Wireshark自己的表达式格式。比如:
http:只看HTTP协议ip.addr == 192.168.1.1:只看这个IP的流量tcp.port == 443:只看443端口的流量http.response.code == 404:只看返回404的HTTP响应
显示过滤器最强大的地方在于,它可以组合使用。比如我想看「从192.168.1.100发出的、且是TCP SYN包」:
ip.src == 192.168.1.100 and tcp.flags.syn == 1 and tcp.flags.ack == 0
你输入的时候,Wireshark会自动帮你补全字段名。如果表达式是绿色的,说明语法正确;如果是红色的,说明写错了。这个功能很贴心。
tcp.analysis.retransmission,我直接存成按钮,下次一键点击就行。
2.6 一张图看懂核心逻辑
下面这张图,是我自己总结的Wireshark核心操作流程。你照着这个顺序走,基本不会乱。
这张图把整个流程串起来了。你从选择接口开始,到设置抓包过滤器,再到开始抓包,然后通过三个面板联动分析,最后用显示过滤器精确定位。每一步都有它的意义。
我曾经带过一个新人,他抓了包不知道怎么看。我就让他照着这个流程走一遍。先看列表里有没有异常颜色,再点开详情看协议头,最后用过滤器把可疑的包单独拎出来。半小时后他就跟我说:「原来这么简单。」
嗯,确实就这么简单。关键是你要养成这个习惯。
公众号:蓝海资料掘金营,微信deep3321