前言
在实习的时候跟前辈聊流量监控的时候,说 WireShark 挺好用的,判断网络协议,网络故障等情况的时候都可以利用该工具进行判断,很快找到故障的地方。然后前辈微微一笑,说那你既然知道 WireShark 是流量监控的利器,但是你能从浩如烟海的数据流中快速定位到你想检测的数据吗?
我愣了一下,我说道我一般只是 ip.addr 定位我想要的 IP 。或者是在无网的情况下,网络流量不是很多,也是非常好找的。
然后前辈给我说,真实情况是如果你监听某台电脑的流量的时候,你要面对的流量比你之前遇见还要多,你获得的线索也不一定只有 IP ,也可能是一个网址,也可能是一个流量碎片。所以说我建议抽空再学习下 WireShark 里的流量过滤规则,我觉得会对你以后的工作有帮助的。然后在一个晚上的恶补,为了能记忆更加深刻,写下了这个笔记
正文
IP 过滤
-
ip.src == 192.168.31.2 //筛选源 IP 地址为192.168.31.2的信息
-
ip.dst == 192.168.31.77 //筛选目的 IP 地址为 192.168.31.77
//实际上也可以利用 AND 和 OR 进行筛选
-
ip.src == 192.168.31.2 or ip.dst == 192.168.31.77 //这段话可以理解为:监控源 IP 地址为192.168.31.2发送的信息或者向 IP 为192.168.31.77 发送的地址
-
ip.src == 192.168.31.2 and ip.dst == 192.168.31.77 //这段话可以理解为:监控源 IP 地址为192.168.31.2发送的信息和向 IP 为192.168.31.77 发送的地址
-
ip.addr == 192.168.31.77 //则是显示向192.168.31.77 发送信息的所有源 IP 地址。
端口过滤
-
tcp.prot == 80 // TCP协议中不管来源还是目的地都是80端口的显示
-
udp.port == 77 // UDP协议中不管是来源还是目的地是80端口的显示
-
tcp.srcport == 80 //TCP协议中只显示来源端口为80
-
tcp.dstprot == 80 //TCP协议中只显示目的端口为80
// 也可以把 tcp 换为 udp ,只不过协议不同
// 同样也可以使用 AND 和 OR 就不详细讲了,学过编程语言的都应该很好理解
- tcp.port >=1 and tcp.port <= 80 // 筛选端口为1到80之间的流量
过滤协议
- tcp
- udp
- arp
- icmp
- http
- ftp
- 等等
// 如果想要排除某个协议就在协议前面加个! 比方说排除 ftp 协议就这么写 !ftp
过滤MAC
// 跟过滤 IP 并没有太大的区别,只不过把 IP 改成了 eth,后面的 IP 地址改为 MAC 地址
-
eth.dst == A0:00:00:04:C5:84 // 过滤目标mac
-
eth.src == A0:00:00:04:C5:84 // 过滤来源mac
// 也可以把:改成-
- eth.addr == A0:00:00:04:C5:84 // 过滤来源mac
http模式过滤
-
http.request.method == “GET” // 过滤 http 中的 GET 请求
-
http.request.method == “POST” // 过滤 http 中的 POST 请求
-
http.request.uri == “/img/logo-edu.gif” 过滤 http 中 url 地址中包含的片段
-
http contains "User-Agent"寻找 http 中包含的 User-Agent 字段
-
http contains “HTTP/1.1 200 OK” 寻找响应成功的流量
其他事项
-
如果说只是得到了一个片段,可以使用 ctrl + F 进行查找,不过要注意是查找字符串,同时也要注意查找类别.
-
过滤器会显示语法的正误性,如果是正确的语法是绿色的,错误的则是红色的.
-
有的技术文中写的是 eq ,实际上就是 == ,但是 contains 不是 == ,准确说是包含,也可以理解为搜索
-
如果学过编程,则对> < = 之类的并不陌生,在里面有的可以表达一定的区间范围。