抓包工具的运用

本文介绍Ethereal抓包工具的基本使用方法,包括参数设定、抓包及过滤技巧,以及如何分析抓取的数据包。适用于网络故障排查、性能优化等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


抓包工具Ethereal的基本使用
这是网上热心人写的教程,我实践了一下,很简单,不过基本的工作是够用了,我暂且整理整理。
完全可以按照步骤进行基本的抓包。

1.    使用前参数设定——capture 选项设置

interface:  指定在哪个接口(网卡)上抓包。一般情况下都是单网卡,使用缺省。
limit each packet:  限制每个包的大小,缺省情况不限制
capture packets in promiscuous mode:是否打开混杂模式。如果打开,抓取所有的数据包。一般情况下只需要监听本机收到或者发出的包,因此应该关闭这个选项。
filter: 过滤器。只抓取满足过滤规则的包(暂时略过,在主界面上进行,比较方便)
file: 如果需要将抓到的包写到文件中,在这里输入文件名称。
use ring buffer: 是否使用循环缓冲。缺省情况下不使用,即一直抓包。注意,循环缓冲只有在写文件的时候才有效。如果使用了循环缓冲,还需要设置文件的数目,文件多大时回卷

其他的项选择缺省的就可以了

2. 使用抓包

2.1直接使用
     启动ethreal以后,选择菜单capature->start,开始抓包,按stop结束抓包。抓的包就会显示在面板中,并且已经分析好了。

     注意:该方法十分简单,但是却没有进行过滤,抓的包过多,对分析问题不太方便。

2.2过滤器抓包

2.2.1  基本结构是:
[not] primitive [and|or [not] primitive ...]

在抓包完成以后,显示过滤器可以用来找到你感兴趣的包,可以根据
1)协议
2)是否存在某个域        
3)域值
4)域值之间的比较
来查找你感兴趣的包。

举个例子,如果你只想查看使用tcp协议的包,在ethereal窗口的左下角的filter中输入tcp,然后回车,ethereal就会只显示tcp协议的包。如下图所示
值比较表达式

2.2.2  过滤器操作符
可以使用下面的操作符来构造显示过滤器

自然语言 类c表示   举例
eq  ==   ip.addr==10.1.10.20
ne  !=   ip.addr!=10.1.10.20
gt  >   frame.pkt_len>10
lt 
ge  >=   frame.pkt_len>=10
le 

表达式组合
可以使用下面的逻辑操作符将表达式组合起来
自然语言 类c表示   举例
and  &&   逻辑与,比如ip.addr=10.1.10.20&&tcp.flag.fin
or  ||   逻辑或,比如ip.addr=10.1.10.20||ip.addr=10.1.10.21
xor  ^^   异或,如tr.dst[0:3] == 0.6.29 xor tr.src[0:3] ==
not  !   逻辑非,如 !llc

例如:

我想抓取ip地址是192.168.2.10的主机,它所接收收或发送的所有的http报文,那么合适的显示filter(过滤器)就是

请记住一个诀窍:只好在filter的背景是绿色,就证明你设定的filter是合乎规定的,但是当背景是红色时,就说明你设定的filter是ethereal不允许的,是不对的。如


所有的过滤器(filter)都可以在filter旁边的expression…中选取。

3.  升级抓包软件——在ethereal使用协议插件

ethereal能够支持许多协议,但有些协议需要安装插件以后才能解,比如h.323

以h.323协议为例,首先下载ethereal的h.323插件,下载地址
http://www.voice2sniff.org/
下载完了以后将文件(h323.dll)解压到ethereal安装目录的plugin/0.9.x目录下面,比如我的是0.9.11
然后,需要进行一下设置
1)启动ethereal
2)菜单edit->preference
3)单击protocols前面的"+"号,展开protocols
4)找到q931,并单击
5)确保"desegment....   tcp segments"是选中的(即方框被按下去)
6)单击tcp
7)确保"allow....tcp streams"是选中的
8)确保没有选中"check....tcp checksum"和"use....sequence numbers"
9)单击tpkt
10)确保"desegment....tcp segments"是选中的
11)点击save,然后点击apply,然后点击ok

你也完全可以不断地重新安装新版本winpcap和ethreal,这样就可以不需在旧的ethreal的版本中安装新的插件来支持新的协议插件。这也是懒人的一种做法j

   后续有时间再根据工作用到添加,整理手头的另外几份抓包资料。
本贴来自天极网群乐社区--http://q.yesky.com/group/review-17808856.html

网络抓包工具Ethereal

(2010-01-01 10:09:48)
标签:

杂谈

分类:测试实用技术

网络抓包工具Ethereal

Q:如何使用Ethereal进行抓包

1,先过滤后抓包:首先在Capture Options点击Capture Filter设置过滤规则。若要实时查看,请勾选Display Options的Update list of packets in real time,然后包。                       示例:输入host 192.168.1.5 and port 80,仅抓取IP为192.168.1.5,端口为80的包。

2,先抓包后过滤:抓包后,在Filter中输入表达式过滤。
示例:输入ip.src,ip.dst,tcp.srcport,tcp.dstport,tcp.ack,tcp.len,eth等,可与关系表达式配合使用。如ip.src==192.168.1.5 &&tcp.srcport==80,仅显示源IP为192.168.1.5,源端口为80的包。

Q:如何分析使用Ethereal抓到的包?

这里简单以TCP/IP为例(修改网摘),

一,数据链路层:

   1、Destination:目的MAC地址。(eth.src)

   2、Source:源MAC地址。(eth.dst)

   3、Type:以太网类型(IP0x0800,8表示为以太网)。(eth.type)

二,IP网络层:

   1、Version=4,表示IP协议的版本号为4.该部分占4个BIT位。(ip.version)

  2、Header Length=20 Bytes,表示IP包头的总长度为20个字节。该部分占4个BIT位,单位为4个字节,因此,一个IP包头的长度最长为“1111”,即15*4=60个字节。

  3、Type of Service=00,表示服务类型为0.该部分用二个十六进制值来表示,共占8个BIT.

  8个BIT的含义是:

      000          前三位不用

         0         表示最小时延,如Telnet服务使用该位

          0        表示吞吐量,如FTP服务使用该位

           0        表示可靠性,如SNMP服务使用该位

            0        表示最小代价

             0       不用

  4、Total Length=48Bytes,表示该IP包的总长度为48个字节。该部分占16个BIT,单位为Byte.由此可见,一个IP数据包的最大长度为2的 16次方减1,即:65535个字节。因此,在以太网中能够传输的最大IP数据包为65535个字节。(ip.len)

  5、Identification=363,表示IP包识别号为363.该部分占16个BIT,以十进制数表示。(ip.id)

  6、Flags,表示片标志,占3个BIT.各位含义分别为:第一个“0”不用,第二个“0”为分片标志位,“1”表示分片,“0”表示不分版本。第三个0为是否最后一片标志位,0表示最后一片,1表示还有更多的片。(ip.flags)

  7、Fragment Offset=0,表示片偏移为0个Bytes.该部分占13个BIT.

  8、Time to Live=128Secongs/Hops,表示生存时间TTL值为128.该部分占8个BIT.(ip.ttl)

  9、Proctol=6(TCP),表示协议类型为TCP,协议代码是6.如果是UDP协议,则此处的协议代码应为17.如果是ICMP协议,则此处的协议代码应为1.该部分占8个BIT.(ip.proto)

  10、Header Checksun=4035(correct),表示IP包头校验和为4035,括号内的Correct表示此IP数据包是正确的,没有被非法修改过。该部分占16个BIT,用十六进制表示。(ip.checksum)

  11、Source Address=76.88.16.104,表示IP数据包源地址为:76.88.16.104.该部分占32个BIT.(ip.src)

  12、Destination Address=76.88.16.16,表示IP数据包目的地址为:76.88.16.16.该部分占32个BIT.(ip.dst)

  13、No Options,表示IP数据包中未使用选项部分。当需要记录路由时才使用该选项。

三,TCP传输层:

   1、Source Port=1038,表示发起连接的源端口为1038.该部分占16个BIT.通过此值,可以看出发起连接的计算机源端口号。(tcp.srcport)

  2、Destination Port=21(FTP-CTRL),表示要连接的目的端口为21.该部分占16个BIT.通过此值,可以看出要登录的目的端口号。21端口表示是FTP服务端口。(tcp.dstport)

  3、Initial Sequence Number=1791872318,表示初始连接的请求号,即SEQ值。该部分占32个BIT,值从1到2的32次方减1.(tcp.seq)

  4、Acknowledgment Number=1791872319,表示对方的应答号应为1791872319,即对方返回的ACK值。该部分占32个BIT,值从1到2的32次方减1.(tcp.ack)

  5、Data Offset=28 Bytes,表示数据偏移的大小。该部分占4个BIT.

  6、Reserved Bites:保留位,此处不用。该部分占6个BIT.

  7、Flags=02.该值用两个十六进制数来表示。该部分长度为6个BIT,6个标志位的含义分别是:(tcp.flags)

      0        URG,紧急数据标志,为1表示有紧急数据,应立即进行传递。

       0        ACK,确认标志位,为1表示此数据包为应答数据包

        0       PSH,PUSH标志位,为1表示此数据包应立即进行传递。

         0       RST:复位标志位。如果收到不属于本机的数据包,则返回一个RST

          0      SYN:连接请求标志位。为1表示为发起连接的请求数据包。

           0      FIN:结束连接请求标志位。为1表示是结束连接的请求数据包。

  8、Window=64240,表示窗口是64240.该部分占16个BIT.

  9、CheckSum=92D7(Correct),表示校验和是92D7.该部分占16个BIT,用十六进制表示。(tcp.checksum)

  10、Urgent Pointer=0,表示紧急指针为0.该部分占16个BIT.

  11、Maximum Segment Size=1460,表示最大段大小为1460个字节。

Ethereal is a GUI network protocol analyzer. It lets you interactively browse packet data from a live network or from a previously saved capture file. See: http://www.ethereal.com for new versions, documentation, ... Ethereal's native capture file format is libpcap format, which is also the format used by tcpdump and various other tools. So Ethereal can read capture files from: -libpcap/WinPcap, tcpdump and various other tools using tcpdump's capture format -snoop and atmsnoop -Shomiti/Finisar Surveyor captures -Novell LANalyzer captures -Microsoft Network Monitor captures -AIX's iptrace captures -Cinco Networks NetXRay captures -Network Associates Windows-based Sniffer captures -Network General/Network Associates DOS-based Sniffer (compressed or uncompressed) captures -AG Group/WildPackets EtherPeek/TokenPeek/AiroPeek/EtherHelp/PacketGrabber captures -RADCOM's WAN/LAN analyzer captures -Network Instruments Observer version 9 captures -Lucent/Ascend router debug output -files from HP-UX's nettl -Toshiba's ISDN routers dump output -the output from i4btrace from the ISDN4BSD project -traces from the EyeSDN USB S0. -the output in IPLog format from the Cisco Secure Intrusion Detection System -pppd logs (pppdump format) -the output from VMS's TCPIPtrace/TCPtrace/UCX$TRACE utilities -the text output from the DBS Etherwatch VMS utility -Visual Networks' Visual UpTime traffic capture -the output from CoSine L2 debug -the output from Accellent's 5Views LAN agents -Endace Measurement Systems' ERF format captures -Linux Bluez Bluetooth stack hcidump -w traces There is no need to tell Ethereal what type of file you are reading; it will determine the file type by itself. Ethereal is also capable of reading any of these file formats if they are compressed using gzip. Ethereal recognizes this directly from the file; the '.gz' extension is not required for this purpose.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值