基于tcp协议使用wireshark工具

2019-07-13 00:13发布

http://blog.csdn.net/thinkpowerful/article/details/7383244 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,会发现下面的十六进制数据,并且用深 {MOD}来表明数据Data段的数据范围: 步骤六:进一步分析数据 我们的命令号0x111148在哪呢?被蓝颜 {MOD}标注的部分就是我们用户的数据,我们的命令号就包括在其中,因此根据具体的数据结构可知某一字段在数据包中的偏移。我们的命令号0x111148上文已说明,在偏移12字节处,连续4个字节,如下被红线框住部分: 至此,一个简单的分析过程就结束了。接下来就是你自己的事情了。