什么是wireshark
wireshark是一个数据包捕捉程序。和linux下的tcpdump,以及sniffer,Fidder等软件功能类似。按理说,我们的计算机中的网卡设备只会将发给本机的数据包传输到上层进行解析,而其他的数据包会进行丢弃,因此为了捕捉到所有的数据包,我们需要将网卡设置为混杂模式,这是我们捕获数据包的前提。
- 对于linux系统
root 用户才可以设置混杂模式
ifconfig eth0 查看是否存在PROMISC标志
ifconfig eth0 promisc 设置混杂模式
ifconfig eth0 -promisc 取消混杂模式 - 对于windows系统
安装wireshark会自动将网卡设置为混杂模式进行捕获
部分网卡也可以通过设备管理器进行修改
初识界面
网络中的数据包是十分繁杂多样的,为了从众多的数据包中得到我们所关注的数据包,我们必须使用过滤器filter来进行数据包的筛选。
WireShark有两个过滤器,从界面中可以看出,上方的是应用显示过滤器,下面的是捕获过滤器,这两种捕获的过滤器是有区别的。
- 捕获过滤器:
在捕获之前设置好过滤器,捕获指定数据的数据包,这是数据经过的第一层过滤,用于控制捕获的数量,以免产生比较大的文件 - 显示捕获器
显示捕获器的功能更加强大,可以从众多的数据包中迅速精确找到自己所要的数据
那么如何完成一个过滤条件的编写,需要设置准确以下三个要素:
- 过滤项 确定过滤的协议?方向?主机?端口?
- 过滤关系 优先级:not > and = or
- 过滤值 具体内容:协议(ICMP,TCP)方向(src,dst,src and dst,src or dst)
举个栗子:
-
捕获过滤器
数据包使用udp协议 并且端口为 2024
ip的源地址为:192.168.1.1
显示来源IP为1.1.1.1 ,但目的地址不是192.168.1.0/24的数据包
-
显示过滤器
指定端口
MAC地址
HTTP请求方式