9.2. 从命令行启动Wireshark

Wireshark支持从命令行启动,同样也可以从大多数窗口管理软件启动。这节我们看看如何从命令行启动。

Wireshark支持丰富的命令行参数。要想看看都有那些参数,在命令行键入Wireshark -h就会显示帮助信息(以及其他相关的)。详细参数列表见例 9.1 “Wireshark帮助信息”

例 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>

设置显示时间戳格式。可用的格式有

  • r 相对的,设置所有包时间戳显示为相对于第一个包的时间。

  • a absolute,设置所有包显示为绝对时间。

  • ad 绝对日期,设置所有包显示为绝对日期时间。

  • d delta 设置时间戳显示为相对于前一个包的时间

  • e epoch 设置时间戳显示为从epoch起的妙数(1970年1月1日 00:00:00起)

-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的多种类型的统计信息,显示结果在实时更新的窗口。笔者注:在此处增加更多的细节