wireshark使用方法Word文档格式.docx
《wireshark使用方法Word文档格式.docx》由会员分享,可在线阅读,更多相关《wireshark使用方法Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
4.1.1常用抓包过滤命令
为防止抓包文件过大而影响分析效果,可在抓包阶段就设置抓包过滤(在CaptureFilter中输入需要过滤的协议或命令)。
现将常用抓包过滤命令总结如下:
抓包过滤要求
抓包过滤命令
MAC地址为00:
18:
8b:
ba:
86:
d6的报文
etherhost00:
d6
IP地址为192.168.1.10的报文
host192.168.1.10
VLANid为100的报文
vlan100
ARP报文
arp
PPPoE报文
pppoed
DHCP报文
udpport67orudpport68
IGMP报文
ipmulticastandnotudp
megaco信令报文(通常端口为2944)
udpport2944
sip信令报文(通常端口为5060)
udpport5060
SCTP报文(通常端口为9900)
udpport9900
Ethereal截包过滤条件,通过and和or,将一系列的primitive表达式连接在一起,有时可在primitive表达式前用not。
[not]primitive[and|or[not]primitive…]
例一:
tcpport23andhost10.0.0.5。
这个例子表示只截取发给主机10.0.0.5的telnet数据包或主机10.0.0.5发出的telnet数据包。
例二:
tcpport23andnothost10.0.0.5。
这个例子表示截取所有的telnet数据包,除了主机10.0.0.5收发的telnet数据包。
Primitive表达式如下:
●[src|dst]host<
host>
通过主机IP地址/名称过滤截取的数据包。
也可以在前面加关键字[src|dst]来限制是目的或源地址。
●ether[src|dst]host<
ehost>
同上,只是通过MAC地址来过滤。
●gatewayhost<
截取将该主机作为网关的包,即MAC地址是主机的地址,而包的源和目的IP都不是该主机的IP
●[src|dst]net<
net>
[{mask<
mask>
}|{len<
len>
}]
●[tcp|udp][src|dst]port<
port>
通过TCP/UDP的端口过滤
●less|greater<
length>
截取数据保小于、等于指定的大小;
或大于、等于指定的大小。
●ip|etherproto<
protocol>
IP/Ethernet层的指定协议。
●ether|ipbroadcast|multicast截取ether/ip的广播包。
●<
expr>
relop<
允许建立一个更复杂的表达式,可以通过它来选取数据包的字节或字节围来过滤。
4.2分析
为便于分析,可在查看抓包文件时设置过滤。
4.2.1ADSL
如检查PC(MAC地址为00:
06:
5b:
e1:
96:
e9)的PPPoE拨号过程,可在Filter中输入eth.addr==00:
e9and(pppoedorppp)。
一旦截取数据包后,或打开以前截取的数据包文件,显示如图2.12。
显示有三个视图分区:
“PacketList”、“PacketDetails”、“Packetbytes”。
“PacketList”用于显示所数据包,如果这是有显示过滤条件,显示的是满足该条件的所有包。
“PacketDetails”用于显示在“PacketList”视图中选定的数据包的详细信息。
“PacketBytes”以十六进制方式显示“PacketList”视图中选定的数据包的信息。
4.2.2AG
如检查AG中2个端口(如tdm/1与tdm/2)之间的通话消息,则可在Filter输入megaco先进行H.248信令过滤。
重点查看AG对软交换chooseoneadd消息的reply,以明确AG为这2个端口分配的context号和localrtp端口号。
如上图,tdm/1的context号为310,localrtp端口号为40034;
tdm/2的context号为275,localrtp端口号为40036。
如需过滤这两个端口的H.248信令,则在Filter中输入megaco.termid=="
tdm/1"
ormegaco.termid=="
tdm/2"
ormegaco.context==310ormegaco.context==275。
除了过滤这2个端口的H.248信令,如还需要过滤RTP,则在Filter中输入megaco.termid=="
ormegaco.context==310ormegaco.context==275orudp.port==40034orudp.port==40036。
点击菜单Statistics->
RTP->
Showallstreams,打开RTPStreams窗口。
其中列出抓包文件中所有的RTPStream。
选中要查看的stream,再点击Analyze,打开RTPStreamAnalysis窗口,进一步检查该stream的丢包率,jitter等。
点击Savepayload…则可将该RTPStream保存为声音文件。
(WiresharkVersion1.0.3版本将RTP包导成声音文件时有bug,建议尝试用Ethereal完成此操作。
)
显示过滤表达式
Ethereal提供了简单但是很强大的过滤语言,通过它我们可以建立复杂的显示过滤表达式。
我们可以比较数据包的数据值,也可以将多个表达式合成一个更复杂的表达式。
接下来将详细介绍。
显示过滤域(Displayfilterfields)
在“Packetdetails”视图中的每一个域能够用作一个过滤字符串(filterstring),这样,就只显示存在该域的数据包。
例如:
过滤字符串:
tcp,这就只显示所有tcp协议的包。
比较表达式
我们可以创建一个比较值的显示过滤条件,通过使用不同的比较操作符。
它们显示在表2.11
英语(English)
类C(C-like)
描述和举例(DescriptionandExample)
eq
==
等于ip.addr==10.50.56.61
ne
!
=
不等于ip.addr!
=10.50.56.61
gt
>
大于frame.pkt_len>
10
lt
<
小于frame.pkt_len<
ge
大于或等于frame.pkt_lenge0x100
le
小于或等于frame.pke_len<
=0x20
所有的域(Field)都是有类型,见表2.12
类型
举例
Unsignedinteger(8-bit,16bit,24bit,32bit)
无符号整型可以表示为十进制、八进制、十六进制。
下面的表达式是等同的。
ip.lenle1500
ip.lenle02734
ip.lenle0x436
Signedinteger(8-bit,16-bit,24-bit,32-bit)
Boolean
Ethernetaddress(6bytes)
Eth.addr==ff.ff.ff.ff.ff.ff
Ipv4address
Ip.addr==10.50.56.61
Ipv6address
IPXnetworknumber
String(text)
Double-precisionfloatingpointnumber
我们经常使用这样的一个过滤条件:
ip.addr=1.2.3.4,它将只显示包含ip地址1.2.3.4的所有包。
我们理所当然的认为ip.addr!
=1.2.3.4的过滤条件将不会显示ip地址为1.2.3.4的所有包。
其实不然。
它说表达的意思为:
“数据包有一个ip.addr的域值不等于1.2.3.4”(thepacketcontainsafieldnamedip.addrwithavaluedifferentfrom1.2.3.4)
如果我们想过滤所有包含ip地址为1.2.3.4的数据包,我们必须将表达式写为:
(ip.addr==1.2.3.4)。
组合表达式
通过逻辑操作符,我们可以组合过滤条件表达式。
逻辑操作符如表2.13
英语(Englishi)
描述和举例(Descriptionandexample)
And
&
LogicalANDIp.addr==10.0.0.5andtcp.flags.fin
Or
||
LogicalORIp.addr==10.0.0.5orip.addr==192.1.1.1
Xor
^^
LogicalXORTr.dest[0:
3]==0.6.29xortr.src[0:
3]==0.6.29Tr(tokenringMAC)
Not
LogicalNOTNotllc(Logical-linkcontrolt)
[…]
SubstringOperator
Ethereal允许我们选取一个子序列。
下面例子中的eth=00:
00.83:
00:
20:
20
eth.src[0:
3]==00:
83
上面的例子用了n:
m格式定义一个围,n表示开始的位置,m表示这个围的长度。
eth.src[1-2]==00:
上面的例子用了n-m格式定义一个围,n表示开始的位置,m表示结束的位置。
eth.src[:
4]==00:
83:
00
上面的例子用了:
m格式定义一个围,等价为0:
m。
eth.src[4:
]==20:
上面的例子用了m:
格式定义一个围,表示从eth序列位置m到其结束的子序列。
eth.src[2]==83
上面的例子用n的格式表示一个围。
这个例子表示在n位置的值。
3,1-2,:
4,4:
,2]==00:
Ethereal允许我们将各种独立的子集组合成另外一个独立的围集,如上例。
“FilterExpression”对话框
当我们很熟练的使用ethereal的过滤系统,很容易就写出一个过滤表达式。
但如果是一ethereal初学者或者对协议不是很熟悉,这就比较困难。
我们这时可以通过“FilterExpression”对话框来写过滤条件。
如图2.14
“FilterExpression”对话框:
树形域名(Fieldname)列表(协议排序);
关系运算符(relation)选择列表。
●FiledName:
从协议域名树中选择一个协议域名。
每一个协议位于最上部,并带有可设为过滤条件的域。
通过点击协议名称后的“+”,我们可以看到一系列的可设为过滤条件的域。
●Relation:
选择一个关系运算符。
“ispresent”是一元(unary)关系运算符。
如果被选的域名存在数据包中,就是true;
其它的关系运算符是二元的(binary),还需要一个数据来结束这个表达式(如,需要一个值(Value)来配合)。
●Value:
我们可以在“Value”文本框中输入合适的值。
注意数据类型应该与域名(fieldname)匹配。
●Range:
相当于SubString运算符[]。
时间显示格式
当我们截包时,ethereal给每一个数据包一个时间戳(timestamped)。
当我们显示数据包时,我们可以设定时间戳的显示形式。
如图2.15。
●TimeofDay
●DateandTimeofDay
●SecondsSinceBeginningofCapture
●SecondsSincePreviousPacket
过滤成248协议保存文件
如果只需要抓取H248信令,点击Capture选择Option出现如下示图:
图2.16CaptureOption
点击CaptureFilter出现下面示图:
图2.17CaptureFilter
选择“New”
在下面Filtername里输入megaco,在Filterstring里输入:
udpport2944andport2944(megaco的过滤条件)
图2.18设置megaco的过滤条件
点击OK就创建好了过滤megaco的规则,这样直接就可以抓包,只会抓到H248的信令消息。
信令过滤与保存
由于同一MG下仍然可能有多个用户在同时使用,为了显示我们关注的用户,可以在察看时进行条件过滤,例如:
megaco.termid==USER00600800031||megaco.termid==RTP00200300060
由于在抓包软件中察看信令不大方便,还可以把信令导出为文本格式,如下图;
需要注意的是,抓包软件不可能完全智能,过滤时有可能滤掉一些东西,例如某些报错的响应之类,所以应针对具体故障现象结合原始报文来看。
丢包与网络抖动
利用抓包软件的分析功能,可以比较容易的看出媒体流是否有丢包,如下图,在RTP菜单中,点击“ShowAllStreams”即可看到丢包。
对于较小的丢包,可以在两端配置冗余来规避。
但根本上应排查网络问题。
图2.19查看丢包
类似的,RTP菜单“StreamAnalysis”即可看到网络时延是否稳定;
图2.110查看网络时延
这里所说的网络抖动在WireShark中可以通过Delta的值来衡量,Delta是相邻两个媒体包之间的间隔值。
因为网关发送媒体包时的打包间隔是固定的,在没有网络抖动的情况下,接收侧网关收到的媒体流的Delta也应该是一个定值。
当有网络抖动时,Delta的值会随着网络抖动而变化。
媒体流还原
对捕获的报文除了分析协议运作外,还可以还原成音频流进行问题判断。
如果打开报文看到的媒体流类型是UDP,可以右击任意UDP报文,选“DecodeAs”—端口选“Both”,类型选RTP,即可解码为RTP流。
然后在RTP菜单(Statistics或Telephony菜单下)中,选择”showAllStreams”,在弹出的窗口中选中其中某次媒体流交互(根据交互的IP地址来选),点”Analyze”分析,对分析的结果可以”SavePayload”保存为.au等音频格式进行播放。
也可以保存为raw(.pcm)格式用AdobeAudition软件进行dtmf/传真/modem信号分析。
图2.111媒体流还原
对于T.38传真,点击菜单Statistics->
VoIPCalls检查T.38的消息流程。
对于2833,点击菜单Edit->
Preferences…,根据AG中2833配置的payloadtype修改Wireshark中的RTPEvent设置,然后再检查抓包中对应的2833包。
对于RFC2198RTP冗余,点击菜单Edit->
Preferences…,根据AG中RTP冗余配置的payloadtype修改Wireshark中的RTP设置,然后再检查抓包中对应的RTP包。
(Ethereal不支持该Feature。
4.3保存
点击菜单File->
Saveas…,保存抓包文件。
可点击Displayed对只在Wireshark窗口中被过滤显示的包进行保存。
附录
如果Dell笔记本无法抓取带VLANTag的包,请按如下步骤修改注册表。
1.确保网卡版本在7.86以上。
如果网卡版本低于7.86,需要先将网卡驱动升版,请到.broadcom./drivers/downloaddrivers.php下载更新的驱动程序。
2.运行注册表编辑程序regedit。
3.在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet下搜索TxCoalescingTicks,并确保该组为唯一的注册表项组。
4.在该注册表项组右键创建类型为REG_SZ,名称为PreserveVlanInfoInRxPacket的注册表项,并将其值设置为1。
5.重启Windows确保设置生效。
文件结束
Endoffile