Wireshark原理介绍

今天继续给大家介绍渗透测试相关知识,本文主要内容是Wireshark原理。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!

一、Wireshark简介

Wireshark是网络数据包分析软件,可以探测指定网卡收到的数据包,并尽可能的分析这些数据包的协议、数据等资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
Wireshark页面如下所示:
在这里插入图片描述
Wireshark可以使得网卡处于混杂模式,所谓混杂模式,即网卡处理所有接收到的数据包。当网卡处于普通模式下时,在收到数据包后,会检查该数据包中数据链路层所封装的MAC地址,如果该MAC地址是自己的MAC地址、广(组)播MAC地址,才会将该数据包送往上层进行处理。而处于混杂状态的网卡,则会不加选择的将所有的数据包进行处理,即时该数据包并不是发送给自己的。因此,处于混杂模式下的网卡,可以收集到所有的数据包。

二、Wireshark应用

Wireshark运用非常广泛。对于网络工作人员而言,Wireshark可以用于检测网络问题;对于开发工作人员而言,Wireshark可以用于网络协议开发排错;对于安全工作人员而言,Wireshark则可以监听网络上的数据包,借此发现当前网络上存在的网络攻击。

三、Wireshark快速分析数据包技巧

Wireshark的抓包使用,有以下技巧:
1、确定运行Wireshark的位置。
确定Wireshark的位置是使用Wireshark抓包的第一步,也是非常关键的一步。在当前主流的交换式以太网中,如果我们在一个连接到交换机普通接口上的设备上运行Wireshark,那么大概率抓不到整个以太网的数据包(除非使用网络欺骗根据或者是洪泛攻击,但是这两种攻击技术也很容易被因交换机相关安全设置而失效)。我们通常将该交换机端口配置成镜像端口,这样就可以很方便的抓取整个网络中的数据包了。
2、选择Wireshark的捕获接口。
我们在开启Wireshark时,要选择Wireshark的数据包捕获接口,通常是选择设备的网卡作为捕获接口,而如果当前设备有多快网卡的情况,则需要根据实际情况来选择wireshark的捕获接口。
3、使用捕获过滤器。
为了防止Wireshark捕获到过多的数据包,进而影响设备的运行,我们通常会设置捕获过滤器,该过滤器会在Wireshark刚开始运行时就发挥作用,过滤掉我们不需要的数据包。
4、使用显示过滤器。
窗户了捕获过滤器以外,我们还可以使用Wireshark的显示过滤器,显示过滤器可以在Wireshark的捕获过滤器的基础上运行,从Wireshark捕获的数据包中进一步筛选我们需要的数据包,并且我们可以随时修改显示过滤器的规则,以不断筛选处我们所需要的数据包。
5、使用着色规则。
合理的使用Wireshark的着色规则,可以帮助我们更好的查看Wireshark的数据包,并分析这些数据包之前的关系。
6、构建图表。
Wireshark自带有统计功能,可以将所捕获的数据包中的一些信息统计出来,并以图表的形式展示,使得数据更加直观形象。
7、重组数据。
Wireshark也带有数据包重组功能,面对一些IP分片的数据包,Wireshark可以将这些分片过的数据包进行重组,以便恢复原有的数据。
原创不易,转载请说明出处:https://blog.youkuaiyun.com/weixin_40228200

### Wireshark 工作原理详解 #### 一、网络流量捕获机制 Wireshark通过调用WinPcap/Npcap库来实现对网络接口上的数据包进行实时监听和捕获。当计算机接收到任何来自网络的数据帧时,该软件能够截取并保存下来供后续分析使用[^4]。 #### 二、过滤技术的应用 为了提高效率,在实际操作过程中可以设置两种类型的过滤条件: - **捕获过滤器**:用于在网络层面上限制哪些类型的数据流应该被捕获到内存缓冲区中等待进一步处理;这一步骤发生在操作系统内核层面完成之前。 - **显示过滤器**:针对已经存储于缓存内的记录执行更加精细的选择逻辑,从而只展示那些真正感兴趣的通信事件给用户查看[^3]。 #### 三、协议解析能力 一旦获取到了原始字节序列形式的报文之后,内置的强大解码引擎就会依据已知的各种标准定义去识别其结构特征,并将其转换成易于理解的文字描述以及图形化界面表示出来。对于像HTTP这样的应用级交互过程,则不仅限于呈现基本头部字段信息,还包括具体请求/响应消息体的内容摘要等细节部分[^5]。 ```python # Python伪代码模拟简单的TCP三次握手流程 import socket def tcp_handshake(server_ip, server_port): client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 发送SYN同步请求至服务器端口 client_socket.connect((server_ip, server_port)) # 接收ACK确认应答及SYN回复 ack_syn_packet = client_socket.recv(1024) # 返回最终建立连接成功的FIN标志位 fin_packet = "..." client_socket.send(fin_packet.encode()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远是少年啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值