03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        【简介】抓包这个进程是一个处理器密集型任务,同时 Wireshark 也会占用大量的内存空间。所以,我们有时候需要保留一些资源以兹他用,这些资源可以用来进行数据包分析。有时候我们只想抓取那些满足某些条件的数据包,同时丢弃其它的数据包。


03. 抓包过滤器 ❀ 数据包分析工具 Wireshark  BPF 伯克利数据包过滤器

        Wireshark 抓取的每个数据包都交给抓包引荐,再由抓包引擎将抓取的数据包转换成人类可以读懂的格式。如果用户应用了抓包过滤器,那么 Wireshark 就会丢弃与用户需求不符的那些数据包。Wireshark 不会将这些丢弃的数据包交给抓包引擎进行转换。

        创建过滤器时要使用伯克利数据包过滤器(BPF)语法。BPF(Berkeley Packet Filter)伯克利数据包过滤器是一个工作在操作系统内核的数据包捕获机制,他先将链路层的数据包捕获再过滤,最后提供给应用层特定的过滤后的数据包。目前,许多版本UNIX和Linux平台上多数嗅探器都是基于BPF开发的。这主要是因为监听程序以用户级别进程工作,数据包的拷贝必须跨越内核/用户保护界限,这就需要使用名为数据包过滤器(Packet Fliter)的内核代理程序。BPF过滤使用了新的基于寄存器的预过滤机制,它的缓存机制也对整体效率提高有很大作用。

        BPF主要是由两部分构成的,一是网络转发部分,二是数据包过滤部分。网络转发部分从链路层中捕获数据包,并把它们抓发给数据报过滤部分。数据报过滤部分从接收到数据报中接受过滤规则决定接受网络数据报,其他数据包就会被抛弃。BPF的这两个部分都是在操作系统内核层实现的,它提供给应用层的数据包是过滤后的数据包,所以捕获数据包和过滤数据包的过程都是在内核中完成的,它的效率是很高的。

        如果使用 BPF 语法,就必须按照一个格式结构来定义过滤器的标准,这个格式由两个参数组成,它们是标识符(identifier)和修饰符(qualifier)。

        标识符:就是我们在数据包中寻找的参数。例如,如果想要过滤出某个IP地址数据包,这个IP地址就是标识符。

        修饰符:修饰符可以分为3部分。

        一类型(Type):修饰符有3种类型,host、port和net。类型修饰符标识的是这个修饰符指代的名称或编号。例如,过滤器 host 192.168.1.1中,host就是类型修饰符。

        一方向(Direction):有时我们也需要抓取来自某个源地址或者去往某个目的地址的数据包,这时我们要可以将方向作为一个修饰符。例如,过滤器 src host 192.168.1.1中,src这个修饰符的作用就是让软件只抓取来自某台特定主机的数据名。

        一协议(Proto):这是协议修饰符,它可以让用户指定要将哪些协议的流量添加到过滤器的语法中,来抓取该协议的数据包。例如,过滤器 src host 192.168.1.1 and tcp port 80中,抓取主机192.168.1.1发送的http流量。

        我们还可以使用串联运算符(&/and)、变更运算符(|/or)和否定运算符(!/not)来组合和创建复杂的过滤器。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark  如何使用抓包过滤器

  在双击网卡启动抓包之前,可以设置过滤条件。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ① 首先需要点击选择抓包的网卡,然后在过滤器输入过滤条件。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ② 再双击网卡启动抓包,可以看到抓到的包都满足过滤条件。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ③ 如果没有选择网卡,就算输入的过滤规则语法是正确的,仍会用红色显示错误。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ④ 对经常要用的过滤规则,我们可以保存下来,选择网卡,输入过滤规则后,点击过滤规则左边小图标,弹出子菜单选择【保存此过滤器】。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ⑤ 修改此过滤器的名称,描述一下过滤器的作用,点击【OK】保存。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ⑥ 双击网卡或点击启动抓包图标,就可以开始抓包了。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ⑦ 再次启动 Wireshark 进行抓包时,就可以快速选择保存过的过滤器进行抓包了。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ⑧ 当保存的过滤器里没有符合自己需求的时候,可以通过管理捕获筛选器,对过滤条件进行增加、删除或修改。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ⑨ 过滤器编辑窗口里可以增加、删除、复制过滤器,对过滤器内容和名称也可以进行修改。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark  使用协议头部参数的抓包过滤器

  可以使用协议头部字段中的参数来自定义抓包过滤器。语法大概是这样的形式:proto[offset:size(optional)]=value。proto是要抓取流量的协议,offset是对应的数值在数据包头部的位置,size是要抓取的数据长度,value是想要寻找的数据。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ① 首先我们来抓取icmp数据包,输入过滤条件。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ② 然后在DOS命令下Ping百度网址,可以看到有四个包的回复。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ③ 在 Wireshark 我们可以看到捕获了八个包。分别是四个请求数据包(request)和四个响应数据包(reply)。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ④ 双击一个请求包,可以看到Type:8,因为ICMP头部类型处于最开始的位置,因此Offset参数就应该从0开始,size部分应该设置为1字节,offset的值为8,表达式就是这样:icmp[0:1]=8。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ⑤ 使用抓包过滤器:icmp[0:1]=8。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ⑥ 可以看到只抓到四个请求数据包,并且 No response seen 没有看到响应(实际是有的)。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ⑦ 打开一个响应包,可以看到Type:0,因为ICMP头部类型处于最开始的位置,因此Offset参数就应该从0开始,size部分应该设置为1字节,offset的值为0,表达式就是这样:icmp[0:1]=0。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ⑧ 使用抓包过滤器:icmp[0:1]=0。

03. 抓包过滤器 ❀ 数据包分析工具 Wireshark

        ⑨ 可以看到抓到了四个响应包。


老梅子   QQ:57389522


03. 抓包过滤器 ❀ 数据包分析工具 Wireshark