第1章常用操作方法和工具介绍
1.1 镜像抓包工具
现场人员进行故障处理,有时需要抓数据包进行分析。本节介绍终端的抓包方法,用于指导现场工程师进行操作。
抓包工具很多,有Ethreal,WireShark,Sniffer等。其中Ethreal和WireShark较为常见。由于Wireshark 和Ethreal工具为同一产品的不同版本,并且Ethreal使用比较广泛版本比较新。本节主要介绍Ethreal 的使用方法。
1.1.1 简介
在这节,将介绍怎样通过Ethereal截包;怎样通过Ethereal观察包;在Ethereal怎样过滤包;怎样分析媒体包;还有其它功能。
1.1.2 截包
我们通过选择“Capture”菜单中的“Start”子菜单或主工具条相对应的项来截包。弹出“Caputure Options”
对话框,如图1.1-1
图  1.1-1 抓包开始选项
1.1.
2.1 截包参数的设定
Interface:这项用于指定截包的网卡。
Link-layer header type:指定链路层包的类型,一般使用默认值。
Buffer size(n megabyte(s)):用于定义Ethereal用于截包的缓冲,当缓冲写满后,就将截的数据写道磁盘上。如果遇到ethereal丢包现象,将该缓冲尽量增大。
Capture packets in promiscuous mode:截包时,Ethereal将网口置于混杂模式。如果没有配置这项,Ethereal只能截取该PC发送和接收的包(而不是同一LAN上的所有包)。
Limit each packet to n bytes:定义Ethereal截取包的最大数据数,大于这个值的数据包将被丢掉。
默认为65535。
1.1.
2.2 截包过滤条件的设定
Ethereal 截包过滤条件,通过and 和or,将一系列的primitive 表达式连接在一起,有时可在primitive 表达式前用not。
[not ]primitive [and|or [not] primitive…]
例一:tcp port 23 and host 10.0.0.5。
这个例子表示只截取发给主机10.0.0.5的telnet数据包或主机10.0.0.5发出的telnet数据包。
字符串长度工具例二:tcp port 23 and not host 10.0.0.5。
这个例子表示截取所有的telnet数据包,除了主机10.0.0.5收发的telnet数据包。
Primitive表达式如下:
●[src|dst] host <host> 通过主机IP地址/名称过滤截取的数据包。也可以在前面加关键字
[src|dst]来限制是目的或源地址。
●ether [src|dst] host <ehost> 同上,只是通过MAC地址来过滤。
●gateway host <host> 截取将该主机作为网关的包,即MAC地址是主机的地址,而包的源
和目的IP都不是该主机的IP
●[src|dst] net <net>[{mask<mask>}|{len<len>}]
●[tcp|udp] [src|dst] port <port> 通过TCP/UDP的端口过滤
●less|greater <length> 截取数据保小于、等于指定的大小;或大于、等于指定的大小。
●ip|ether proto <protocol> IP/Ethernet层的指定协议。
●ether|ip broadcast|multicast 截取ether/ip的广播包。
●<expr> relop <expr> 允许建立一个更复杂的表达式,可以通过它来选取数据包的字节或字
节范围来过滤。
1.1.3 用Ethereal分析包
1.1.3.1 观察截取的数据包
一旦截取数据包后,或打开以前截取的数据包文件,显示如图  1.1-2。显示有三个视图分区:“Packet List”、“Packet Details”、“Packet bytes”。
“Packet List”用于显示所数据包,如果这是有显示过滤条件,显示的是满足该条件的所有包。
“Packet Details ”用于显示在“Packet List ”视图中选定的数据包的详细信息。 “Packet Bytes ”以十六进制方式显示“Packet List ”视图中选定的数据包的信息。
图 1.1-2  抓包截图
1.1.3.2 观察数据包时过滤条件的设定
Ethereal 有两种过滤条件语言,一种时截包过滤,这在前面已经介绍过;另一种过滤语言,用于显示包过滤。
可以通过以下方式选择我们需要得数据包: ● 协议(Protocol ) ● 域(Field )是否存在 ●
在域(Field )之间比较
还有很多其它得方式如图 1.1-3显示得为TCP 包,并且源端口为2950
图  1.1-3 过滤条件
1.1.4 显示过滤表达式
Ethereal提供了简单但是很强大的过滤语言,通过它我们可以建立复杂的显示过滤表达式。我们可以比较数据包的数据值,也可以将多个表达式合成一个更复杂的表达式。接下来将详细介绍。
显示过滤域(Display filter fields)
在“Packet details”视图中的每一个域能够用作一个过滤字符串(filter string),这样,就只显示存在该域的数据包。例如:过滤字符串:tcp,这就只显示所有tcp协议的包。
比较表达式
我们可以创建一个比较值的显示过滤条件,通过使用不同的比较操作符。它们显示在表1.1-1
表  1.1-1 比较值的显示过滤条件
所有的域(Field)都是有类型,见表1.1-2
表  1.1-2 显示过滤域的类型(Display Filter Field Type)
我们经常使用这样的一个过滤条件: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”(the packet contains a field named ip.addr with a value different from 1.2.3.4)
如果我们想过滤所有包含ip地址为1.2.3.4的数据包,我们必须将表达式写为:!(ip.addr==1.2.3.4)。
组合表达式
通过逻辑操作符,我们可以组合过滤条件表达式。逻辑操作符如表1.1-3.
表  1.1-3 逻辑操作符

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。