号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
下午好,我的网工朋友。
在现在,网络流量的监控与分析变得尤为重要。
无论是排查网络故障、优化性能还是确保网络安全,都需要精确地捕捉并理解网络通信中的每一个细节。而Wireshark,作为一款强大的网络协议分析工具,想必各位都因它的方便快捷而有所耳闻。
Wireshark不仅仅是一个简单的数据包嗅探器,它还具备深入解析各种网络协议的能力。通过使用Wireshark,用户可以实时捕获网络流量,并对这些数据包进行详细的解码和分析。
然而,面对庞大的网络流量,如何有效地筛选出所需的信息成为了一个不小的问题。但是俗话说得好,不会抓包的网工不是好网工。
今天就来分享一下这几个相当不错的抓包命令,至于抓包全集嘛,下面不久是了,自己去领取吧!
今日文章阅读福利:《 Wireshark抓包全集 》
好东西!Wireshark抓包全集(85种协议、类别的抓包文件),私信我,发送暗号“抓包全集”,即可获得资源。
01 Wireshark基础
Wireshark是一款开源的网络协议分析器,被广泛应用于网络监控、故障排查、性能优化和安全审计等领域。
它能够捕获网络接口上的所有流量,并提供详尽的数据包解码功能。Wireshark支持多种操作系统,包括Windows、Linux和macOS等。
01 捕获和显示过滤器的区别与联系
-
捕获过滤器:用于决定哪些数据包会被捕获。这种过滤发生在数据包到达Wireshark之前,因此可以减少磁盘空间的占用和处理时间。
-
显示过滤器:用于在捕获的数据包中进行搜索和筛选,帮助用户找到感兴趣的特定数据包。这种过滤发生在数据包已经捕获之后,因此可以基于更复杂和详细的条件进行筛选。
02 常用快捷键列表
为了提高效率,熟悉Wireshark的快捷键是非常有帮助的。以下是一些常用的快捷键:
-
Ctrl + R:运行捕获。
-
Ctrl + C:停止捕获。
-
Ctrl + F:打开查找对话框。
-
F5:重新解析选定的数据包。
-
Shift + F10:打开数据包详情面板。
-
Ctrl + Shift + F:打开显示过滤器对话框。
02 捕获过滤器
捕获过滤器是在Wireshark捕获数据包之前应用的一组规则,用于确定哪些数据包应该被捕获。这有助于减少捕获文件的大小,同时也减少了处理时间,使得分析过程更加高效。
捕获过滤器可以显著降低捕获文件的大小,这对于存储空间有限或者需要快速分析的情况尤其有用。
此外,通过仅捕获相关数据包,可以更快地找到问题所在,从而提高工作效率,以下是最常用的捕获过滤器命令示例。
01 过滤特定端口或协议
-
tcp port 80:捕获所有通过TCP协议且目标端口为80(通常为HTTP)的数据包。
-
udp port 53:捕获所有通过UDP协议且目标端口为53(通常为DNS)的数据包。
02 过滤指定IP地址的流量
-
ip.addr == 192.168.1.100:捕获所有涉及IP地址192.168.1.100的数据包。
-
host 192.168.1.100:同上,捕获所有涉及该主机的数据包。
03 过滤特定MAC地址的流量
-
ether host 00:11:22:33:44:55:捕获所有涉及指定MAC地址的数据包。
通过使用这些捕获过滤器,你可以有针对性地捕获流量,避免不必要的数据包干扰分析结果。
03 显示过滤器
显示过滤器是在捕获的数据包中进行搜索和筛选的一组规则。它们允许您在已经捕获的数据包中找到感兴趣的数据包。
与捕获过滤器不同,显示过滤器不会影响实际捕获的数据包,而是在捕获完成后应用于已捕获的数据包。
-
灵活性:可以在捕获过程中或捕获完成后随时调整过滤条件。
-
针对性:帮助用户聚焦于特定的数据包,例如某个协议、端口或特定类型的错误。
-
深度分析:允许用户对数据包进行更细致的检查,如检查特定字段的值。
下面是最常用的显示过滤器命令示例
01 分析HTTP/HTTPS流量
-
http.request.method == "GET":显示所有HTTP GET请求。
-
http.response.code == 200:显示所有HTTP响应状态码为200(成功)的数据包。
02 查找DNS请求和响应
-
dns.qry.name == example.com:显示所有DNS查询名为example.com的数据包。
-
dns.flags.response == 1:显示所有DNS响应数据包。
03 隔离TCP重传或丢失的数据包
-
tcp.analysis.retransmission:显示所有TCP重传的数据包。
-
tcp.analysis.lost_segment:显示所有TCP丢失的数据包。
04 寻找特定字符串或数据模式
-
date contains "password":显示包含字符串"password"的数据包。
-
data contains 0x48656c6c6f:显示包含十六进制数据"Hello"的数据包(注意这里的十六进制表示法)。
通过使用显示过滤器,你可以根据具体需求快速定位到相关的数据包,进行更深入的分析。
04 高级过滤技巧
01 使用正则表达式进行过滤
正则表达式是一种强大的文本匹配工具,可用于在数据包中搜索复杂的字符串模式。
Wireshark支持使用正则表达式进行过滤,这对于查找特定的字符串或模式非常有用。
-
http.request.uri =~ //search?q=/:显示所有HTTP请求URI中包含"/search?q="的URL。
-
http.request.uri =~ //login/i:不区分大小写地显示所有HTTP请求URI中包含"/login"的URL。
02 结合多个过滤条件
在复杂的分析场景中,可能需要结合多个过滤条件来更精确地定位数据包。Wireshark允许使用逻辑运算符(如and、or、not)来组合不同的过滤器。
-
tcp.port == 80 and http.request.method == "POST"显示所有通过端口80发送的HTTP POST请求。
-
http.request.uri == "/index.html" or http.request.uri == "/about.html":显示所有请求"/index.html"或"/about.html"的数据包。
03 自定义过滤器表达式的创建方法
为了满足特定的需求,有时需要创建自定义的过滤器表达式。这可以通过组合基本的过滤器操作符和条件来实现。
-
tcp.port == 80 and (http.request.method == "GET" or http.request.method == "POST"):显示所有通过端口80发送的HTTP GET或POST请求。
-
not tcp.port == 80 and not tcp.port == 443:显示所有不是通过端口80或443的数据包。
原创:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部