如何识别十六进制的报文

前言

今天在群里有人问了一个问题,发了一张截图,问是啥协议的报文。

我的第一反应是这有点欺负人吧,没个十年功力的老网工还真看不出来吧。

真的看不出来吗?其实是有迹可循的,十年老网工应该注意到了,第二行第一段的最后一个十六进制是“01”,对应的十进制就是“1”,协议号为“1”的是啥协议——ICMP协议。

都可以这样看吗?根据 IPv4 的报文格式,确实可以这样查看,因为第9个字节(从0开始)表示的是协议,并且是有常见值的。

0:保留Reserved;1:ICMP;2:IGMP;6:TCP;17:UDP;27:RDP;89:OSPF;112:VRRP等,转换成对应的十六进制就可以对应出来了。

但是这也仅限于是 IPv4,如果是 IPv6 或者是以太网帧,那就不能这么识别了。

如果比较复杂,那就需要使用软件来处理了。

使用软件识别十六进制报文

报文准备和处理

假设需要识别的十六进制报文如下:

0000   ae 00 e8 dd 46 75 e8 6a 64 51 df 09 08 00 45 00
0010   00 53 59 d1 00 00 80 11 52 86 c0 a8 06 f1 c0 a8
0020   06 01 d0 6e 00 35 00 3f ae 35 e4 b6 01 00 00 01
0030   00 00 00 00 00 00 08 61 72 72 61 79 36 32 33 04
0040   70 72 6f 64 02 64 6f 03 64 73 70 02 6d 70 09 6d
0050   69 63 72 6f 73 6f 66 74 03 63 6f 6d 00 00 01 00
0060   01

将需要识别的报文处理一下,去掉前面的索引。

ae 00 e8 dd 46 75 e8 6a 64 51 df 09 08 00 45 00
00 53 59 d1 00 00 80 11 52 86 c0 a8 06 f1 c0 a8
06 01 d0 6e 00 35 00 3f ae 35 e4 b6 01 00 00 01
00 00 00 00 00 00 08 61 72 72 61 79 36 32 33 04
70 72 6f 64 02 64 6f 03 64 73 70 02 6d 70 09 6d
69 63 72 6f 73 6f 66 74 03 63 6f 6d 00 00 01 00
01

安装和使用 xcap 软件

将 xcap 软件下载到本地,解压出来以后双击“xcap.exe”打开软件。

点击软件顶部导航栏“报文组”、“创建报文组”。

随便输入一个名字,然后点击“确定”。

点击“+”号,增加报文。

随便取一个名字,点击“确定”。

鼠标放置到报文名称上,右键,点击“打开方式”、“Hex-string”。

弹出的窗口中,点击“是”。

将报文复制粘贴到输入框,点击“保存”,然后再点击“关闭”。

如果没问题的话,此时应该能正确识别出来长度、源目MAC地址等信息。

鼠标放置到报文组名称上,右键,点击“保存到.pcap文件”。

随便取个名字,点击“保存”。

Wireshark 打开报文

使用 Wireshark 将保存的报文打开,打开 Wireshark 软件,点击“文件”,“打开”。

选择保存的文件,点击“打开”。

这样就可以看到报文的协议类型了。

还可以双击打开报文,查看详细信息。

继续展开报文中的内容,可以看到这是一个 DNS 请求报文,需要查询的域名是“array623.prod.do.dsp.mp.microsoft.com” ,这应该是一个 Windows 系统内部的服务域名。

软件下载地址:https://cloud.grbj.cn/%E8%BD%AF%E4%BB%B6/%E7%BD%91%E5%B7%A5%E8%BD%AF%E4%BB%B6/xcap_1.0.3.zip

微信公众号聊天框发送【xcap】也可以获取地址。

上一篇 你知道哪些 IPv4 地址有特殊用途吗?
下一篇 案例分享 | 用 eNSP 和 HCL 复现某律师事务所网络