摘自http://blog.csdn.net/howeverpf/article/details/40743705

Wireshark入门与进阶系列(二)

“君子生非异也,善假于物也”---荀子

本文由CSDN-蚍蜉撼青松 【主页:http://blog.csdn.net/howeverpf】原创,转载请注明出处!

上一篇文章我们讲了使用Wireshark进行数据包捕获与保存的最基本流程,更通常的情况下,我们对于要捕获的数据包及其展示、存储可能有一定要求,例如:
  • 我们希望捕获的数据包中对我们有用的包的比例要能更高,这就需要设定一些捕获的过滤规则;
  • 我们希望在捕获数据包的同时将数据包保存到指定的文件中;
  • 我们希望当满足某个条件时,Wireshark会自动停止抓包,而不需要我们手动停止;
  • 我们希望捕获的实时展示最新捕获的数据包,并看到各类网络数据包的数量统计信息;
  • 我们希望将物理层、网络层、传输层的数字地址转换成可读性更好的文字信息;

以上这些需求,都可以通过设置Capture Options来满足,故此,一个相对上一篇博文文更完整的抓包流程是:

[plain] view plaincopy print?
  1. “启动软件-->设置捕获选项并开始抓包-->停止抓包-->数据包保存”

其他的步骤基本没变,只是把简单的“选定网卡”进化成了更为复杂的“设定捕获选项”。在这篇博文里,就让我们来了解一下这个Capture Options。

【本篇大部分内容参考Wireshark自带的帮助手册,需要却没有的可以下载《Wireshark用户指南1.10(英文原本)》,或是《Wireshark用户指南老版(中文译本)》】

二、Capture Options(捕获选项)各项的含义与设定

软件启动后,在引导界面中,我们直接点击“Capture”部分下面的Capture Options快捷按钮【第一篇博文的图2最下方】,弹出下图所示的捕获选项窗口,

图2-1 Capture Options(数据包捕获选项)弹窗

通过上图,可以看到,Capture Options弹窗根据设置内容的不同,大致可以分为五个区域【图2-1中分别用五个黑色圆角方框标注】。下面按照从上到下,从左到右的顺序,分区域依次介绍各个选项都有什么涵义,设置与否对我们有何影响。

2.1 Capture[抓包相关设定]

图2-2 数据包捕获相关设定

这个区域的选项都是会对数据包的捕获产生直接影响的,按照自上而下的顺序,具体来说他们包括,

2.1.1 网卡列表

位于此区域最上方,它的作用是显而易见的,你想在哪块网卡上抓包,就勾选该网卡前面的复选框。可多选,至少选一个!

2.1.2 选项:Capture on all interfaces

勾选此选项后,意味着你要Wireshark同时捕获本机所有网卡上的网络数据包【这和你在上方的列表中勾选了所有的网卡是等价的】;反之,则只捕获网卡列表中指定网卡上的数据包。

2.1.3 选项:Use promiscuous mode on all interfaces

勾选此选项后,意味着你要Wireshark在抓包的时候让网卡开启混杂模式。【简单点说,开启混杂模式的网卡可以捕获所有流过该网卡的帧,不开启则只能捕获广播帧以及发给该网卡的帧。更详细的关于以太网卡几种工作模式的介绍,参看《网卡的工作模式》】

2.1.4 按钮:Manage Interfaces

如果你想增、删“网卡列表”里的条目,可以点这个按钮。【其实这里面还可以设置管道以及远程网卡作为数据包来源,我也没太用这功能,就不多说了】

2.1.5 输入框与按钮:Capture Filter

如果你想设置数据包捕获的过滤条件(官方一点,好像多称为过滤器),并且你碰巧对Tcpdump的表达式还有过一点了解,你可以直接在此按钮旁边的输入框中按照语法设置过滤表达式,类似于我在图2-1中输入的:

[plain] view plaincopy print?
  1. host 192.168.1.17 and port 110

当然,很可能你对过滤表达式完全不了解,那么你也可以直接点这个按钮,弹出下面这个窗口,里面有些现成的常用过滤器,

图2-3 Capture Filter弹窗

我们从这些可选的过滤器里任意选一条,比方说上图2-3中选中的“IP address 192.168.0.1”,可以在下方看到,“IP address 192.168.0.1”只是过滤器的一个直观、容易理解的名字,它其实对应着过滤表达式“host 192.168.0.1”。图2-3这个弹窗里已经有最简单的,包括“只要IP包”、“只要UDP包”、“只要HTTP包”、“不要ARP包”等最常用的 过滤器。利用它我们还可以增删改一些常用的过滤器,当然前提是你得学习一下怎么写过滤表达式。【由于与Tcpdump之间高度的相似性,想要学习过滤表达 式的语法,可以参考博文《Tcpdump的详细用法》,当然也可以直接下载资料《WinPcap_BPF_Fiter过滤规则设置说明文档.pdf》】

2.1.6 按钮:Compile selected BPFs

这个一开始我也没搞清楚,还以为是要让过滤器生效,必须在写好过滤表达式后点这个,所以就每次都顺手点上一记~~~也是写本文的时候才发现,不点这个也 可以生效……查阅Wireshark自带的帮助手册后明白,它只是一个帮助你把过滤表达式编译成BPF代码形式(看起来有点像汇编代码)的工具而已。你要 是只是用Wireshark,不自己编写基于WinPcap的嗅探工具,我估计应该用不到这个。

2.2 Capture Files[存包相关设定]

图2-4 数据包文件存储相关的设定

这个区域的选项仅当你想要自动存包时才需要设置。实际应用中,有些情况下只是一个简单的临时分析,是不需要存包的;也有些情况是我们先实时捕获放在缓存,先大致看过后再选择性地存文件。这两种情况下,都不用设置这个区域的选项。

2.2.1 输入框:File

简单,直接通过输入或是使用后方的Brose按钮,指定存放的文件名及其完整路径。默认是空白,意味着捕获的数据包存放在默认缓存目录下的临时文件中。

2.2.2 选项:Use pcap-ng format

勾选这个选项,意味着你希望Wireshark存文件时使用pcapng格式【欲知详情,参看http://wiki.wireshark.org/Development/PcapNg】。当同时指定在多块网卡上抓包时,必须使用pcapng格式存文件;出于兼容考虑,单块网卡上的抓包我不建议勾选。

2.2.3 选项:Use multiple files

勾选此选项后,Wireshark会使用多个文件存储数据包;反之,则默认使用单文件存储。使用单文件还是多文件,取决于数据量的大小、你的目的等多个要素。

2.2.4 选项:Next file every N megabytes(s)/minute(s)

       如果上面没有勾选“Use multiple files”,则此选项被禁、无效。

       使用多个文件存储时,必须指定切换下一个文件的条件。切换条件有两种形式,一是每当捕获多少流量(默认单位是Mb,也支持更小一点的Kb,以及更大一点的Gb)后切换,另一种是每当捕获间隔多长时间(默认单位分钟,也支持秒、小时、天)后切换。

使用多个文件存储时,两种切换方式至少选其一!

2.2.5 选项:Ring buffer with N files

       如果上面没有勾选“Use multiple files”,则此选项被禁、无效。

使用多个文件存储时,如果对文件数量有限制,且允许文件覆盖, 可以勾选并设定此选项。这意味着,Wireshark在存包时最多创建N个文件,当达到切换条件需要创建第N+1个文件时,它会直接把捕获的数据包存入到 当前最“老”(生成时间最早)的文件中,从而让最“老”的文件变成最“新”的文件。这就好比建立了一个容量为N的环形缓冲队列。

暂时来说,我的理解,让最“老”的文件变成最“新”的文件的过程是覆盖的过程,如果你倒腾发现本质上是添加或其他机理,请联系我!

2.2.6 选项:Stop capture after n file(s)

如果上面没有勾选“Use multiple files”,则此选项被禁、无效。

使用多个文件存储时,如果对文件数量有限制,且不允许文件覆盖,可以勾选并设定此选项。这意味着,Wireshark在存包时最多创建N个文件,当达到切换条件需要创建第N+1个文件时,它就直接停止抓包。

这种自动停止抓包的方法仅适用于指定使用多个文件存储时。通用的自动停止抓包方法在下一节介绍。

2.3 Stop Capture Automatically After[自动停止抓包设定]

图2-5 自动停止抓包设定

在上一篇文章里,我们是手动停止抓包的。而这个区域的选项可以帮助我们通过设置一些条件来让Wireshark自动停止抓包,需要额外提到的是,这些选项之间不是互斥的,可以勾选多个,他们之间应该是“或”的关系。

2.3.1 选项:N packet(s)

勾选此选项后,Wireshark会在捕获到指定个数的数据包后,会自动停止抓包。

2.3.2 选项:N megabytes(s)

勾选此选项后,Wireshark会在捕获到指定大小的数据流量后,会自动停止抓包。默认流量单位是Mb,也支持更小一点的Kb,以及更大一点的Gb。

2.3.3 选项:N minute(s)

勾选此选项后,Wireshark会以开始捕获为计时起点,经过指定长短的时间后,自动停止抓包。默认时间单位分钟,也支持秒、小时、天。

2.4 Display Options[显示选项设定]

图2-6 显示选项设定
这个区域的选项用来对实时捕获的展示效果施加影响。

2.4.1 选项:Update list of packets in real time

       勾选这个选项,会使得Wireshark在抓包时同时开启两个进(线)程,一个进(线)程负责捕获数据包,另一个进(线)程负责实时地解析、展示捕获的数据包;反之,Wireshark就会“一心一意”地抓包,等到停止抓包后,再一次性解析、展示所有捕获的数据包。
       显然的是,实时地解析、展示数据包,或多或少都会消耗CPU资源,所以会对捕获性能产生不小的影响,丢包率可能会因此而增大。

2.4.2 选项:Automatic scrolling in live capture

       如果上面没有勾选“Update list of packets in real time”,则此选项被禁、无效。
       勾选这个选项,会使得Wireshark在开始抓包后,将主窗口中的“数据包列表”子窗口自动滚动到最后一行,以便你随时都能在该子窗口的最底部看到最新捕获的数据包。其实你要是不勾选,自己手动拖一下该子窗口的滚动条也是一样的。

2.4.3 选项:Hide capture info dialog

       如果你想对Wireshark抓包时的数据包捕获情况做个大概的了解,那么不要勾选这个选项,Wireshark在抓包的时候会弹出下图所示的概要信息窗口,

图2-7 数据包捕获概要情况弹窗

       反之,勾选此选项后,Wireshark则会在抓包时隐藏此弹窗。

2.5 Name Resolution[名称解析相关设定]

图2-8 名称解析相关设定

       这个区域的选项用来对展示捕获结果时数据包各层的地址解析、显示效果作出设定。需要说明的是,这些解析结果只是临时性的,如果你把捕获的数据包存下来,Wireshark只会保存最原始的各层地址,而不会保存这些解析结果。

2.5.1 选项:Resolve Mac addresses

        勾选此选项后,Wireshark会尝试(但不保证)将MAC地址解析成更易识别的形式,例如:
[plain] view plaincopy print?
  1. 01:00:5e:00:35:16 ==> IPv4mcast_00:35:16
  2. 00:26:82:88:45:ac ==> GemtekTe_88:45:ac
  3. 28:c6:8e:19:e9:5b ==> Netgear_19:e9:5b
        仔细观察一下,你很容易发现,它其实只解析了MAC地址的前三个字节,后三个字节原封不动的保留在了解析结果里。这种解析的理论依据是,六字节的MAC地址其实可以对半分为两部分:前三个字节由IEEE的注册管理机构统一分配,称为OUI(组织唯一标识符)或是Company_id(公司标识符),一般可以通过这三个字节识别出生产厂商;后三个字节由厂商自行分配,意义不大。

2.5.2 选项:Resolve network-layer names

        勾选此选项后,Wireshark会尝试(但不保证)将网络层地址(一般就是IP地址)解析成更易识别的形式(例如域名、主机名)。
        它的实现一般是通过调用gethostname()的反向域名查询【参看《DNS中的正向解析与反向解析》】形式,这可能导致两个问题:1.会因查询产生额外的DNS流量,在某些分析过程中,会影响分析结果的准确性;2.会因查询占用系统资源而导致捕获性能受到影响。所以我不建议抓包的时候勾选这个选项,分析的时候可以设置这个。
        如果采用普通的阻塞式查询,很多时候会因为查询失败,或是查询比较困难而导致延时等待,从而愈加影响捕获的性能。一定要用的话,最好采用concurrent DNS(同步DNS查询)。

2.5.3 选项:Resolve transport-layer name

        勾选此选项后,Wireshark会尽可能(但不保证)将传输层地址(一般就是端口号)解析成其对应的应用层服务。例如:
[plain] view plaincopy print?
  1. 80、8080 ==> http
  2. 21 ==> ftp
  3. 23 ==> telnet
  4. 25 ==> smtp
  5. 53 ==> dns
  6. 110 ==> pop3
  7. 443 ==> ssl、tls
        这种解析的原理在于,很多常用的服务往往绑定固定的端口号(0~1023),这些端口号一般称为熟知端口号或是系统端口号。【可以参看维基百科 --- TCP/UDP端口列表】

2.5.4选项:Use external network name resolver

       Wireshark早期版本中没有这个选项及其近似选项。在实际使用中,我个人还没机会体会到这个选项勾选与否的区别;我在的1.10版自带用户指南上也没有找到相关的描述。最后搜了一下,大概弄懂了一点。
        添加这个选项的初衷,应该是配合上面的选项“Resolve network-layer names”使用。我们知道,普通的DNS查询遵循的是本机缓存查询、hosts文件查询、外部查询的先后顺序,如果前两项内部查找失败,就会用到外部查 询,但若是不勾选这个选项,那么Wireshark在解析IP地址对应的主机名或域名的时候,就仅使用内部的查询,失败的话不再尝试外部查询,直接返回失败的结果。
        初衷虽是如此,但在实现的时候貌似出了点问题……
        本节参考资料:
  • 《What is "Use External Network Name Resolver" setting?》
  • 《Doesn't respect disabling "use an external network name resolver"》
  • 《Using a Wireshark Hosts File for Quicker Analysis》(可能打不开,可以看这个保存的图片:http://vdisk.weibo.com/s/aUCQJfkRisFHX)

转载于:https://www.cnblogs.com/LiuYanYGZ/p/5588267.html

Wireshark入门与进阶系列(二)相关推荐

  1. Wireshark入门与进阶系列十二之IP冲突

    0x00 前言 这里,我们介绍如何使用wireshark 来分析网络中IP冲突的问题.其中IP冲突一般是指局域网中的IP冲突,例如两台主机使用了相同的IP地址.更进一步的划分个人主机IP冲突和服务器主 ...

  2. Wireshark入门与进阶---Capture Options各项的含义与设定

    Wireshark入门与进阶系列(二) "君子生非异也,善假于物也"---荀子 本文由CSDN-蚍蜉撼青松 [主页:http://blog.csdn.net/howeverpf]原 ...

  3. Wireshark入门与进阶---数据包捕获与保存的最基本流程

    Wireshark入门与进阶系列(一) "君子生非异也.善假于物也"---荀子 本文由CSDN-蚍蜉撼青松 [主页:http://blog.csdn.net/howeverpf]原 ...

  4. 机器学习入门科普篇--系列二

    机器学习入门科普篇--系列二 前言 python程序语言与机器学习实践可以称得上是"珠联璧合".因为使用python编程技巧,接触甚至掌握机器学习的经典学习算法至少有以下四个优势. ...

  5. C++入门到进阶系列课程目录

    总目录 C++知识点小结 - C++入门到进阶系列 C++如何在main函数之前执行代码 thread_local关键字 C++入门到精通 C++ static_cast转换与C风格转换 C++中vo ...

  6. 超全PHP学习资源整理:入门到进阶系列

    PHP是少数几门在语言层面饱受诟病,但在实际开发和应用上却又让人无法撒手的语言之一.就好比路边摊小吃,一遍骂人家不卫生,一遍却又说:真香.所谓接地气,不外如此,大道理不说,PHP光是轮子多.市场占有率 ...

  7. Webpack从入门到进阶(二)---附沿路学习案例代码

    文章目录 Webpack从入门到进阶(一)---附沿路学习案例代码 一.Webpack简介 1.前端发展的几个阶段 2.前端三个框架的脚手架 3.Webpack是什么? 4.webpack和vite ...

  8. matlab 积分进阶教程,最适合小白的matlab教程系列_进阶系列二之微积分

    微积分篇 更多文章参考 符号变量 极限问题 求导数 求导数----偏导数 积分--符号解 积分数值解 多重积分 级数求和 泰勒级数展开 常微分方程 更多文章参考 最适合小白的matlab教程系列_基础 ...

  9. 最适合小白的matlab教程系列_进阶系列二之微积分

    微积分篇 更多文章参考 符号变量 极限问题 求导数 求导数----偏导数 积分--符号解 积分数值解 多重积分 级数求和 泰勒级数展开 常微分方程 更多文章参考 最适合小白的matlab教程系列_基础 ...

最新文章

  1. oracle 11g rac手册(第2版) 高清,Oracle Database11g RAC手册(第2版)_IT教程网
  2. Codeforces 1206
  3. C#获取一些常用目录
  4. SpringBoot集成OpenOffice实现doc文档转html
  5. arcgis server 常见问题【转】
  6. Android ListView几个重要属性
  7. Magento--判断checkout中是否使用了coupon code
  8. W3 Total Cache+Hacklog Remote Attachment Upyun
  9. Unity3D研究院之获取摄像机的视口区域(转)
  10. ubuntu11中卸载gnome3
  11. 微信小程序 - WXML语法与HTML比较
  12. 阿里云上创建 对象存储oss
  13. 打开 .mpp文件的一种方法
  14. 免费PHPCMS采集规则文章采集器采集百万数据
  15. 夫妻给一周岁女儿喂农药后双双自杀
  16. Java 使用redis 设计一个每天重新开始计数的计数器
  17. 解决Chrome或Microsoft Edge浏览器打开时自动跳转到hao123
  18. 基于人脸识别技术实战开发人证比对访客系统
  19. linux 定时执行任务 at atq atrm命令的使用
  20. 爬取百度地图 商店铺联系电话地址定位

热门文章

  1. 废旧光驱拆解与丝杆测试
  2. 【小白必读】机器学习入门须知
  3. JAVA 掷骰子小游戏
  4. Java学习-发红包案例
  5. X86加装PCIE网卡无法访问ESXi的问题
  6. android 语音和输入法按钮切换,android 切换系统语言,输入法也随之切换
  7. macbook无法打开移动硬盘 为什么mac上显示不了移动硬盘
  8. 农夫追牛(bfs算法)
  9. 重新安装opencv,踩坑。
  10. 把ubuntu安装在U盘的教程之一:制作U盘启动盘