第1章介绍目录1.1.什么是Wireshark1.1.1.主要应用1.1.2.特性1.1.3.捕捉多种网络接口1.1.4.支持多种其它程序捕捉的文件1.1.5.支持多格式输出1.1.6.对多种协议解码提供支持1.1.7.开源软件1.1.8.Wireshark不能做的事1.2.系通需求1.2.1.一般说明1.2.2.MicrosoftWindows1.2.3.Unix/Linux1.3.从哪里可以得到Wireshark1.4.Wiresahrk简史1.5.Wireshark开发维护1.6.汇报问题和获得帮助1.6.1.网站1.6.2.百科全书1.6.3.FAQ1.6.4.邮件列表1.6.5.报告问题1.6.6.在UNIX/Linux平台追踪软件错误1.6.7.在Windows平台追踪软件错误1.1.什么是WiresharkWireshark是网络包分析工具。网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细的情况。你可以把网络包分析工具当成是一种用来测量有什么东西从网线上进出的测量工具,就好像使电工用来测量进入电信的电量的电度表一样。(当然比那个更高级)过去的此类工具要么是过于昂贵,要么是属于某人私有,或者是二者兼顾。Wireshark出现以后,这种现状得以改变。Wireshark可能算得上是今天能使用的最好的开元网络分析软件。1.1.1.主要应用下面是Wireshark一些应用的举例:网络管理员用来解决网络问题网络安全工程师用来检测安全隐患开发人员用来测试协议执行情况用来学习网络协议除了上面提到的,Wireshark还可以用在其它许多场合。1.1.2.特性支持UNIX和Windows平台在接口实时捕捉包能详细显示包的详细协议信息可以打开/保存捕捉的包可以导入导出其他捕捉程序支持的包数据格式可以通过多种方式过滤包多种方式查找包通过过滤以多种色彩显示包创建多种统计分析…还有许多不管怎么说,要想真正了解它的强大,您还得使用它才行图1.1.Wireshark捕捉包并允许您检视其内容1.1.3.捕捉多种网络接口Wireshark可以捕捉多种网络接口类型的包,哪怕是无线局域网接口。想了解支持的所有网络接口类型,可以在我们的网站上找到http://wiki.wireshark.org/CaptureSetup/NetworkMedia.1.1.4.支持多种其它程序捕捉的文件Wireshark可以打开多种网络分析软件捕捉的包,详见???1.1.5.支持多格式输出Wieshark可以将捕捉文件输出为多种其他捕捉软件支持的格式,详见???1.1.6.对多种协议解码提供支持可以支持许多协议的解码(在Wireshark中可能被称为解剖)???1.1.7.开源软件Wireshark是开源软件项目,用GPL协议发行。您可以免费在任意数量的机器上使用它,不用担心授权和付费问题,所有的源代码在GPL框架下都可以免费使用。因为以上原因,人们可以很容易在Wireshark上添加新的协议,或者将其作为插件整合到您的程序里,这种应用十分广泛。1.1.8.Wireshark不能做的事Wireshark不能提供如下功能Wireshark不是入侵检测系统。如果他/她在您的网络做了一些他/她们不被允许的奇怪的事情,Wireshark不会警告您。但是如果发生了奇怪的事情,Wireshark可能对察看发生了什么会有所帮助。[3]Wireshark不会处理网络事务,它仅仅是“测量”(监视)网络。Wireshark不会发送网络包或做其它交互性的事情(名称解析除外,但您也可以禁止解析)。译者注:因为不是入侵检测之用,所以不会将入侵检测和普通通信区别对待,但是都会体现在网络包里面,如果您有足够的经验,或许能通过监视网络包发现入侵检测[3]1.2.系通需求想要安装运行Wireshark需要具备的软硬件条件...1.2.1.一般说明给出的值只是最小需求,在大多数网络中可以正常使用,但不排除某些情况下不能使用。[4]在繁忙的网络中捕捉包将很容塞满您的硬盘!举个简单的例子:在100MBIT/s全双工以太网中捕捉数据将会产生750MByties/min的数据!在此类网络中拥有高速的CPU,大量的内存和足够的磁盘空间是十分有必要的。如果Wireshark运行时内存不足将会导致异常终止。可以在http://wiki.wireshark.org/KnownBugs/OutOfMemory察看详细介绍以及解决办法。Wireshark作为对处理器时间敏感任务,在多处理器/多线程系统环境工作不会比单独处理器有更快的速度,例如过滤包就是在一个处理器下线程运行,除了以下情况例外:在捕捉包时“实时更新包列表”,此时捕捉包将会运行在一个处理下,显示包将会运行在另一个处理器下。此时多处理或许会有所帮助。[5]1.2.2.MicrosoftWindowsWindows2000,XPHome版,XPPro版,XPTabletPC,XPMediaCenter,Server2003orVista(推荐在XP下使用)32-bit奔腾处理器或同等规格的处理器(建议频率:400MHz或更高),64-bit处理器在WoW64仿真环境下-见一般说明128MB系统内存(建议256Mbytes或更高)75MB可用磁盘空间(如果想保存捕捉文件,需要更多空间)800*600(建议1280*1024或更高)分辨率最少65536(16bit)色,(256色旧设备安装时需要选择”legacyGTK1”)网卡需求:以太网:windows支持的任何以太网卡都可以无线局域网卡:见MicroLogixsupportlist,不捕捉802.11包头和无数据桢。其它接口见:http://wiki.wireshark.org/CaptureSetup/NetworkMedia说明基于以下三点原因,将不会对旧版Windows提供支持:没有任何开发人员正在使用那些操作系统,这将使支持变得更加困难,Wireshark运行所依赖的库文件(如GTK,WinPCap等)也放弃对它们的支持。同样,微软也放弃了对它们的技术支持。Windows95,98和ME不能运行Wireshark。已知的最后一个可以运行在以上平台的版本是Ethereal0.99.0(需要安装WinPCap3.1),你依然可以使用从:http://ethereal.com/download.html获得。顺便提一下:微软于2006年1月11日停止对98/ME支持。WindowsNT4.0今后将无法运行Wireshark.最有一个已知版本是Wireshark0.99.4(需安装自带的WinPCap3.1),你依然可以从:http://prdownloads.sourceforge.net/wireshark/wireshark-setup-0.99.4.exe得到它。顺便提一下:微软于2005年12月31日停止对NT4.0的支持。WindowsCE及嵌入版windows(NT/XP)不被支持。64-bit处理器运行Wireshark需要在32bit仿真环境下(称作WoW64),最低需要安装WinPCap4.0。支持多显示(不知道是显示其还是监视器)安装,但会遇到一些不可预料的问题。1.2.3.Unix/LinuxWireshark目前可以运行在许多UNIX平台,系统可以对照上面Windows下的指标。二进制包最少在以下平台可用:APPleMacOSXDebianGNU/LinuxFreeBSDNetBSDOpenPKGRedHatFedora/EnterpriseLinuxrPathLinuxSunSolaris/i386SunSolaris/Sparc如果二进制包在您的平台无法使用,你可以下载源文件并尝试编译它。wireshark-dev[AT]wireshark.org.分享您的经验。希望您能发送邮件到[4]译者注:原文“Thevaluesbelowaretheminimumrequirementsandonly\"rulesofthumb\"foruseonamoderatelyusednetwork”,其中”rulesofthumb”中译名应该是拇指规则,但网上关于拇指规则解释莫衷一是,大致意思是说:大多数情况下适用,但并非所有情况。这里翻译的有点别扭[5]译者注:我对这句话的理解是,正如播放电影一样,高性能的处理器只会增强显示效果,您并不需要将原来30分钟的影片10分钟之内看完。当然,对减少延时还是有作用的。但是感觉这句有点阅读困难,可能翻译的有点问题.1.3.从哪里可以得到Wireshark你可以从我们的网站下载最新版本的Wiresharkhttp://www.wireshark.org/download.html.网站上您可以选择适合您的镜像站点。Wireshark通常在4-8周内发布一次新版本如果您想获得Wireshark发布的消息通知,你可以订阅Wireshark-announce邮件列表。详见第1.6.4节“邮件列表”1.4.Wiresahrk简史[6]1997年以后,GeraldCombs需要一个工具追踪网络问题并想学习网络知识。所以他开始开发Ethereal(Wireshark项目以前的名称)以解决以上的两个需要。Ethereal是第一版,经过数次开发,停顿,1998年,经过这么长的时间,补丁,Bug报告,以及许多的鼓励,0.2.0版诞生了。Ethereal就是以这种方式成功的。此后不久,GilbertRamirez发现它的潜力,并为其提供了底层分析1998年10月,GuyHarris正寻找一种比TcpView更好的工具,他开始为Ethereal进行改进,并提供分析。998年以后,正在进行TCP/IP教学的RichardSharpe关注了它在这些课程中的作用。并开始研究该软件是否他所需要的协议。如果不行,新协议支持应该很方便被添加。所以他开始从事Ethereal的分析及改进。从那以后,帮助Ethereal的人越来越多,他们的开始几乎都是由于一些尚不被Ethereal支持的协议。所以他们拷贝了已有的解析器,并为团队提供了改进回馈。2006年项目MovedHouse(这句不知道怎么翻译)并重新命名为:Wireshark.[6]本段因为有很多协议,程序开发方面的术语,翻译得比较糟糕1.5.Wireshark开发维护Wireshark最初由GeraldCombs开发。目前由Wiresharkteam进行进一步开发和维护。Wiresharkteam是一个由修补bug提高Wireshark功能的独立成员组成的松散组织。有大量的成员为Wireshark提供协议分析。同时我们也希望这些活动能持续机芯。通过查看Wireshark帮助菜单下的About,你可以找到为Wireshark提供代码的人员名单,或者你也可以通过Wireshark网站的authors页面找到。Wireshark是开源软件项目,发布遵循GNUGeneralPublicLicence(GPL协议),所有源代码可以在GPL框架下免费使用。欢迎您修改Wireshark以便适合您的需要,如果您可以提供您的改进给Wiresharkteam,我们将不胜感激。为WiresharkTeam提供您的改进建议,有以下益处:如果其他人发现您提供的改进十分有用会肯定它们的价值,您将会得知你曾像Wiresharkteam一样帮助过他人ThedevelopersofWiresharkmightimproveyourchangesevenmore,asthere'salwaysroomforimprovement.Ortheymayimplementsomeadvancedthingsontopofyourcode,whichcanbeusefulforyourselftoo.ThemaintainersanddevelopersofWiresharkwillmaintainyourcodeaswell,fixingitwhenAPIchangesorotherchangesaremade,andgenerallykeepingitintunewithwhatishappeningwithWireshark.SoifWiresharkisupdated(whichisdoneoften),youcangetanewWiresharkversionfromthewebsiteandyourchangeswillalreadybeincludedwithoutanyeffortforyou.Wireshar源代码和二进制kits(二进制工具包?)可以根据自己的平台对应下载,网站是:http://www.wireshark.org/download.html.1.6.汇报问题和获得帮助如果您在使用中碰到了问题,或者您需要Wireshark的帮助,有以下几种可能让您有兴趣的方法(当然,还包括这本书)。1.6.1.网站通过访问http://www.wireshark.org你将会发现关于Wireshark许多有用的信息。1.6.2.百科全书WiresharkWiki(http://wiki.wireshark.org)提供广泛的跟Wireshark以及捕捉包有关信息。你将会发现一些没有被包括在本书内信息,例如:wiki上有解释如何在交换网络捕捉包,同时我们正努力建立协议参考,等等。最好的事情是,如果对某些知识有独到见解(比如您精通某种协议),您可以通过浏览器编辑它。1.6.3.FAQ最经常被问到的问题“FrequentlyAskedQuestions”提供一个经常被问到的问题以及答案的列表。ReadTheFAQ在您发送任何邮件到邮件列表之前,确信您已经阅读了FAQ,因为这里面很可能已经提供了您想问的问题,答案。这将大大节约您的时间(记住,有很多人提交了大量的邮件)。1.6.4.邮件列表下面的几个几个邮件列表,分别属于不同的主题:Wireshark-users这是一个Wireshark用户的列表,大家提交关于安装和使用Wireshark的问题,其它人(非常有用)提供的答案。(译者注:其他人当然也是指用户?)wireshark-announce这是一个关于程序发布信息的列表,通常每4-8周出现一次。wireshark-dev这是一个关于Wireshark开发的邮件列表,如果开始开发协议分析,可以从加入该列表你可以通过网站http://www.wireshark.org订阅每个邮件列表.简单点击网站左手边的邮件列表链接就可以。邮件同样在网站上可以看到存档。提示你可以搜索存档看看有没有人问过跟你一样的问题,或许您的问题已经有了答案。这样您就不必提交邮件以等待别人答复您了。1.6.5.报告问题注意在您提交任何问题之前,请确定您安装的是最新版本的Wireshark。当您提交问题的时候,如果您提供如下信息将会对解决问题很有帮助。Wireshark的版本,及其依赖的库的版本,如GTK+,等等。你可以通过Wireshark–v命令获得版本号。(估计是UNIX/Linux平台)。运行Wireshark的平台信息。关于问题的详细描述。如果您得到错误或者警告信息,拷贝错误信息的文本(以及在此之前或之后的文本,如果有的话),这样其他人可能会发现发生问题的地方。请不要发送诸如:“Igotawarningwhiledoingx”[7],因为这样看起来不是个好主意。不要发送大文件不要发送过大的文件(>100KB)到邮件列表,在邮件中附加一个能提供足够数据的记事本就可以。大文件会让很多邮件列表里的那些对您的问题不感兴趣的用户感到恼怒。如果需要,你可以单独发送那些数据给对您问题真正感兴趣,要求您发送数据的人。不要发送机密信息!如果您发送捕捉数据到邮件列表,请确定它们不包含敏感或者机密信息,比如密码或者诸如此类的。1.6.6.在UNIX/Linux平台追踪软件错误如果您发送捕捉数据到邮件列表,请确定它们不包含敏感或者机密信息,比如密码或者诸如此类的。你可以通过如下命令获得追踪信息:$gdb`whereiswireshark|cut-f2-d:|cut-d''-f2`core>&bt.txtbacktrace^D$注意在逐字输入第一行的字符![8]注意追踪是一个GDB命令。你可以在输完第一上以后输入它,但是会没有相应,^D命令(CTL+D)将会退出GDB命令。以上命令让你在当前目录得到一个名为bt.txt的文本文件,它包含您的bug报告。注意如果您缺少GDB,您必须检查您的操作系统的调试器。你可以发送追踪邮件到wireshark-dev[AT]wireshark.org邮件列表1.6.7.在Windows平台追踪软件错误Windows下无法包含符号文件(.pdb),它们非常大。因此不太可能创建十分有意义的追踪文件。你将汇报软件错误就像前面描述的其他问题一样。(这句不尽人意)译者注:那句话的意思是,我在XX时碰到一个警告信息[8]译者注:原文是:\"Typethecharactersinthefirstlineverbatim!Thoseareback-ticsthere!\areback-ticsthere!不知道是什么意思,back-tics=后勤抽搐?熟悉Linux的或许知道[7]第2章编译/安装Wireshark目录2.1.2.2.2.3.2.4.2.5.须知获得源在UNIX下安装之前在UNIX下编译Wireshark在UNIX下安装二进制包2.5.1.在Linux或类似环境下安装RPM包2.5.2.在Debian环境下安装Deb包2.5.3.在GentooLinux环境下安装Portage2.5.4.在FreeBSD环境下安装包2.6.解决UNIX下安装过程中的问题2.7.在Windows下编译源2.8.在Windows下安装Wireshark2.8.1.安装Wireshark2.8.2.2.8.3.2.8.4.2.8.5.手动安装WinPcap更新Wireshark更新WinPcap卸载Wireshark2.8.6.卸载WinPcap2.1.须知万事皆有开头,Wireshark也同样如此。要想使用Wireshark,你必须:获得一个适合您操作系统的二进制包,或者获得源文件为您的操作系统编译。目前,只有两到三种Linux发行版可以传送Wireshark,而且通常传输的都是过时的版本。至今尚未有UNIX版本可以传输Wireshark.Windows的任何版本都不能传输Wireshark.基于以上原因,你需要知道从哪能得到最新版本的Wireshark以及如何安装它。本章节向您展示如何获得源文件和二进制包,如何根据你的需要编译Wireshark源文件。以下是通常的步骤:下载需要的相关包,例如:源文件或者二进制发行版。将源文件编译成二进制包(如果您下载的是源文件的话)。这样做做可以整合编译和/或安装其他需要的包。安装二进制包到最终目标位置。2.2.获得源你可以从Wireshark网站http://www.wireshark.org.同时获取源文件和二进制发行版。选择您需要下载的链接,然后选择源文件或二进制发行包所在的镜像站点(尽可能离你近一点的站点)。下载所有需要的文件!一般来说,除非您已经下载Wireshark,如果您想编译Wireshark源文件,您可能需要下载多个包。这些在后面章节会提到。注意当你发现在网站上有多个二进制发行版可用,您应该选择适合您平台的版本,他们同时通常会有多个版本紧跟在当前版本后面,那些通常时拥有那些平台的用户编译的。基于以上原因,您可能想自己下载源文件自己编译,因为这样相对方便一点。2.3.在UNIX下安装之前在编译或者安装二进制发行版之前,您必须确定已经安装如下包:GTK+,TheGIMPToolKit.您将会同样需要Glib.它们都可以从www.gtk.org获得。Libpcap,Wireshark用来捕捉包的工具您可以从www.tcpdump.org获得。根据您操作系统的不同,您或许能够安装二进制包,如RPMs.或许您需要获得源文件并编译它。如果您已经下载了GTK+源文件,例2.1“从源文件编译GTK+”提供的指令对您编译有所帮助。例2.1.从源文件编译GTK+gzip-dcgtk+-1.2.10.tar.gz|tarxvf-
./configuremakeinstalltest--------------注意您可能需要修改例2.1“从源文件编译GTK+”中提供的版本号成对应您下载的GTK+版本。如果GTK的目录发生变更,您同样需要修改它。,tarxvf显示您需要修改的目录。注意如果您使用Linux,或者安装了GUNtar,您可以使用tarzxvfgtk+-1.2.10.tar.gz命令。同样也可能使用gunzip–c或者gzcat而不是许多UNIX中的gzip–dc注意如果您在windows中下载了gtk+或者其他文件。您的文件可能名称为:gtk+-1_2_8_tar.gz如果在执行例2.1“从源文件编译GTK+”中的指令时有错误发生的话,你可以咨询GTK+网站。如果您已经下载了libpcap源,一般指令如例2.2“编译、安装libpcap”显示的那样会帮您完成编译。同样,如果您的操作系统不支持tcpdump,您可以从tcpdump网站下载安装它。例2.2.编译、安装libpcapgzip-dclibpcap-0.9.4.tar.Z|tarxvf-cdlibpcap-0.9.4./configuremakemakeinstall注意Libpcap的目录需要根据您的版本进行修改。tarxvf命令显示您解压缩的目录。RedHat6.x及其以上版本环境下(包括基于它的发行版,如Mandrake),您可以直接运行RPM安装所有的包。大多数情况下的Linux需要安装GTK+和Glib.反过来说,你可能需要安装所有包的定制版。安装命令可以参考例2.3“在RedHatLinux6.2或者基于该版本得发行版下安装需要的RPM包”。如果您还没有安装,您可能需要安装需要的RPMs。例2.3.在RedHatLinux6.2或者基于该版本得发行版下安装需要的RPM包cd/mnt/cdrom/RedHat/RPMSrpm-ivhglib-1.2.6-3.i386.rpmrpm-ivhglib-devel-1.2.6-3.i386.rpmrpm-ivhgtk+-1.2.6-7.i386.rpmrpm-ivhgtk+-devel-1.2.6-7.i386.rpmrpm-ivhlibpcap-0.4-19.i386.rpm注意如果您使用RedHat6.2之后的版本,需要的RMPs包可能已经变化。您需要使用正确的RMPs包。在Debian下您可以使用apt-ge命令。apt-get将会为您完成所有的操作。参见例2.4“在Deban下安装Deb”例2.4.在Deban下安装Debapt-getinstallwireshark-dev2.4.在UNIX下编译Wireshark如果在Unix操作系统下可以用如下步骤编译Wireshark源代码:如果使用Linux则解压gzip'dtar文件,如果您使用UNIX,则解压GUNtar文件。对于Linux命令如下:tarzxvfwireshark-0.99.5-tar.gz对于UNIX版本,命令如下gzip-dwireshark-0.99.5-tar.gztarxvfwireshark-0.99.5-tar注意使用管道命令行gzip–dcWireshark-0.99.5-tar.gz|tarxvf同样可以[9]注意如果您在Windows下下载了Wireshark,你会发现文件名中的那些点变成了下划线。将当前目录设置成源文件的目录。配置您的源文件以编译成适合您的Unix的版本。命令如下:./configure如果找个步骤提示错误,您需要修正错误,然后重新configure.解决编译错误可以参考第2.6节“解决UNIX下安装过程中的问题”使用make命令将源文件编译成二进制包,例如:make安装您编译好的二进制包到最终目标,使用如下命令:makeinstall一旦您使用makeinstall安装了Wireshark,您就可以通过输入Wireshark命令来运行它了。[9]译者注:看到别人翻译Pipelin之类的,似乎就是叫管道,不知道是否准确2.5.在UNIX下安装二进制包一般来说,在您的UNIX下安装二进制发行包使用的方式根据您的UNIX的版本类型而各有不同。例如AIX下,您可以使用smit安装,Tru64UNIX您可以使用setld命令。2.5.1.在Linux或类似环境下安装RPM包使用如下命令安装WiresharkRPM包rpm-ivhwireshark-0.99.5.i386.rpm如果因为缺少Wireshark依赖的软件而导致安装错误,请先安装依赖的软件,然后再尝试安装。REDHAT下依赖的软件请参考例2.3“在RedHatLinux6.2或者基于该版本得发行版下安装需要的RPM包”2.5.2.在Debian环境下安装Deb包使用下列命令在Debian下安装Wiresharkapt-getinstallWiresharkapt-get会为您完成所有的相关操作2.5.3.在GentooLinux环境下安装Portage使用如下命令在GentooLinux下安装wireshark以及所有的需要的附加文件USE=\"adnsgtkipv6portaudiosnmpsslkerberosthreadsselinux\"emergewireshark2.5.4.在FreeBSD环境下安装包使用如下命令在FreeBSD下安装Wiresharkpkg_add-rwiresharkpkg_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过程的追踪。[10]译者注:本人不熟悉UNIX/LINUX,这一段翻译的有点云里雾里,可能大家通过这部分想安装Wireshark会适得其反,那就对不住了。下面个人说一下UNIX/LINUX下安装方法。UNIX/LINUX下安装时,有两种安装方式,1是下载源码包自己编译,这种方式的好处是因为下载源码包是单一的,可以自行加以修改,编译就是适合自己平台的了。2、是利用已经做好的发行包直接安装,这种方法的好处是只要下载到跟自己平台对应的就可以,但缺点也在这里,不是每个平台都能找到合适的。不管是编译安装,还是使用发行包安装,都需要有一些有些基本基本支持。比如Linux下的GTK+支持,捕捉包时需要用的libpcap.这一点可以参考第2.3节“在UNIX下安装之前”。编译的一般步骤是解压,编译,安装(tarzxvfWireshark-0.99.5-tar.gz;make;makeinstall).直接安装则是根据各自平台安装的特点。2.7.在Windows下编译源在Windows平台下,我们建议最好是使用二进制包直接安装,除非您是从事Wireshark开发的。如果想了解关于Windows下编译安装Wireshark,请查看我们的开发WIKI网站http://wiki.wireshark.org/Development来了解最新的开发方面的文档。2.8.在Windows下安装Wireshark本节将探讨在Windows下安装Wireshark二进制包。2.8.1.安装Wireshark您获得的Wireshark二进制安装包可能名称类似Wireshark-setup-x.y.z.exe.Wireshark安装包包含WinPcap,所以您不需要单独下载安装它。您只需要在http://www.wireshark.org/download.html#releases下载Wireshark安装包并执行它即可。除了普通的安装之外,还有几个组件供挑选安装。提示:尽量保持默认设置如果您不了解设置的作用的话。选择组件[11]Wireshark(包括GTK1和GTK2接口无法同时安装):如果您使用GTK2的GUI界面遇到问题可以尝试GTK1,在Windows下256色(8bit)显示模式无法运行GTK2.但是某些高级分析统计功能在GTK1下可能无法实现。WiresharkGTK1-Wireshark是一个GUI网络分析工具WiresharkGTK2-Wireshark是一个GUI网络分析工具(建议使用GTK2GUI模组工具)GTK-Wimp-GTKWimp是诗歌GTK2窗口模拟(看起来感觉像原生windows32程序,推荐使用)TSshark-TShark是一个命令行的网络分析工具插件/扩展(Wireshark,TShark分析引擎):DissectorPlugins-分析插件:带有扩展分析的插件TreeStatisticsPlugins-树状统计插件:统计工具扩展Mate-MetaAnalysisandTracingEngine(experimental):可配置的显示过滤引擎,参考http://wiki.wireshark.org/Mate.SNMPMIBs:SNMP,MIBS的详细分析。Tools/工具(处理捕捉文件的附加命令行工具’sGuide-用户手册-本地安装的用户手册。如果不安装用户手册,帮助菜单的大部分按钮的结果可能就是访问internet.UserUser’•Editcap-Editcapisaprogramthatreadsacapturefileandwritessomeorallofthepacketsintoanothercapturefile./Editcap是一个读取捕捉文件的程序,还可以将一个捕捉文件力的部分或所有信息写入另一个捕捉文件。(文件合并or插入?)Text2Pcap-Text2pcapisaprogramthatreadsinanASCIIhexdumpandwritesthedataintoalibpcap-stylecapturefile./Tex2pcap是一个读取ASCIIhex,写入数据到libpcap个文件的程序。Mergecap-Mergecapisaprogramthatcombinesmultiplesavedcapturefilesintoasingleoutputfile./Mergecap是一个可以将多个播捉文件合并为一个的程序。Capinfos-Capinfosisaprogramthatprovidesinformationoncapturefiles./Capinfos是一个显示捕捉文件信息的程序。”页“AdditionalTasksTasks”StartMenuShortcuts-开始菜单快捷方式-增加一些快捷方式到开始菜单DesktopIcon-桌面图标-增加Wireshark图标到桌面QuickLaunchIcon-快速启动图标-增加一个Wireshark图标到快速启动工具栏AssociatefileextensionstoWireshark-Wireshark文件关联-将捕捉包默认打开方式关联到WiresharktoWireshark”页InstallWinPcap?WinPcap?”Wireshark安装包里包含了最新版的WinPcap安装包。如果您没有安装WinPcap。您将无法捕捉网络流量。但是您还是可以打开以保存的捕捉包文件。CurrentlyinstalledWinPcapversion-当前安装的WinPcap版本InstallWinPcapx.x-如果当前安装的版本低于Wireshark自带的,该选项将会是默认值。StartWinPcapservice\"NPF\"atstartup-将WinPcap的服务NPF在启动时运行-这样其它非管理员用户就同样可以捕捉包了。更多关于WinPcap的信息:Wireshark相关http://wiki.wireshark.org/WinPcapWinPcap官方网站:http://www.winpcap.org安装命令选项您可以直接在命令行运行安装包,不加任何参数,这样会显示常用的参数以供交互安装。在个别应用中,可以选择一些参数定制安装:/NCRC禁止CRC校检/S静默模式安装或卸载Wireshark.注意:静默模式安装时不会安装WinPcap!/desktopicon安装桌面图标,/desktopicon=yes表示安装图标,反之则不是,适合静默模式。/quicklaunchicon将图标安装到快速启动工具栏,=yes-安装到工具栏,=no-不安装,不填按默认设置。/D设置默认安装目录($INSTDIR),首选安装目录和安装目录注册表键值,该选项必须设置到最后。即使路径包含空格例2.5.wireshark-setup-0.99.5.exe/NCRC/S/desktopicon=yes/quicklaunchicon=no/D=C:\\ProgramFiles\\Foo2.8.2.手动安装WinPcap注意事先声明,Wireshark安装时会谨慎对待WinPcap的安装,所以您通常不必担心WinPcap。下面的WinPcap仅适合您需要尝试未包括在Wireshark内的不同版本WinPcap。例如一个新版本的WinPcap发布了,您需要安装它。单独的WinPcap版本(包括alphaorbeta版)可以在下面地址下载到WinPcap官方网站:http://www.winpcap.orgWiretapped.net镜像站点:http://www.mirrors.wiretapped.net/security/packet-capture/winpcap在下载页面您将会发现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后需要重新启动。警告在安装新版WinPcap之前,如果您已经安装了旧版WinPcap,您必须先卸载它。最近版本的WinPcap安装时会自己卸载旧版。2.8.5.卸载Wireshark你可以用常见方式卸载Wireshark,使用添加/删除程序,选择”Wireshark”选项开始卸载即可。Wireshark卸载过程中会提供一些选项供您选择卸载哪些部分,默认是卸载核心组件,但保留个人设置和WinPcap.WinPcap默认不会被卸载,因为其他类似Wireshark的程序有可能同样适用WinPcap2.8.6.卸载WinPcap你可以单独卸载WinPcap,在添加/删除程序选择”WinPcap”卸载它。注意卸载WinPcap之后您将不能使用Wireshark捕捉包。在卸载完成之后最好重新启动计算机。[11]涉及到过多的名次,软件又没有中文版,这里及以后尽量不翻译名称第3章用户界面目录3.1.须知3.2.启动Wireshark3.3.主窗口3.3.1.主窗口概述3.4.主菜单3.5.\"File\"菜单3.6.\"Edit\"菜单3.7.\"View\"菜单3.8.\"Go\"菜单3.9.\"Capture\"菜单3.10.\"Analyze\"菜单3.11.\"Statistics\"菜单3.12.\"Help\"菜单3.13.\"Main\"工具栏3.14.\"Filter\"工具栏3.15.\"PcaketList\"面板3.16.\"PacketDetails\"面板3.17.\"PacketByte\"面板3.18.状态栏3.1.须知现在您已经安装好了Wireshark,几乎可以马上捕捉您的一个包。紧接着的这一节我们将会介绍:Wireshark的用户界面如何使用如何捕捉包如何查看包如何过滤包……以及其他的一些工作。3.2.启动Wireshark你可以使用Shell命令行或者资源管理器启动Wireshark.提示开始Wireshark时您可以指定适当的参数。参见第9.2节“从命令行启动Wireshark”注意在后面的章节中,将会出现大量的截图,因为Wireshark运行在多个平台,并且支持多个GUIToolkit(GTK1.x/2x),您的屏幕上显示的界面可能与截图不尽吻合。但在功能上不会有实质性区别。尽管有这些区别,也不会导致理解上的困难。3.3.主窗口先来看看图3.1“主窗口界面”,大多数打开捕捉包以后的界面都是这样子(如何捕捉/打开包文件随后提到)。图3.1.主窗口界面和大多数图形界面程序一样,Wireshark主窗口由如下部分组成:菜单(见第3.4节“主菜单”)用于开始操作。主工具栏(见第3.13节“\"Main\"工具栏”)提供快速访问菜单中经常用到的项目的功能。Fitertoolbar/过滤工具栏(见第3.14节“\"Filter\"工具栏”)提供处理当前显示过滤得方法。(见6.3:”浏览时进行过滤”)PacketList面板(见第3.15节“\"PcaketList\"面板”)显示打开文件的每个包的摘要。点击面板中的单独条目,包的其他情况将会显示在另外两个面板中。Packetdetail面板(见第3.16节“\"PacketDetails\"面板”)显示您在Packetlist面板中选择的包德更多详情。Packetbytes面板(见第3.17节“\"PacketByte\"面板”)显示您在Packetlist面板选择的包的数据,以及在Packetdetails面板高亮显示的字段。状态栏(见第3.18节“状态栏”)显示当前程序状态以及捕捉数据的更多详情。注意主界面的三个面版以及各组成部分可以自定义组织方式。见第9.5节“首选项”3.3.1.主窗口概述Packetlist和Detail面版控制可以通过快捷键进行。表3.1“导航快捷键”显示了相关的快捷键列表。表3.5“\"GO\"菜单项”有关于快捷键的更多介绍表3.1.导航快捷键快捷键描述Tab,Shift+T在两个项目间移动,例如从一个包列表移动到下一个abDown移动到下一个包或者下一个详情Up移动到上一个包或者上一个详情Ctrl-Down,移动到下一个包,即使焦点不在Packetlist面版F8Ctrl-UP,F7移动到前一个报,即使焦点不在Packetlist面版在PactectDetail面版,关闭被选择的详情树状分支。如果以关闭,则返回到父Left分支。RightBackspaceReturn,Enter在PacketDetail面版,打开被选择的树状分支.PacketDetail面版,返回到被选择的节点的父节点PacketDetail面版,固定被选择树项目。另外,在主窗口键入任何字符都会填充到filter里面。3.4.主菜单Wireshark主菜单位于Wireshark窗口的最上方。图3.2“主菜单”提供了菜单的基本界面。图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\"菜单”本章链接介绍菜单的一般情况,更详细的介绍会出现在后续章节。提示你可以直接点击访问菜单项,也可以使用热键,热键显示在菜单文字描述部分。例如:您可以使用CTR+K打开捕捉对话框。3.5.\"File\"菜单WireSharkFile菜单包含的项目如表表3.2“File菜单介绍”所示图3.3.File菜单表3.2.File菜单介绍菜单项Open...快捷键Ctr+OOpenRecentMergCloseCtrl+WSaveCrl+S描述显示打开文件对话框,让您載入捕捉文件用以浏览。见第5.2.1节“打开捕捉文件对话框”弹出一个子菜单显示最近打开过的文件供选择。显示合并捕捉文件的对话框。让您选择一个文件和当前打开的文件合并。见第5.4节“合并捕捉文件”关闭当前捕捉文件,如果您未保存,系统将提示您是否保存(如果您预设了禁止提示保存,将不会提示)保存当前捕捉文件,如果您没有设置默认的保存文件名,Wireshark出现提示您保存文件的对话框。详情第5.3.1节“\"saveCaptureFileAs/保存文件为\"对话框”SaveAsShift+Ctrl+SFileSet>ListFilesFileSet>NextFileFileset>PreviousFilesExport>as“PlainTextText””FileFile……Export>as\"PostScript\"FilesExport>as\"CVS\"(CommaSeparatedValuesPacketSummary)File...Export>as“PSMLPSML””FileFile……Exportas\"PDML\"File...Export>SelectedPacketBytesBytes……PrintCtr+PQuitCtrl+Q注意如果您已经保存文件,该选项会是灰色不可选的。注意您不能保存动态捕捉的文件。您必须结束捕捉以后才能进行保存让您将当前文件保存为另外一个文件面,将会出现一个另存为的对话框(参见第5.3.1节“\"saveCaptureFileAs/保存文件为\"对话框”)允许您显示文件集合的列表。将会弹出一个对话框显示已打开文件的列表,参见第5.5节“文件集合”如果当前載入文件是文件集合的一部分,将会跳转到下一个文件。如果不是,将会跳转到最后一个文件。这个文件选项将会是灰色。如果当前文件是文件集合的一部分,将会调到它所在位置的前一个文件。如果不是则跳到文件集合的第一个文件,同时变成灰色。这个菜单允许您将捕捉文件中所有的或者部分的包导出为plainASCIItext格式。它将会弹出一个Wireshark导出对话框,见第5.6.1节“\"ExportasPlainTextFile\"对话框”将捕捉文件的全部或部分导出为PostScrit文件。将会出现导出文件对话框。参见第5.6.2节“\"ExportasPostScriptFile\"对话框”导出文件全部或部分摘要为.cvs格式(可用在电子表格中)。将会弹出导出对话框,见第5.6.3节“\"ExportasCSV(CommaSeparatedValues)File\"对话框”。导出文件的全部或部分为PSML格式(包摘要标记语言)XML文件。将会弹出导出文件对话框。见第5.6.4节“\"ExportasPSMLFile\"对话框”导出文件的全部或部分为PDML(包摘要标记语言)格式的XML文件。将会弹出一个导出文件对话框,见第5.6.5节“\"ExportasPDMLFile\"对话框”导出当前在Packetbyte面版选择的字节为二进制文件。将会弹出一个导出对话框。见第5.6.6节“\"Exportselectedpacketbytes\"对话框”打印捕捉包的全部或部分,将会弹出打印对话框。见第5.7节“打印包”退出Wireshark,如果未保存文件,Wireshark会提示是否保存。3.6.\"Edit\"菜单Wireshark的\"Edit\"菜单包含的项目见表3.3“Edit菜单项”图3.4.\"Edit\"菜单表3.3.Edit菜单项菜单项快捷键Shift+CCopy>AsFiltertrl+CFindPacket...Ctr+FFindNextFindPreviousMarkPacket(toggle)FindNextMarkCtrl+NCtr+BCtrl+M描述使用详情面版选择的数据作为显示过滤。显示过滤将会拷贝到剪贴板。打开一个对话框用来通过限制来查找包,见???在使用Findpacket以后,使用该菜单会查找匹配规则的下一个包查找匹配规则的前一个包。标记当前选择的包。见第6.9节“标记包”查找下一个被标记的包查找前一个被标记的包标记所有包取消所有标记FindMarkMarkPacketsUnmarkAllPacketSetTimeReference(toggle)Shift+Ctrl+NPreviousCtrl+Shift+BALLCtrl+T以当前包时间作为参考,见第6.10.1节“包参考时间”FindNextReferenceFindPreviousRefrence...Preferences...Shift+Ctrl+P找到下一个时间参考包找到前一个时间参考包打开首选项对话框,个性化设置Wireshark的各项参数,设置后的参数将会在每次打开时发挥作用。详见第9.5节“首选项”3.7.\"View\"菜单表3.4“\"View\"菜单项”显示了WiresharView菜单的选项图3.5.\"View\"菜单表3.4.\"View\"菜单项菜单项MainToolbarToolbarFilterFilterToolbarStatusbarPacketListPacketDetailsPacketBytes快捷键描述显示隐藏Maintoolbar(主工具栏),见第3.13节“\"Main\"工具栏”显示或隐藏FilterToolbar(过滤工具栏)见第3.14节“\"Filter\"工具栏”显示或隐藏状态栏,见第3.18节“状态栏”显示或隐藏PacketListpane(包列表面板),见第3.15节“\"PcaketList\"面板”显示或隐藏Packetdetailspane(包详情面板).见第3.16节“\"PacketDetails\"面板”显示或隐藏packetBytespane(包字节面板),见第3.17节“\"PacketByte\"面板”选择这里告诉Wireshark将时间戳设置为绝对日期-时间格式(年月日,时分秒),见第6.10节“时间显示格式及参考时间”TimeDisplayFromat>DateandTimeofDay:1970-01-0101:02:03.123456TimeDisplayFormat>TimeofDay:01:02:03.123456TimeDisplayFormat>SecondsSinceBeginningofCapture:123.123456TimeDisplayFormat>SecondsSincePreviousCapturedPacket:1.123456TimeDisplayFormat>SecondsSincePreviousDisplayedPacket:1.123456TimeDisplayFormat>------TimeDisplayFormat>Automatic(FileFormatPrecision)TimeDisplayFormat>Seconds:0TimeDisplayFormat>...seconds:0....NameResolution>ResolveNameNameResolution>Enablefor注意这里的字段\"TimeofDay\andTimeofDay\sSinceBeginningofCapture\ondsSincePreviousCapturedPacket\"和\"SecondsSincePreviousDisplayedPacket\"几个选项是互斥的,换句话说,一次同时有一个被选中。将时间设置为绝对时间-日期格式(时分秒格式),见第6.10节“时间显示格式及参考时间”将时间戳设置为秒格式,从捕捉开始计时,见第6.10节“时间显示格式及参考时间”将时间戳设置为秒格式,从上次捕捉开始计时,见第6.10节“时间显示格式及参考时间”将时间戳设置为秒格式,从上次显示的包开始计时,见第6.10节“时间显示格式及参考时间”根据指定的精度选择数据包中时间戳的显示方式,见第6.10节“时间显示格式及参考时间”注意\"Automatic\Seconds\"和\"...seconds\"是互斥的设置精度为1秒,见第6.10节“时间显示格式及参考时间”设置精度为1秒,0.1秒,0.01秒,百万分之一秒等等。见第6.10节“时间显示格式及参考时间”仅对当前选定包进行解析第7.6节“名称解析”是否解析Mac地址MACLayerNameResolution>EnableforNetworkLayerNameResolution>EnableforTransportLayer是否解析网络层地址(ip地址),见第7.6节“名称解析”是否解析传输层地址第7.6节“名称解析”是否以彩色显示包注意以彩色方式显示包会降低捕捉再如包文件的速度控制在实时捕捉时是否自动滚屏,如果选择了该项,在有新数据进入时,面板会项上滚动。您始终能看到最后的数据。反之,您无法看到满屏以后的数据,除非您手动滚屏增大字体缩小字体恢复正常大小恢复所有列宽注意除非数据包非常大,一般会立刻更改展开子分支看开所有分支,该选项会展开您选择的包的所有分支。收缩所有包的所有分支打开一个对话框,让您可以通过过滤表达来用不同的颜色显示包。这项功能对定位特定类型的包非常有用。见第9.3节“包色彩显示设置”在新窗口显示当前包,(新窗口仅包含Ctrl+RView,ByteView两个面板)重新再如当前捕捉文件ColorizePacketListAutoScroollinLiveCaptureZoomInZoomOutNormalSizeCtrl++Ctrl+-Ctrl+=ResizAllColumnusExpendSubtreesExpandAllCollapseAllColoringRulues...ShowPacketinNewWindowReload3.8.\"Go\"菜单Wireshark\"GO\"菜单的内容见表3.5“\"GO\"菜单项”图3.6.\"GO\"菜单表3.5.\"GO\"菜单项菜单项BackForWardGotoPacketGotoCorrespondingPacketPreviousPacketNextPacketFirstPacketLastPacketCtrl+UPCtrl+Down快捷键Alt+LeftAlt+RightCtrl+G描述跳到最近浏览的包,类似于浏览器中的页面历史纪录跳到下一个最近浏览的包,跟浏览器类似打开一个对话框,输入指定的包序号,然后跳转到对应的包,见第6.8节“到指定的包”跳转到当前包的应答包,如果不存在,该选项为灰色移动到包列表中的前一个包,即使包列表面板不是当前焦点,也是可用的移动到包列表中的后一个包,同上移动到列表中的第一个包移动到列表中的最后一个包3.9.\"Capture\"菜单\"Capture\"菜单的各项说明见表3.6“\"Capture\"菜单项”图3.7.\"Capture\"菜单表3.6.\"Capture\"菜单项快捷菜单项说明键在弹出对话框选择您要进行捕捉的网络接口,见第4.4节“捕捉接口Interface...对话框”Ctrl+打开设置捕捉选项的对话框,(见第4.5节“捕捉选项对话框”)并可以Options...K在此开始捕捉Start立即开始捕捉,设置都是参照最后一次设置。Ctrl+Stop停止正在进行的捕捉,见第4.9.1节“停止捕捉”ERestartCaptureFilters...正在进行捕捉时,停止捕捉,并按同样的设置重新开始捕捉.仅在您认为有必要时打开对话框,编辑捕捉过滤设置,可以命名过滤器,保存为其他捕捉时使用见第6.6节“定义,保存过滤器”3.10.\"Analyze\"菜单\"Analyze\"菜单的各项见表3.7“\"analyze\"菜单项”图3.8.\"Analyze\"菜单表3.7.\"analyze\"菜单项菜单项快捷键DisplayFilters...ApplyasFilter>...PrepareaFilter>...说明打开过滤器对话框编辑过滤设置,可以命名过滤设置,保存为其他地方使用,见第6.6节“定义,保存过滤器”更改当前过滤显示并立即应用。根据选择的项,当前显示字段会被替换成选择在Detail面板的协议字段更改当前显示过滤设置,当不会立即应用。同样根据当前选择项,过滤字符会被替换成Detail面板选择的协议字段为多种不同的防火墙创建命令行ACL规则(访问控制列表),支持CiscoIOS,LinuxNetfilter(iptables),OpenBSDpfandWindowsFirewall(vianetsh).RulesforMACaddresses,IPv4addresses,TCPandUDPports,以及IPv4+混合端口以上假定规则用于外部接口FirewallACLRulesEnableShift+Ct是否允许协议分析,见第9.4.1节“\"EnableProtocols\"对话框”Protocols...rl+R[a]看样子他们有个关于这部分的章节3.11.\"Statistics\"菜单Wireshark\"statistics\"菜单项见表3.8“”图3.9.\"Statistics\"菜单表3.8.菜单项SummaryProtocolHierarchyConversations/EndPointsIOGraphsConversationListEndpointListServiceResponseTimeANSIGSMH.225...ISUPMessageTypesMTP3RTPGSMSIP快捷键描述显示捕捉数据摘要,见第8.2节“摘要窗口”显示协议统计分层信息,见第8.3节“\"ProtocolHierarchy\"窗口”显示会话列表(两个终端之间的通信),见???显示端点列表(通信发起,结束地址),见第8.4.2节“\"Endpoints\"窗口”显示用户指定图表,(如包数量-时间表)见第8.6节“\"IOGraphs\"窗口”通过一个组合窗口,显示会话列表,见第8.5.3节“协议指定“ConversationList/会话列表”窗口”通过一个组合窗口显示终端列表,见第8.4.3节“特定协议的\"EndpointList\"窗口”显示一个请求及其相应之间的间隔时间,见第8.7节“服务相应时间”见第8.8节“协议指定统计窗口”见第8.8节“协议指定统计窗口”见第8.8节“协议指定统计窗口”见第8.8节“协议指定统计窗口”见第8.8节“协议指定统计窗口”见第8.8节“协议指定统计窗口”见第8.8节“协议指定统计窗口”见第8.8节“协议指定统计窗口”见第8.8节“协议指定统计窗口”VOIPCalls...WAP-WSP...HTTPISUPMessagesONC-RPCProgramsTCPStreamGraph见第8.8节“协议指定统计窗口”见第8.8节“协议指定统计窗口”HTTP请求/相应统计,见第8.8节“协议指定统计窗口”见第8.8节“协议指定统计窗口”见第8.8节“协议指定统计窗口”见第8.8节“协议指定统计窗口”3.12.\"Help\"菜单帮助菜单的内容见表3.9“”图3.10.帮助菜单表3.9.菜单项ContentsSupportedProtocolsManaulPages>...WiresharkOnline>AboutWireshark快捷键F1描述打开一个基本的帮助系统打开一个对话框显示支持的协议或工具打开浏览器,显示安装在本地的手册按照选择显示在线资源弹出信息窗口显示Wireshark的一些相关信息,如插件,目录等。注意有些版本可能不支持调用WEB浏览器。如果是这样,可能会隐藏此菜单。注意如果调用浏览器错误,检查Wireshark首选项关于浏览器设置。3.13.\"Main\"工具栏主工具栏提供了快速访问常见项目的功能,它是不可以自定义的,但如果您觉得屏幕屏幕过于狭小,需要更多空间来显示数据。您可以使用浏览菜单隐藏它。在主工具栏里面的项目只有在可以使用的时候才能被选择,如果不是可用则显示为灰色,不可选(例如:在未载入文件时,保存文件按钮就不可用.)图3.11.表3.10.主工具栏选项工具栏图工具栏项对应菜单项标接口选项。。。StartSTOPRestarOpen...Capture/Interfaces...Capture/OptionsCapture/StartCapture/StopCaputer/RstartFile/Open描述打开接口列表对话框,见第4.3节“开始捕捉”打开捕捉选项对话框,见第4.4节“捕捉接口对话框”使用最后一次的捕捉设置立即开始捕捉停止当前的捕捉,见第4.3节“开始捕捉”停止当前捕捉,并立即重新开始启动打开文件对话框,用于载入文件,详见第5.2.1节“打开捕捉文件对话框”保存当前文件为任意其他的文件,它将会弹出一个对话框,(见第5.3.1节“\"saveCaptureFileAs/保存文件为\"对话框”注意如果当前文件是临时未保存文件,图标将会显示为SaveAs...File/SaveAs...CloseReloadPrintFile/CloseView/ReloadFile/Print关闭当前文件。如果未保存,将会提示是否保存重新载入当前文件打印捕捉文件的全部或部分,将会弹出一个打印对话框(见第5.7节“打印包”)Findpacket...GoBackEdit/FindPacket...Go/GoBack打开一个对话框,查找包。见第6.7节“查找包”返回历史记录中的上一个跳转到历史记录中的下一个包弹出一个设置跳转到指定的包的对话框GoGo/GoForwardForwardGotoGo/GotoPacket...Packet...GoToFirstPacketGoToLastPacketColorizeGo/FirstPacket跳转到第一包Go/LastPacket跳转到最后一个包View/Coloreze切换是否以彩色方式显示包列表AutoView/AutoScroolScrollin开启/关闭实时捕捉时自动滚动包列表inLiveCaptureLiveZoominzoomoutNormalSizeResizeColumnsCaptureFilters..DisplayFilters..ColoringRules...Preferences...HelpView/ZoomInView/ZoomOutView/NormalSizeView/ResizeColumnsCapture/CaptureFilters...Analyze/Filters...View/ColoringRules...Edit/PreferencesHelp/Contents增大字体缩小字体设置缩放大小为100%重置列宽,使内容适合列宽(使包列表内的文字可以完全显示)打开对话框,用于创建、编辑过滤器。详见第6.6节“定义,保存过滤器”打开对话框,用于创建、编辑过滤器。详见第6.6节“定义,保存过滤器”定义以色彩方式显示数据包的规则详见第9.3节“包色彩显示设置”打开首选项对话框,详见第9.5节“首选项”打开帮助对话框3.14.\"Filter\"工具栏过滤工具栏用于编辑或显示过滤器,更多详情见第6.3节“浏览时过滤包”图3.12.过滤工具栏表3.11.工具栏图标工具栏项过滤说明打开构建过滤器对话框,见第6.7节“查找包”[a]在此区域输入或修改显示的过滤字符,见第6.4节“建立显示过滤表达式”,在输入过程中会进行语法检查。如果您输入的格式不正确,或者未输入完成,则背景显示为红色。直到您输入合法的表达式,背景会变为绿色。你可以点击下拉列表选择您先前键入的过滤字符。列表会一直保留,即使您重新启动程序。注意做完修改之后,记得点击右边的Apply(应用)按钮,过滤输入框或者回车,以使过滤生效。注意输入框的内容同时也是当前过滤器的内容(当前过滤器的内容会反映在输入框)标签为表达式的按钮打开一个对话框用以从协议字段列表中编辑过滤器,详见第6.5节““FilterExpression/过滤表达式”对话框”重置当前过滤器,清除输入框应用当前输入框的表达式为过滤器进行过滤注意在大文件里应用显示过滤可能要很长时间表达式...清除应用[a]我看到的Filter按钮貌似没有图标,可能只出现在0.99.4版中3.15.\"PcaketList\"面板Packetlist/包列表面板显示所有当前捕捉的包图3.13.\"Packetlist/包列表\"面板列表中的每行显示捕捉文件的一个包。如果您选择其中一行,该包得更多情况会显示在\"PacketDetail/包详情\",\"PacketByte/包字节\"面板在分析(解剖)包时,Wireshark会将协议信息放到各个列。因为高层协议通常会覆盖底层协议,您通常在包列表面板看到的都是每个包的最高层协议描述。例如:让我们看看一个包括TCP包,IP包,和一个以太网包。在以太网(链路层?)包中解析的数据(比如以太网地址),在IP分析中会覆盖为它自己的内容(比如IP地址),在TCP分析中会覆盖IP信息。包列表面板有很多列可供选择。需要显示哪些列可以在首选项中进行设置,见第9.5节“首选项”默认的列如下No.包的编号,编号不会发生改变,即使进行了过滤也同样如此Time包的时间戳。包时间戳的格式可以自行设置,见第6.10节“时间显示格式及参考时间”Source显示包的源地址。Destination显示包的目标地址。Protocal显示包的协议类型的简写Info包内容的附加信息右击包,可以显示对包进行相关操作的上下文菜单。见第6.3节“浏览时过滤包”3.16.\"PacketDetails\"面板\"PacketDetails/包详情\"面板显示当前包(在包列表面板被选中的包)的详情列表。图3.14.\"PacketDetails/包详情\"面板该面板显示包列表面板选中包的协议及协议字段,协议及字段以树状方式组织。你可以展开或折叠它们。右击它们会获得相关的上下文菜单。见第6.4节“建立显示过滤表达式”某些协议字段会以特殊方式显示Generatedfields/衍生字段Wireshark会将自己生成附加协议字段加上括号。衍生字段是通过该包的相关的其他包结合生成的。例如:Wireshark在对TCP流应答序列进行分析时。将会在TCP协议中添加[SEQ/ACKanalysis]字段Links/链接如果Wireshark检测到当前包与其它包的关系,将会产生一个到其它包的链接。链接字段显示为蓝色字体,并加有下划线。双击它会跳转到对应的包。3.17.\"PacketByte\"面板PacketByte/包字节面板以16进制转储方式显示当前选择包的数据图3.15.PacketByte/包字节面板通常在16进制转储形式中,左侧显示包数据偏移量,中间栏以16进制表示,右侧显示为对应的ASCII字符根据包数据的不同,有时候包字节面板可能会有多个页面,例如:有时候Wireshark会将多个分片重组为一个,见第7.5节“重组包”.这时会在面板底部出现一个附加按钮供你选择查看图3.16.带选项的\"PaketBytes/包字节\"面板注意附加页面的内容可能来自多个包。右击选项按钮会显示一个上下文菜单显示所有可用的页的清单。如果您的面板尺寸过小,这项功能或许有所帮助3.18.状态栏状态栏用于显示信息通常状态栏的左侧会显示相关上下文信息,右侧会显示当前包数目图3.17.初始状态栏该状态栏显示的是没有文件载入时的状态,如:刚启动Wireshark时图3.18.载入文件后的状态栏左侧显示当前捕捉文件信息,包括名称,大小,捕捉持续时间等。右侧显示当前包在文件中的数量,会显示如下值P:捕捉包的数目D:被显示的包的数目M:被标记的包的数目.图3.19.已选择协议字段的状态栏如果你已经在\"PacketDetail/包详情\"面板选择了一个协议字段,将会显示上图提示括号内的值(如上图的app.opcode)可以作为显示过滤使用。它表示选择的协议字段。第4章实时捕捉数据包目录4.1.介绍4.2.准备工作4.3.开始捕捉4.4.捕捉接口对话框4.5.捕捉选项对话框4.5.1.捕捉桢4.5.2.捉数据帧为文件。4.5.3.停止捕捉桢4.5.4.显示桢选项4.5.5.名称解析设置4.5.6.按钮4.6.捕捉文件格式、模式设置4.7.链路层包头类型4.8.捕捉时过滤4.8.1.自动过滤远程通信4.9.在捕捉过程中4.9.1.停止捕捉4.9.2.重新启动捕捉4.1.介绍实时捕捉数据包时Wireshar的特色之一Wiershark捕捉引擎具备以下特点支持多种网络接口的捕捉(以太网,令牌环网,ATM...)支持多种机制触发停止捕捉,例如:捕捉文件的大小,捕捉持续时间,捕捉到包的数量...捕捉时同时显示包解码详情设置过滤,减少捕捉到包的容量。见第4.8节“捕捉时过滤”长时间捕捉时,可以设置生成多个文件。对于特别长时间的捕捉,可以设置捕捉文件大小罚值,设置仅保留最后的N个文件等手段。见第4.6节“捕捉文件格式、模式设置”Wireshark捕捉引擎在以下几个方面尚有不足从多个网络接口同时实时捕捉,(但是您可以开始多个应用程序实体,捕捉后进行文件合并)根据捕捉到的数据停止捕捉(或其他操作)4.2.准备工作第一次设置Wireshark捕捉包可能会遇到一些小麻烦提示关于如何进行捕捉设置的较为全面的向导可以在:http://wiki.wireshark.org/CaptureSetup.这里有一些常见需要注意的地方你必须拥有root/Administrator特权以开始捕捉[12]必须选择正确的网络接口捕捉数据如果您想捕捉某处的通信,你必须作出决定:在什么地方可以捕捉到……以及许多如果你碰到设置问题,建议看看前面的那个向导,或许会有所帮助[12]记得在Windows安装那一节层提到如果作为服务启动可以避免非管理员无法进行捕捉,不知道二者能否相互印证。4.3.开始捕捉可以使用下任一方式开始捕捉包使用打开捕捉接口对话框,浏览可用的本地网络接口,见图4.1“\"CaptureInterfaces\"捕捉接口对话框”,选择您需要进行捕捉的接口启动捕捉你也可以使用\"捕捉选项\"按钮启动对话框开始捕捉,见图4.2“\"CaptureOption/捕捉选项\"对话框”开始捕捉\"按钮或者是菜单项立即开始本次捕捉。如果您前次捕捉时的设置和现在的要求一样,您可以点击\"如果你已经知道捕捉接口的名称,可以使用如下命令从命令行开始捕捉:wireshark-ieth0-k上述命令会从eht0接口开始捕捉,有关命令行的介绍参见第9.2节“从命令行启动Wireshark”4.4.捕捉接口对话框如果您从捕捉菜单选择\"Interface...\",将会弹出如图4.1“\"CaptureInterfaces\"捕捉接口对话框”所示的对话框警告打开\"CaptureInterfaces\"/捕捉对话框时同时正在显示捕捉的数据,这将会大量消耗您的系统资源。尽快选择您需要的接口以结束该对话框。避免影响系统性能注意这个对话框只显示本地已知的网络接口,Wireshark可能无法检测到所有的本地接口,Wireshark不能检测远程可用的网络接口,Wireshark只能使用列出可用的网络接口图4.1.\"CaptureInterfaces\"捕捉接口对话框描述从操作系统获取的接口信息IPWireshark能解析的第一个IP地址,如果接口未获得IP地址(如,不存在可用的DHCP服务器),将会显示\"Unkow\如果有超过一个IP的,只显示第一个(无法确定哪一个会显示).Packets打开该窗口后,从此接口捕捉到的包的数目。如果一直没有接收到包,则会显示为灰度Packets/s最近一秒捕捉到包的数目。如果最近一秒没有捕捉到包,将会是灰度显示Stop停止当前运行的捕捉Capture从选择的接口立即开始捕捉,使用最后一次捕捉的设置。Options打开该接口的捕捉选项对话框,见第4.5节“捕捉选项对话框”Details(仅Win32系统)打开对话框显示接口的详细信息Close关闭对话框4.5.捕捉选项对话框如果您从捕捉菜单选择\"start...\"按钮(或者从主工具栏选择对应的项目),Wireshark弹出\"CaptureOption/捕捉选项\"对话框。如图4.2“\"CaptureOption/捕捉选项\"对话框”所示图4.2.\"CaptureOption/捕捉选项\"对话框提示如果你不了解各项设置的意义,建议保持默认。你可以用对话框中的如下字段进行设置4.5.1.捕捉桢Interface该字段指定你想用于进行捕捉的借口。一次只能使用一个接口。这是一个下拉列表,简单点击右侧的按钮,选择你想要使用的接口。默认第一是支持捕捉的non-loopback(非环回)接口,如果没有这样的接口,第一个将是环回接口。在某些系统中,回借口不支持捕捉包(windows平台下的环回接口就不支持。)在命令行使用-i参数可以替代该选项IPaddress表示选择接口的IP地址。如果系统未指定IP地址,将会显示为\"unknown\"Link-layerheadertype除非你有些特殊应用,尽量保持此选项默认。想了解更多详情,见第4.7节“链路层包头类型”Buffersize:nmegabyte(s)输入用于捕捉的缓层大小。该选项是设置写入数据到磁盘前保留在核心缓存中捕捉数据的大小,如果你发现丢包。尝试增大该值。注意该选项仅适用于Windows平台Capturepacketsinpromiscuousmode指定Wireshark捕捉包时,设置接口为杂收模式(有些人翻译为混杂模式)。如果你未指定该选项,Wireshark将只能捕捉进出你电脑的数据包(不能捕捉整个局域网段的包)[13]注意如果其他应用程序将网卡设置为杂收模式,即使不选中该选项,也会工作于杂收模式下。注意即使在杂收模式下,你也未必能够接收到整个网段所有的网络包。详细解释见http://www.wireshark.org/faq.html#promiscsniffLimiteachpackettonbytes指定捕捉过程中,每个包的最大字节数。在某些地方被称为。\"snaplen\".[14]如果禁止该选项,默认值为65535,这适用于大多数协议,下面是一些大多数情况下都适用的规则(这里又出现了拇指规则,第一章,系统需求时提到过。这里权且翻译作普适而非绝对的规则))如果你不确定,尽量保持默认值如果你不需要包中的所有数据。例如:如果您仅需要链路层、IP和TCP包头,您可能想要选择一个较小的快照长度。这样只需要较少的cpu占用时间用于复制包,包需要的缓存也较少。如此在繁忙网络中捕捉时丢失的包也可能会相应少一点。如果你没有捕捉包中的所有数据(适用snpaplen截断了包),你可能会发现有时候你想要的包中的数据部分被截断丢弃了。或者因为缺少重要的部分,想对某些包进行重组而发现失败。CaptureFilter指定捕捉过滤。捕捉过滤器将会在有第4.8节“捕捉时过滤”详细介绍,默认情况下是空的。同样你也可以点击捕捉按钮,通过弹出的捕捉过滤对话框创建或选择一个过滤器,详见第6.6节“定义,保存过滤器”4.5.2.捉数据帧为文件。捕捉文件设置的使用方法的详细介绍见第4.6节“捕捉文件格式、模式设置”File指定将用于捕捉的文件名。该字段默认是空白。如果保持空白,捕捉数据将会存储在临时文件夹。详见第4.6节“捕捉文件格式、模式设置”你可以点击右侧的按钮打开浏览窗口设置文件存储位置Usemultiplefiles如果指定条件达到临界值,Wireshark将会自动生成一个新文件,而不是适用单独文件。Nextfileeverynmegabyte(s)仅适用选中Usemultiplefiles,如果捕捉文件容量达到指定值,将会生成切换到新文件Nextfileeverynminutes(s)仅适用选中Usemultiplefiles,如果捕捉文件持续时间达到指定值,将会切换到新文件。Ringbufferwithnfiles仅适用选中Usemultiplefiles,仅生成制定数目的文件。Stopcaputureafternfile(s)仅适用选中Usemultiplefiles,当生成指定数目文件时,在生成下一个文件时停止捕捉(生成n个还是n+1个文件?)4.5.3.停止捕捉桢...afternpacket(s)在捕捉到指定数目数据包后停止捕捉...afternmegabytes(s)在捕捉到指定容量的数据(byte(s)/kilobyte(s)/megabyte(s)/gigabyte(s))后停止捕捉。如果没有适用\"usermultiplefiles\该选项将是灰色...afternminute(s)在达到指定时间后停止捕捉4.5.4.显示桢选项Updatelistofpacketsinrealtime在包列表面板实时更新捕捉数据。如果未选定该选项,在Wireshark捕捉结束之前将不能显示数据。如果选中该选项,Wireshark将生成两个独立的进程,通过捕捉进程传输数据给显示进程。Automaticscrollinginlivecapture指定Wireshark在有数据进入时实时滚动包列表面板,这样您将一直能看到最近的包。反之,则最新数据包会被放置在行末,但不会自动滚动面板。如果未设置\"updatelistofpacketsinrealtime\该选项将是灰色不可选的。Hidecaptureinfodialog选中该选项,将会隐藏捕捉信息对话框4.5.5.名称解析设置EnableMACnameresolution设置是否让Wireshark翻译MAC地址为名称,见第7.6节“名称解析”Enablenetworknameresolution是否允许Wireshark对网络地址进行解析,见第7.6节“名称解析”4.5.6.按钮进行完上述设置以后,你可以点击start按钮进行捕捉,也可以点击Cancel退出捕捉.开始捕捉以后,在你收集到足够的数据时你可以停止捕捉。见第4.9节“在捕捉过程中”[13]网卡在局域网内会接到很多不属于自己的包,默认情况下,网卡会不对这些包进行处理。貌似设置为杂收模式,Wireshak会监听所有的包,但并不作出相应。[14]粗略查了一下,未找到该词的合适翻译,多见于Winpcap的描述,如果把该单词拆分,snap:单元,快照,len:长度,似乎就是单位长度,单元大小的意思。在看看该段下面第二个如果中提到的snapshotlength,snaplen应该是二者的简写形式,快照长度4.6.捕捉文件格式、模式设置在捕捉时,libpcap捕捉引擎(linux环境下)会抓取来自网卡的包存放在(相对来说)较小的核心缓存内。这些数据由Wireshark读取并保存到用户指定的捕捉文件中。保存包数据到捕捉文件时,可采用差异模式操作。提示处理大文件(数百兆)将会变得非常慢。如果你计划进行长时间捕捉,或者处于一个高吞吐量的网络中,考虑使用前面提到的\"Multiplefiles/多文件\"选项。该选项可以将捕捉包分割为多个小文件。这样可能更适合上述环境。注意使用多文件可能会切断上下文关联信息。Wireshark保留载入包的上下文信息,所以它会报告上下文关联问题(例如流问题)和关联上下文协议信息(例如:何处数据产生建立阶段,必须查找后续包)。这些信息仅能在载入文件中显示,使用多文件模式可能会截断这样的上下文。如果建立连接阶段已经保存在一个文件中,你想要看的在另一个文件中,你可能无法看到可用的上下文关联信息。提示关于捕捉文件的目录信息,可见???表4.1.捕捉文件模式选项\"File\"Use\"Ringbuffer\"选multiplewithnfiles\"选Mode最终文件命名方式项files\"选项项SingleetherXXXXXX(whereXXXXXX是---temporary一个独立值)filefoo.cSingle--foo.capapnamedfileMultiplefoo.cfoo_00001_20040205110102.cap,x-files,continuapfoo_00002_20040205110102.cap,...ousMultiplefoo.cfoo_00001_20040205110102.cap,xxfiles,ringapfoo_00002_20040205110102.cap,...bufferSingletemporaryfile将会创建并使用一个临时文件(默认选项).捕捉文件结束后,该文件可以由用户指定文件名。Singlenamedfile使用单独文件,如果你想放到指定目录,选择此模式Multiplefiles,continuous与singlenamefile模式类似,不同点在于,当捕捉达到多文件切换临界条件时之一时,会创建一个新文件用于捕捉Multiplefiles,ringbuffer与\"multiplefilescontinuous\"模式类似,不同之处在于,创建的文件数目固定。当达到ringbufferwithn值时,会替换掉第一个文件开始捕捉,如此循环往复。该模式可以限制最大磁盘空间使用量,即使未限制捕捉数据输入,也只能保留最后几个捕捉数据。4.7.链路层包头类型在通常情况下,你不需要选择链路层包头类型。下面的段落描述了例外的情况,此时选择包头类型是有必要的,所以你需要知道怎么做:如果你在某种版本BSD操作系统下从某种802.11设备(无线局域网设备)捕捉数据,可能需要在\"802.11\"和\"Ethernet\"中做出选择。\"Ethernet\"将会导致捕捉到的包带有伪以太网帧头(不知道是不是应该叫伪首部更准确些);\"802.11\"将会导致他们带有802.11帧头。如果捕捉时的应用程序不支持\"802.11帧头\",你需要选择\"802.11\"如果你使用EndaceDAGcard(某种网络监视卡)连接到同步串口线(译者注:E文为synchronousserialline,权且翻译作前文吧,未接触过此卡、未熟稔此线名称),可能会出现\"PPPoverserial\"或\"CiscoHDLC\"(自己google去)供选择。根据你自己的情况选择二者中的一个。如果你使用EndaceDAGcard(同上)连接到ATM网络,将会提供\"RFC1483IP-over-ATM\"、\"SunrawATM\"供选择。如果捕捉的通信是RFC1483封装IP(RFC1483LLC-encapsulatedIP,不翻译为妙),或者需要在不支持SunATM帧头的应用程序下捕捉,选择前者。反之选择后者。如果你在以太网捕捉,将会提供\"Ethernet\"、\"DOCSIS\"供选择,如果您是在CiscoCableModemTerminationSystem(CMTS是思科同轴电缆终端调制解调系统?)下捕捉数据。它会将DOCSIS(同轴电缆数据服务接口)通信放置到以太网中,供捕捉。此时需要选择\"DOCSIS\反之则反之。4.8.捕捉时过滤Wireshark使用libpcap过滤语句进行捕捉过滤(whataboutwinpcap?)。在tcpdump主页有介绍,但这些只是过于晦涩难懂,所以这里做小幅度讲解。提示你可以从http://wiki.wireshark.org/CaptureFilters找到捕捉过滤范例.在Wireshark捕捉选项对话(见图4.2“\"CaptureOption/捕捉选项\"对话框”)框输入捕捉过滤字段。下面的语句有点类似于tcpdump捕捉过滤语言。在tcpdump主页http://www.tcpdump.org/tcpdump_man.html可以看到tcpdump表达式选项介绍。捕捉过滤的形式为:和取值(and/or)进行进行基本单元连接,加上可选的,高有限级的not:[not]primitive[and|or[not]primitive...]例4.1.捕捉来自特定主机的telnet协议tcpport23andhost10.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通信tcphost23andnotsrchost10.0.0.5此处笔者建议增加更多范例。但是并没有添加。一个基本单元通常是下面中的一个[src|dst]host此基本单元允许你过滤主机ip地址或名称。你可以优先指定src|dst关键词来指定你关注的是源地址还是目标地址。如果未指定,则指定的地址出现在源地址或目标地址中的包会被抓取。ether[src|dst]host此单元允许你过滤主机以太网地址。你可以优先指定关键词src|dst在关键词ether和host之间,来确定你关注的是源地址还是目标地址。如果未指定,同上。gatewayhostt过滤通过指定host作为网关的包。这就是指那些以太网源地址或目标地址是host,但源ip地址和目标ip地址都不是hoshost的包[src|dst]net[{mask}|{len}]通过网络号进行过滤。你可以选择优先指定src|dst来确定你感兴趣的是源网络还是目标网络。如果两个都没指定。指定网络出现在源还是目标网络的都会被选择。另外,你可以选择子网掩码或者CIDR(无类别域形式)。[tcp|udp][src|dst]port选择长度符合要求的包。(大于等于或小于等于)ip|etherproto选择有指定的协议在以太网层或是ip层的包ether|ipbroadcast|multicast选择以太网/ip层的广播或多播relop创建一个复杂过滤表达式,来选择包的字节或字节范围符合要求的包。请参考http://www.tcpdump.org/tcpdump_man.html4.8.1.自动过滤远程通信如果Wireshark是使用远程连接的主机运行的(例如使用SSH,X11Window输出,终端服务器),远程连接必须通过网络传输,会在你真正感兴趣的通信中产生大量数据包(通常也是不重要的)想要避免这种情况,wireshark可以设置为如果发现有远程连接(通过察看指定的环境变量),自动创建一个过滤器来匹配这种连接。以避免捕捉Wireshark捕捉远程连接通信。下列环境变量可以进行分析SSH——CONNECTION(ssh)SSH_CLIENT(ssh)REMOTEHOST(tcsh,others?)DISPLAY(x11)[remotename]:SESSIONNAME(terminalserver)4.9.在捕捉过程中捕捉时,会出现下面的对话框图4.3.捕捉信息对话框上述对话框会向你显示捕捉到包的数目,捕捉持续时间。选择的被统计的协议无法更改(什么鸟意思?)提示这个对话框可以被隐藏,在前次的捕捉选项对话框设置\"Hidecaptureinfodialogbox\"即可。4.9.1.停止捕捉运行中的捕捉线程可以用下列方法停止:使用捕捉信息对话框上的\"stop\"按钮停止。注意捕捉信息对话框有可能被隐藏,如果你选择了\"Hidecaptureinfodialog\"使用菜单项\"Capture/使用工具栏项\"Stop\"Stop\"使用快捷键:Ctrl+E如果设置了触发停止的条件,捕捉达到条件时会自动停止。4.9.2.重新启动捕捉运行中的捕捉进程可以被重新启动。这将会移出上次捕捉的所有包。如果你捕捉到一些你不感兴趣的包,你不想保留它,这个功能十分有用。重新启动是一项方便的功能,类似于停止捕捉后,在很短的时间内立即开始捕捉。以下两种方式可以实现重新启动捕捉:使用菜单项\"Capture/使用工具栏项\"Restart\"Restart\"第5章文件输入/输出及打印目录5.1.说明5.2.打开捕捉文件5.2.1.打开捕捉文件对话框5.2.2.输入文件格式5.3.保存捕捉包5.3.1.\"saveCaptureFileAs/保存文件为\"对话框5.3.2.输出格式5.4.合并捕捉文件5.4.1.合并文件对话框5.5.文件集合5.5.1.文件列表对话框5.6.导出数据5.6.1.\"ExportasPlainTextFile\"对话框5.6.2.\"ExportasPostScriptFile\"对话框5.6.3.\"ExportasCSV(CommaSeparatedValues)File\"对话框5.6.4.\"ExportasPSMLFile\"对话框5.6.5.\"ExportasPDMLFile\"对话框5.6.6.\"Exportselectedpacketbytes\"对话框5.6.7.\"ExportObjects\"对话框5.7.打印包5.7.1.打印对话框5.8.包范围选项5.9.包格式选项5.1.说明本章将介绍捕捉数据的输入输出。打开/导入多种格式的捕捉文件保存/导出多种格式的捕捉文件合并捕捉文件打印包5.2.打开捕捉文件Wireshark可以读取以前保存的文件。想读取这些文件,只需选择菜单或工具栏的:“File/Open”。Wireshark将会弹出打开文件对话框。详见第5.2.1节“打开捕捉文件对话框”如果使用拖放功能会更方便要打开文件,只需要从文件管理器拖动你想要打开的文件到你的Wireshark主窗口。但拖放功能不是在所有平台都支持。在你载入新文件时,如果你没有保存当前文件,Wireshark会提示你是否保存,以避免数据丢失。(你可以在首选项禁止提示保存)除Wireshark原生的格式(libpcap格式,同样被tcpdump/Windump和其他基于libpcap/WinPcap使用)外,Wireshark可以很好地读取许多捕捉文件格式。支持的格式列表见第5.2.2节“输入文件格式”5.2.1.打开捕捉文件对话框打开文件对话框可以用来查找先前保存的文件。表5.1“特定环境下的打开文件对话框”显示了一些Wireshark打开文件对话框的例子。对话框的显示方式取决于你的操作系统对话框的显示方式取决于操作系统,以及GTK+工具集的版本。但不管怎么说,基本功能都是一样的。常见对话框行为:选择文件和目录点击Open/OK按钮,选择你需要的文件并打开它点击Cancle按钮返回Wireshark主窗口而不载入任何文件。Wireshark对话框标准操作扩展如果选中文件,可以查看文件预览信息(例如文件大小,包个数。。。)通过\"filter:\"按钮、显示字段指定显示过滤器。过滤器将会在打开文件后应用。在输入过滤字符时会进行语法检查。如果输入正确背景色为绿色,如果错误或输入未结束,背景色为绿色。点击filter按钮会打开过滤对话框,用于辅助输入显示过滤表达式。(详见第6.3节“浏览时过滤包”)XXXX-weneedabetterdescriptionofthesereadfilters(貌似说这一段需要更多的做介绍)通过点击复选框指定那些地址解析会被执行。详见第7.6节“名称解析”在大文件中节约大量时间你可以在打开文件后修改显示过滤器,和名称解析设置。但在一些巨大的文件中进行这些操作将会占用大量的时间。在这种情况下建议在打开文件之前就进行相关过滤,解析设置。表5.1.特定环境下的打开文件对话框图5.1.Windows下的打开对话框MicrosoftWindows(GTK2installed)此对话框一般都带有一些wireshark扩展此对话框的说明:如果可用,\"help\"按钮将会打开本节的用户手册。\"Filter.\"按钮在当前版本的windows下不可用(我看了一下,的确不可用,但过滤输入框还是可用的)错误提示功能:如果Wireshark无法识别选中的捕捉文件,Open按钮将为灰色不可用[a]K下的打开对话框Unix/Linux:GTKversion>=2.4图5.2.新版GtGtK这是在Gimp/GNOME桌面环境下的打开文件对话框对此对话框的说明。“+”按钮可以将右侧选中的目录添加到收藏夹。成为预设目录。\"-\"按钮可以移除左侧目录列表中选中的目录。(\"Home\不可以移除)如果Wireshark不能识别选中的捕捉文件,\"Open\"按钮将是灰色不可用。图5.3.旧版GTK下的打开对话框Unix/Linux:GTKversion<2.4/MicrosoftWindows(GTK1installed)gimp/gnome桌面环境,或windowsgtk1下的的。该对话框说明如果未能识别不做文件,Open按钮将为灰色不可用[a]我测试了一下,无论什么文件,Wireshark都会去尝试打开,更遑论错误检查5.2.2.输入文件格式可以打开的捕捉文件格式列表:libpcap,tcpdumpandvariousothertoolsusingtcpdump'scaptureformatSunsnoopandatmsnoopShomiti/FinisarSurveyorcapturesNovellLANalyzercapturesMicrosoftNetworkMonitorcapturesAIX'siptracecapturesCincoNetworksNetXraycapturesNetworkAssociatesWindows-basedSnifferandSnifferProcapturesNetworkGeneral/NetworkAssociatesDOS-basedSniffer(compressedoruncompressed)capturesAGGroup/WildPacketsEtherPeek/TokenPeek/AiroPeek/EtherHelp/PacketGrabbercapturesRADCOM'sWAN/LANAnalyzercapturesNetworkInstrumentsObserverversion9capturesLucent/AscendrouterdebugoutputHP-UX'snettlToshiba'sISDNroutersdumpoutputISDN4BSDi4btraceutilitytracesfromtheEyeSDNUSBS0IPLogformatfromtheCiscoSecureIntrusionDetectionSystempppdlogs(pppdumpformat)theoutputfromVMS'sTCPIPtrace/TCPtrace/UCX$TRACEutilitiesthetextoutputfromtheDBSEtherwatchVMSutilityVisualNetworks'VisualUpTimetrafficcapturetheoutputfromCoSineL2debugtheoutputfromAccellent's5ViewsLANagentsEndaceMeasurementSystems'ERFformatcapturesLinuxBluezBluetoothstackhcidump-wtracesCatapultDCT2000.outfiles不正确的包类型可能无法会导致打开错误。某些类型的捕捉包可能无法读取。以太网环境下捕捉的大部分类型格式一般都等打开。但有些包类型(如令牌环环包),不是所有的格式都被wireshark支持。5.3.保存捕捉包你可以通过File->SaveAs...菜单保存捕捉文件。在保存时可以选择保存哪些包,以什么格式保存。保存可能会丢失某些有用的信息保存可能会少量都是某些信息。例如:已经被丢弃的包会丢失。详见???5.3.1.\"saveCaptureFileAs/保存文件为\"对话框\"SaveCaptureFileAs\"对话框用于保存当前捕捉数据到文件。???列举了该对话框的一些例子。对话框的显示方式取决于你的操作系统对话框的显示方式取决于你的操作系统和GTK+工具集版本的不同。但大部分基本功能都是一样的。表5.2.特定环境下的\"SaveCaptureFileAs\"对话框图5.4.Windows下的保存为对话框MicrosoftWindows(GTK2installed)此对话框一般都带有一些wireshark扩展此对话框的说明:如果可用,\"help\"按钮将会打开本节的用户手册。如果你未输入文件扩展名-例如.pcap,Wireshark会自动添加该文件格式的标准扩展名。图5.5.新版GtK下的保存为对话框Unix/Linux:GTKversion>=2.4这是在Gimp/GNOME桌面环境下的保存文件对话框对此对话框的说明。\"Browseforotherflders\"前的“+”按钮可以让你指定文件保存的位置。。图5.6.旧版GTK下的保存为对话框Unix/Linux:GTKversion<2.4/MicrosoftWindows(GTK1installed)gimp/gnome桌面环境,或windowsgtk1下的的。通过这些对话框,你可以执行如下操作:输入你指定的文件名。选择保存的目录选择保存包的范围,见第5.8节“包范围选项”通过点击\"Filetype/文件类型\"下拉列表指定保存文件的格式。见???可供选中的文件格式可能会没有那么多有些类型的捕捉格式可能不可用,这取决于捕捉包的类型。可以直接保存为另一种格式。你可以以一种格式读取捕捉文件,保存时使用另外一种格式(这句可能翻译有误。)点击\"Save/OK\"按钮保存。如果保存时遇到问题,会出现错误提示。确认那个错误提示以后,你可以重试。点击\"Cancel\"按钮退出而不保存捕捉包。5.3.2.输出格式可以将Wireshark不着的包保存为其原生格式文件(libpcap),也可以保存为其他格式供其他工具进行读取分析。各文件类型之间的时间戳精度不尽相同将当前文件保存为其他格式可能会降低时间戳的精度,见第7.3节“时间戳”Wireshark可以保存为如下格式。libpcap,tcpdumpandvariousothertoolsusingtcpdump'scaptureformat(*.pcap,*.cap,*.dmp)Accellent5Views(*.5vw)HP-UX'snettl(*.TRC0,*.TRC1)MicrosoftNetworkMonitor-NetMon(*.cap)NetworkAssociatesSniffer-DOS(*.cap,*.enc,*.trc,*fdc,*.syc)NetworkAssociatesSniffer-Windows(*.cap)NetworkInstrumentsObserverversion9(*.bfr)NovellLANalyzer(*.tr1)Sunsnoop(*.snoop,*.cap)VisualNetworksVisualUpTimetraffic(*.*)5.4.合并捕捉文件有时候你需要将多个捕捉文件合并到一起。例如:如果你对多个接口同时进行捕捉,合并就非常有用(Wireshark实际上不能在同一个实体运行多次捕捉,需要开启多个Wireshark实体)有三种方法可以合并捕捉文件:从\"File\"菜单使用,menuitem\"Merge\"(菜单项\"合并\"),打开合并对话框,见第5.4.1节“合并文件对话框”使用拖放功能,将多个文件拖放到主窗口。Wireshark会创建一个临时文件尝试对拖放的文件按时间顺序进行合并。如果你只拖放一个文件,Wireshark可能(只是)简单地替换已经打开的文件。使用mergecap工具。该工具是在命令行进行文件合并的。它提供了合并文件的丰富的选项设置。见???5.4.1.合并文件对话框通过该对话框可以选择需要合并的文件,并载入合并它们。首先你会被提示有一个文件未保存如果当前文件未保存,Wireshark会在启动合并对话框之前提示你是否保存文件。此处的对话框的大多数内容与\"OpenCaptureFiles/打开捕捉文件\"对话框类似,参见第5.2.1节“打开捕捉文件对话框”合并对话框中用于合并的控制选项:将包插入已存在文件前将选择文件内的包插入到当前已经载入文件之前按时间顺序合并文件将当前选择的文件和已载入的文件里的所有包按时间顺序合并追加包到当前文件将选择文件的包插入到当前载入文件的末尾表5.3.不同环境下的\"MergeCaptureFileAs\"对话框MicrosoftWindows(GTK2installed)图5.7.Windows下的\"合并\"对话框此对话框一般都带有一些wireshark扩展图5.8.新版GtK下的合并话框Unix/Linux:GTKversion>=2.4这是在Gimp/GNOME桌面环境下的合并对话框图5.9.旧版GTK下的合并对话框Unix/Linux:GTKversion<2.4/MicrosoftWindows(GTK1installed)5.5.文件集合在进行捕捉时(见:第4.6节“捕捉文件格式、模式设置”)如果设置\"MultipleFiles/多文件\"选项,捕捉数据会分割为多个文件,称为文件集合.大量文件手动管理十分困难,Wirreshark的文件集合特性可以让文件管理变得方便一点。Wireshark是如何知道一个文件所属的文件集合t的?文件集合中的文件名以前缀号码+\"_\"+号码+\"_\"+日期时间+后缀的形式生成的。类似于:\"test_00001_20060420183910.pcap\".文件集合所有的文件都有一个共同的前缀(例如前面的\"test\")和后缀(例如:\".pcap\")以及变化的中间部分。要查找一个文件集合的所有文件。Wireshark会扫描当前载入文件的目录下的所有文件,找到那些和当前文件名具有相同部分(前缀和后缀)的作为文件集合。这个简单的机制通常能正常运行,但也有它的弊端。如果几次进行的捕捉具有相同的前缀和后缀,Wireshark会将它们看作同一个文件集合。如果文件被更名或者放在不同的目录下,这样的按文件名查找机制会无法找到文件集合的所有文件。使用\"File\"菜单项的子菜单\"FileSet\"可以对文件集合集合进行很方便的控制。ListFiles对话框显示一个对话框列出所有被识别出来属于当前文件集合的文件列表。NextFiles关闭当前文件,打开文件集合列表中的下一个文件。PreviousFiles关闭当前文件,打开文件集合列表中的前一个文件。5.5.1.文件列表对话框图5.10.文件列表对话框每行包含文件集合中的一个文件的相关信息。Filename文件名称。如果你双击文件名称(或者单击单选钮),当前文件会被关闭,同时载入对应的文件。Created文件创建时间。LastModified最后一次修改文件的时间。size文件的大小。最后一行\"...indirctory:\"显示所有文件所在的目录。在每次捕捉文件被打开、关闭时,对话框的内容会变化。Close按钮关闭该对话框。5.6.导出数据Wireshark支持多种方法,多种格式导出包数据,本节描述Wireshark常见的导出包数据方法。注意个别数据需要使用许多特殊方式导出,在合适的时候我们会对其进行介绍。XXX-adddetaileddescriptionsoftheoutputformatsandsomesampleoutput,too./同样需要对导出格式进行介绍,同样也需要一些范例范例5.6.1.\"ExportasPlainTextFile\"对话框导出包数据为\"plainAscⅡ\"文本文本见,适合打印包数据。图5.11.\"ExportasPlainTextFile\"对话框Exporttofile:导出包数据为指定的文件PacketRange参见第5.8节“包范围选项”PacketDetails参见???5.6.2.\"ExportasPostScriptFile\"对话框导出数据为PostScript格式,PostScript是一种打印格式。提示PostScribt文件可以使用ghostscrip转换为PDF格式。例如导出文件名为foo.ps,然后调用ps2pdffoo.ps命令就可以进行转换。图5.12.\"ExportasPostScriptFile\"对话框Exporttofile:导出包数据为指定的文件PacketRange:参见第5.8节“包范围选项”PacketDetails:参见???5.6.3.\"ExportasCSV(CommaSeparatedValues)File\"对话框注:笔者认为此处应该增加截屏,因为我的xp下界面与前图风格迥异,这里就不提供了导出包的摘要为CVS格式,可以被电子表格程序使用。Exporttofile导出包数据为指定的文件PacketRange参见第5.8节“包范围选项”5.6.4.\"ExportasPSMLFile\"对话框导出包数据为PSML格式,它是一种仅包含包摘要信息的xml格式。PSML格式的说明参见:http://www.nbee.org/Docs/NetPDL/PSML.htm.图5.13.\"ExportasPSMLFile\"对话框Exporttofile:导出包数据为指定的文件PacketRange:参见第5.8节“包范围选项”上图没有诸如Packetdetails的选项,因为PSML文件格式有特殊要求,不包含这些内容。5.6.5.\"ExportasPDMLPDMLFile\"File\"对话框导出数据包为PDML格式,PDML是包含包详情的xml格式文件。见:http://www.nbee.org/Docs/NetPDL/PDML.htm注意PDML格式还没有发行版,Wireshark执行PDML还处在测试阶段,期望外来版本会有所变化。图5.14.\"ExportasPDMLFile\"对话框Exporttofile:将包数据导出到PacketRange:参见第5.8节“包范围选项”上述对话框里没有诸如Packetdetails选项,这是由于PDML格式约定的内容决定的。5.6.6.\"Exportselectedpacketbytes\"对话框PDML文件的说明图5.15.\"ExportSelectedPacketBytes\"对话框Name:导出数据包为文件Saveinfolder:导出数据包到指定目录forotherfolders通过浏览来指定导出数据的目录。BrowserBrowserfor5.6.7.\"ExportObjects\"对话框这个对话框是用来扫描当前打开包文件或者是正在捕捉中的包文件,将其中的对象,如HTML文档,图片文件,可执行文件等等任何可以通过HTTP传输的对象进行重组集合,让你可以将他们保存刀磁盘。如果捕捉正在进行中,列表会在发现新对象之后的几秒内立即更新。保存的对象不需要进行额外处理就可以被对应的查看工具打开,或者直接运行(如果它可以在Wireshark所在的平台运行的话)。这项功能在GTK1下的Wireshark中无法使用。图5.16.\"ExportObjects\"对话框各列说明Packetnum包含该对象数据的包的数目,有时候多个对象可能包含在同一个包里。Hostname作为服务器相应HTTP请求发送对象的主机的主机名。ContentType对象的HTTP内容类型Bytes对象的字节数FilenameURL的最后一部分(最后一个\"/\"之后)。通常这部分是文件名,但有时是一个又常又复杂的字符串,这通常表明该文件是一个\"HTTPPOST\"请求。(类似于填写表单以后通过CGI提交后跳转页面的URL)按钮说明:Help打开本节的用户手册(5.6.7节?)Close关闭该对话框SaveAs用指定文件名保存当前选择对象。默认文件名是filename列中显示的对象文件名。SaveAll将列表中所有对象按filename列显示名称保存。系统会提示你选择哪个目录/文件夹保存他们。如果文件名在当前操作系统或者文件系统下不合法,Wireshark会提示错误,该对象不会被保存(但其他对象会被保存)。5.7.打印包要打印包,选择File菜单的\"Print...\"菜单项。这时会弹出如图5.17“\"Print\"对话框”所示的打印对话框。5.7.1.打印对话框图5.17.\"Print\"对话框下面的字段在打印对话可用。Printer该字段包括一对互斥的单选钮PrintText指定包打印为plaintext格式PostScript在打印过程中使用PostScrtipt打印软件生成打印输出。[15]Outputtofile打印为文件,文件名使用输入的字段或者在浏览按钮选择。如果你没有选择Outputtofile:复选框,你输入字段的地方或Browse。。按钮都是灰色。Printcommand设置打印时使用的命令注意打印命令在Windows平台不可用。用于打印的命令通常是lpr.Youwouldchangeittospecifyaparticularqueueifyouneedtoprinttoaqueueotherthanthedefault.例如:lpr-Pmypostscript如果没有选中Outputtofile,该字段将是灰色不可用的。PacketRange需要要被打印的包,参见:第5.8节“包范围选项”PacketFormat选择输出文件的格式。你可以选择包以何种方式打印包。见图5.19“\"PacketFormat\"选项卡”[15]译者注:此处需要说明的是,如果没有打印机,或者不想打印,你应该在后面指定Outputtofile,指定打印输出未知,另,outputtofile输出的后缀名是.out,如果想用acrobat导入,可以考虑将后缀名修改为.ps,这样可以被直接识别,当然,直接把文件拖放到AcrobatDistiller也可以直接生成PDF文件。另:使用PostScript输出的文件具有良好的形式,比如在页首会加上列名,而直接打印为printtext却没有这样的内容。5.9.包格式选项包格式选项卡在很多输出对话框都能看到,它可以指定包的那些部分会被输出。图5.19.\"PacketFormat\"选项卡Packetsummaryline导出包的摘要行,就是\"PacketList\"面板的内容PacketDetails导出PacketDetails树Allcollaspsed\"PacketDetails\"面板在\"allcollapsed\"状态下的所有信息(折叠所有分支)Asdisplayed\"PacketDetails\"面板当前状态下的信息Allexpanded\"PacketDetails\"面板\"allexpanded\"状态下的信息(展开所有分支)Packetbytes导出包字节,就是\"PacketBytes\"面板的内容EachPacketonanewpage输出是每个包单独一页(例如,如果保存/打印成text文件,会在包之间加上分节符)第6章处理已经捕捉的包目录6.1.浏览您捕捉的包6.2.弹出菜单项6.2.1.包列表面板的弹出菜单6.2.2.包详情面板的弹出菜单6.3.浏览时过滤包6.4.建立显示过滤表达式6.4.1.显示过滤字段6.4.2.比较值6.4.3.组合表达式6.4.4.常见的错误6.5.“FilterExpression/过滤表达式”对话框6.6.定义,保存过滤器6.7.查找包6.7.1.查找包对话框6.7.2.\"FindNext/查找下一个\"命令6.7.3.\"FindPrevious/查找上一个\"命令6.8.到指定的包6.8.1.\"GOBack\"返回命令6.8.2.\"GoForward/向前\"命令6.8.3.\"GotoPacket/到指定的包\"对话框6.8.4.\"GotoCorrespondingPacket/到对应的包\"命令6.8.5.\"GotoFirestPacket/到第一个包\"命令6.8.6.\"GotoLastPacket/到最后一个包\"命令6.9.标记包6.10.时间显示格式及参考时间6.10.1.包参考时间6.1.浏览您捕捉的包在你已经捕捉完成之后,或者打开先前保存的包文件时,通过点击包列表面版中的包,可以在包详情面板看到关于这个包树状结构以及字节面版通过点击左侧\"+\"标记,你可以展开树状视图的任意部分。你可以在面板点击任意字段来选择它。例如:在下图图6.1“Wireshark选择了一个TCP包后的界面”显示的就是选中TCP字段。同样可以选择TCP包头的应答号(ack:190),同时会出现在下方的字节浏览面版中。[16]图6.1.Wireshark选择了一个TCP包后的界面在Wireshark正在捕捉时,您也可以进行同样的选择。(前提是您在捕捉选项对话框选择了实时更新列表(updatelistofpacketinrealtime))另外,您可以使用分离的窗口浏览单独的数据包,见图6.2“在分离窗口浏览包”,想要这样做,你只需要在选中包列表面版中您感兴趣的包,菜单Display->ShowPacketinNewWindows。它可以让你很轻松地比较两个或多个包。图6.2.在分离窗口浏览包[16]不甚了解下方的16进制转储怎么表达190的6.2.弹出菜单项在包列表面板,包详情面板,包字节面板点击右键,都会出现对应的上下文弹出菜单6.2.1.包列表面板的弹出菜单图6.3.包列表面板弹出菜单下表列出了该面版可用弹出菜单项的概述,主菜单能实现同样功能的菜单项,以及简短的描述。表6.1.包列表弹出菜单项对应主项目描述菜单项MarkPacket(toggle)Edit标记/取消标记包SetTimeEdit设置/重设时间参考Reference(toggle)-----ApplyasFilterPrepareaFilterAnalyzeAnalyze用当前选中的项作为过滤显示准备将当前选择项作为过滤器将当前选择项的地址信息作为过滤设置。选中该选项以后,会生成一个显示过滤,用于显示当前包两个地址之间的会话(不分源目标地址)。(XXX-addanewsectiondescribingthisbetter.---作者似乎建议添加新章节详细描述)有待补充浏览两个节点间的一个完整TCP流所有数据同上,将TCP替换成SSL理解ConversationFilter-STCPFollowTCPStreamFollowSLLStream-----Copy/Summary(TEXT)Copy/Summary(CVS)Copy/AsFilterCopy/Bytes(Offset-AnalyzeAnalyze----将摘要字段复制到剪贴板。(以tab分开的文本)将摘要字段复制到剪贴板,(CVS格式,逗号分开)以当前选择项,建立一个显示过滤器,复制到剪贴板以16进制转储格式将包字节复制到剪贴板。HexText)Copy/Bytes(Offset-Text)Copy/Bytes(PrintableText-Only)Copy/Bytes(HEXStream)-以16进制转储格式将包字节复制到剪贴板。不包括文本部分。以ASCII码格式将包字节复制到剪贴板,包括非打印字符。以16进制未分段列表数字方式将包字节复制到剪贴板,(anunpunctuatedlistofhexdigits应该有专有名词,有兴趣的查一下)以rawbinary格式将包字节复制到剪贴板。数据在剪贴板以\"MIME-typeapplication/octet-stream\"存储,该功能在GTK+1.x环境下不支持与文件菜单同名项目功能一样。允许将Rawpacket字节转换为二进制文件它在两个解析之间建立或修改新关联(不知所云)打印包在新窗口显示选中的包Copy/Bytes(Binary-Stream)ExportSelectedPacketBytes...---DecodeAs...Print...ShowPacketinNewWindowFileAnalyzeFileView6.2.2.包详情面板的弹出菜单图6.4.包详情面板弹出上下文菜单项下表介绍了包详情列表菜单项的功能描述,及其他可以提供该功能的主菜单表6.2.包详情面板弹出上下文菜档项项目ExpandSubtreesExpandAllCollapseAll-----Copy/DescriptionCopy/ASFilterCopy/Bytes(OffsetHexText)Copy/Bytes(OffsetHex)对应的主菜单ViewViewView-Edit-描述展开当前选择的子树展开捕捉文件的所有包的所有子树关闭包中所有已展开的子树复制选择字段显示的文本到剪贴板将选择项目作为显示过滤内容复制到剪贴板将包字节以Hexdump-like格式存储到剪贴板;类似于包列表面板中同名的命令,但是拷贝结果仅仅是树分支中被选中部分(包字节面板中被选中字节)以Hexdump-linke格式保存到剪贴,不包括文本部分。类似于包列表命令,不同之处在于此处仅拷贝树分支选中部分(包字节面板选中部分)以ASCII格式拷贝包字节,非打印字符除外;类似于包列表面板中同样的命令。不同点在于此处仅拷贝选择的树分支(包字符被选择部分)j以unpunctuatedlisthexdigits形式保存到剪贴板,类似于包列表面板中的命令,不同之处在于仅复制选中子树部分(包字节面板选中部分)-COPY/Bytes-(printableTextOnly)Copy/Bytes(HexStream)-以rawbinary格式拷贝到剪贴板;类似于包列表面板中的Copy/Bytes(BinaryStream)ExportSelectedPacketBytes...---ApplyasFilterPreapareaFilterFollowTCPStreamFollowSSLStream-----WikiProtocolPageFilterFieldReferenceProtocolPreferences...-----DecodeAs...ResolveName...Gotocorresponding...PacketPacket...TNND,表格让人崩溃-命令,不同之处在于仅拷贝选中部分子树(包字节面板选中部分)。数据以MIME-type“Application/octet-stream”存储在剪贴板.该功能在GTK+1.x下不可用同文件菜单中的同名项一样。导出rawpacket字节为二进制文件。将当前选择项作为过滤内容,并应用将当前选择项作为过滤内容,但不立即应用追踪两个节点见,被选择包所属TCP流的完整数据同上显示当前选择协议的对应WIKI网站协议参考页显示当前过滤器的WEB参考如果协议字段被选中,点击该选项,打开属性对话框,选择对应协议的页面,???更改或应用两个解析器之间的关联(什么鸟意思?)对选择的包进行名称解析,不是指所有的包跳到当前选择包的相应包。FileanalyzeAnalyzeAnalyzeAnalyze---AnalyzeViewGo6.3.浏览时过滤包Wireshark有两种过滤语法:一种是捕捉包时使用,另一种是显示包时使用。本节介绍第二种过滤语法:显示过滤。第一种过滤语法在第4.8节“捕捉时过滤”提到显示过滤可以隐藏一些你不感兴趣的包,让你可以集中注意力在你感兴趣的那些包上面。你可以用从以下几个方面选择包:协议预设字段字段值字段值比较。。。以及许多根据协议类型选择数据报,只需要在Filter框里输入你刚兴趣的协议,然后回车开始过滤。???显示了你输入tcp进行过滤后的图。图6.5.用TCP协议过滤或许你没有注意到,上图显示的已经仅有TCP协议了(从图中可以看到1-10号包已经被隐藏)。因为包的编号是固定不变的,所以第一个包显示的编号是11。注意当你使用过滤时,所有的包依然保留在捕捉文件里。显示过滤只是更改捕捉文件的显示方式而非内容。你只能对Wireshark可以识别的协议进行过滤。你也可以对解析器已经添加到树视图的字段进行过滤,但仅限于解析器已经为字段加上了协议缩写的。在AddExpression...对话框可以看到可用的字段列表.详见第6.5节““FilterExpression/过滤表达式”对话框”例如:想要限制包列表面板仅显示来自或指向192.168.0.1的包,可以使用ip.addr==192.168.0.注意点击Clear可以移除过滤6.4.建立显示过滤表达式Wireshark提供了简单而强大的过滤语法,你可以用它们建立复杂的过滤表达式。你可以比较包中的值,合并表达式为多个指定表达式。本节介绍了相关操作。提示你可以在WiresharkWikiDisplay页找到发现大量的显示过滤范例。http://wiki.wireshark.org/DisplayFilters.6.4.1.显示过滤字段包详情面板的每个字段都可以作为过滤使用。应用这些作为过滤将会仅显示包含该字段的包。例如:过滤字符串:TCP将会显示所有包含TCP协议的包。通过\"Help/SupportProtocals\"/帮助/协议支持菜单项访问\"DisplayFilterFields/显示过滤字段\"可以查看完整完整的过滤字段列表。6.4.2.比较值你可以通过在许多不同的比较操作建立比较过滤。详见表6.3“显示滤镜比较操作符”提示你可以使用下表中的英语和比较符(c-link)项达到同样的效果,它们也可以混合使用。表6.3.显示滤镜比较操作符EnglishC-linke描述及范例Equaleq==ip.addr==10.0.0.5Notequalne!=ip.addr!=10.0.0.5Greatethangt>frame.pkt_len>10Lessthanlt=frame.pkt_lenge0x100Equalle<=frame.pkt_len<=0x206.4.3.组合表达式你可以用逻辑操作符将过滤表达式组合在一起使用,见表6.4“显示过滤的逻辑操作符”表6.4.显示过滤的逻辑操作符EngliC-lin描述和范例shkeLogicalANDand&&ip.addr==10.0.0.5andtcp.flags.finLogicalORor||ip.addr==10.0.0.5orip.addr==192.1.1.1LogicalXORxor^^tr.dst[0:3]==0.6.29xortr.src[0:3]==0.6.29LogicalNotnot!notllcSubstringOperatorWireshark允许选择一个序列的子序列。在标签后你可以加上一对[]号,在里面包含用逗号(是不是冒号?)分离的列表范围。eht.src[0:3]==00:00:83上例使用n:m格式指定一个范围。在这种情况下,n是起始位置偏移(0表示没有偏移,即是第一位,同理1表示向右偏移一位,便是第二位),m是从指定起始位置的区域长度。eth.src[1-2]==00:83上例使用n-m格式一个范围。在本例中n表示起始位置偏移,m表示终止位置偏移eth.src[:4]=00:00:83:00上例使用:m格式,表示从起始位置到偏移偏移位置m。等价于0:meth.src[4:]=20:20上例使用n:格式,表示从最后位置偏移n个序列eht.src[2]==83上例使用n形式指定一个单独的位置。在此例中中序列中的单元已经在偏移量n中指定。它等价于n:1eth.src[0:3,102,:4,4:,2]==00:00:83:00:83:00:00:83:00:20:20:83Wireshark允许你将多个分号隔开的列表组合在一起表示复合区域,如上例所示[...]6.4.4.常见的错误警告在组合表达式中使用\"!=\"操作符,像eth.addr,ip.addr,tcp.port,udp.port等元素可能会产生非预期效果经常有人用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.“FilterExpression/过滤表达式”对话框当你熟悉Wireshark过滤系统,并了解你可以用那些标签进行过滤以后,你可以快速简单地输入过滤字符但如果你是一个Wireshark新手,或者处理一些相对陌生的协议,你可能很难通过直接输入字符进行过滤。过滤表达式对话框会帮你解决这些问题提示过滤表达式对话框是学习输入表达式的不错的工具。(不知道用不错是不是有点委屈)图6.6.过滤表达式对话框打开上图的对话框以后。将会显示一个按协议类型分组的树分支列表,一个关系选择框。FieldName从协议字段树中选择协议字段。每个可过滤协议都放在第一级。点击+号展开列表,可以获得关于那些协议的可过滤字段。Relation从可用关系列表中选择关系。ispresent是一元关系,表示如果你选择的字段存在,表达式就为真值。其它关系都为二元关系,需要附加数据(例如:一个值来匹配)来完成。如果你从字段名列表选择一个字段,并选择一个二元关系(例如等于关系\"==\"),你可能需要输入值,也有可能是范围信息。Value在此输入合适的配置值,输入的值同样要符合你选择的fieldname的属性值类型(例如字符串).Predefinedvalues有些协议字段包含预设值可用,这一点跟C语言中的枚举变量类似。如果选择的协议有这样的值定义,你可以在此选择。Range此处作者留空了OK如果你已经建立好了表达式,点击OK即可创建你的过滤字符串Cancel你可以点击Cancle按钮不做任何修改离开AddExpression。。。对话框。6.6.定义,保存过滤器你可以定义过滤器,并给他们标记以便以后使用。这样可以省去回忆、重新输入某些你曾用过的复杂过滤器的时间。定义新的过滤器或修改已经存在的过滤器有两种方法:1、在Capture菜单选择CaptureFilters...;2、在Analyze菜单选择Displayfilter...。Wireshark将会弹出如图6.7“\"捕捉过滤器\"和\"显示过滤器\"对话框”所示话框。注意因为捕捉和显示滤镜的设定义和保存方式几乎完全一样。所以这里放在一起讲,二者之间的不同点会做标记警告你必须用Save来保存你的过滤器,OK或者Apply不会保存过滤器。关闭wireshark时会随之消失图6.7.\"捕捉过滤器\"和\"显示过滤器\"对话框New增加一个新的过滤器到列表中。当前输入的Filtername,Filterstring值将会被使用。如果这些都为空,将会被设置为\"new\"(是说filtername还是说二者都是?)Delete删除选中的过滤器。如果没有过滤器被选中则为灰色Filtername修改当前选择的过滤器的名称注意过滤器名称仅用在此处为了区分方便而已,没有其他用处。你可以将多个过滤器使用同一个名称,但这样会很不方便Filterstring修改当前选中过滤器的的内容。仅适用显示过滤:在输入时进行语法检查。AddExpression仅适用显示过滤:打开增加表达式对话框,辅助创建过滤表达式。详见第6.5节““FilterExpression/过滤表达式”对话框”OK仅适用显示过滤:为当前显示应用选择的过滤器,关闭当前对话框。save保存当前对话框设置。文件位置和格式见???Close关闭当前对话框。将会放弃未保存的设置。6.7.查找包当你捕捉到一些包以后,或者读取以前存储的包的时候,可以很容易的进行查找。从Edit菜单选择FindPacket...菜单项.Wireshark将会弹出图6.8“\"FindPacket/查找包\"对话框”所示对话框.6.7.1.查找包对话框图6.8.\"FindPacket/查找包\"对话框首先你需要选择查找方式:Displayfilter在Filter:输入字段,选择查找方向,点击OK(过滤器方式)例如:查找192.168.0.1发起的三步握手建立连接,使用如下字符:ip.addr==192.168.0.1andtcp.flags.syn显示过滤的详情,参见第6.3节“浏览时过滤包”HexValue在包数据中搜索指定的序列例如,使用\"00:00\"查找下一个包含两个空字节的包数据。String在包中查找字符串,可以指定多种参数输入的查找值将会被进行语法检查。如果语法检查无误,输入框背景色会变成绿色,反之则是红色。你可以指定查找的方向通过:UP向上查找包列表(包编号递减方式)Down向下查找包列表(包编号递增方式)6.7.2.\"FindNext/查找下一个\"命令适用最后一次的查找设置继续查找6.7.3.\"FindPrevious/查找上一个\"命令适用最后一次的设置修改查找方向,继续查找。6.8.到指定的包通过\"Go\"菜单可以很轻松跳转到指定的包6.8.1.\"GOBack\"返回命令使用Goback返回包历史记录,工作方式跟web浏览器的页面历史记录类似6.8.2.\"GoForward/向前\"命令前进到包的历史记录,工作方式跟web浏览器的页面历史记录类似6.8.3.\"GotoPacket/到指定的包\"对话框图6.9.\"GOtopacket/转到指定包\"对话框输入包的编号,点击OK,跳转到指定的包(他妈的我怎么看都是jumpto,怎么成了OK?).6.8.4.\"GotoCorrespondingPacket/到对应的包\"命令如果被选择协议字段指向文件中的另一个包,该命令将会跳转到那个包。注意该协议字段看起来有点像超链接(就像浏览器里的),双击该字段也可以跳转到对应的包。6.8.5.\"GotoFirestPacket/到第一个包\"命令跳到第一个包6.8.6.\"GotoLastPacket/到最后一个包\"命令跳到最后一个包6.9.标记包你可以在包列表面板对包进行标记。被标记的包背景色为黑色,不管原来设置的颜色是怎样的。标记包有助于分析大的包文件时进行查找。警告包标记并没有存储在捕捉文件中或任何其他地方,关闭文件后,所有标记将会丢失。在保存/导出/打印包时,你可以使用包标记控制输出包。标记包以后,可以输出进行区间选择。见第5.8节“包范围选项”对标记包可以进行三项操作Markpacket(toggle)冻结以标记的单个包Markallpackets标记所有包.Unmarkallpackets取消所有标记这些标记功能出现在\"Edit\"菜单。“Markpacket(toggle)”功能在弹出包列表面板弹出上下文菜单同样可以找到。6.10.时间显示格式及参考时间在捕捉包的过程中,每个包都带有时间戳。时间戳会被保存在捕捉文件中,以备将来分析用。关于时间戳,时区以及相关的东西的描述介绍,见第7.3节“时间戳”包列表的时间戳格式预设和精度可在浏览菜单选择,见第3.5节“\"File\"菜单”可用的预置格式如下:DateandTimeofDay:1970-01-0101:02:03.123456包捕捉的绝对日期和时间TimeofDay:01:02:03.123456包捕捉的绝对时间SecondsSinceBeginningofCapture:123.123456相对与文件开始捕捉的时间或第一个时间参考包的到这个包之前的时间。(见第6.10.1节“包参考时间”)SecondsSincePreviousCapturedPacket:1.123456相对前一个捕捉包的时间SecondsSincePreviousDisplayedPacket:1.123456相对前一个显示包的时间(过滤/显示)可用精度(正如你所致的,数字是以10进制形式的)有:Automatic使用载入文件格式具有的时间戳精度。(默认选项)Seconds,Deciseconds,Centiseconds,Milliseconds,MicrosecondsorNanoseconds强制使用你指定的精度。如果实际精度比你指定的低,会在后面自动追加0.如果实际精度比你指定的高。数据会被截尾。精度距离:如果你有个时间戳,显示时使用:“SecondsSincePreviousPacket”,:它的值可能是1.123456.默认会采用\"Automatic\"精度设置,也就是来自libpcap格式文件的固有精度(百万分之一秒)。如果你指定精度为秒,则显示为1,如果你使用。纳秒(nanoseconds),将会显示为1.123456000.6.10.1.包参考时间用户可以为包设置时间参考。时间参考是所有后续包的起算时间。如果你想知道到某一个特定包的时间间隔,会很有用。例如:开始一个新请求。可以在一个包里面设置多个参考时间。警告时间参考不能保存到包文件中,关闭文件后就会丢失。注意时间参考可能仅仅在时间格式为\"SecondsSinceBeginningofCapture\"模式下比较有用。其他时间显示形式下可能要么是不能工作,要么是没作用。要使用时间参考,选择Edit菜单下“TimeReference”项中的一个。详见第3.6节“\"Edit\"菜单”,或者从包列表的右键弹出项选择。SetTimeRefernce(toggle)切换当前包时间参考状态开关FindNext在包列表面板查找下一个时间参考包FindPrevious在包列表面板查找前一个时间参考包图6.10.时间参考举例作为时间参考的包,在time列会有*REF*字符串作为标记(见上图第10个包)。所有后续包都会用最后一个时间参考来显示时间。第7章高级目录7.1.说明7.2.\"FollowTCPStream\"7.2.1.\"FollowTCPStream\"对话框7.3.时间戳7.3.1.Wireshark内置7.3.2.捕捉文件格式7.3.3.准确性7.4.时区7.4.1.正确设置你的计算机的时区7.4.2.Wireshark和时区的关系7.5.重组包7.5.1.什么是重组包7.5.2.如何用Wireshark重组包7.6.名称解析7.6.1.名字解析的流弊7.6.2.以太网名字解析(mac层)7.6.3.IP地址解析(网络层)7.6.4.IPX名称解析(网络层)7.6.5.TCP/UDP端口名解析(传输层)7.7.校检和7.7.1.Wireshark校检和验证7.7.2.Checksumoffloading7.1.说明在本节将介绍Wireshark的一些高级特性7.2.\"FollowTCPStream\"如果你处理TCP协议,想要查看Tcp流中的应用层数据,\"FollowingTCPstreams\"功能将会很有用。如果你项查看telnet流中的密码,或者你想尝试弄明白一个数据流。或者你仅仅只需要一个显示过滤来显示某个TCP流的包。这些都可以通过Wireshark的\"FollowingTCPstreams\"功能来实现。在包列表中选择一个你感兴趣的TCP包,然后选择Wireshark工具栏菜单的\"FollowingTCPStreams\"选项(或者使用包列表鼠标右键的上下文菜单)。然后,Wireshark就会创建合适的显示过滤器,并弹出一个对话框显示TCP流的所有数据。如图7.1“\"FollowTCPStream\"对话框”所示注意值得注意的是:FollowTcpStream会装入一个显示过滤来选择你已经选择的Tcp流的所有包。7.2.1.\"FollowTCPStream\"对话框图7.1.\"FollowTCPStream\"对话框流的内容出现的顺序同他们在网络中出现的顺序一致。从A到B的通信标记为红色,从B到A的通信标记为蓝色。当然,如果你喜欢的话你可以从\"Edit/Preferences\"菜单项的\"Colores\"修改颜色。非打印字符将会被显示为圆点。XXX-Whataboutlinewrapping(maximumlinelength)andCRNLconversions?在捕捉过程中,TCP流不能实时更新。想得到最近的内容需要重新打开对话框。你可以在此对话框执行如下操作:SaveAs以当前选择格式保存流数据。Print以当前选择格式打印流数据。Direction选择流的显示方向(\"Entireconversation\\"datafromAtoBonly\"or\"datafromBtoAonly\").Filteroutthisstream应用一个显示过滤,在显示中排除当前选择的TCP流。Close关闭当前对话框。移除对当前显示过滤的影响。你可以用以下格式浏览流数据。AsCII。在此视图下你可以以ASCII凡是查看数据。当然最适合基于ASCII的协议用,例如HTTP.EBCDIC。Forthebig-ironfreaksoutthere.(不知道这句是什么意思,EBCDIC是IBM公司的字符二进制编码标准。)HEXDump.允许你查看所有数据,可能会占用大量屏幕空间。适合显示二进制协议。CArrays.允许你将流数据导入你自己的C语言程序。RAW。允许你载入原始数据到其他应用程序做进一步分析。显示类似与ASCII设置。但“saveAs”将会保存为二进制文件。7.3.时间戳时间戳,时间戳的精度,等等是在让人感到困惑。本节将向你介绍介绍Wireshark处理时间戳时都发生了什么。在包被捕捉时,每个包在进入时都被加上时间戳,这个时间戳将会保存在捕捉文件中,所以他们也可以在以后分析时使用。那么说,时间戳是从哪里来的呢?是捕捉的时候产生的。Wireshark从libpcap(WinPcap)libraray(库)中获得时间戳。而libpcap(winpcap)又是从操作系统内核获得的时间。如果捕捉数据是从捕捉文件载入的,很显然Wireshark从文件中获得时间戳数据。7.3.1.Wireshark内置Wireshak内置的格式使用的时间戳格式由日期(从1.1.1970开始)和时间(从凌晨起,纳秒(10亿分之一秒)为单位)组成。你可以调整Wireshark在包列表的时间戳显示方式。见第3.7节“\"View\"菜单”的\"TimeDisplayFormat\"项。当读取或写入捕捉文件时,Wireshark按需要在内置格式和其他捕捉文件格式间进行时间戳转换。捕捉时,Wireshark使用libpcap(WinPcap)捕捉库(支持纳秒精度)。除非你在专用的捕捉硬件上进行捕捉,一般这样的精度已经足够了。7.3.2.捕捉文件格式Wireshark支持的捕捉文件格式都带有时间戳。不同的捕捉文件格式的时间戳精度有很大不同,从秒\"0\"到纳秒\"0.123456789\"都有。大多数格式捕捉文件存储的时间戳都是固定精度的,些捕捉文件格式甚至存储了时间戳精度本身(可能是出于方便)。大多数被Wireshark(和或多其他工具)使用的libpcap捕捉文件格式都仅支持固定的百万分之一固定精度\"0.123456\"注意写入数据到一个实际支持精度比你写入数据精度低的格式文件中,可能会导致数据丢失。例如:如果你载入一个纳秒精度的捕捉文件,然后将其存储为libpcap文件(百万分之一秒精度)。Wireshark很明显会将时间精度调整为百万分之一秒。7.3.3.准确性经常有人问:\"Wireshark的时间戳的准确性如何?\"。实际上,Wireshark自身不会创建时间戳,而是通过其他的地方得到时间并显示他们。所以,准确性取决于你实用的捕捉系统(操作系统,性能。。。)。因此以上问题很难通过通常的途径回答。注意通常USB连接的网络适配器提供的精度非常差。入口的实际上“占用很长的时间和走很曲折的路”才能穿过USB数据线到系统内核。而数据包只有被系统内核处理过以后才会打上时间戳,这种时间戳机制将会导致准确性大大降低。结论:如果你需要精确的时间戳,请不要使用USB连接的网卡!(笔者的注脚:有没有网卡在USB硬件上提前加上时间戳的?)[17]sidebarceshi译者注:前文提到,时间戳是Wireshark用库获取的时间加在包上的,不知为何有此一问。难道以后要识别硬件是否有时间戳功能。[17]7.4.时区当你在各地旅行时,会碰到时区的困扰。如果你从其他时区得到捕捉文件,时区问题会给你带来更大的困扰:-)首先,下面有两个原因说明你为什么完全不需要考虑时区问题:你仅对两个包的时间戳的差别有兴趣,你并不需要了解捕捉包的实际的日期和时间(通常是这样)。很可能你不会得到不同与你所在时区的包文件,所以你基本上碰不到时区问题。例如:你的团队的所有都和你工作在一个时区。表7.1.什么是时区?人们希望时间和日升日落对应。早成应该是6点钟,天黑应该在20:00.这些时间又随着四季变化。如果地球上每个人使用同样的全局时间,将只有一小部分人的日落和时间对应,这将会导致混乱。因此,人们将地球划分为不同的区域,每个区域都有一个本地时间对应本地的日升日落。时区基于UTC(CoordinatedUniversalTime)或者Zulu时间(军事和航空)。旧有的GTM(格林尼治时间)已不再使用,因为它有少许误差(与UTC相比达到0.9秒)。UTC起始时区等于0(位于格林威治,英格兰),所有的时区和它的偏在在-12~+14小时之间!例如:如果你住在柏林,你的时区将比UTC早1小时,所以你的时区应该是\"+1\"(与UTC时间比较的差别,以小时为单位)。柏林的3点和UTC的两点钟表示同一个时刻。有些地区要加以注意,因为那里的时区不是用整小时的。(比如:新德里的时区是UTC+05:30)更多相关信息见http://en.wikipedia.org/wiki/time_zone和http://en.wikipedia.org/wiki/Coordinated_Universal_Time。表7.2.什么是时DST?DaylightSavingTime(DST),又称为夏令时,目的是在夏天的几个月里“拯救”白天的时间(夏季白昼较长,如果按照传统的作息时间,比较可惜,不过我不认为)。为了达到这个目的,很多国家(但不是所有的)增加一个DST小时到UTC中。所以你还得加个小时(极少数地方甚至是2小时)的时差来计算你的时区。不幸的是,DST并未在全世界范围内被启用。你可能同样注意到,北半球和南半球的夏令时是刚好相反的(比如:欧洲是夏季时,澳大利亚则是冬季)。注意:不管DST怎样,UTC在全年都是一致的。更多相关信息见http://en.wikipedia.org/wiki/Daylight_saving.7.4.1.正确设置你的计算机的时区7.4.2.Wireshark和时区的关系7.5.合并包7.5.1.什么是合并包网络协议经常需要传输较大的数据块,在传输时,底层协议可能不支持这样大的数据块(比如网络包大小的限制),或者是像像TCP一样的流数据,TCP流完全不知道数据分块情况。(原文为:orisstream-basedlikeTCP,whichdoesn'tknowdatachunksatall.)在这种情况下,网络协议必须确定数据块分段的边界,并(如果有必要)将数据块分割为多个包。很明显在接受端也需要有找到数据块分段边界的机制。提示在Wireshark里面,这个机制/方法被称为合并/reasembling,在特定协议的描述可能不尽相同(例如:desegmentation,defragmentation,...)7.5.2.如何用Wireshark合并包对那些可以被Wireshark识别的协议,Wireshark通常处理过程为:查找、解码、显示数据块。Wireshark会尝试查找数据块对应的包,在\"PacketBytes\"面板的附加页面显示合并以后的数据。(关于“PacketBytes”面板的详细介绍,见第4.7节“\"View\"菜单”)图7.2.带有合并包附加选项卡\"PacketBytes面板\"注意合并可能发生在多个协议层,所以在\"PacketBytes\"面板可能会见到多个附加页选项卡注意你会在数据块的最后一个包看到合并后的数据。以HTTPGet应答为例:请求数据(例如一个HTML页面)返回时。Wireshark会显示一个16进制转储数据在\"PacketBytes\"面板的一个名为\"Uncompressedentitybody\"新选项卡。默认情况下,首选项中合并功能被设置为允许。在2005年9月之前默认值是不允许。如果你的首选项是在200年9月之前设置的,你得确认一下,合并包选项的设置。合并包对分析网络包作用非常大。允许和禁止合并包设置对协议来说还有两项要求。下层的协议(如:TCP)必须支持合并。通常协议支持合并与否都是通过协议的参数设置的。高层协议协议(如:HTTP)必须使用合并机制来合并分片的数据。这些也同样可以通过协议参数来允许或禁止。在设置高层协议的时候tooltip会提醒你同样需要考虑低层的协议设置。7.6.名称解析名字解析尝试将数字地址解析成适合人们阅读格式。有两种方法可以完成这项工作:通过系统/网络服务(例如获取主机名)和/或Wireshark指定的赋值文件。关于通过赋值文件进行解析的详情,可以参见???名字解析可以分协议层进行允许,禁止设置。7.6.1.名字解析的流弊名字解析在使用Wireshark时有重要价值,甚至可以节约大量时间。不幸的是,名字解析也有它自己的缺点。名字解析经常会不可用。服务器可能不知道需要被解析的名字,或者服务器不可用。又或者需要解析的名字在赋值配置文件中找不到。名字解析并没有存储在捕捉文件或其他什么地方。因此你以后打开捕捉文件或者在其他设备上打开文件有可能发现名字解析不可用。每次打开捕捉文件可能会发现部分地址略微发生变化,也许仅仅是因为无法连接到名字解析服务器(之前还是可以连接的)DNS可能会增加额外的包到Wireshark中。你会在包文件中看到由Wireshark请求DNS服务生成的包进出你的机器。解析名称被Wireshark缓存。这对设备性能有一定需求。但是,如果名字解析信息在wireshark运行时发生变化,wireshark不会注意到这个变化,因为它是从缓存进行解析的。如果这些信息在Wireshark运行时变化了,例如获取一个新DHCP租约,Wireshark不会注意到。(这些是针对DNS还是所有信息?有多少机器使用动态dns注册?)提示名字解析在包列表填入时已经完成。如果一个包填入包列表以后被解析,包列表的内容不会立即更改,相反解析结果会被缓存,你可以使用\"View/Reload\"重建包列表,来正确显示名字解析结果。但在捕捉过程中这样做没有效果。7.6.2.以太网名字解析(mac层)尝试将MAC地址(e.g.00:09:5b:01:02:03)解析为适合阅读的地址(\"Humanreadable\")ARP名字解析(系统服务)Wireshark会向操作系统发出请求,将以太网地址转换为对应的IP地址(e.g.00:09:5b:01:02:03->192.168.0.1)Ethernetcodes(ethersfile)如果ARP解析错误,Wireshark会尝试将以太网地址解析为已知设备名。这种解析需要用户指定一个ethers文件为mac地址分配名称。(e.g.00:09:5b:01:02:03->homerouter).Ethernetmanufacturercodes(manuffile)如果ARP解析和ethers文件都无法成功解析,Wireshark会尝试转换mac地址的前三个字节为厂商名的缩写。mac地址的前三个字节是IEEE为各厂商分配的独立地址(通过前三个字节可以得出每个网络设备的供应商,当然这些也是可以被篡改的。,)(e.g.00:09:5b:01:02:03->Netgear_01:02:03).7.6.3.IP地址解析(网络层)将IP地址(e.g.216.239.37.99)转换为适合阅读的地址/\"Humanreadable\"DNS/ADNSnameresolution(system/libraryservice)Wireshark会向操作系统(或ADSNlibrary地址-名称解析词典?)请求,将IP地址转换为相关联的主机名(e.g.216.239.37.99->www.1.google.com).此时DNS服务正在同步请求DNS服务器,所以Wireshark会停止相应直到DNS请求的响应返回。如果可能的话,你可以考虑使用ADNSlibrary(这样可以避免等待网络相应。)警告如果名称解析服务器不可用,允许网络名称解析使Wireshark明显变慢,因为wireshark会等待名字解析结果直到超时。在这种情况你应该使用ADNS。DNSvs.ADNS这里是一个简短的对比:两个都是用来转换ip地址为其他易读的地址\"Humanreadable\"(域名)。通常DNS用gethostname()将地址转换为名称。通常首先是查询hosts文件(e.g./etc/hosts,/windows/system32/drivers/etc/hosts)看能否找到匹配实体。如果找不到,会向指定的DNS服务器查询。DNS和ADNS真正的区别在于等待DNS服务器名字解析。gethost()会一直等待知道名字被解析或者返回错误。如果DNS服务器不可用,可能会占用很长时间(好几秒)。ADNS服务会略微有点不同。它也同样向DNS服务器发出请求,但不会等待服务器应答。它会立即相应Wireshark。此时的地址(和后续地址)在ADNS得到结果前不会显示解析名称。如前文书中说道,解析结果被保存在缓存中,你需要使用\"View/Reload\"菜单更新这些字段来显示解析名称。hostsnameresolution(hostsfile)如果dns解析不成功,Wireshark会尝试使用用户提供的主机文件将IP地址转换为对应的主机名。(e.g.216.239.37.99->www.google.com)7.6.4.IPX名称解析(网络层)ipxnetnameresolution(ipxnetsfile)(笔者未作解释)7.6.5.TCP/UDP端口名解析(传输层)翻译TCP/UDP端口(e.g.80)为更加易读的玩意\"humanreadable\"[15]TCP/UDPportconversion(systemservice)Wireshark会向操作系统发出请求,转换TCP/UDP端口为已知名称(e.g.80->http)。XXX-mentiontheroleofthe/etc/servicesfile(butdon'tforgetthefilesandfolderssection)![15]应该是指将端口翻译为服务名7.7.校检和很多协议使用校检和来验证数据的完整性/正确性。提示应用校检和在这里也被成为redundancycheck(冗余校检?)校检和是做什么的?校验和是用来验证传输数据或存储数据的数据部分的正确性。一个检验和是数据部分进行摘要计算的出的数字。网络数据在传输过程中经常会产生错误,例如数据错误,字节重复等。数据接收方可能。正因为传输过程中会伴随错误,网络协议会经常使用校验和检测这些错误。发送方会对数据进行检验和计算,并将数据和检验和一起发送。接收方使用同样的方法计算数据部分的校验和,如果收到的校验和计算出来的校验和不匹配,就表示数据有错误。有些校验和方法可以通过计算得出发生需要被修复错误的数据位置,并修复(简单的)错误。如果那些错误无法修复,接收方会丢弃错误的数据包。根据协议的不同,数据丢失会仅仅被丢弃,也有可能发送端会根据数据丢失情况重传需要的数据包。使用校验和可以大量减少传输错误数量。但任何检验和算法都无法确保100%检测到所有错误,依然有少量的错误会无法被检测到。校验和的算法有很多,例如最经常被使用的检验和算法CRC32(循环冗余校验)。特的的网络协议选择的校验算法取决于希望网络媒介达到的出错率上限、错误检测的重要性,处理载入计算的性能,其他方面需要的性能。关于检验和的更多信息可以参考:http://en.wikipedia.org/wiki/Checksum7.7.1.Wireshark校检和验证Wireshark会对很多协议进行检验和验证,如:TCP、IP。。。它会和\"normalreceiver\"做一样的计算.然后在包详情面板显示检验和字段的内容,e.g.:[correct],[invalid,mustbe0x12345678]以及其他类似的内容。如果校验和验证选项被打开或正在进行校验和检测,合并包特性不会被执行。这是为了避免错误的的连接数据扰乱内部数据。7.7.2.Checksumoffloading检验和计算可能由网络网络驱动,协议驱动,甚至是硬件完成。例如:以太网传输硬件计算以太网循环容易校验,接受硬件验证这个校验。如果接受验证发现错误,Wireshark将不会接收到这个包,以太网硬件会直接丢弃这个包。高层校验通常是由协议执行,并将完成后的包转交给硬件。比较新的网络硬件可以执行一些高级功能,如IP检验和计算,这被成为checksumoffloading。网络驱动不会计算校验和,只是简单将校验和字段留空或填入无效信息,交给硬件计算。注意checksumoffloading经常会导致混乱,因为网络包在检验和计算之前转交给Wireshark。Wireshark得到包的检验和字段是空的,必然会显示检验和错误,尽管这个包在从网络硬件发出的时候是带有校验和的。Checksumoffloading会引起混淆,让你屏幕上看到大量的[invalid]信息,引起你的反感。前面提到过,错误的检验和会导致包无法合并,更难进行包数据分析。你可以采取两种方法避免Checksumoffloading问题在驱动程序上关闭checksumoffloading选项,如果可用的话。[16]通过首选项关闭Wireshark上特定协议的校验和验证。[16]在Windows平台如果驱动支持,应该是计算机管理->设备管理器->网络适配器->对应网卡的属性-高级选项