• wireshark:Beyond Compare是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换,是目前全世界最广泛的网络封包分析软件
    • 标题栏:用于显示所分析的抓包文件的名称、捕获的设备名称以及Wireshark的 版本号。
    • 菜单栏:Wireshark的标准菜单栏。
    • 工具栏:常用功能的快捷图标按钮。
    • 筛选区域:我们在实际的数据包分析中,可能在很短的时间内就能够捕获到成 千上万的数据包信息。这个时候就需要使用这里的筛选器,加上一定的条件,筛 选掉我们并不关心的数据包,从而更好地进行分析。我们在接下来的实际分析课程 中,会多次使用筛选功能。
    • Packet List面板:显示每个数据帧的摘要。需要强调的是,其实这里所捕获 的其实就是数据帧,但是出于表达的习惯,本系列的课程中的大部分时候,我会 以“数据包”的叫法来代替“数据帧”以及“分段”。这里采用表格的形式列出了 当前捕获文件中的所有数据包,其中包括了数据包序号、数据包捕获的相对时 间、数据包的源地址目标地址、数据包的协议以及在数据包中找到的概 况信息等。
    • Packet Details面板:分析数据包的详细信息。这个面板分层次地显示了一个 数据包中的内容,并且可以通过展开或是收缩来显示这个数据包中所捕获的全部内 容。在我们的课程中,Packet List面板以及Packet Details面板是我们重点 关注的对象。
    • Packet Bytes面板:以十六进制和ASCII码的形式显示数据包的内容。这里显 示了一个数据包未经处理的原始样子,也就是在链路上传播时的样子。
    • 状态栏:包含有专家信息、注释、包的数量和Profile。

一旦我们开始利用Wireshark进行数据包的捕获,那么所获得的二进制数据就会 依照不同的协议的结构进行规范,并且显示在Packet Details面板中。这里我 给大家简单介绍一下识别数据包的方法。

在Wireshark中,关于数据包的叫法主要有3个术语,也就是帧、包、段。数据帧 的起始点和目的点都是数据链路层;数据包的起始和目的地是网络层;段通常是 指起始点和目的地都是传输层的信息单元。这里我们通过以下捕获的数据包来分析 一下这三种术语(以下展示的是通过筛选器显示HTTP协议,并查看3934号数据 包的情况):

这里面主要展示了以下五种协议的信息:

  • Frame:物理层数据帧的情况。
  • Ethernet II:数据链路层以太网帧头部的信息。
  • Internet Protocol Version 4:网络层IP包的头部信息。
  • Transmission Control Protocol:传输层的数据段头部信息,这里显示的是

TCP协议。

  • Hypertext Transfer Protocol:应用层信息,这里显示的是HTTP协议。 下面依据上述所捕获到的数据包的具体情况,对上述前四层的内容进行分析(HTTP 协议在以后的课程中会专门用一次课来讲解):
物理层数据帧的情况
Frame 3934: 310 bytes on wire (2480 bits), 310 bytes captured (2480 

bits) on interface 0
# 3934号帧,线路上有310个字节,实际捕获310个字节
Interface id: 0 (\Device\NPF_{EF10E4D3-713B-4239-8786-300C825A9D3F})
# 接口id
Encapsulation type: Ethernet (1)
# 封装类型
Arrival Time: Nov 26, 2015 11:54:10.987177000 中国标准时间
# 捕获日期和时间
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1448510050.987177000 seconds
[Time delta from previous captured frame: 0.014178000 seconds]
# 当前数据包与前一个数据包的时间间隔
[Time delta from previous displayed frame: 0.311034000 seconds]
[Time since reference or first frame: 10.449670000 seconds]
# 当前数据包与第一个数据包的时间间隔
Frame Number: 3934
# 帧序号
Frame Length: 310 bytes (2480 bits)
# 帧长度
Capture Length: 310 bytes (2480 bits)
# 捕获长度
[Frame is marked: False]
# 此帧是否做了标记:否
[Frame is ignored: False]
# 此帧是否被忽略:否
[Protocols in frame: eth:ethertype:ip:tcp:http:image-gif]
# 帧内封装的协议层次结构
[Number of per-protocol-data: 1]
[Hypertext Transfer Protocol, key 0]
[Coloring Rule Name: HTTP]
# 着色标记的协议名称
[Coloring Rule String: http || tcp.port == 80 || http2]
着色规则显示的字符串
数据链路层以太网帧头部的信息
Ethernet II, Src: Qihoo360_61:0b:0c (d0:fa:1d:61:0b:0c), Dst: Giga-

Byt_d4:be:c9 (94:de:80:d4:be:c9)
Destination: Giga-Byt_d4:be:c9 (94:de:80:d4:be:c9)
# 目标MAC地址
Source: Qihoo360_61:0b:0c (d0:fa:1d:61:0b:0c)
# 源MAC地址
Type: IP (0x0800)
# 需要说明的是,为什么上述的源MAC地址以及目标MAC地址的开头明明

是“d0:fa:1d”以及“94:de:80”,# 但是Wireshark上显示出来的却

是“Qihoo360”以及“Giga-Byt”# 呢?这是因为MAC地址的前3
# 个字节表示厂商。而“d0:fa:1d”以及“94:de:80”被分# 配给了奇虎以及技

嘉公司。这是全球统一标# 准,所以Wireshark干脆显示出厂商名称了
网络层IP包的头部信息
Internet Protocol Version 4, Src: 220.181.7.190 (220.181.7.190), Dst: 

192.168.0.14 (192.168.0.14)
Version: 4
# 互联网协议IPv4
Header Length: 20 bytes
# IP包头部的长度
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: 

Not-ECT (Not ECN-Capable Transport))
# 差分服务字段
Total Length: 296
# IP包的总长度
Identification: 0x2863 (10339)
# 标志字段
Flags: 0x02 (Don't Fragment)
# 标记字段
Fragment offset: 0
# 分片偏移
Time to live: 49
# 生存期
Protocol: TCP (6)
# 当前数据包所封装的上层协议为TCP协议
Header checksum: 0x7b43 [validation disabled]
# 头部数据的校验和
Source: 220.181.7.190 (220.181.7.190)
# 源IP地址
Destination: 192.168.0.14 (192.168.0.14)
# 目标IP地址
传输层TCP数据段的头部信息
Transmission Control Protocol, Src Port: 80 (80), Dst Port: 2488 

(2488), Seq: 422, Ack: 3024, Len: 256
Source Port: 80 (80)
# 源端口号
Destination Port: 2488 (2488)
# 目标端口号
[Stream index: 16]
[TCP Segment Len: 256]
Sequence number: 422    (relative sequence number)
# 序列号(相对序列号)
[Next sequence number: 678    (relative sequence number)]
# 下一个序列号(相对序列号)
Acknowledgment number: 3024    (relative ack number)
# 确认序列号
Header Length: 20 bytes
# 头部长度
.... 0000 0001 1000 = Flags: 0x018 (PSH, ACK)
# TCP标记字段
Window size value: 162
# 流量控制的窗口大小
Checksum: 0x6fc4 [validation disabled]
# TCP数据段的校验和

筛选器的简单用法

Wireshark的筛选器可以让我们找出我们所希望进行分析的数据包。简单来说, 一个筛选器就是定义了一定的条件,用来包含或者排除数据包的表达式。如果在实 际的分析中,不希望看到某一些数据包,那么就可以通过筛选器来屏蔽掉它们, 从而只显示我们感兴趣的内容。但是这里需要注意的是,有些时候,我们在进行网 络分析时,可能会因为设置了不恰当的筛选器而漏掉了一些关于这个网络情况的关 键数据,所以筛选器有时候也是一把双刃剑

筛选器主要是在处理大量的数据时使用,比如我们刚才就使用了筛选器来专门显 示HTTP协议的数据包。这是关于筛选器的最简单的一种用法。筛选器也支持与 (and)、或(or)、非(not)等逻辑运算符,可以加强筛选的效率。比如我 们可以通过如下语句来显示出所有IP地址为180.97.34.134,端口号为80的数据包 :

ip.addr==180.97.34.134 and tcp.port==80

或者也可以查看所有非TCP协议的协议:

!tcp

除了逻辑操作符,在筛选器中还可以使用比较操作符,比如等于(==)、不等于 (!=)、大于(>)、小于(<)、大于等于(>=)以及小于等于(<=)等。比如我 们现在只想查看长度小于等于150字节的数据包,则可以使用如下命令:

frame.len<=150

最后再讲一下Wireshark的协议域筛选器。这个功能可以帮助我们通过检查协议 头中的某一个字节来创建筛选条件,或者也可以匹配一个数据包中从某一特定位置 开始一定数量的字节。举例来说,比如我们想捕获带有(PSH,ACK)标志的TCP数据 包。那么就可以检测TCP协议中偏移为13的标志位的情况。尽管这个标志位只有1 个字节,但是这个字节中的每一个比特位都是一个标志。

我们可以用如下命令进行查看:

tcp[13]==0x18

如果我们在实际的分析过程中发现某一个筛选条件使用的比较频繁,那么可以考 虑将这个筛选条件保存下来,避免每次分析中的重复输入。我们可以在菜单栏中选 择“Analyze”->“Display Filter”,打开Display Filter对话框。

单击左边的New按钮,创建一个新的筛选器。并且在“Filter Name”中给 筛选器起一个名字,在“Filter String”中输入筛选表达式,之后单 击“OK”进行保存即可: 

灵活使用筛选器会起到事半功倍的效果,在之后的分析中也会多次用到。

从零开始学安全(四十一)●初识Wireshark的更多相关文章

  1. 从零开始学安全(四十二)●利用Wireshark分析ARP协议数据包

    wireshark:是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换,是目前 ...

  2. 从零开始学安全(四十三)●Wireshark分析ICMP(IP)协议

    存活时间与IP分片 这里我们首先来研究一下关于IP协议的两个非常重要的概念:存活时间与IP分片.存活时间(TTL,Time to Live)用于定义数据包的生存周期,也就是在该数据包被丢弃之前,所能够 ...

  3. 从零开始学安全(四十四)●TCP三次握手四次挥手

    wireshark:Beyond Compare是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与 ...

  4. 从零开始学安全(四)●Vmware CentOS 7 添加静态ip联网

    一.虚拟网络编辑器配置 1.VMnet8设置(不需要改动) 2.NAT设置(不需要改动) 3.DHCP设置(CentOS IP地址段设置,不需要改动) 二.虚拟机设置(网络适配器选择NAT模式) 三. ...

  5. Java从零开始学十四(包和访问控制)

    一.java中的包 Java文件的组织形式Windows中的文件功能类似 在开发比较大的项目时,不可能只涉及到一个java文件,可能要创建几十,甚至几百个java文件,这个时候,我们就可以使用包,把相 ...

  6. 从零开始学JavaScript四(数据类型)

    一.分类 基本数据类型:undefined.null.string.Boolean.number 复杂数据类型:object object的属性以无序的名称和值对的形式 (name : value) ...

  7. 从零开始学MySQL(四)

    上节连接:https://www.cnblogs.com/RajXie/p/10880809.html 上节说到,在创建表的同时,需要给出列的定义.列的定义可展开如下: 列名 列的数据类型 列的一些其 ...

  8. 从零开始学安全(四十六)●sqli-labs 1-4关 涉及的知识点

    Less-1 到Less-4  基础知识注入 我们可以在 http://127.0.0.1/sqllib/Less-1/?id=1 后面直接添加一个 ‘ ,来看一下效果: 从上述错误当中,我们可以看到 ...

  9. 从零开始学安全(四十五)●browser_autopwn2漏洞利用配合Ettercap工具实施DNS欺骗攻击

    系统:kali 2019  工具Ettercap,Metasploit 环境内网地址 首先 cd /etc/ettercap/ 移动在ettercap 文件下 在用vim 打开编辑 etter.dns ...

随机推荐

  1. Entity Framework Core 关联删除

    关联删除通常是一个数据库术语,用于描述在删除行时允许自动触发删除关联行的特征:即当主表的数据行被删除时,自动将关联表中依赖的数据行进行删除,或者将外键更新为NULL或默认值. 数据库关联删除行为 我们 ...

  2. Haskell学习-functor

    原文地址:Haskell学习-functor 什么是Functor functor 就是可以执行map操作的对象,functor就像是附加了语义的表达式,可以用盒子进行比喻.functor 的定义可以 ...

  3. 【view绘制流程】理解

    一.概述 View的绘制是从上往下一层层迭代下来的.DecorView-->ViewGroup(--->ViewGroup)-->View ,按照这个流程从上往下,依次measure ...

  4. Flutter 实现原理及在马蜂窝的跨平台开发实践

    一直以来,跨平台开发都是困扰移动客户端开发的难题. 在马蜂窝旅游 App 很多业务场景里,我们尝试过一些主流的跨平台开发解决方案, 比如 WebView 和 React Native,来提升开发效率和 ...

  5. 驰骋工作流引擎-流程数据md5加密

    关键字:工作流程数据加密  md5  数据保密流程数据防篡改软加密设置方式: 对工作流引擎的数据加密研究, 流程数据的加密方案与实现过程.输入图片说明需求背景1, 流程数据加密是为了防止流程数据被篡改 ...

  6. idea配github

    下面步骤的三个前提条件:安装git 安装idea 注册github账号 步骤一.绑定我的github账号与我的计算机 绑定我的github账号与我的计算机之后,便能很方便地上传或者更新我的代码,这需要 ...

  7. LeetCode算法题-Letter Case Permutation(Java实现)

    这是悦乐书的第315次更新,第336篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第184题(顺位题号是784).给定一个字符串S,将每个字母单独转换为小写或大写以创建另 ...

  8. June 29th. 2018, Week 26th. Friday

    Real love is always worth waiting for. 真爱永远值得等待. From Westworld. Real love is rare, but it does exis ...

  9. 织梦dedecms如何修改关键词的字数长度限制

    亲测,这个教程比较完善,百度了很多有些少步骤,或者方法根本不对,导致不成功.这个方法我亲子测试了.奏效. 首先登陆数据库后台,如phpmyadmin,找到相应的数据表dede_archives和ded ...

  10. 为什么MIP-Cache存在

    在去年十月的一篇 博客文章 提到 MIP 加速器是由 MIP-HTML, MIP-JS 和 MIP-Cache 三个模块共同产生加速效果的.MIP-HTML 和 MIP-JS 都是开源的,在 GitH ...