A.底层协议
1.1帧结构
帧结构如下:
包头 数据包长度 UPT地址 设备上报地址 数据包 校验和
1 Byte 2 Bytes(N) 1 Byte 1 Byte (N-4) Bytes 2 Bytes
包头:1字节,固定为0x7e
数据包长度:两字节无符号整数,低位在前,高位在后。包括UPT地址、设备上报地址、数据包及校验和加在一起的长度。
UPT地址:1字节,CONFIG.TXT文件中[UPTID]中的地址。
设备上报地址:1字节,CONFIG.TXT文件中[EQUIP]中相关设备的上报地址
数据包:(N-4)字节,实际传送的数据内容。
CHECKSUM: 2字节。除校验和之外所有字节的两字节算术和,取反再加1,低位字节在前,高位字节在后。
1.2换码规则:每一帧数据发送出去前,所有字节都要进行换码,即:如果字节X是0x7F,,则将其变为两字节:0X7F和0x00。如果有连续两个以上,255个以下相同字节,则变为三个字节,0x7F,N(相同字节数量),字节X。
上面是这个协议的规则,下面是我的抓包数据:
7E 06 00 00 01 88 00 F3 FE
7E 1C 00 00 01 81 00 00 0A 42 66 66 26 42 9A 99
4D 44 9A 99 4D 44 00 00 40 40 7F 3C 00 23 F9
7E 08 00 00 02 81 7F 50 00 AA FE
按照
CHECKSUM: 2字节。除校验和之外所有字节的两字节算术和,取反再加1,低位字节在前,高位字节在后。这个规则算第一组数据:
7E 06 00 00 01 88 00 F3 FE
这么算:
2字节。除校验和之外所有字节的两字节算术和:
7E+06+00+00+01+88+00 = 010D
取反
~010D = FEF2
再加1
FEF2+1 = FEF3
高位字节在后
F3 FE
两个字节是没问题,但是其余两个都不符合这个协议规则呀!!!!懂得大神们再来看看吧,小弟的分都压上了!!!!!!!!!!!!!!!
也就是
7E 1C 00 00 01 81 00 00 0A 42 66 66 26 42 9A 99
4D 44 9A 99 4D 44 00 00 40 40 7F 3C 00 23 F9
7E 08 00 00 02 81 7F 50 00 AA FE
根本算不出来
------解决方案--------------------
结论:信息不够得不到答案,请务必给出详尽的协议文本.
先求校验和,再套用"1.2换码规则",再发出 <- 被你抓包得到的报文,
所以逆向推导:
你抓包看到的报文: