| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 史上最全wireshark使用教程,8万字整理总结,建议先收藏再耐心研读 -> 正文阅读 |
|
[系统运维]史上最全wireshark使用教程,8万字整理总结,建议先收藏再耐心研读 |
? 目录 1.6.6.?在UNIX/Linux平台追踪软件错误... 5 2.5.1.?在Linux或类似环境下安装RPM包... 9 2.5.3.?在Gentoo Linux环境下安装Portage. 9 3.16.?"Packet Details"面板... 27 5.3.1.?"save Capture File As/保存文件为"对话框... 40 5.6.1.?"Export as Plain Text File"对话框... 44 5.6.2.?"Export as PostScript File" 对话框... 45 5.6.3.?"Export as CSV (Comma Separated Values) File" 对话框... 45 5.6.4.?"Export as PSML File" 对话框... 46 5.6.5.?"Export as PDML File" 对话框... 46 5.6.6.?"Export selected packet bytes" 对话框... 47 5.6.7.?"Export Objects" 对话框... 47 6.5.?“Filter Expression/过滤表达式”对话框... 57 6.7.2.?"Find Next/查找下一个"命令... 60 6.7.3.?"Find Previous/查找上一个"命令... 60 6.8.2.?"Go Forward /向前"命令... 60 6.8.3.?"Go to Packet/到指定的包"对话框... 60 6.8.4.?"Go to Corresponding Packet/到对应的包"命令... 60 6.8.5.?"Go to Firest Packet/到第一个包"命令... 61 6.8.6.?"Go to Last Packet/到最后一个包"命令... 61 7.2.1.?"Follow TCP Stream"对话框... 63 7.7.2.?Checksum offloading. 69 8.3.?"Protocol Hierarchy"窗口... 71 8.4.3.?特定协议的"Endpoint List"窗口... 73 8.5.1.?什么是会话/conversation?. 73 8.5.2.?"Conversations/会话" window. 73 8.5.3.?协议指定“Conversation List/会话列表”窗口... 74 8.7.1.?"Service Response Time DCE-RPC"窗口... 75 9.4.1.?"Enable Protocols"对话框... 82 9.8.?Tektronics K12xx/15 RF5 协议表... 86 第?1?章?介绍 Wireshark 是网络包分析工具。网络包分析工具的主要作用是尝试捕获网络包, 并尝试显示包的尽可能详细的情况。 你可以把网络包分析工具当成是一种用来测量有什么东西从网线上进出的测量工具,就好像使电工用来测量进入电信的电量的电度表一样。(当然比那个更高级) 过去的此类工具要么是过于昂贵,要么是属于某人私有,或者是二者兼顾。 Wireshark出现以后,这种现状得以改变。 Wireshark可能算得上是今天能使用的最好的开元网络分析软件。 下面是Wireshark一些应用的举例:
除了上面提到的,Wireshark还可以用在其它许多场合。
不管怎么说,要想真正了解它的强大,您还得使用它才行 Wireshark 可以捕捉多种网络接口类型的包,哪怕是无线局域网接口。想了解支持的所有网络接口类型, 可以在我们的网站上找到http://wiki.wireshark.org/CaptureSetup/NetworkMedia. Wireshark可以打开多种网络分析软件捕捉的包,详见??? Wieshark可以将捕捉文件输出为多种其他捕捉软件支持的格式,详见??? 可以支持许多协议的解码(在Wireshark中可能被称为解剖)??? Wireshark是开源软件项目,用GPL协议发行。您可以免费在 任意数量的机器上使用它,不用担心授权和付费问题,所有的源代码在GPL框架下都可以免费使用。因为以上原因,人们可以很容易在Wireshark上添加新的协议,或者将其作为插件整合到您的程序里,这种应用十分广泛。 Wireshark不能提供如下功能
想要安装运行Wireshark需要具备的软硬件条件...
说明
Wireshark目前可以运行在许多UNIX平台,系统可以对照上面Windows下的指标。 二进制包最少在以下平台可用:
如果二进制包在您的平台无法使用,你可以下载源文件并尝试编译它。 希望您能发送邮件到wireshark-dev[AT]wireshark.org .分享您的经验。 你可以从我们的网站下载最新版本的Wireshark http://www.wireshark.org/download.html.网站上您可以选择适合您的镜像站点。 Wireshark通常在4-8周内发布一次新版本 如果您想获得Wireshark发布的消息通知,你可以订阅Wireshark-announce邮件列表。详见第?1.6.4?节 “邮件列表” 1.4.?Wiresahrk简史[6] 1997年以后,Gerald Combs 需要一个工具追踪网络问题并想学习网络知识。所以他开始开发Ethereal (Wireshark项目以前的名称) 以解决以上的两个需要。 Ethereal是第一版,经过数次开发,停顿,1998年,经过这么长的时间,补丁,Bug报告,以及许多的鼓励,0.2.0版诞生了。Ethereal就是以这种方式成功的。 此后不久,Gilbert Ramirez发现它的潜力,并为其提供了底层分析 1998年10月,Guy Harris正寻找一种比TcpView更好的工具,他开始为Ethereal进行改进,并提供分析。 998年以后,正在进行TCP/IP教学的Richard Sharpe 关注了它在这些课程中的作用。并开始研究该软件是否他所需要的协议。如果不行,新协议支持应该很方便被添加。所以他开始从事Ethereal的分析及改进。 从那以后,帮助Ethereal的人越来越多,他们的开始几乎都是由于一些尚不被Ethereal支持的协议。所以他们拷贝了已有的解析器,并为团队提供了改进回馈。 2006年项目Moved House(这句不知道怎么翻译)并重新命名为:Wireshark. Wireshark最初由Gerald Combs开发。目前由Wireshark team进行进一步开发和维护。Wireshark team是一个由修补bug提高Wireshark功能的独立成员组成的松散组织。 有大量的成员为Wireshark提供协议分析。同时我们也希望这些活动能持续机芯。通过查看Wireshark帮助菜单下的About,你可以找到为Wireshark提供代码的人员名单,或者你也可以通过Wireshark 网站的authors页面找到。 Wireshark 是开源软件项目,发布遵循GNU General Public Licence (GPL协议),所有源代码可以在GPL框架下免费使用。欢迎您修改Wireshark以便适合您的需要,如果您可以提供您的改进给Wireshark team ,我们将不胜感激。 为Wireshark Team 提供您的改进建议,有以下益处:
Wireshar 源代码和二进制kits (二进制工具包? )可以根据自己的平台对应下载,网站是:http://www.wireshark.org/download.html. 如果您在使用中碰到了问题,或者您需要Wireshark的帮助,有以下几种可能让您有兴趣的方法(当然,还包括这本书)。 通过访问http://www.wireshark.org你将会发现关于Wireshark许多有用的信息。 Wireshark Wiki (http://wiki.wireshark.org)提供广泛的跟Wireshark以及捕捉包有关信息。你将会发现一些没有被包括在本书内信息,例如:wiki上有解释如何在交换网络捕捉包,同时我们正努力建立协议参考,等等。 最好的事情是,如果对某些知识有独到见解(比如您精通某种协议),您可以通过浏览器编辑它。 最经常被问到的问题“Frequently Asked Questions”提供一个经常被问到的问题以及答案的列表。
下面的几个几个邮件列表,分别属于不同的主题: Wireshark-users 这是一个Wireshark用户的列表,大家提交关于安装和使用Wireshark的问题,其它人(非常有用)提供的答案。(译者注:其他人当然也是指用户?) wireshark-announce 这是一个关于程序发布信息的列表,通常每4-8周出现一次。 wireshark-dev 这是一个关于Wireshark开发的邮件列表,如果开始开发协议分析,可以从加入该列表 你可以通过网站http://www.wireshark.org订阅每个邮件列表.简单点击网站左手边的邮件列表链接就可以。邮件同样在网站上可以看到存档。
当您提交问题的时候,如果您提供如下信息将会对解决问题很有帮助。
如果您发送捕捉数据到邮件列表,请确定它们不包含敏感或者机密信息,比如密码或者诸如此类的。 你可以通过如下命令获得追踪信息: ?$ gdb `whereis wireshark | cut -f2 -d: | cut -d' ' -f2` core >&bt.txt ?backtrace ?^D ?$ ???????????
你可以发送追踪邮件到wireshark-dev[AT]wireshark.org邮件列表 Windows下无法包含符号文件(.pdb),它们非常大。因此不太可能创建十分有意义的追踪文件。你将汇报软件错误就像前面描述的其他问题一样。(这句不尽人意) [3] 译者注:因为不是入侵检测之用,所以不会将入侵检测和普通通信区别对待,但是都会体现在网络包里面,如果您有足够的经验,或许能通过监视网络包发现入侵检测 [4] 译者注:原文 “The values below are the minimum requirements and only "rules of thumb" for use on a moderately used network”,其中”rules of thumb”中译名应该是拇指规则,但网上关于拇指规则解释莫衷一是,大致意思是说:大多数情况下适用,但并非所有情况。这里翻译的有点别扭 [5] 译者注:我对这句话的理解是,正如播放电影一样,高性能的处理器只会增强显示效果,您并不需要将原来30分钟的影片10分钟之内看完。当然,对减少延时还是有作用的。但是感觉这句有点阅读困难,可能翻译的有点问题. [6] 本段因为有很多协议,程序开发方面的术语,翻译得比较糟糕 [7] 译者注:那句话的意思是,我在XX时碰到一个警告信息 [8] 译者注:原文是:"Type the characters in the first line verbatim! Those are back-tics there!",Those are back-tics there!不知道是什么意思,back-tics=后勤抽搐?熟悉Linux的或许知道 第?2?章?编译/安装Wireshark2.1.?须知万事皆有开头,Wireshark也同样如此。要想使用Wireshark,你必须:
目前,只有两到三种Linux发行版可以传送Wireshark,而且通常传输的都是过时的版本。至今尚未有UNIX版本可以传输Wireshark . Windows的任何版本都不能传输Wireshark.基于以上原因,你需要知道从哪能得到最新版本的Wireshark以及如何安装它。 本章节向您展示如何获得源文件和二进制包,如何根据你的需要编译Wireshark源文件。 以下是通常的步骤:
2.2.?获得源你可以从Wireshark网站http://www.wireshark.org.同时获取源文件和二进制发行版。选择您需要下载的链接,然后选择源文件或二进制发行包所在的镜像站点(尽可能离你近一点的站点)。
基于以上原因,您可能想自己下载源文件自己编译,因为这样相对方便一点。 2.3.?在UNIX下安装之前在编译或者安装二进制发行版之前,您必须确定已经安装如下包:
您将会同样需要Glib.它们都可以从www.gtk.org获得。
您可以从www.tcpdump.org获得。 根据您操作系统的不同,您或许能够安装二进制包,如RPMs.或许您需要获得源文件并编译它。 如果您已经下载了GTK+源文件,例?2.1 “从源文件编译GTK+”提供的指令对您编译有所帮助。 gzip -dc gtk+-1.2.10.tar.gz | tar xvf -
<much output removed>
./configure
<much output removed>
make install
<much output remove>
如果在执行例?2.1 “从源文件编译GTK+”中的指令时有错误发生的话,你可以咨询GTK+网站。 如果您已经下载了libpcap源,一般指令如例?2.2 “编译、安装libpcap” 显示的那样会帮您完成编译。同样,如果您的操作系统不支持tcpdump,您可以从tcpdump网站下载安装它。 gzip -dc libpcap-0.9.4.tar.Z | tar xvf -
<much output removed>
cd libpcap-0.9.4
./configure
<much output removed>
make
<much output removed>
make install
<much output removed>
RedHat 6.x及其以上版本环境下(包括基于它的发行版,如Mandrake),您可以直接运行RPM安装所有的包。大多数情况下的Linux需要安装GTK+和Glib.反过来说,你可能需要安装所有包的定制版。安装命令可以参考例?2.3 “在RedHat Linux 6.2或者基于该版本得发行版下安装需要的RPM包”。如果您还没有安装,您可能需要安装需要的RPMs。 例?2.3.?在RedHat Linux 6.2或者基于该版本得发行版下安装需要的RPM包 cd /mnt/cdrom/RedHat/RPMS
rpm -ivh glib-1.2.6-3.i386.rpm
rpm -ivh glib-devel-1.2.6-3.i386.rpm
rpm -ivh gtk+-1.2.6-7.i386.rpm
rpm -ivh gtk+-devel-1.2.6-7.i386.rpm
rpm -ivh libpcap-0.4-19.i386.rpm
在Debian下您可以使用apt-ge命令。apt-get 将会为您完成所有的操作。参见例?2.4 “在Deban下安装Deb” apt-get install wireshark-dev
2.4.?在UNIX下编译Wireshark如果在Unix操作系统下可以用如下步骤编译Wireshark源代码:
tar zxvf wireshark-0.99.5-tar.gz
对于 UNIX版本,命令如下 gzip -d wireshark-0.99.5-tar.gz
tar xvf wireshark-0.99.5-tar
./configure
如果找个步骤提示错误,您需要修正错误,然后重新configure.解决编译错误可以参考第?2.6?节 “解决UNIX下安装过程中的问题 ”
make
make install
一旦您使用make install安装了Wireshark,您就可以通过输入Wireshark命令来运行它了。 2.5.?在UNIX下安装二进制包一般来说,在您的UNIX下安装二进制发行包使用的方式根据您的UNIX的版本类型而各有不同。例如AIX下,您可以使用smit安装,Tru64 UNIX您可以使用 setld 命令。 2.5.1.?在Linux或类似环境下安装RPM包使用如下命令安装Wireshark RPM包 rpm -ivh wireshark-0.99.5.i386.rpm
如果因为缺少Wireshark依赖的软件而导致安装错误,请先安装依赖的软件,然后再尝试安装。REDHAT下依赖的软件请参考例?2.3 “在RedHat Linux 6.2或者基于该版本得发行版下安装需要的RPM包” 2.5.2.?在Debian环境下安装Deb包使用下列命令在Debian下安装Wireshark apt-get install Wireshark
apt-get 会为您完成所有的相关操作 2.5.3.?在Gentoo Linux环境下安装Portage使用如下命令在Gentoo Linux下安装wireshark以及所有的需要的附加文件 USE="adns gtk ipv6 portaudio snmp ssl kerberos threads selinux" emerge wireshark
2.5.4.?在FreeBSD环境下安装包使用如下命令在FreeBSD下安装Wireshark pkg_add -r wireshark
pkg_add会为您完成所有的相关操作 2.6.?解决UNIX下安装过程中的问题 [10]安装过程中可能会遇到一些错误信息。这里给出一些错误的解决办法: 如果configure那一步发生错误。你需要找出错误的原因,您可以检查日志文件config.log(在源文件目录下),看看都发生了哪些错误。有价值的信息通常在最后几行。 一般原因是因为您缺少GTK+环境,或者您的GTK+版本过低。configure错误的另一个原因是因为因为缺少libpcap(这就是前面提到的捕捉包的工具)。 另外一个常见问题是很多用户抱怨最后编译、链接过程需要等待太长时间。这通常是因为使用老式的sed命令(比如solaris下传输)。自从libtool脚本使用sed命令建立最终链接命令,常常会导致不可知的错误。您可以通过下载最新版本的sed解决该问题http://directory.fsf.org/GNU/sed.html. 如果您无法检测出错误原因。发送邮件到wireshark-dev说明您的问题。当然,邮件里要附上config.log以及其他您认为对解决问题有帮助的东西,例如make过程的追踪。 2.7.?在Windows下编译源在Windows平台下,我们建议最好是使用二进制包直接安装,除非您是从事Wireshark开发的。 如果想了解关于Windows下编译安装Wireshark,请查看我们的开发WIKI网站http://wiki.wireshark.org/Development来了解最新的开发方面的文档。 2.8.?在Windows下安装Wireshark本节将探讨在Windows下安装Wireshark二进制包。 2.8.1.?安装Wireshark您获得的Wireshark二进制安装包可能名称类似 您只需要在http://www.wireshark.org/download.html#releases下载Wireshark安装包并执行它即可。除了普通的安装之外,还有几个组件供挑选安装。
选择组件[11] Wireshark(包括GTK1和GTK2接口无法同时安装): 如果您使用GTK2的GUI界面遇到问题可以尝试GTK1,在Windows下256色(8bit)显示模式无法运行GTK2.但是某些高级分析统计功能在GTK1下可能无法实现。
插件/扩展(Wireshark,TShark分析引擎):
Tools/工具(处理捕捉文件的附加命令行工具 User’s Guide-用户手册-本地安装的用户手册。如果不安装用户手册,帮助菜单的大部分按钮的结果可能就是访问internet.
Wireshark安装包里包含了最新版的WinPcap安装包。 如果您没有安装WinPcap 。您将无法捕捉网络流量。但是您还是可以打开以保存的捕捉包文件。
更多关于WinPcap的信息:
您可以直接在命令行运行安装包,不加任何参数,这样会显示常用的参数以供交互安装。 在个别应用中,可以选择一些参数定制安装:
wireshark-setup-0.99.5.exe /NCRC /S /desktopicon=yes /quicklaunchicon=no /D=C:\Program Files\Foo
2.8.2.?手动安装WinPcap
下面的WinPcap仅适合您需要尝试未包括在Wireshark内的不同版本WinPcap。例如一个新版本的WinPcap发布了,您需要安装它。 单独的WinPcap版本(包括alpha or beta版)可以在下面地址下载到
在下载页面您将会发现WinPcap的安装包名称通常类似于”auto-installer”。它们可以在NT4.0/2000/XP/vista下安装。 2.8.3.?更新Wireshark有时候您可能想将您的WinPcap更新到最新版本,如果您订阅了Wireshark通知邮件,您将会获得Wireshark新版本发布的通知,见第?1.6.4?节 “邮件列表” 。 新版诞生通常需要8-12周。更新Wireshark就是安装一下新版本。下载并安装它就可以。更新通常不需要重新启动,也不会更改过去的默认设置 2.8.4.?更新WinPcapWinPcap的更新不是十分频繁,通常一年左右。新版本出现的时候您会收到WinPcap的通知。更新WinPcap后需要重新启动。
2.8.5.?卸载Wireshark你可以用常见方式卸载Wireshark,使用添加/删除程序,选择”Wireshark”选项开始卸载即可。 Wireshark卸载过程中会提供一些选项供您选择卸载哪些部分,默认是卸载核心组件,但保留个人设置和WinPcap. WinPcap默认不会被卸载,因为其他类似Wireshark的程序有可能同样适用WinPcap 2.8.6.?卸载WinPcap你可以单独卸载WinPcap,在添加/删除程序选择”WinPcap”卸载它。
在卸载完成之后最好重新启动计算机。 [9] 译者注:看到别人翻译Pipelin之类的,似乎就是叫管道,不知道是否准确 [10] 译者注:本人不熟悉UNIX/LINUX,这一段翻译的有点云里雾里,可能大家通过这部分想安装Wireshark会适得其反,那就对不住了。下面个人说一下UNIX/LINUX下安装方法。 UNIX/LINUX下安装时,有两种安装方式,1是下载源码包自己编译,这种方式的好处是因为下载源码包是单一的,可以自行加以修改,编译就是适合自己平台的了。 2、是利用已经做好的发行包直接安装,这种方法的好处是只要下载到跟自己平台对应的就可以,但缺点也在这里,不是每个平台都能找到合适的。不管是编译安装,还是使用发行包安装,都需要有一些有些基本基本支持。比如Linux下的GTK+支持,捕捉包时需要用的libpcap. 这一点可以参考第?2.3?节 “在UNIX下安装之前 ”。编译的一般步骤是解压,编译,安装(tar zxvf Wireshark-0.99.5-tar.gz;make;make install).直接安装则是根据各自平台安装的特点。 [11] 涉及到过多的名次,软件又没有中文版,这里及以后尽量不翻译名称 现在您已经安装好了Wireshark,几乎可以马上捕捉您的一个包。紧接着的这一节我们将会介绍:
你可以使用Shell命令行或者资源管理器启动Wireshark.
先来看看图?3.1 “主窗口界面”,大多数打开捕捉包以后的界面都是这样子(如何捕捉/打开包文件随后提到)。 和大多数图形界面程序一样,Wireshark主窗口由如下部分组成:
Packet list和Detail 面版控制可以通过快捷键进行。表?3.1 “导航快捷键”显示了相关的快捷键列表。表?3.5 “"GO"菜单项”有关于快捷键的更多介绍
另外,在主窗口键入任何字符都会填充到filter里面。 Wireshark主菜单位于Wireshark窗口的最上方。图?3.2 “主菜单”提供了菜单的基本界面。 主菜单包括以下几个项目: File 包括打开、合并捕捉文件,save/保存,Print/打印,Export/导出捕捉文件的全部或部分。以及退出Wireshark项.见第?3.5?节 “"File"菜单” Edit 包括如下项目:查找包,时间参考,标记一个多个包,设置预设参数。(剪切,拷贝,粘贴不能立即执行。)见第?3.6?节 “"Edit"菜单” View 控制捕捉数据的显示方式,包括颜色,字体缩放,将包显示在分离的窗口,展开或收缩详情面版的地树状节点,……见第?3.7?节 “"View"菜单” GO 包含到指定包的功能。见第?3.8?节 “"Go"菜单” Capture 允许您开始或停止捕捉、编辑过滤器。见第?3.9?节 “"Capture"菜单” Analyze 包含处理显示过滤,允许或禁止分析协议,配置用户指定解码和追踪TCP流等功能。见第?3.10?节 “"Analyze"菜单” Statistics 包括的菜单项用户显示多个统计窗口,包括关于捕捉包的摘要,协议层次统计等等。见第?3.11?节 “"Statistics"菜单” Help 包含一些辅助用户的参考内容。如访问一些基本的帮助文件,支持的协议列表,用户手册。在线访问一些网站,“关于”等等。见第?3.12?节 “"Help"菜单” 本章链接介绍菜单的一般情况,更详细的介绍会出现在后续章节。
WireSharkFile菜单包含的项目如表表?3.2 “File菜单介绍”所示
Wireshark的"Edit"菜单包含的项目见表?3.3 “Edit菜单项”
表?3.4 “"View"菜单项”显示了Wireshar View菜单的选项
Wireshark "GO"菜单的内容见表?3.5 “"GO"菜单项”
"Capture"菜单的各项说明见表?3.6 “"Capture"菜单项”
"Analyze"菜单的各项见表?3.7 “"analyze"菜单项”
Wireshark "statistics"菜单项见表?3.8 “”
帮助菜单的内容见表?3.9 “”
主工具栏提供了快速访问常见项目的功能,它是不可以自定义的,但如果您觉得屏幕屏幕过于狭小,需要更多空间来显示数据。您可以使用浏览菜单隐藏它。 在主工具栏里面的项目只有在可以使用的时候才能被选择,如果不是可用则显示为灰色,不可选(例如:在未载入文件时,保存文件按钮就不可用.)
过滤工具栏用于编辑或显示过滤器,更多详情见第?6.3?节 “浏览时过滤包”
Packet list/包列表面板显示所有当前捕捉的包 列表中的每行显示捕捉文件的一个包。如果您选择其中一行,该包得更多情况会显示在"Packet Detail/包详情","Packet Byte/包字节"面板 在分析(解剖)包时,Wireshark会将协议信息放到各个列。因为高层协议通常会覆盖底层协议,您通常在包列表面板看到的都是每个包的最高层协议描述。 例如:让我们看看一个包括TCP包,IP包,和一个以太网包。在以太网(链路层?)包中解析的数据(比如以太网地址),在IP分析中会覆盖为它自己的内容(比如IP地址),在TCP分析中会覆盖IP信息。 包列表面板有很多列可供选择。需要显示哪些列可以在首选项中进行设置,见第?9.5?节 “首选项” 默认的列如下
右击包,可以显示对包进行相关操作的上下文菜单。见第?6.3?节 “浏览时过滤包” "Packet Details/包详情"面板显示当前包(在包列表面板被选中的包)的详情列表。 图?3.14.?"Packet Details/包详情"面板 该面板显示包列表面板选中包的协议及协议字段,协议及字段以树状方式组织。你可以展开或折叠它们。 右击它们会获得相关的上下文菜单。见第?6.4?节 “建立显示过滤表达式” 某些协议字段会以特殊方式显示
Packet Byte/包字节 面板以16进制转储方式显示当前选择包的数据 通常在16进制转储形式中,左侧显示包数据偏移量,中间栏以16进制表示,右侧显示为对应的ASCII字符 根据包数据的不同,有时候包字节面板可能会有多个页面,例如:有时候Wireshark会将多个分片重组为一个,见第?7.5?节 “合并包”.这时会在面板底部出现一个附加按钮供你选择查看 图?3.16.?带选项的"Paket Bytes/包字节"面板
右击选项按钮会显示一个上下文菜单显示所有可用的页的清单。如果您的面板尺寸过小,这项功能或许有所帮助 状态栏用于显示信息 通常状态栏的左侧会显示相关上下文信息,右侧会显示当前包数目 该状态栏显示的是没有文件载入时的状态,如:刚启动Wireshark时 左侧显示当前捕捉文件信息,包括名称,大小,捕捉持续时间等。 右侧显示当前包在文件中的数量,会显示如下值
如果你已经在"Packet Detail/包详情"面板选择了一个协议字段,将会显示上图
实时捕捉数据包时Wireshar的特色之一 Wiershark捕捉引擎具备以下特点
Wireshark捕捉引擎在以下几个方面尚有不足
第一次设置Wireshark捕捉包可能会遇到一些小麻烦
这里有一些常见需要注意的地方
如果你碰到设置问题,建议看看前面的那个向导,或许会有所帮助 可以使用下任一方式开始捕捉包
选择您需要进行捕捉的接口启动捕捉
wireshark -i eth0 -k 上述命令会从eht0接口开始捕捉,有关命令行的介绍参见第?9.2?节 “从命令行启动Wireshark” 如果您从捕捉菜单选择"Interface...",将会弹出如图?4.1 “"Capture Interfaces"捕捉接口对话框”所示的对话框
图?4.1.?"Capture Interfaces"捕捉接口对话框 描述 从操作系统获取的接口信息 IP Wireshark能解析的第一个IP地址,如果接口未获得IP地址(如,不存在可用的DHCP服务器),将会显示"Unkow",如果有超过一个IP的,只显示第一个(无法确定哪一个会显示). Packets 打开该窗口后,从此接口捕捉到的包的数目。如果一直没有接收到包,则会显示为灰度 Packets/s 最近一秒捕捉到包的数目。如果最近一秒没有捕捉到包,将会是灰度显示 Stop 停止当前运行的捕捉 Capture 从选择的接口立即开始捕捉,使用最后一次捕捉的设置。 Options 打开该接口的捕捉选项对话框,见 第?4.5?节 “捕捉选项对话框” Details(仅Win32系统) 打开对话框显示接口的详细信息 Close 关闭对话框 如果您从捕捉菜单选择"start..."按钮(或者从主工具栏选择对应的项目),Wireshark弹出"Capture Option/捕捉选项"对话框。如图?4.2 “"Capture Option/捕捉选项"对话框”所示 图?4.2.?"Capture Option/捕捉选项"对话框
你可以用对话框中的如下字段进行设置 Interface 该字段指定你想用于进行捕捉的借口。一次只能使用一个接口。这是一个下拉列表,简单点击右侧的按钮,选择你想要使用的接口。默认第一是支持捕捉的non-loopback(非环回)接口,如果没有这样的接口,第一个将是环回接口。在某些系统中,回借口不支持捕捉包(windows平台下的环回接口就不支持。) 在命令行使用-i <interface>参数可以替代该选项 IP address 表示选择接口的IP地址。如果系统未指定IP地址,将会显示为"unknown" Link-layer header type 除非你有些特殊应用,尽量保持此选项默认。想了解更多详情,见 第?4.7?节 “链路层包头类型” Buffer size: n megabyte(s) 输入用于捕捉的缓层大小。该选项是设置写入数据到磁盘前保留在核心缓存中捕捉数据的大小,如果你发现丢包。尝试增大该值。
Capture packets in promiscuous mode 指定Wireshark捕捉包时,设置接口为杂收模式(有些人翻译为混杂模式)。如果你未指定该选项,Wireshark 将只能捕捉进出你电脑的数据包(不能捕捉整个局域网段的包)[13]
Limit each packet to n bytes 指定捕捉过程中,每个包的最大字节数。在某些地方被称为。"snaplen".[14]如果禁止该选项,默认值为65535,这适用于大多数协议,下面是一些大多数情况下都适用的规则(这里又出现了拇指规则,第一章,系统需求时提到过。这里权且翻译作普适而非绝对的规则))
Capture Filter 指定捕捉过滤。捕捉过滤器将会在有第?4.8?节 “捕捉时过滤”详细介绍,默认情况下是空的。 同样你也可以点击捕捉按钮,通过弹出的捕捉过滤对话框创建或选择一个过滤器,详见第?6.6?节 “定义,保存过滤器” 捕捉文件设置的使用方法的详细介绍见第?4.6?节 “捕捉文件格式、模式设置” File 指定将用于捕捉的文件名。该字段默认是空白。如果保持空白,捕捉数据将会存储在临时文件夹。详见第?4.6?节 “捕捉文件格式、模式设置” 你可以点击右侧的按钮打开浏览窗口设置文件存储位置 Use multiple files 如果指定条件达到临界值,Wireshark将会自动生成一个新文件,而不是适用单独文件。 Next file every n megabyte(s) 仅适用选中Use multiple files,如果捕捉文件容量达到指定值,将会生成切换到新文件 Next file every n minutes(s) 仅适用选中Use multiple files,如果捕捉文件持续时间达到指定值,将会切换到新文件。 Ring buffer with n files 仅适用选中Use multiple files,仅生成制定数目的文件。 Stop caputure after n file(s) 仅适用选中Use multiple files,当生成指定数目文件时,在生成下一个文件时停止捕捉(生成n个还是n+1个文件?) ... after n packet(s) 在捕捉到指定数目数据包后停止捕捉 ... after n megabytes(s) 在捕捉到指定容量的数据(byte(s)/kilobyte(s)/megabyte(s)/gigabyte(s) )后停止捕捉。如果没有适用"user multiple files",该选项将是灰色 ... after n minute(s) 在达到指定时间后停止捕捉 Update list of packets in real time 在包列表面板实时更新捕捉数据。如果未选定该选项,在Wireshark捕捉结束之前将不能显示数据。如果选中该选项,Wireshark将生成两个独立的进程,通过捕捉进程传输数据给显示进程。 Automatic scrolling in live capture 指定Wireshark在有数据进入时实时滚动包列表面板,这样您将一直能看到最近的包。反之,则最新数据包会被放置在行末,但不会自动滚动面板。如果未设置"update list of packets in real time",该选项将是灰色不可选的。 Hide capture info dialog 选中该选项,将会隐藏捕捉信息对话框 Enable MAC name resolution 设置是否让Wireshark翻译MAC地址为名称,见第?7.6?节 “名称解析” Enable network name resolution 是否允许Wireshark对网络地址进行解析,见第?7.6?节 “名称解析” 进行完上述设置以后,你可以点击start按钮进行捕捉,也可以点击Cancel退出捕捉. 开始捕捉以后,在你收集到足够的数据时你可以停止捕捉。见第?4.9?节 “在捕捉过程中” 在 捕捉时,libpcap 捕捉引擎(linux环境下)会抓取来自网卡的包存放在(相对来说)较小的核心缓存内。这些数据由Wireshark读取并保存到用户指定的捕捉文件中。 保存包数据到捕捉文件时,可采用差异模式操作。
Single temporary file 将会创建并使用一个临时文件(默认选项).捕捉文件结束后,该文件可以由用户指定文件名。 Single named file 使用单独文件,如果你想放到指定目录,选择此模式 Multiple files,continuous 与single name file模式类似,不同点在于,当捕捉达到多文件切换临界条件时之一时,会创建一个新文件用于捕捉 Multiple files,ring buffer 与"multiple files continuous"模式类似,不同之处在于,创建的文件数目固定。当达到ring buffer with n值时,会替换掉第一个文件开始捕捉,如此循环往复。 该模式可以限制最大磁盘空间使用量,即使未限制捕捉数据输入,也只能保留最后几个捕捉数据。 在通常情况下,你不需要选择链路层包头类型。下面的段落描述了例外的情况,此时选择包头类型是有必要的,所以你需要知道怎么做: 如果你在某种版本BSD操作系统下从某种802.11 设备(无线局域网设备)捕捉数据,可能需要在"802.11"和"Ethernet"中做出选择。"Ethernet"将会导致捕捉到的包带有伪以太网帧头(不知道是不是应该叫伪首部更准确些);"802.11"将会导致他们带有802.11帧头。如果捕捉时的应用程序不支持"802.11帧头",你需要选择"802.11" 如果你使用Endace DAG card(某种网络监视卡)连接到同步串口线(译者注:E文为synchronous serial line,权且翻译作前文吧,未接触过此卡、未熟稔此线名称),可能会出现"PPP over serial" 或 "Cisco HDLC"(自己google去)供选择。根据你自己的情况选择二者中的一个。 如果你使用Endace DAG card(同上)连接到ATM网络,将会提供"RFC 1483 IP-over-ATM"、"Sun raw ATM"供选择。如果捕捉的通信是RFC 1483封装IP(RFC 1483 LLC-encapsulated IP,不翻译为妙),或者需要在不支持SunATM帧头的应用程序下捕捉,选择前者。反之选择后者。 如果你在以太网捕捉,将会提供"Ethernet"、"DOCSIS"供选择,如果您是在Cisco Cable Modem Termination System(CMTS是思科同轴电缆终端调制解调系统?)下捕捉数据。它会将DOCSIS(同轴电缆数据服务接口)通信放置到以太网中,供捕捉。此时需要选择"DOCSIS",反之则反之。 Wireshark使用libpcap过滤语句进行捕捉过滤(what about winpcap?)。在tcpdump主页有介绍,但这些只是过于晦涩难懂,所以这里做小幅度讲解。
在Wireshark捕捉选项对话(见图?4.2 “"Capture Option/捕捉选项"对话框”)框输入捕捉过滤字段。下面的语句有点类似于tcpdump捕捉过滤语言。在tcpdump主页http://www.tcpdump.org/tcpdump_man.html可以看到tcpdump表达式选项介绍。 捕捉过滤的形式为:和取值(and/or)进行进行基本单元连接,加上可选的,高有限级的not: [not] primitive [and|or [not] primitive ...] tcp port 23 and host 10.0.0.5 本例捕捉来自或指向主机10.0.0.5的Telnet 通信,展示了如何用and连接两个基本单元。另外一个例子例?4.2 “捕捉所有不是来自10.0.0.5的telnet 通信”展示如何捕捉所有不是来自10.0.0.5的telnet 通信。 例?4.2.?捕捉所有不是来自10.0.0.5的telnet 通信 tcp host 23 and not src host 10.0.0.5 此处笔者建议增加更多范例。但是并没有添加。 一个基本单元通常是下面中的一个 [src|dst] host <host> 此基本单元允许你过滤主机ip地址或名称。你可以优先指定src|dst关键词来指定你关注的是源地址还是目标地址。如果未指定,则指定的地址出现在源地址或目标地址中的包会被抓取。 ether [src|dst] host <ehost> 此单元允许你过滤主机以太网地址。你可以优先指定关键词src|dst在关键词ether和host之间,来确定你关注的是源地址还是目标地址。如果未指定,同上。 gateway host<host> 过滤通过指定host作为网关的包。这就是指那些以太网源地址或目标地址是host,但源ip地址和目标ip地址都不是host的包 [src|dst] net <net> [{mask<mask>}|{len <len>}] 通过网络号进行过滤。你可以选择优先指定src|dst来确定你感兴趣的是源网络还是目标网络。如果两个都没指定。指定网络出现在源还是目标网络的都会被选择。另外,你可以选择子网掩码或者CIDR(无类别域形式)。 [tcp|udp] [src|dst] port <port] 过滤tcp,udp及端口号。可以使用src|dst和tcp|udp关键词来确定来自源还是目标,tcp协议还是udp协议。tcp|udp必须出现在src|dst之前。 less|greater <length> 选择长度符合要求的包。(大于等于或小于等于) ip|ether proto <protocol> 选择有指定的协议在以太网层或是ip层的包 ether|ip broadcast|multicast 选择以太网/ip层的广播或多播 <expr> relop <expr> 创建一个复杂过滤表达式,来选择包的字节或字节范围符合要求的包。请参考http://www.tcpdump.org/tcpdump_man.html 如果Wireshark是使用远程连接的主机运行的(例如使用SSH,X11 Window输出,终端服务器),远程连接必须通过网络传输,会在你真正感兴趣的通信中产生大量数据包(通常也是不重要的) 想要避免这种情况,wireshark可以设置为如果发现有远程连接(通过察看指定的环境变量),自动创建一个过滤器来匹配这种连接。以避免捕捉Wireshark捕捉远程连接通信。 下列环境变量可以进行分析 SSH——CONNECTION(ssh) <remote IP> <remote port> <local IP> <local port> SSH_CLIENT (ssh) <remote IP> <remote port> <local port> REMOTEHOST (tcsh, others?) <remote name> DISPLAY (x11) [remote name]:<display num> SESSIONNAME (terminal server) <remote name> 捕捉时,会出现下面的对话框 上述对话框会向你显示捕捉到包的数目,捕捉持续时间。选择的被统计的协议无法更改(什么鸟意思?)
运行中的捕捉线程可以用下列方法停止:
运行中的捕捉进程可以被重新启动。这将会移出上次捕捉的所有包。如果你捕捉到一些你不感兴趣的包,你不想保留它,这个功能十分有用。 重新启动是一项方便的功能,类似于停止捕捉后,在很短的时间内立即开始捕捉。以下两种方式可以实现重新启动捕捉:
[12] 记得在Windows安装那一节层提到如果作为服务启动可以避免非管理员无法进行捕捉,不知道二者能否相互印证。 [13] 网卡在局域网内会接到很多不属于自己的包,默认情况下,网卡会不对这些包进行处理。貌似设置为杂收模式,Wireshak会监听所有的包,但并不作出相应。 [14] 粗略查了一下,未找到该词的合适翻译,多见于Winpcap的描述,如果把该单词拆分,snap:单元,快照,len:长度,似乎就是单位长度,单元大小的意思。在看看该段下面第二个如果中提到的snapshot length,snaplen应该是二者的简写形式,快照长度 本章将介绍捕捉数据的输入输出。
Wireshark可以读取以前保存的文件。想读取这些文件,只需选择菜单或工具栏的:“File/Open”。Wireshark将会 弹出打开文件对话框。详见第?5.2.1?节 “打开捕捉文件对话框”
在你载入新文件时,如果你没有保存当前文件,Wireshark会提示你是否保存,以避免数据丢失。(你可以在首选项禁止提示保存) 除Wireshark原生的格式(libpcap 格式,同样被 tcpdump/Windump和 其他基于libpcap/WinPcap使用)外,Wireshark可以很好地读取许多捕捉文件格式。支持的格式列表见第?5.2.2?节 “输入文件格式” 打开文件对话框可以用来查找先前保存的文件。表?5.1 “特定环境下的打开文件对话框”显示了一些Wireshark打开文件对话框的例子。
常见对话框行为:
Wireshark对话框标准操作扩展
XXXX-we need a better description of these read filters(貌似说这一段需要更多的做介绍)
表?5.1.?特定环境下的打开文件对话框
可以打开的捕捉文件格式列表:
你可以通过File->Save As...菜单保存捕捉文件。在保存时可以选择保存哪些包,以什么格式保存。
5.3.1.?"save Capture File As/保存文件为"对话框 "Save Capture File As"对话框用于保存当前捕捉数据到文件。???列举了该对话框的一些例子。
表?5.2.?特定环境下的"Save Capture File As"对话框
通过这些对话框,你可以执行如下操作:
可以将Wireshark不着的包保存为其原生格式文件(libpcap),也可以保存为其他格式供其他工具进行读取分析。
Wireshark可以保存为如下格式。
有时候你需要将多个捕捉文件合并到一起。例如:如果你对多个接口同时进行捕捉,合并就非常有用(Wireshark实际上不能在同一个实体运行多次捕捉,需要开启多个Wireshark实体) 有三种方法可以合并捕捉文件:
通过该对话框可以选择需要合并的文件,并载入合并它们。
此处的对话框的大多数内容与"Open Capture Files/打开捕捉文件"对话框类似,参见第?5.2.1?节 “打开捕捉文件对话框” 合并对话框中用于合并的控制选项: 将包插入已存在文件前 将选择文件内的包插入到当前已经载入文件之前 按时间顺序合并文件 将当前选择的文件和已载入的文件里的所有包按时间顺序合并 追加包到当前文件 将选择文件的包插入到当前载入文件的末尾 表?5.3.?不同环境下的"Merge Capture File As"对话框
在进行捕捉时(见:第?4.6?节 “捕捉文件格式、模式设置”)如果设置"Multiple Files/多文件"选项,捕捉数据会分割为多个文件,称为文件集合. 大量文件手动管理十分困难,Wirreshark的文件集合特性可以让文件管理变得方便一点。 Wireshark是如何知道一个文件所属的文件集合t的? 文件集合中的文件名以前缀号码+"_"+号码+"_"+日期时间+后缀的形式生成的。类似于:"test_00001_20060420183910.pcap".文件集合所有的文件都有一个共同的前缀(例如前面的"test")和后缀(例如:".pcap")以及变化的中间部分。 要查找一个文件集合的所有文件。Wireshark会扫描当前载入文件的目录下的所有文件,找到那些和当前文件名具有相同部分(前缀和后缀)的作为文件集合。 这个简单的机制通常能正常运行,但也有它的弊端。如果几次进行的捕捉具有相同的前缀和后缀,Wireshark会将它们看作同一个文件集合。如果文件被更名或者放在不同的目录下,这样的按文件名查找机制会无法找到文件集合的所有文件。 使用"File"菜单项的子菜单"File Set"可以对文件集合集合进行很方便的控制。
每行包含文件集合中的一个文件的相关信息。
最后一行"...indirctory:"显示所有文件所在的目录。 在每次捕捉文件被打开、关闭时,对话框的内容会变化。 Close按钮关闭该对话框。 Wireshark支持多种方法,多种格式导出包数据,本节描述Wireshark常见的导出包数据方法。
XXX - add detailed descriptions of the output formats and some sample output, too./同样需要对导出格式进行介绍,同样也需要一些范例范例 5.6.1.?"Export as Plain Text File"对话框 导出包数据为"plain AscⅡ "文本文本见,适合打印包数据。 图?5.11.?"Export as Plain Text File"对话框
5.6.2.?"Export as PostScript File" 对话框 导出数据为PostScript格式,PostScript是一种打印格式。
图?5.12.?"Export as PostScript File" 对话框
5.6.3.?"Export as CSV (Comma Separated Values) File" 对话框 注:笔者认为此处应该增加截屏,因为我的xp下界面与前图风格迥异,这里就不提供了 导出包的摘要为CVS格式,可以被电子表格程序使用。
5.6.4.?"Export as PSML File" 对话框 导出包数据为PSML格式,它是一种仅包含包摘要信息的xml格式。PSML格式的说明参见:http://www.nbee.org/Docs/NetPDL/PSML.htm. 图?5.13.?"Export as PSML File"对话框
上图没有诸如Packet details的选项,因为PSML文件格式有特殊要求,不包含这些内容。 5.6.5.?"Export as PDML File" 对话框 导出数据包为PDML格式,PDML是包含包详情的xml格式文件。PDML文件的说明见:http://www.nbee.org/Docs/NetPDL/PDML.htm
图?5.14.?"Export as PDML File"对话框
上述对话框里没有诸如Packet details选项,这是由于PDML格式约定的内容决定的。 5.6.6.?"Export selected packet bytes" 对话框 图?5.15.?"Export Selected Packet Bytes" 对话框
这个对话框是用来扫描当前打开包文件或者是正在捕捉中的包文件,将其中的对象,如HTML文档,图片文件,可执行文件等等任何可以通过HTTP传输的对象进行重组集合,让你可以将他们保存刀磁盘。如果捕捉正在进行中,列表会在发现新对象之后的几秒内立即更新。保存的对象不需要进行额外处理就可以被对应的查看工具打开,或者直接运行(如果它可以在Wireshark所在的平台运行的话)。这项功能在GTK1下的Wireshark中无法使用。 各列说明 Packet num 包含该对象数据的包的数目,有时候多个对象可能包含在同一个包里。 Hostname 作为服务器相应HTTP请求发送对象的主机的主机名。 Content Type 对象的HTTP内容类型 Bytes 对象的字节数 Filename URL的最后一部分(最后一个"/"之后)。通常这部分是文件名,但有时是一个又常又复杂的字符串,这通常表明该文件是一个"HTTP POST"请求。(类似于填写表单以后通过CGI提交后跳转页面的URL) 按钮说明: Help 打开本节的用户手册(5.6.7节?) Close 关闭该对话框 Save As 用指定文件名保存当前选择对象。默认文件名是filename列中显示的对象文件名。 Save All 将列表中所有对象按filename列显示名称保存。系统会提示你选择哪个目录/文件夹保存他们。如果文件名在当前操作系统或者文件系统下不合法,Wireshark会提示错误,该对象不会被保存(但其他对象会被保存)。 要打印包,选择File菜单的"Print..."菜单项。这时会弹出如图?5.17 “ "Print" 对话框”所示的打印对话框。
Printer 该字段包括一对互斥的单选钮 Print Text 指定包打印为plain text格式 PostScript 在打印过程中使用PostScrtipt打印软件生成打印输出。[15] Output to file 打印为文件,文件名使用输入的字段或者在浏览按钮选择。 如果你没有选择Output to file:复选框,你输入字段的地方或Browse。。按钮都是灰色。 Print command 设置打印时使用的命令
用于打印的命令通常是lpr.You would change it to specify a particular queue if you need to print to a queue other than the default.例如: lpr -Pmypostscript 如果没有选中Output to file,该字段将是灰色不可用的。 Packet Range 需要要被打印的包,参见:第?5.8?节 “包范围选项” Packet Format 选择输出文件的格式。你可以选择包以何种方式打印包。见图?5.19 “"Packet Format"选项卡” 5.8.?包范围选项 在前面提到的很多输出对话框,以及其他相关的对话框(比如捕捉)都有这个"Packet Range"选项,它可以对输出哪些包进行控制。 如果设置Captured按钮,所有被输出规则选中的包都会被导出,如果设置Displayed按钮,则只有显示中的包被规则选中的才会导出。 All packets 处理所有包 Selected packet only 仅处理被选中的包 Marked packets only 处理被标记的包 From first to last marked packet 处理第一个被标记的包,到最后一个被标记的包的加上之间的所有包。 Specify a packet range 处理用户指定范围内的包,例如 5,50-15,20- 会处理编号为5,编号10-15之间的包(包括10,15),以及编号20到最后一个包。 包格式选项卡在很多输出对话框都能看到,它可以指定包的那些部分会被输出。 Packet summary line 导出包的摘要行,就是"Packet List"面板的内容 Packet Details 导出Packet Details树 All collaspsed "Packet Details"面板在"all collapsed"状态下的所有信息(折叠所有分支) As displayed "Packet Details"面板当前状态下的信息 All expanded "Packet Details"面板"all expanded"状态下的信息(展开所有分支) Packet bytes 导出包字节,就是"Packet Bytes"面板的内容 Each Packet on a new page 输出是每个包单独一页(例如,如果保存/打印成text文件,会在包之间加上分节符) [15] 译者注:此处需要说明的是,如果没有打印机,或者不想打印,你应该在后面指定Output to file,指定打印输出未知,另,out put to file输出的后缀名是.out,如果想用acrobat导入,可以考虑将后缀名修改为.ps,这样可以被直接识别,当然,直接把文件拖放到Acrobat Distiller也可以直接生成PDF文件。 另:使用PostScript输出的文件具有良好的形式,比如在页首会加上列名,而直接打印为print text却没有这样的内容。 在你已经捕捉完成之后,或者打开先前保存的包文件时,通过点击包列表面版中的包,可以在包详情面板看到关于这个包树状结构以及字节面版 通过点击左侧"+"标记,你可以展开树状视图的任意部分。你可以在面板点击任意字段来选择它。例如:在下图图?6.1 “Wireshark选择了一个TCP包后的界面”显示的就是选中TCP字段。同样可以选择TCP包头的应答号(ack:190),同时会出现在下方的字节浏览面版中。[16] 在Wireshark正在捕捉时,您也可以进行同样的选择。(前提是您在捕捉选项对话框选择了实时更新列表(update list of packet in real time )) 另外,您可以使用分离的窗口浏览单独的数据包,见图?6.2 “在分离窗口浏览包” ,想要这样做,你只需要在选中包列表面版中您感兴趣的包,菜单 Display->Show Packet in New Windows 。它可以让你很轻松地比较两个或多个包。 在包列表面板,包详情面板,包字节面板点击右键,都会出现对应的上下文弹出菜单 下表列出了该面版可用弹出菜单项的概述,主菜单能实现同样功能的菜单项,以及简短的描述。
下表介绍了包详情列表菜单项的功能描述,及其他可以提供该功能的主菜单
TNND,表格让人崩溃 Wireshark有两种过滤语法:一种是捕捉包时使用,另一种是显示包时使用。本节介绍第二种过滤语法:显示过滤。第一种过滤语法在第?4.8?节 “捕捉时过滤”提到 显示过滤可以隐藏一些你不感兴趣的包,让你可以集中注意力在你感兴趣的那些包上面。你可以用从以下几个方面选择包:
根据协议类型选择数据报,只需要在Filter框里输入你刚兴趣的协议,然后回车开始过滤。???显示了你输入tcp进行过滤后的图。 或许你没有注意到,上图显示的已经仅有TCP协议了(从图中可以看到1-10号包已经被隐藏)。因为包的编号是固定不变的,所以第一个包显示的编号是11。
你只能对Wireshark可以识别的协议进行过滤。你也可以对解析器已经添加到树视图的字段进行过滤,但仅限于解析器已经为字段加上了协议缩写的。在Add Expression...对话框可以看到可用的字段列表.详见第?6.5?节 ““Filter Expression/过滤表达式”对话框” 例如:想要限制包列表面板仅显示来自或指向192.168.0.1的包,可以使用ip.addr==192.168.0.
Wireshark提供了简单而强大的过滤语法,你可以用它们建立复杂的过滤表达式。你可以比较包中的值,合并表达式为多个指定表达式。本节介绍了相关操作。
包详情面板的每个字段都可以作为过滤使用。应用这些作为过滤将会仅显示包含该字段的包。例如:过滤字符串:TCP将会显示所有包含TCP协议的包。 通过"Help/Support Protocals"/帮助/协议支持菜单项访问"Display Filter Fields/显示过滤字段"可以查看完整完整的过滤字段列表。 你可以通过在许多不同的比较操作建立比较过滤。详见表?6.3 “显示滤镜比较操作符”
你可以用逻辑操作符将过滤表达式组合在一起使用,见表?6.4 “显示过滤的逻辑操作符”
经常有人用ip.addr ==1.2.3.4 表达式来选择所有包含ip地址为1.2.3.4的包, 如果有人想用ip.addr !=1.2.3.4 表达式来排除ip地址为1.2.3.4的包,很不幸。它不会像你期待的那样。 相反,那个表达式为真值得条件是源地址或目标地址中的任意一个不等于1.2.3.4即可。因此,那个表达式ip.addr !=1.2.3.4 可以被读作:"该包包含的ip字段值必须不为1.2.3.4"。因为一个ip数据报同含源地址和目标地址,只要两个地址有一个不为1,2,3,4表达式就为真。 接着上面的话题,如果你真想过滤捕捉文件中,ip地址包含1.2.3.4的包,正确的表达式应该是!(ip.addr==1.2.3.4)。它可以读作:"显示所有'字段名为ip.addr值存在1.2.3.4'为非真的包'",换句话说:"筛选所有字段名ip.addr的值中未出现1.2.3.4的包" 6.5.?“Filter Expression/过滤表达式”对话框 当你熟悉Wireshark过滤系统,并了解你可以用那些标签进行过滤以后,你可以快速简单地输入过滤字符 但如果你是一个Wireshark新手,或者处理一些相对陌生的协议,你可能很难通过直接输入字符进行过滤。过滤表达式对话框会帮你解决这些问题
打开上图的对话框以后。将会显示一个按协议类型分组的树分支列表,一个关系选择框。 Field Name 从协议字段树中选择协议字段。每个可过滤协议都放在第一级。点击+号展开列表,可以获得关于那些协议的可过滤字段。 Relation 从可用关系列表中选择关系。is present是一元关系,表示如果你选择的字段存在,表达式就为真值。其它关系都为二元关系,需要附加数据(例如:一个值来匹配)来完成。 如果你从字段名列表选择一个字段,并选择一个二元关系(例如等于关系"=="),你可能需要输入值,也有可能是范围信息。 Value 在此输入合适的配置值,输入的值同样要符合你选择的field name的属性值类型(例如 字符串). Predefined values 有些协议字段包含预设值可用,这一点跟C语言中的枚举变量类似。如果选择的协议有这样的值定义,你可以在此选择。 Range 此处作者留空了 OK 如果你已经建立好了表达式,点击OK即可创建你的过滤字符串 Cancel 你可以点击Cancle按钮不做任何修改离开Add Expression。。。对话框。 你可以定义过滤器,并给他们标记以便以后使用。这样可以省去回忆、重新输入某些你曾用过的复杂过滤器的时间。 定义新的过滤器或修改已经存在的过滤器有两种方法:1、在Capture 菜单选择Capture Filters...;2、在Analyze菜单选择Display filter...。Wireshark 将会弹出如图?6.7 “"捕捉过滤器"和"显示过滤器"对话框”所示话框。
New 增加一个新的过滤器到列表中。当前输入的Filter name,Filter string值将会被使用。如果这些都为空,将会被设置为"new"(是说filtername还是说二者都是?) Delete 删除选中的过滤器。如果没有过滤器被选中则为灰色 Filter name 修改当前选择的过滤器的名称
Filter string 修改当前选中过滤器的的内容。仅适用显示过滤:在输入时进行语法检查。 Add Expression 仅适用显示过滤:打开增加表达式对话框,辅助创建过滤表达式。详见第?6.5?节 ““Filter Expression/过滤表达式”对话框” OK 仅适用显示过滤:为当前显示应用选择的过滤器,关闭当前对话框。 save 保存当前对话框设置。文件位置和格式见??? Close 关闭当前对话框。将会放弃未保存的设置。 当你捕捉到一些包以后,或者读取以前存储的包的时候,可以很容易的进行查找。从Edit菜单选择Find Packet...菜单项.Wireshark将会弹出图?6.8 “"Find Packet/查找包"对话框”所示对话框. 首先你需要选择查找方式: Display filter 在Filter:输入字段,选择查找方向,点击OK(过滤器方式) 例如:查找192.168.0.1发起的三步握手建立连接,使用如下字符: ip.addr == 192.168.0.1 and tcp.flags.syn 显示过滤的详情,参见第?6.3?节 “浏览时过滤包” Hex Value 在包数据中搜索指定的序列 例如,使用"00:00"查找下一个包含两个空字节的包数据。 String 在包中查找字符串,可以指定多种参数 输入的查找值将会被进行语法检查。如果语法检查无误,输入框背景色会变成绿色,反之则是红色。 你可以指定查找的方向通过: UP 向上查找包列表(包编号递减方式) Down 向下查找包列表(包编号递增方式) 适用最后一次的查找设置继续查找 6.7.3.?"Find Previous/查找上一个"命令 适用最后一次的设置修改查找方向,继续查找。 通过"Go"菜单可以很轻松跳转到指定的包 使用Go back返回包历史记录,工作方式跟web浏览器的页面历史记录类似 前进到包的历史记录,工作方式跟web浏览器的页面历史记录类似 6.8.3.?"Go to Packet/到指定的包"对话框 图?6.9.?"GO to packet/转到指定包"对话框 输入包的编号,点击OK,跳转到指定的包(他妈的我怎么看都是jump to,怎么成了OK?). 6.8.4.?"Go to Corresponding Packet/到对应的包"命令 如果被选择协议字段指向文件中的另一个包,该命令将会跳转到那个包。
6.8.5.?"Go to Firest Packet/到第一个包"命令 跳到第一个包 6.8.6.?"Go to Last Packet/到最后一个包"命令 跳到最后一个包 你可以在包列表面板对包进行标记。被标记的包背景色为黑色,不管原来设置的颜色是怎样的。标记包有助于分析大的包文件时进行查找。
在保存/导出/打印包时,你可以使用包标记控制输出包。标记包以后,可以输出进行区间选择。见第?5.8?节 “包范围选项” 对标记包可以进行三项操作
这些标记功能出现在"Edit"菜单。“Mark packet(toggle)”功能在弹出包列表面板弹出上下文菜单同样可以找到。 在捕捉包的过程中,每个包都带有时间戳。时间戳会被保存在捕捉文件中,以备将来分析用。 关于时间戳,时区以及相关的东西的描述介绍,见第?7.3?节 “时间戳” 包列表的时间戳格式预设和精度可在浏览菜单选择,见第?3.5?节 “"File"菜单” 可用的预置格式如下:
可用精度(正如你所致的,数字是以10进制形式的)有:
精度距离:如果你有个时间戳,显示时使用:“Seconds Since Previous Packet”,:它的值可能是1.123456.默认会采用"Automatic"精度设置,也就是来自libpcap格式文件的固有精度(百万分之一秒)。如果你指定精度为秒,则显示为1,如果你使用。纳秒(nanoseconds),将会显示为1.123456000. 用户可以为包设置时间参考。时间参考是所有后续包的起算时间。如果你想知道到某一个特定包的时间间隔,会很有用。例如:开始一个新请求。可以在一个包里面设置多个参考时间。
要使用时间参考,选择Edit菜单下“Time Reference”项中的一个。详见第?3.6?节 “"Edit"菜单”,或者从包列表的右键弹出项选择。
作为时间参考的包,在time列会有*REF*字符串作为标记(见上图第10个包)。所有后续包都会用最后一个时间参考来显示时间。 [16] 不甚了解下方的16进制转储怎么表达190的 在本节将介绍Wireshark的一些高级特性 如果你处理TCP协议,想要查看Tcp流中的应用层数据,"Following TCP streams"功能将会很有用。如果你项查看telnet流中的密码,或者你想尝试弄明白一个数据流。或者你仅仅只需要一个显示过滤来显示某个TCP流的包。这些都可以通过Wireshark的"Following TCP streams"功能来实现。 在包列表中选择一个你感兴趣的TCP包,然后选择Wireshark工具栏菜单的"Following TCP Streams"选项(或者使用包列表鼠标右键的上下文菜单)。然后,Wireshark就会创建合适的显示过滤器,并弹出一个对话框显示TCP流的所有数据。如图?7.1 “"Follow TCP Stream"对话框”所示
流的内容出现的顺序同他们在网络中出现的顺序一致。从A到B的通信标记为红色,从B到A的通信标记为蓝色。当然,如果你喜欢的话你可以从"Edit/Preferences"菜单项的"Colores"修改颜色。 非打印字符将会被显示为圆点。XXX - What about line wrapping (maximum line length) and CRNL conversions? 在捕捉过程中,TCP流不能实时更新。想得到最近的内容需要重新打开对话框。 你可以在此对话框执行如下操作:
你可以用以下格式浏览流数据。
时间戳,时间戳的精度,等等是在让人感到困惑。本节将向你介绍介绍Wireshark处理时间戳时都发生了什么。 在包被捕捉时,每个包在进入时都被加上时间戳,这个时间戳将会保存在捕捉文件中,所以他们也可以在以后分析时使用。 那么说,时间戳是从哪里来的呢?是捕捉的时候产生的。Wireshark从 libpcap(WinPcap) libraray(库)中获得时间戳。而libpcap(winpcap)又是从操作系统内核获得的时间。如果捕捉数据是从捕捉文件载入的,很显然Wireshark从文件中获得时间戳数据。 Wireshak内置的格式使用的时间戳格式由日期(从1.1.1970开始)和时间(从凌晨起,纳秒(10亿分之一秒)为单位)组成。你可以调整Wireshark在包列表的时间戳显示方式。见第?3.7?节 “"View"菜单”的"Time Display Format"项。 当读取或写入捕捉文件时,Wireshark按需要在内置格式和其他捕捉文件格式间进行时间戳转换。 捕捉时,Wireshark使用libpcap(WinPcap)捕捉库(支持纳秒精度)。除非你在专用的捕捉硬件上进行捕捉,一般这样的精度已经足够了。 Wireshark支持的捕捉文件格式都带有时间戳。不同的捕捉文件格式的时间戳精度有很大不同,从秒"0"到纳秒 "0.123456789"都有。大多数格式捕捉文件存储的时间戳都是固定精度的,些捕捉文件格式甚至存储了时间戳精度本身(可能是出于方便)。 大多数被Wireshark(和或多其他工具)使用的libpcap捕捉文件格式都仅支持固定的百万分之一固定精度"0.123456"
经常有人问:"Wireshark的时间戳的准确性如何?"。实际上,Wireshark自身不会创建时间戳,而是通过其他的地方得到时间并显示他们。所以,准确性取决于你实用的捕捉系统(操作系统,性能。。。)。因此以上问题很难通过通常的途径回答。
当你在各地旅行时,会碰到时区的困扰。如果你从其他时区得到捕捉文件,时区问题会给你带来更大的困扰:-) 首先,下面有两个原因说明你为什么完全不需要考虑时区问题:
如果你同世界各地的人一同工作,正确设置计算机时区非常有必要。 你应当按正确的顺序设置时间和时区
这样的顺序将告诉你的计算机本地时间和时区。
那么,Wireshark和时区到底有什么关系? Wireshark原生的捕捉文件格式(libpcap 格式),和一些其他格式,例如sniffer,EtherPeek,AiroPeek和 Sun snoop格式,都将包到达时间存储为UTC时间。UNIX系统,Windos NT系统(NT 4.0,2000,xp,2003,vista)在系统内部都将时间表示为UTC.当Wireshark进行捕捉时,无需进行转换。但如果你没有正确设置时区,即使系统时钟正确显示了本地时间,UTC时间也有可能是错误的。"windows 9X系列(win95,98,winMe)"在系统内部以本地时间表示时间。在捕捉时,WinPcap必须将时间转换为UTC时间再发送给Wireshark.如果时区设置错误,转换时间也不会正确。 其他捕捉格式,如Microsoft Network Monitor,Dos-based Sniffer,和Network Instruments Observer 格式,保存包到达时间为本地时间。 在Wireshark内部,时间戳以UTC时间显示;这意味着,如果要读取那些保存包达到时间为本地时间的捕捉文件,Wireshark需要将本地时间转换为UTC时间。 随后Wireshark会始终以本地时间显示时间戳。用于显示捕捉数据的计算机会将UTC时间转换为本地时间,并显示这个这个本地时间。对于那些是以UTC值来存储包到达时间的捕捉文件,这意味着到达时间会显示为你所在时区的本地时间,这很有可能同与你不同时区的捕捉数据的人看到的到达时间不一样。对于那些以本地时间存储包到达时间的包文件,时区转换会使用你所在的时区与UTC偏差,以及DST规则进行转换,这很可能会导致错误时间显示,将显示设置修改改为显示本地时间可能会修正这个错误,这样现实的时间值可能会与捕捉文件到达时间一致。
举例:假定有人在洛杉矶本地时间临晨2:00点整捕捉了一个包,然后发送给你包含那个包的文件。那个包在包文件中的时间戳将是UTC时间10:00.你在柏林打开后会看到那个包显示的时间是11:00点。 假设现在你和你的同事正在通过电话,视频会议,或者网络会议讨论那个包文件。前面提到的那个包,在洛杉矶的朋友看到的依然是2:00,而你看到的却是11:00。对同一个时间点,两个地方会显示不同的本地时间。 结论:你可能不介意你看到的时间戳的日期/时间显示,除非你确实需要正确设置时间/日期。所以,如果你得到一个其他时区/DST的捕捉文件,你必须了解两地的时区/DST的不同,对时间戳做合适的调整。无论怎样,确定每台电脑都正确设置了时间和时区。 网络协议经常需要传输较大的数据块,在传输时,底层协议可能不支持这样大的数据块(比如网络包大小的限制),或者是像像TCP一样的流数据,TCP流完全不知道数据分块情况。(原文为:or is stream-based like TCP, which doesn't know data chunks at all.) 在这种情况下,网络协议必须确定数据块分段的边界,并(如果有必要)将数据块分割为多个包。很明显在接受端也需要有找到数据块分段边界的机制。
对那些可以被Wireshark识别的协议,Wireshark通常处理过程为:查找、解码、显示数据块。Wireshark会尝试查找数据块对应的包,在"Packet Bytes"面板的附加页面显示合并以后的数据。(关于“Packet Bytes”面板的详细介绍,见第?3.7?节 “"View"菜单”) 图?7.2.?带有合并包附加选项卡"Packet Bytes面板"
以HTTP Get应答为例:请求数据(例如一个HTML页面)返回时。Wireshark会显示一个16进制转储数据在"Packet Bytes"面板的一个名为"Uncompressed entity body"新选项卡。 默认情况下,首选项中合并功能被设置为允许。在2005年9月之前默认值是不允许。如果你的首选项是在200年9月之前设置的,你得确认一下,合并包选项的设置。合并包对分析网络包作用非常大。 允许和禁止合并包设置对协议来说还有两项要求。
在设置高层协议的时候tooltip会提醒你同样需要考虑低层的协议设置。 名字解析尝试将数字地址解析成适合人们阅读格式。有两种方法可以完成这项工作:通过系统/网络服务(例如获取主机名)和/或 Wireshark指定的赋值文件。关于通过赋值文件进行解析的详情,可以参见??? 名字解析可以分协议层进行允许,禁止设置。 名字解析在使用Wireshark时有重要价值,甚至可以节约大量时间。不幸的是,名字解析也有它自己的缺点。
尝试将MAC地址(e.g. 00:09:5b:01:02:03)解析为适合阅读的地址("Human readable") ARP名字解析(系统服务) Wireshark会向操作系统发出请求,将以太网地址转换为对应的IP地址(e.g. 00:09:5b:01:02:03->192.168.0.1) Ethernet codes(ethers file) 如果ARP解析错误,Wireshark会尝试将以太网地址解析为已知设备名。这种解析需要用户指定一个ethers文件为mac地址分配名称。(e.g. 00:09:5b:01:02:03 -> homerouter). Ethernet manufacturer codes (manuf file) 如果ARP解析和ethers文件都无法成功解析,Wireshark会尝试转换mac地址的前三个字节为厂商名的缩写。mac地址的前三个字节是IEEE为各厂商分配的独立地址(通过前三个字节可以得出每个网络设备的供应商,当然这些也是可以被篡改的。,)(e.g. 00:09:5b:01:02:03 -> Netgear_01:02:03). 将IP地址(e.g. 216.239.37.99)转换为适合阅读的地址/"Human readable" DNS/ADNS name resolution(system/library service)Wireshark会向操作系统(或ADSN library 地址-名称解析词典?)请求,将IP地址转换为相关联的主机名(e.g. 216.239.37.99 -> www.1.google.com).此时DNS服务正在同步请求DNS服务器,所以Wireshark会停止相应直到DNS请求的响应返回。如果可能的话,你可以考虑使用ADNS library(这样可以避免等待网络相应。)
DNS vs. ADNS 这里是一个简短的对比:两个都是用来转换ip地址为其他易读的地址"Human readable"(域名)。通常DNS用gethostname()将地址转换为名称。通常首先是查询hosts文件(e.g. /etc/hosts,/windows/system32/drivers/etc/hosts)看能否找到匹配实体。如果找不到,会向指定的DNS服务器查询。 DNS和ADNS真正的区别在于等待DNS服务器名字解析。gethost()会一直等待知道名字被解析或者返回错误。如果DNS服务器不可用,可能会占用很长时间(好几秒)。ADNS服务会略微有点不同。它也同样向DNS服务器发出请求,但不会等待服务器应答。它会立即相应Wireshark。此时的地址(和后续地址)在ADNS得到结果前不会显示解析名称。如前文书中说道,解析结果被保存在缓存中,你需要使用"View/Reload"菜单更新这些字段来显示解析名称。 hosts name resolution(hosts file) 如果dns解析不成功,Wireshark会尝试使用用户提供的主机文件将IP地址转换为对应的主机名。(e.g. 216.239.37.99 -> www.google.com) ipxnet name resolution (ipxnets file) (笔者未作解释) 翻译TCP/UDP端口(e.g.80)为更加易读的玩意"human readable"[18] TCP/UDP port conversion (system service) Wireshark会向操作系统发出请求,转换TCP/UDP端口为已知名称(e.g. 80->http)。 XXX - mention the role of the /etc/services file (but don't forget the files and folders section)! 很多协议使用校检和来验证数据的完整性/正确性。
校检和是做什么的? 校验和是用来验证传输数据或存储数据的数据部分的正确性。一个检验和是数据部分进行摘要计算的出的数字。 网络数据在传输过程中经常会产生错误,例如数据错误,字节重复等。数据接收方可能。 正因为传输过程中会伴随错误,网络协议会经常使用校验和检测这些错误。发送方会对数据进行检验和计算,并将数据和检验和一起发送。接收方使用同样的方法计算数据部分的校验和,如果收到的校验和计算出来的校验和不匹配,就表示数据有错误。 有些校验和方法可以通过计算得出发生需要被修复错误的数据位置,并修复(简单的)错误。 如果那些错误无法修复,接收方会丢弃错误的数据包。根据协议的不同,数据丢失会仅仅被丢弃,也有可能发送端会根据数据丢失情况重传需要的数据包。 使用校验和可以大量减少传输错误数量。但任何检验和算法都无法确保100%检测到所有错误,依然有少量的错误会无法被检测到。 校验和的算法有很多,例如最经常被使用的检验和算法CRC32(循环冗余校验)。特的的网络协议选择的校验算法取决于希望网络媒介达到的出错率上限、错误检测的重要性,处理载入计算的性能,其他方面需要的性能。 关于检验和的更多信息可以参考:http://en.wikipedia.org/wiki/Checksum Wireshark会对很多协议进行检验和验证,如:TCP、IP。。。 它会和"normal receiver"做一样的计算.然后在包详情面板显示检验和字段的内容,e.g.:[correct], [invalid, must be 0x12345678] 以及其他类似的内容。 如果校验和验证选项被打开或正在进行校验和检测,合并包特性不会被执行。这是为了避免错误的的连接数据扰乱内部数据。 检验和计算可能由网络网络驱动,协议驱动,甚至是硬件完成。 例如:以太网传输硬件计算以太网循环容易校验,接受硬件验证这个校验。如果接受验证发现错误,Wireshark将不会接收到这个包,以太网硬件会直接丢弃这个包。 高层校验通常是由协议执行,并将完成后的包转交给硬件。 比较新的网络硬件可以执行一些高级功能,如IP检验和计算,这被成为checksum offloading。网络驱动不会计算校验和,只是简单将校验和字段留空或填入无效信息,交给硬件计算。
Checksum offloading会引起混淆,让你屏幕上看到大量的[invalid]信息,引起你的反感。前面提到过,错误的检验和会导致包无法合并,更难进行包数据分析。 你可以采取两种方法避免Checksum offloading 问题
[17] 译者注:前文提到,时间戳是Wireshark用库获取的时间加在包上的,不知为何有此一问。难道以后要识别硬件是否有时间戳功能。 [18] 应该是指将端口翻译为服务名 [19] 在Windows平台如果驱动支持,应该是计算机管理->设备管理器->网络适配器->对应网卡的属性-高级选项 Wireshark提供了多种多样的网络统计功能 包括,载入文件的基本信息(比如包的数量),对指定协议的统计(例如,统计包文件内HTPP请求和应答数),等等。
当前捕捉文件的一般信息 File 捕捉文件的一般的信息 Time 第一个包和最后一个包的时间戳 Capture 包捕捉完成时的一些信息(仅当包数据已经从网络捕捉,还没有从文件载入) Display 与显示有关的信息 Traffic 网络传输的相关统计,如果设置了显示过滤,你会看到两列。Captured列显示过滤前的信息,Displayed列显示过滤后对应的信息。 显示捕捉包的分层信息 图?8.2.?"Protocol Hierarchy" 窗口 这个窗口现实的是捕捉文件包含的所有协议的树状分支。你可以展开或折叠分支,通过点击+/-图标。默认情况下,所有分支都是展开的。 每行包含一个协议层次的统计值 每列代表的意思 Protocol 协议名称 %Packets 含有该协议的包数目在捕捉文件所有包所占的比例 Packet 含有该协议的包的数目 Bytes 含有该协议的字符数 MBit/s 该协议的带宽,相对捕捉时间 End Packets End Bytes End MBit/s
端点不着的统计
一个网络端点是在特定的协议层的通信的逻辑端点。Wireshark端点统计会将列出下列端点: Ethernet 以太网端点显示的是以太网MAC地址 Fibre Channel 笔者未描述 FDDI FDDI端点是FDDI MAC地址 IPV4 IP端点是IP地址 IPX 笔者未介绍 TCP TCP端点由IP地址和TCP端口组成,同样的IP地址加上不同的端口号,表示的是不同的TCP端点 Token Ring Token Ring(令牌环)端点是Token Ring MAC地址 UDP UDP端点是由IP地址和UDP端口组成,不同的UDP地址用同一个IP地址表示不同的UDP端点
该窗口显示端点捕捉的统计信息 在该窗口中,每个支持的协议,都显示为一个选项卡。选项标签显示被捕捉端点数目(例如:"Ethernet :5"表示有5个ethenet 端点被捕捉到)。如果某个协议没有端点被捕捉到,选项标签显示为灰色(尽管可以查看选项卡对应的页面). 列表中每行显示单个端点的统计信息。 Name resolution 如果选中该选项,将会对指定的协议层进行名字解析(当前选中的Ethernet endpoint 页面是MAC层)。你可能注意到,第一行将前三个字节解析为"Netgear",第二行地址被解析为IP地址(通过arp协议解析),第三行解析为广播地址(未解析时mac地址为:ff:ff:ff:ff:ff:ff),最后两行的MAC地址未被解析。
Before the combined window described above was available, each of its pages were shown as separate windows. Even though the combined window is much more convenient to use, these separate windows are still available. The main reason is, they might process faster for very large capture files. However, as the functionality is exactly the same as in the combined window, they won't be discussed in detail here. 已经捕捉的会话统计 一个网络会话,指的是两个特定端点之间发生的通信。例如,一个IP会话是两个IP地址间的所有通信。 8.5.2.?"Conversations/会话" window 除了列表内容之外,会话窗口和端点窗口基本一样,见第?8.4.2?节 “"Endpoints"窗口” 8.5.3.?协议指定“Conversation List/会话列表”窗口 Before the combined window described above was available, each of its pages were shown as separate windows. Even though the combined window is much more convenient to use, these separate windows are still available. The main reason is, they might process faster for very large capture files. However, as the functionality is exactly the same as in the combined window, they won't be discussed in detail here. 用户可配置的捕捉网络数据图形。 你可以设置五种不同颜色的图形 用户可以对一下内容进行设置。 Graphs
X Axis
Y Axis
XXX - describe the Advanced feature. 服务响应时间是发送请求到产生应答之间的时间间隔。响应时间在很多协议中可用。 服务相应时间统计,在以下协议中可用
后面将会以DCE-RPC为例介绍响应时间。
8.7.1.?"Service Response Time DCE-RPC"窗口 DCE-RPC的服务相应时间是在请求发起到相应请求的时间间隔 图?8.6.?"Compute DCE-RPC statistics"窗口 你可以设置显示过滤,减少用于统计的包的数量 图?8.7.?The "DCE-RPC Statistic for ..." 窗口 Each row corresponds to a method of the interface selected (so the EPM interface in version 3 has 7 methods). For each method the number of calls, and the statistics of the SRT time is calculated. The protocol specific statistics windows display detailed information of specific protocols and might be described in a later version of this document. Some of these statistics are described at the http://wiki.wireshark.org/Statistics pages. 写在前面 本章自9.6节起的内容在译者的0.99.5版Wireshark中都未曾见到对应的功能。 Wireshark默认行为通常可以很好地吻合你的习惯,当你十分熟悉Wireshark的时候,你可以对Wireshark进行个性化设置以更好地适合你的需要。在本章我们将介绍:
Wireshark支持从命令行启动,同样也可以从大多数窗口管理软件启动。这节我们看看如何从命令行启动。 Wireshark支持丰富的命令行参数。要想看看都有那些参数,在命令行键入Wireshark -h就会显示帮助信息(以及其他相关的)。详细参数列表见例?9.1 “Wireshark帮助信息” Version 0.99.0 Copyright 1998-2006 Gerald Combs <gerald@wireshark.org> and contributors. Compiled with GTK+ 2.6.9, with GLib 2.6.6, with WinPcap (version unknown), with libz 1.2.3, with libpcre 6.4, with Net-SNMP 5.2.2, with ADNS, with Lua 5.1. Running with WinPcap version 3.1 (packet.dll version 3, 1, 0, 27), based on libpcap version 0.9[.x] on Windows XP Service Pack 2, build 2600. wireshark [ -vh ] [ -DklLnpQS ] [ -a <capture autostop condition> ] ... ??????? [ -b <capture ring buffer option> ] ... ??????? [ -B <capture buffer size> ] ??????? [ -c <capture packet count> ] [ -f <capture filter> ] ??????? [ -g <packet number> ] [ -i <capture interface> ] [ -m <font> ] ??????? [ -N <name resolving flags> ] [ -o <preference/recent setting> ] ... ??????? [ -r <infile> ] [ -R <read (display) filter> ] [ -s <capture snaplen> ] ??????? [ -t <time stamp format> ] [ -w <savefile> ] [ -y <capture link type> ] ??????? [ -X <eXtension option> ] [ -z <statistics> ] [ <infile> ] 我们随后将对每个选项进行介绍 首先需要注意的是,Wireshark命令会启动Wireshark。不管怎样,你可以在启动时追加许多参数(如果你喜欢)。他们的作用如下(按字母顺序): 笔者注:按字母顺序是不是一个好主意?按任务顺序会不会更好点? -a <capture autostop condition> 设置一个标准用来指定Wireshark什么时候停止捕捉文件。标准的格式为 test:value,test值为下面中的一个。 duration:value 当捕捉持续描述超过Value值,停止写入捕捉文件。 filesize:value 当捕捉文件大小达到Value值kilobytes(kilobytes表示1000bytes,而不是1024 bytes),停止写入捕捉文件。如果该选项和-b选项同时使用,Wireshark在达到指定文件大小时会停止写入当前捕捉文件,并切换到下一个文件。 files:value 当文件数达到Value值时停止写入捕捉文件 -b <capture ring buffer option> 如果指定捕捉文件最大尺寸,因为Wireshark运行在"ring buffer"模式,被指定了文件数。在"ring buffer"模式下,Wireshark 会写到多个捕捉文件。它们的名字由文件数和创建日期,时间决定。 当第一个捕捉文件被写满,Wireshark会跳转到下一个文件写入,直到写满最后一个文件,此时Wireshark会丢弃第一个文件的数据(除非将files设置为0,如果设置为0,将没有文件数限制),将数据写入该文件。 如果duration选项被指定,当捕捉持续时间达到指定值的秒数,Wireshark同样会切换到下个文件,即使文件未被写满。 duration:value 当捕捉持续描述超过Value值,即使文件未被写满,也会切换到下个文件继续写入。 filesize:value 当文件大小达到value值kilobytes时(kelobyte表示1000bytes,而不是1024bytes),切换到下一个文件。 files:value 当文件数达到value值时,从第一个文件重新开始写入。 -B <capture buffer size (Win32 only)> 仅适合Win32:设置文件缓冲大小(单位是MB,默认是1MB).被捕捉驱动用来缓冲包数据,直到达到缓冲大小才写入磁盘。如果捕捉时碰到丢包现象,可以尝试增大它的大小。 -c <capture packet count> 实时捕捉中指定捕捉包的最大数目,它通常在连接词-k选项中使用。 -D 打印可以被Wireshark用于捕捉的接口列表。每个接口都有一个编号和名称(可能紧跟在接口描述之后?)会被打印,接口名或接口编号可以提供给-i参数来指定进行捕捉的接口(这里打印应该是说在屏幕上打印)。 在那些没有命令可以显示列表的平台(例如Windows,或者缺少ifconfig -a命令的UNIX平台)这个命令很有用;接口编号在Windows 2000及后续平台的接口名称通常是一些复杂字符串,这时使用接口编号会更方便点。 注意,"可以被Wireshark用于捕捉"意思是说:Wireshark可以打开那个设备进行实时捕捉;如果在你的平台进行网络捕捉需要使用有特殊权限的帐号(例如root,Windows下的Administrators组),在没有这些权限的账户下添加-D不会显示任何接口。参数 -f <capture filter> 设置捕捉时的内置过滤表达式 -g <packet number> 在使用-r参数读取捕捉文件以后,使用该参数跳转到指定编号的包。 -h -h选项请求Wireshark打印该版本的命令使用方法(前面显示的),然后退出。 -i <capture interface> 设置用于进行捕捉的接口或管道。 网络接口名称必须匹配Wireshark -D中的一个;也可以使用Wireshark -D显示的编号,如果你使用UNIX,netstat -i或者ifconfig -a获得的接口名也可以被使用。但不是所有的UNIX平台都支持-a,ifconfig参数。 如果未指定参数,Wireshark会搜索接口列表,选择第一个非环回接口进行捕捉,如果没有非环回接口,会选择第一个环回接口。如果没有接口,wireshark会报告错误,不执行捕捉操作。 管道名即可以是FIFO(已命名管道),也可以使用"-"读取标准输入。从管道读取的数据必须是标准的libpcap格式。 -k -k选项指定Wireshark立即开始捕捉。这个选项需要和-i参数配合使用来指定捕捉产生在哪个接口的包。 -l 打开自动滚屏选项,在捕捉时有新数据进入,会自动翻动"Packet list"面板(同-S参数一样)。 -m <font> 设置显示时的字体(编者认为应该添加字体范例) -n 显示网络对象名字解析(例如TCP,UDP端口名,主机名)。 -N <name resolving flags> 对特定类型的地址和端口号打开名字解析功能;该参数是一个字符串,使用m可以开启MAC地址解析,n开启网络地址解析,t开启传输层端口号解析。这些字符串在-n和-N参数同时存在时优先级高于-n,字母C开启同时(异步)DNS查询。 -o <preference/recent settings> 设置首选项或当前值,覆盖默认值或其他从Preference/recent file读取的参数、文件。该参数的值是一个字符串,形式为 prefname:value,prefnmae是首选项的选项名称(出现在preference/recent file上的名称)。value是首选项参数对应的值。多个-o <preference settings> 可以使用在单独命中中。 设置单独首选项的例子: wireshark -o mgcp.display_dissect_tree:TRUE 设置多个首选项参数的例子: ?wireshark -o mgcp.display_dissect_tree:TRUE -o mgcp.udp.callagent_port:2627
-p 不将接口设置为杂收模式。注意可能因为某些原因依然出于杂收模式;这样,-p不能确定接口是否仅捕捉自己发送或接受的包以及到该地址的广播包,多播包 -Q 禁止Wireshark在捕捉完成时退出。它可以和-c选项一起使用。他们必须在出现在-i -w连接词中。 -r <infile> 指定要读取显示的文件名。捕捉文件必须是Wireshark支持的格式。 -R <read(display) filter> 指定在文件读取后应用的过滤。过滤语法使用的是显示过滤的语法,参见第?6.3?节 “浏览时过滤包”,不匹配的包不会被显示。 -s <capture snaplen> 设置捕捉包时的快照长度。Wireshark届时仅捕捉每个包<snaplen>字节的数据。 -S Wireshark在捕捉数据后立即显示它们,通过在一个进程捕捉数据,另一个进程显示数据。这和捕捉选项对话框中的"Update list of packets in real time/实时显示数据"功能相同。 -t <time stamp format> 设置显示时间戳格式。可用的格式有
-v 请求Wireshark打印出版本信息,然后退出 -w <savefile> 在保存文件时以savefile所填的字符为文件名。 -y <capture link type> 如果捕捉时带有-k参数,-y将指定捕捉包中数据链接类型。The values reported by -L are the values that can be used. -X <eXtension option> 设置一个选项传送给TShark 模块。eXtension 选项使用extension_key:值形式,extension_key:可以是: lua_script:lua_script_filename,它告诉Wireshark载入指定的脚本。默认脚本是Lua scripts. -z <statistics-string> 得到Wireshark的多种类型的统计信息,显示结果在实时更新的窗口。笔者注:在此处增加更多的细节 Packet colorization(按色彩显示包)是Wireshark一个非常有用的特性。你可以设置Wireshark通过过滤器将包按颜色设置。可以将你感兴趣的包通过颜色强调显示。
想要按色彩显示包,选择View菜单的“Coloring Rules...”菜单项,将会弹出"Coloring Rules"对话框,如图?9.1 “"Coloring Rules"对话框”所示 启动Coloring Rules 对话框以后,有许多按钮可以使用,当然这取决于是否已经装入颜色过滤器(碰到once sth,you have a lot of 之类的句子就觉得特别tmd的恶心。)
如果你第一次使用色彩规则,点击“NEW”按钮打开色彩过滤编辑对话框,如???所示: 在编辑色彩对话框,输入颜色过滤器名称,然后在String输入框输入过滤字符串。???显示的是arp,arp表示过滤器名为arp,string填的arp表示选择的协议类型是arp。输入这些值以后,你可以选择前景色和配景色匹配这个过滤表达式。点击 Foreground color... /前景色或者Background color.../背景色按钮就会弹出Choose foreground/background color for protocol对话框(见图?9.3 “"Choose color"对话框”),进行前景色、背景色设置了。 选择你需要的颜色,点击OK
图?9.4 “在Wireshark中使用色彩过滤”显示了默认情况下使用多个色彩过滤器的例子。如果你不太喜欢的话,可以自己随时修改它。 如果你不确定哪个颜色规则会对特定包发生作用,查看[Coloring Rule Name: ...] and [Coloring Rule String: ...] 字段。 用户可以协议如何被解码。[20] 每个协议都有自己的解码器,因此包可能需要使用多个解码器才能完成解码。wireshark会尝试为每个包尝试找到正确的解码器(使用静态"routes"和结构"guessing"),特定的情况有可能会选择错误的解码器。例如,如果你将一个常见协议使用用一个不常见的TCP端口,Wireshark将无法识别它,例如:HTTP协议使用800端口而不是标准80端口。 有两种方式可以控制协议和解码器关联:完全禁止协议解码器,或者临时调用解码器。 Eable Protocols对话框可以enable、disable特定的协议,默认情况下是所有协议都enable。如果某个协议被disabled,Wireshark在碰到这个协议时会略过不处理。
通过点击复选框,或者在协议高亮选中时按空格键可以切换协议enable/disable状态。
按钮功能介绍
在"packet list"面板,选中包,"Decode As",打开Decode As对话框,可以临时设置解码器。在协议不使用常见端口时会有所帮助。 对话框的内容取决于当前选择包的信息。
下面对话框显示了当前用户指定的解码器
Wireshark的许多参数可以进行设置。选择"Edit"菜单的"Preferences..."项,打开Preferences对话框即可进行设置。如???所示:默认"User interface"是第一个页面。点击左侧的树状列表中的项目可以打开对应的页面。
9.6.?用户表表[21] 用户表编辑器是用来管理各种用户自定义参数表。它的主对话框操作方式类似于第?9.3?节 “包色彩显示设置” Display Filter Macros是用来创建复杂显示过滤器的快捷方式的工具,例如:定义一个显示过滤宏,名称为tcp_conv 文本为 ( (ip.src == $1and ip.dst == $2 and tcp.srcpt == $3 and tcp.dstpt == $4) or (ip.src == $2and ip.dst == $1 and tcp.srcpt == $4 and tcp.dstpt == $3) ),以后你就可以使用${tcp_conv:10.1.1.2;10.1.1.3;1200;1400} 替代整个过滤字符串。 显示过滤宏可以通过第?9.6?节 “用户表表”,选择Display Filter Macros 菜单下的View菜单进行管理。用户表有下面两个字段。(好像没有所谓的User table) name 宏的名称 text 宏的替代文本。使用$1,$2,$3...作为输入参数时。 过滤宏的使用说明(译者注) 首先需要说明的是,实际上在Windows平台GTK2环境下,并没有看到有显示过滤宏功能,可能有的原因有3种:1、0.99.5版本根本没有过滤宏功能;2、我视力不好,没看到,如果是这样,希望谁能帮我找找。3、Windows+GTK2下面没有,其他平台有。 这里暂且不管有没有,我先按我的理解介绍一下宏的创建使用方法。 以笔者提到的宏的例子,先说如何创建宏
再次声明,我装的Wireshark并没有这个功能。希望你们碰到这个共能时能用上。 9.8.?Tektronics K12xx/15 RF5 协议表 Tektronix's K12xx/15 rf5文件格式使用helper files(*.stk)验证指定接口的各种协议。Wireshark不能读取stk文件,它使用一个表来识别底层协议。(这句没整明白) Stk文件协议匹配通过第?9.6?节 “用户表表”来设置,它有两列: match a partial match for an stk filename, the first match wins, so if you have a specific case and a general one the specific one must appear first in the list protos This is the name of the encapsulating protocol (the lowest layer in the packet data) it can be either just the name of the protocol (e.g. mtp2, eth_witoutfcs, sscf-nni ) or the name of the encapsulation protocol and the "application" protocol over it separated by a colon (e.g sscop:sscf-nni, sscop:alcap, sscop:nbap, ...) 当一个pcap文件使用用户DLTs (147 to 162)表中的一个时 ,Wireshark使用这个表来识别每个DLT表使用哪个协议。 通过第?9.6?节 “用户表表”管理的DLT表有如下列: encap 一个用户dlts表 payload_proto payload(包的最底层协议)协议名称 header_size 如果有header协议(在payload之前),这个选项告诉Wireshark header的大小。设置为0的话,禁止header protocol. header_proto header协议的名称(默认使用"data") trailer_size 如果有trailer协议的话(追踪协议,在paylod协议之后),告诉系统它的大小。设置为0表示禁止该协议。 trailer_proto trailer协议的名称(默认是"data") Wireshark使用SNMP表验证SNMPv3包的授权并进行揭秘。 该表通过第?9.6?节 “用户表表”进行管理,它包括如下字段。 engine_id 如果输入了engine id,会使用在那些engine id是这些值的包。该字段是一个16进制的字符串,值通常形式为:0102030405 userName 用户名,当一个用户名有多个密码对应不同的SNMP-engines时,第一个匹配的将会被使用。if you need a catch all engine-id (empty) that entry should be the last one. 验证模式 使用什么验证模式,(MD5或者SHA1) authPassword 授权密码,使用"\xDD"作为非打印字符。一个16进制密码必须输入为"\xDD"形式。例如:16进制密码010203040506就必须输入为'\x01\x02\x03\x04\x05\x06'. priv_proto 使用的加密算法(DES或AES) privPassword 私有密钥,使用"\xDD"作为非打印字符。一个16进制密码必须输入为"\xDD"形式。例如:16进制密码010203040506就必须输入为'\x01\x02\x03\x04\x05\x06'. [20] dissector:析像器,应用在光学领域,dissct 解剖,这里姑且把他们翻译成解码器,解码,不过有decode,似乎当作解码有点欠妥。 [21] 找遍了Wireshark也没看到User table编辑器,版本问题? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 16:26:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |