分类: 系统运维
2012-10-26 11:02:41
Wireshark是一款功能十分强大的网络协议分析工具。前几日由于调试设备与客户端的通讯是否正常,学习了一下,现记录下来。
调试环境:wireshark(Version 1.6.1)+嵌入式linux(2.6.10)+基于windows(windows7)客户端
扑捉事件:客户端向嵌入式设备发送命令,看传输过程是否有误
抓包标志:命令号0x111148
步骤一:开启wireshark软件,选择Capture->Interfaces…
步骤二:选择网卡
上图中显示了3个网卡,其中第一个是我们物理主机上的以太网卡,另外两个是虚拟机网卡。右边有三个选项:
Options选项中可以设置过滤规则,保存过滤文件等
Details选项主要是一些网卡及分析数据
我们选择第一个网卡,点击Start按钮,开始抓包
这时,因为我们没有设置过滤规则,只要是通过网卡的数据包,无论是udp还是tcp都会被扑捉,这样极大影响了我们获取有用的信息。
步骤三:设置过滤规则
在Filter框中输入:tcp[32:4]== 00:11:11:48
0x111148是我们的命令号,可以作为定位的目标,当然这里可以选取其他只要你自己能知道的标志都行,但是一定要注意该标志在一个tcp包中尽量是唯一的。
tcp[32:4]表示截取tcp包第32字节开始的连续4字节,为什么是32字节?tcp的头有20字节,而我们的命令号(数据)位于除去头部偏移12的位置上,加上头部的20字节正好为32。
这里的[32:4]并不是一成不变的,这要看你程序中具体数据结构的设计。
步骤四:发送命令,wireshark自动抓包
上图是发送命令后,wireshark抓到的tcp数据包。上面包含了源地址、目的地址以及网络协议等信息
步骤五:分析TCP包数据部分
如上图所示,wireshark非常人性化的将各网络层的数据包层层剥开了,从上到下依次是:帧(数据链路层)、网络层(IP数据报)、传输层(TCP)以及用户数据。
我们关心的是Data里面的东西,当你点击Data,会发现下面的十六进制数据,并且用深色来表明数据Data段的数据范围:
步骤六:进一步分析数据
我们的命令号0x111148在哪呢?被蓝颜色标注的部分就是我们用户的数据,我们的命令号就包括在其中,因此根据具体的数据结构可知某一字段在数据包中的偏移。我们的命令号0x111148上文已说明,在偏移12字节处,连续4个字节,如下被红线框住部分:
至此,一个简单的分析过程就结束了。接下来就是你自己的事情了。