Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1817285
  • 博文数量: 272
  • 博客积分: 1272
  • 博客等级: 少尉
  • 技术积分: 1866
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-09 15:51
文章分类

全部博文(272)

文章存档

2016年(16)

2015年(28)

2014年(97)

2013年(59)

2012年(25)

2011年(47)

分类: 系统运维

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个字节,如下被红线框住部分:

 

至此,一个简单的分析过程就结束了。接下来就是你自己的事情了。

阅读(1937) | 评论(0) | 转发(1) |
0

上一篇:TCP抓包

下一篇:非阻塞socket

给主人留下些什么吧!~~