初识wireshark

wireshark工作流程理论

环境:Windows10_64专业版、wireshark3.0.4
1.电脑连上网线,电脑只需要连接网络就可以。
2.打开电脑软件或者浏览器,找到wireshark的tools(捕获)菜单,设置里面选择同一网段的那条网络,点击开始,操作电脑软件或者浏览器,所有的网络包就都被wireshark抓到了
3.从抓到的包里面获取自己想要的内容

一、Wireshark界面说明

过滤器表达式书写是wireshark使用的核心,但在此之前,很多初学者还会碰到一个难题,就是感觉wireshark界面上很多东西不懂怎么看。其实还是挺明了的我们下面简单说一下,如下图。

  1. 号窗口展示的是wireshark捕获到的所有数据包的列表。注意最后一列Info列是wireshark组织的说明列并不一定是该数据包中的原始内容。

  2. 号窗口是1号窗口中选定的数据包的分协议层展示。底色为红色的是因为wireshark开启校验和验证而该层协议校验和又不正确所致。

  3. 号窗口是1号窗口中选定的数据包的源数据,其中左侧是十六进制表示右侧是ASCII码表示。另外在2号窗口中选中某层或某字段,3号窗口对应位置也会被高亮。


    初识wireshark_第1张图片
    窗口
  • 被认为最难的其实还是2号窗口展开后的内容不懂怎么看,其实也很明了,以IP层为例:每一行就对应该层协议的一个字段;中括号行是前一字段的说明。冒号前的英文是协议字段的名称;冒号后是该数据包中该协议字段的值。


    初识wireshark_第2张图片

二、捕获过滤器表达式

捕获过滤器表达式作用在wireshark开始捕获数据包之前,只捕获符合条件的数据包,不记录不符合条件的数据包。

捕获过滤器表达式没有像显示过滤器表达式那样明显的规律,但写法不多所以也不难;而且除非全部捕获要占用的磁盘空间实现太大,且你非常明确过滤掉的数据包是你不需要的,不然一般都不用捕获过滤器表达式而用显示过滤器表达式。

初识wireshark_第3张图片

点击图中“捕获”标志,再点“捕获过滤器”,即可看到常用捕获过滤表达示的书写形式

初识wireshark_第4张图片

三、显示过滤器表达示及其书写规律

显示过滤器表达式作用在在wireshark捕获数据包之后,从已捕获的所有数据包中显示出符合条件的数据包,隐藏不符合条件的数据包。

显示过滤表达示在工具栏下方的“显示过滤器”输入框输入即可生效


3.1 基本过滤表达式

一条基本的表达式由过滤项、过滤关系、过滤值三项组成。

比如ip.addr == 192.168.1.1,这条表达式中ip.addr是过滤项、==是过滤关系,192.168.1.1是过滤值(整条表达示的意思是找出所有ip协议中源或目标ip、等于、192.168.1.1的数据包)

3.1.1 过滤项

初学者感觉的“过滤表达式复杂”,最主要就是在这个过滤项上:一是不知道有哪些过滤项,二是不知道过滤项该怎么写。

这两个问题有一个共同的答案-----wireshark的过滤项是“协议“+”.“+”协议字段”的模式。以端口为例,端口出现于tcp协议中所以有端口这个过滤项且其写法就是tcp.port。

推广到其他协议,如eth、ip、udp、http、telnet、ftp、icmp、snmp等等其他协议都是这么个书写思路。当然wireshark出于缩减长度的原因有些字段没有使用协议规定的名称而是使用简写(比如Destination Port在wireshark中写为dstport)又出于简使用增加了一些协议中没有的字段(比如tcp协议只有源端口和目标端口字段,为了简便使用wireshark增加了tcp.port字段来同时代表这两个),但思路总的算是不变的。而且在实际使用时我们输入“协议”+“.”wireshark就会有支持的字段提示(特别是过滤表达式字段的首字母和wireshark在上边2窗口显示的字段名称首字母通常是一样的),看下名称就大概知道要用哪个字段了。wireshark支持的全部协议及协议字段可查看官方说明。

3.1.2 过滤关系

过滤关系就是大于、小于、等于等几种等式关系,我们可以直接看官方给出的表。注意其中有“English”和“C-like”两个字段,这个意思是说“English”和“C-like”这两种写法在wireshark中是等价的、都是可用的。

显示过滤器比较运算符

English C-like Description Example
eq == Equal ip.src==10.0.0.5
ne != Not equal ip.src!=10.0.0.5
gt > Greater than frame.len > 10
lt < Less than frame.len < 128
ge >= Greater than or equal to frame.len ge 0x100
le <= Less than or equal to frame.len ⇐ 0x20
contains Protocol, field or slice contains a value sip.To contains "a1762"
matches ~ Protocol or text field matches a Perl-compatible regular http.host matches "acme.(org|com|net)"
bitwise_and & Bitwise AND is non-zero tcp.flags & 0x02

3.1.3 过滤值

过滤值就是设定的过滤项应该满足过滤关系的标准,比如500、5000、50000等等。过滤值的写法一般已经被过滤项和过滤关系设定好了,只是填下自己的期望值就可以了。

3.2 复合过滤表达示

所谓复合过滤表达示,就是指由多条基本过滤表达式组合而成的表达示。基本过滤表达式的写法还是不变的,复合过滤表达示多出来的东西就只是基本过滤表达示的“连接词”

我们依然直接参照官方给出的表,同样“English”和“C-like”这两个字段还是说明这两种写法在wireshark中是等价的、都是可用的。

English C-like Description Example
and && Logical AND ip.src==10.0.0.5 and tcp.flags.fin
or || Logical OR ip.scr==10.0.0.5 or ip.src==192.1.1.1
xor ^^ Logical XOR tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29
not ! Logical NOT not llc
[…​] Subsequence See “Slice Operator” below.
in Set Membership http.request.method in {"HEAD" "GET"}. See “Membership Operator” below.

3.3 常见用显示过滤需求及其对应表达式

数据链路层:

  • 筛选mac地址为04:f9:38:ad:13:26的数据包----eth.src == 04:f9:38:ad:13:26
    筛选源mac地址为04:f9:38:ad:13:26的数据包----eth.src == 04:f9:38:ad:13:26

网络层:

  • 筛选ip地址为192.168.1.1的数据包----ip.addr == 192.168.1.1
    筛选192.168.1.0网段的数据---- ip contains "192.168.1"
    筛选192.168.1.1和192.168.1.2之间的数据包----ip.addr == 192.168.1.1 && ip.addr == 192.168.1.2
    筛选从192.168.1.1到192.168.1.2的数据包----ip.src == 192.168.1.1 && ip.dst == 192.168.1.2

传输层:

  • 筛选tcp协议的数据包----tcp
    筛选除tcp协议以外的数据包----!tcp
    筛选端口为80的数据包----tcp.port == 80
    筛选12345端口和80端口之间的数据包----tcp.port == 12345 && tcp.port == 80
    筛选从12345端口到80端口的数据包----tcp.srcport == 12345 && tcp.dstport == 80

应用层:

  • 特别说明----http中http.request表示请求头中的第一行(如GET index.jsp HTTP/1.1),http.response表示响应头中的第一行(如HTTP/1.1 200 OK),其他头部都用http.header_name形式。
    筛选url中包含.php的http数据包----http.request.uri contains ".php"
    筛选内容包含username的http数据包----http contains "username"

参考:官方文档

你可能感兴趣的:(初识wireshark)