【实用技巧】wireshark过滤抓包与过滤查看

在分析网络数据和判断网络故障问题中,都离不开网络协议分析软件(或叫网络嗅探器、抓包软件等等)这个“利器”,经过网络协议分析软件咱们能够捕获网络中正常传输哪些数据包,经过分析这些数据包,咱们就能够准确地判断网络故障环节出在哪。网络协议分析软件众多,好比ethereal(wireshark的前身),wireshark,omnipeek,sniffer,科来网络分析仪(被誉为国产版sniffer,符合咱们的使用习惯)等等,本人水平有限,都是初步玩玩而已,先谈谈我的对这几款软件使用感觉,wireshark(ethereal)在对数据包的解码上,能够说是至关的专业,可以深刻到协议的细节上,用它们来对数据包深刻分析至关不错,更重要的是它们仍是免费得,可是用wireshark(ethereal)来分析大量数据包并在大量数据包中快速判断问题所在,比较费时间,不能直观的反应出来,并且操做较为复杂。像omnipeek,sniffer,科来网络分析仪这些软件是专业级网络分析软件,不只仅能解码(不过有些解码仍是没有wireshark专业),还能直观形象的反应出数据状况,这些软件会对数据包进行统计,并生成各类各样的报表日志,便于咱们查看和分析,能直观的看到问题所在,但这类软件是收费,若是想感觉这类专业级的软件,我推荐玩科来网络分析仪技术交流版,免费注册激活,可是只能对50个点进行分析。废话很少说,下面介绍几个wireshark使用小技巧,说的很差,还请各位多指点批评。 网络

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

下面是wireshark的1.6版本的界面图:(看不清图,请点击放大)tcp

 

 点击图中那个按钮,进入抓包网卡选择,而后点击option进入抓包条件设置,就会打开以下图的对话框ide

 

 

 

若是想抓无线网卡的数据吧,就把图中那个勾去掉,否则会报错。点击Capture Filter进入过滤抓包设置(也能够在这个按钮旁边,那个白色框直接写过滤语法,语法不完成或没法错误,会变成粉红色的框,正确完整的会变成浅绿色),Filter name是过滤条件命名,Filter string 是过滤的语法定义,设置好了,点击new会把你设置好的加入到过滤条件区域,下次要用的时候,直接选者你定义这个过滤条件名。 google

下面是wireshark的1.7版本的界面图:spa

界面有所变化,一样是点击option进入过滤编辑,以下图:日志

若是,左边的双击左边网卡能够直接进入过滤抓包设置对话框,中间是点击option后进入的对话框,再双击网卡进入下面的过滤抓包设置对话框,后面就跟wireshark的1.6版本同样了。 orm

下面聊聊过滤抓包语法,Filter string中怎么写语法。你们能够看看capture Filter原来已有的怎么定义的。blog

要弄清楚并设置好这个过滤条件的设置,得弄清楚TCP/IP模型中每层协议原理,以及数据包结构中每一个比特的意思。上面这是抓得ARP,在数据链路层来看的,ARP是上层协议,在ethernet包结构表示的协议类型代码是 0x0806,若是站在网络层来讲(ARP协议有时又称为2.5层的协议,靠近数据链路层),咱们的过滤语法能够这样写:ip

这两个是等价的,抓得都是ARP包。或许有的朋友这里不太明白,建议去看《TCP/IP协议族》《TCP/IP协议详卷》等等原来书籍,先理解数据包结构。从这个设置来看,能够看出wireshark的过滤抓包多么深刻了。

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

组合过滤语法常使用的链接:

过滤语法1 and 过滤语法2  只有同时知足语法12数据才会被捕获

过滤语法1 or 过滤语法2   只有知足语法1或者2任何一个都会被捕获

not 过滤语法               除该语法外的全部数据包都捕获

经常使用的过滤语法说明:

ether host D0:DF:9A:87:57:9E  定义捕获MAC为D0:DF:9A:87:57:9E的数据包,无论这个MAC地址是目标MAC仍是源MAC,都捕获这个数据包

ether proto 0x0806            定义了全部数据包中只要ethernet协议类型是0x0806的数据包进行捕获。

若是咱们用and来组合这两个语法:

ether host D0:DF:9A:87:57:9E and ether proto 0x0806(该语法等价于ether host D0:DF:9A:87:57:9E and arp

表示咱们只针对MAC为D0:DF:9A:87:57:9E的ARP包进行捕获。

arp             该语法只捕获全部的arp数据包

ip              该语法只捕获数据包中有IP头部的包。(这个语法能够用 ether proto 0x0800,由于ethernet协议中得0x0800表示ip)

host 192.168.1.1 该语法只捕获IP头部中只要有192.168.1.1这个地址的数据,无论它是源IP地址仍是目标IP地址。

tcp              该语法只捕获全部是tcp的数据包

tcp port 23      该语法只捕获tcp端口号是23的数据包,无论源端口仍是目标端口。

udp              该语法只捕获全部是udp的数据包

udp  port 53     该语法只捕获udp端口号是23的数据包,无论源端口仍是目标端口。

port 68         该语法只捕获端口为68的数据,不论是TCP仍是UDP,无论该端口号是源端口,仍是目标端口。

以上是经常使用的过滤抓包语法,灵活组合,就能够定位抓包。下面简单举几个例子。

这是个Radius的过滤抓包,若是不清楚它是TCP仍是UDP,可使用语法port 1645 or port 1646来定义。

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

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

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

接下来,介绍下wireshark的过滤查看的数据包,在面对大量数据包,咱们怎么快速锁定查找本身想要的数据包。Wireshark的过滤抓包查看语法深刻包的细节了,草草看了至少有上百条语法。要很好的理解和运用这些语法,TCP/IP协议原理得清楚。有兴趣的朋友能够以下图深刻查看过滤查看使用的语法。

下面我只简单介绍几个经常使用:

eth.addr eq 00:08:d2:00:09:10    查找MAC等于00:08:d2:00:09:10的数据包,不过源MAC仍是目标MAC

eth.src eq 00:08:d2:00:09:10     查找源MAC地址为00:08:d2:00:09:10的数据包

eth.dst eq 00:08:d2:00:09:10     查找源MAC地址为00:08:d2:00:09:10的数据包

eth.type eq 0x0806               查找ethernet协议类型为0x0806(ARP包)的数据包

ip.addr eq 10.1.1.2             查找IP地址为10.1.1.2的数据包

tcp.dstport eq 80               查找TCP目标端口为80的数据包

tcp.srcport eq 80               查找TCP源端口为80的数据包

udp.srcport eq 53               查找UDP源端口为53的数据包

udp.dstport eq 53               查找UDP目标端口为53的数据包

ip.addr eq 10.1.1.2 and udp.srcport eq 53 定位查看IP地址为10.1.1.2,UDP源端口为53的数据包。

下面是演示图:

输入查看语法后,回车,wireshark查找数据,看数据包的大小决定查找时间,我抓了个300多M的包,过滤查找想要的包花了3分钟。

正在查找包

过滤查找出了本身想要的包了,

使用wireshark时,经过精肯定位过滤捕获本身想要的包,这样捕获的包比较直观,并且捕获的包又小。回想起本身曾在核心上抓包,大量数据包对笔记本网卡的冲击太大了,形成笔记本死机,并且在几十万个包里,很难直观看到本身想要的包,对其进行分析,在这样的大的包使用过滤定位查看,也比较耗时间。有时候须要捕获大量的包分析流量,建议仍是使用sniffer,科来这类更加专业级网络分析软件。

相关文章
相关标签/搜索