当前位置:文档之家› 【小技巧】wireshark定位抓包与定位查看

【小技巧】wireshark定位抓包与定位查看

【实用技巧】wireshark过滤抓包与过滤查看在分析网络数据和判断网络故障问题中,都离不开网络协议分析软件(或叫网络嗅探器、抓包软件等等)这个“利器”,通过网络协议分析软件我们可以捕获网络中正常传输哪些数据包,通过分析这些数据包,我们就可以准确地判断网络故障环节出在哪。

网络协议分析软件众多,比如ethereal(wireshark的前身),wireshark,omnipeek,sniffer,科来网络分析仪(被誉为国产版sniffer,符合我们的使用习惯)等等,本人水平有限,都是初步玩玩而已,先谈谈个人对这几款软件使用感受,wireshark(ethereal)在对数据包的解码上,可以说是相当的专业,能够深入到协议的细节上,用它们来对数据包深入分析相当不错,更重要的是它们还是免费得,但是用wireshark(ethereal)来分析大量数据包并在大量数据包中快速判断问题所在,比较费时间,不能直观的反应出来,而且操作较为复杂。

像omnipeek,sniffer,科来网络分析仪这些软件是专业级网络分析软件,不仅仅能解码(不过有些解码还是没有wireshark专业),还能直观形象的反应出数据情况,这些软件会对数据包进行统计,并生成各种各样的报表日志,便于我们查看和分析,能直观的看到问题所在,但这类软件是收费,如果想感受这类专业级的软件,我推荐玩科来网络分析仪技术交流版,免费注册激活,但是只能对50个点进行分析。

废话不多说,下面介绍几个wireshark使用小技巧,说的不好,还请各位多指点批评。

目前wireshark最新版本是1.7的,先简单对比下wireshark的1.6和1.7版本。

下面是wireshark的1.6版本的界面图:
点击图中那个按钮,进入抓包网卡选择,然后点击option进入抓包条件设置,就会打开如下图的对话框。

如果想抓无线网卡的数据吧,就把图中那个勾去掉,不然会报错。

点击Capture Filter 进入过滤抓包设置(也可以在这个按钮旁边,那个白色框直接写过滤语法,语法不完成或无法错误,会变成粉红色的框,正确完整的会变成浅绿色),Filter name是过滤条件命名,Filter string是过滤的语法定义,设置好了,点击new会把你设置好的加入到过滤条件区域,下次要用的时候,直接选者你定义这个过滤条件名。

下面是wireshark的1.7版本的界面图:
界面有所变化,同样是点击option进入过滤编辑,如下图:
如果,左边的双击左边网卡可以直接进入过滤抓包设置对话框,中间是点击option后进入的对话框,再双击网卡进入下面的过滤抓包设置对话框,后面就跟wireshark的1.6版本一样了。

下面聊聊过滤抓包语法,Filter string中怎么写语法。

大家可以看看capture Filter
原来已有的怎么定义的。

要弄清楚并设置好这个过滤条件的设置,得弄清楚TCP/IP模型中每层协议原理,以及数据包结构中每个比特的意思。

上面这是抓得ARP,在数据链路层来看的,ARP是上层协议,在ethernet包结构表示的协议类型代码是0x0806,如果站在网络层来说(ARP协议有时又称为2.5层的协议,靠近数据链路层),我们的过滤语法可以这样写:
TCP/IP P 这两个是等价的,抓得都是ARP包。

或许有的朋友这里不太明白,建议去看《TCP/I 协议族》《TCP/IP协议详卷》等等原来书籍,先理解数据包结构。

从这个设置来看,可以看出wireshark的过滤抓包多么深入了。

现在我简单讲讲过滤抓包语法以及怎样设置想要的过滤抓包语法(Filter string该填写什么东西)。

组合过滤语法常使用的连接:
过滤语法1and过滤语法2只有同时满足语法1和2数据才会被捕获
过滤语法1or过滤语法2只有满足语法1或者2任何一个都会被捕获
not过滤语法除该语法外的所有数据包都捕获
常用的过滤语法说明:
ether host D0:DF:9A:87:57:9E定义捕获MAC为D0:DF:9A:87:57:9E的数据包,不管这个MAC地址是目标MAC还是源MAC,都捕获这个数据包
ether proto0x0806定义了所有数据包中只要ethernet协议类型是0x0806的数据包进行捕获。

如果我们用and来组合这两个语法:
ether host D0:DF:9A:87:57:9E and ether proto0x0806(该语法等价于e ther host
D0:DF:9A:87:57:9E and arp)
表示我们只针对MAC为D0:DF:9A:87:57:9E的ARP包进行捕获。

arp该语法只捕获所有的arp数据包
ip该语法只捕获数据包中有IP头部的包。

(这个语法可以用ether proto0x0800,因为ethernet协议中得0x0800表示ip)
host192.168.1.1该语法只捕获IP头部中只要有192.168.1.1这个地址的数据,不管它是源IP地址还是目标IP地址。

tcp该语法只捕获所有是tcp的数据包
tcp port23该语法只捕获tcp端口号是23的数据包,不管源端口还是目标端口。

udp该语法只捕获所有是udp的数据包
udp port53该语法只捕获udp端口号是23的数据包,不管源端口还是目标端口。

port68该语法只捕获端口为68的数据,不管是TCP还是UDP,不管该端口号是源端口,还是目标端口。

以上是常用的过滤抓包语法,灵活组合,就可以定位抓包。

下面简单举几个例子。

这是个Radius的过滤抓包,如果不清楚它是TCP还是UDP,可以使用语法port1645or port1646来定义。

这个过滤抓包语法的设置是,IP地址为172.16.1.102的除了TCP协议不捕获外,其他所有数据都捕获。

以上就是过滤抓包的语法简单说明和介绍,最后如下操作就可抓包了。

设置好就点击new,那么过滤抓包的名字就会加入进去,下次只有选择名字就可以直接抓了,点击ok之后,语法对的话,就会呈现浅绿色,语法不完整或错误就是粉红色,按下start就可以捕获自己想要的数据包了。

接下来,介绍下wireshark的过滤查看的数据包,在面对大量数据包,我们怎么快速锁定查找自己想要的数据包。

Wireshark的过滤抓包查看语法深入包的细节了,草草看了至少有上百条语法。

要很好的理解和运用这些语法,TCP/IP协议原理得清楚。

有兴趣的朋友可以如下图深入查看过滤查看使用的语法。

下面我只简单介绍几个常用:
eth.addr eq00:08:d2:00:09:10查找MAC等于00:08:d2:00:09:10的数据包,不过源MAC还是目标MAC
eth.src eq00:08:d2:00:09:10查找源MAC地址为00:08:d2:00:09:10的数据包eth.dst eq00:08:d2:00:09:10查找源MAC地址为00:08:d2:00:09:10的数据包eth.type eq0x0806查找ethernet协议类型为0x0806(ARP包)的数据包
ip.addr eq10.1.1.2查找IP地址为10.1.1.2的数据包
tcp.dstport eq80查找TCP目标段口为80的数据包
tcp.srcport eq80查找TCP源端口为80的数据包
udp.srcport eq53查找UDP源端口为53的数据包
udp.dstport eq53查找UDP源端口为53的数据包
ip.addr eq10.1.1.2and udp.srcport eq53定位查看IP地址为10.1.1.2,UDP源端口为53的数据包。

下面是演示图:
个300多M的包,过滤查找想要的包花了3分钟。

正在查找包
过滤查找出了自己想要的包了,
使用wireshark时,通过精确定位过滤捕获自己想要的包,这样捕获的包比较直观,而且捕获的包又小。

回想起自己曾在核心上抓包,大量数据包对笔记本网卡的冲击太大了,造成笔记本死机,而且在几十万个包里,很难直观看到自己想要的包,对其进行分析,在这样的大的包使用过滤定位查看,也比较耗时间。

有时候需要捕获大量的包分析流量,建议还是使用sniffer,科来这类更加专业级网络分析软件。

更多精彩在我的博客:。

相关主题