• 文章搜索:
  • 兵器谱

        • 分享到...

        • 新浪微博
        • 腾讯微博
        • 推荐到豆瓣 豆瓣空间
        • 分享到搜狐微博 搜狐微博
        • 分享到QQ空间 QQ空间
        • 分享到腾讯朋友 腾讯朋友
        • 网易微博分享 网易微博
        • 添加到百度搜藏 百度搜藏
        • 转贴到开心网 开心网
        • 转发好友 告诉聊友
    • 推荐
    • 打印
    • 收藏

    WireShark(威而鲨)第二式--如封似闭

    作者:  |  上传时间:2014-05-20  |  关键字:WireShark(威而鲨)第二式--如封似闭

    1 如何过滤报文

    1.1 使用Capture Filter过滤报文

    Capture Filter是指在捕捉时就对报文进行过滤,由此,Wireshark对不感兴趣的报文不再记录和显示。其优点是可以节省本地存储和显示资源,适合于报文数目过于庞大而对本地计算资源带来冲击的场合。

    Capture Filter的使用方法

    1. 选择Capture,在菜单中选择Option

    Figure 22

    2. 勾选想要抓取的网口,并在过滤栏写入过滤表达式,也可以使用Capture Filter中已经创建好的表达式。表达式的相关内容在后文叙述。

    Figure 23

    Figure 24

    3. 点击Start开始抓取报文,可以看到抓取的报文中没有ARP报文,Capture Filter已经发挥作用。

    Figure 25

    1.2 使用Display Filter 过滤报文

    Display Filter是指选将所有的报文都抓取到本地,然后使用过滤器找到感兴趣的报文。其优点是可以抓取到所有报文,适用于并不确定要抓取某种特定报文的场合。

    在我们实际工作中,本地计算机的存储和计算性能都比较好,不太需要担心资源不足的问题,且大部分情况下需要抓取端口的所有报文以便于后续分析。所以,此种方法使用要较Capture Filter普遍。

    Display Filter的使用方法:

    1. 正常捕捉报文

    2. 在过滤栏里填写过滤表达式,或者在Expression选项中编写自己需要的表达式。回车后就能立刻过滤出感兴趣的报文。

    Figure 26

    Figure 27

    1.3 过滤表达式

    我们通过在过滤栏中键入过滤表达式来过滤报文,所以了解如何正确使用Wireshark的过滤表达式十分重要。先来看一下Wireshark过滤表达式的语法:

    l 点操作符

    WireShark使用英文半角符号点“.”来表示层属关系。比如ip.addr就代表ip报文的地址字段,既包括源地址也包括目的地址;arp.dst.proto_ipv4就表示ARP报文的IPv4目的地址。

    l 过滤比较操作符

    C-linke

    描述

    范例

    ==

    Equal

    ip.addr==10.0.0.5

    !=

    Not equal

    ip.addr!=10.0.0.5

    >

    Greate than

    frame.pkt_len>10

    <

    Less than

    frame.pkt_len<128

    >=

    Greater than or equal to

    frame.pkt_len ge 0x100

    <=

    Equal

    frame.pkt_len <= 0x20

    Table 1

    l 过滤逻辑操作符

    English

    描述

    范例

    and

    Logical AND

    ip.addr==10.0.0.5 and tcp.flags.fin

    or

    Logical OR

    ip.addr==10.0.0.5 or ip.addr==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

    Table 2

    l 括号操作符

    Wireshark允许用“[]”选择一个序列的子序列。

    eth.src[0:3] == 00:00:83

    使用n:m格式指定一个范围。在这种情况下,n是起始位置偏移(0表示没有偏移,即是第一位),m是从指定起始位置的区域长度。

    eth.src[1-2] == 00:83

    使用n-m格式一个范围。在本例中n表示起始位置偏移,m表示终止位置偏移

    eth.src[:4]=00:00:83:00

    使用:m格式,表示从起始位置到偏移偏移位置m。等价于0:m

    eth.src[4:]=20:20

    使用n:格式,表示从最后位置偏移n个序列

    eht.src[2] == 83

    使用 n 形式指定一个单独的位置。序列中的单元已经在偏移量n中指定。等价于n:1

    eth.src[0:3,102,:4,4:,2] == 00:00:83:00:83:00:00:83:00:20:20:83

    Wireshark 允许你将多个分号隔开的列表组合在一起表示复合区域,如上例所示

    Table 3

    在熟悉了WireShark提供的操作符后,就可以书写确定的过滤表达式来过滤报文了。直接在过滤栏中键入正确的字符,下拉列表中会自动补全命令,有利于我们快速准确地找到字段。

    Figure 28

    至于各字段所代表的具体含义及格式,可以在Expression中找到。

    Figure 29