【发布时间】:2020-08-09 02:08:40
【问题描述】:
我有一个未知的哈希/CRC 字节,它是 4 位随机/CRC/未知和 4 位控制标志。每次看到命令字节时,它总共可以有 16 种不同的字节形式。将有 16 个不同的组。没有冲突,每个字节只能看到一次。我正在对 Moshiboard/MS10105 激光控制板进行逆向工程。所以一些代码标志是可以猜到的。正如我在逻辑上可以假设打开激光和关闭激光之间的差异应该是位翻转。
这似乎是一个坚实的难题,但我无法真正弄清楚。有很多信息可以通过,但也有很多未知数。一些对照组从未出现,因此我没有它们。
1. 0A 0E 1A 1E 4A 4E 51 53 59 5A 5B 5E 71 74 79 7B
2. 00 01 03 04 09 0C 10 14 21 23 29 2B 40 44 50 54
3. 55 57 5D 5F 75 77 7D 7F 8A 8E 9A 9E CA CE DA DE
4. 05 07 0D 0F 25 27 2D 2F 80 84 90 94 C0 C4 D0 D4
5. AA AE BA BE D5 D7 DD DF EA EE F5 F7 FA FD FE FF
6. 15 17 1D 1F 35 37 3D 3F 88 8C 98 9C C8 CC D8 DC
7. 45 47 4D 4F 65 67 6D 6F 82 86 92 96 C2 C6 D2 D6
8. A2 A6 B2 B6 C5 C7 CD CF E2 E5 E6 E7 ED EF F2 F6
注意:这些是按数字排序的,因为它们的实际顺序未知。
存在另一个命令代码范围的部分版本
08 0C 13 19 1B 1C 31 3B 48 58 5C ?? ?? ?? ?? ?? 我可以通过更大的样本量来计算。虽然很可能我也可以仅通过模式来弄清楚。
1. Command header control byte. Followed by 1 int16_le. (Speed, Unk)
2. Position byte. Followed by 3 int16_le
3. Laser Off, X value, Y value. Followed by 2 int16_le
4. Termination byte. 0 int16_le
5. Laser On, X value, Y value. Followed by 2 int16_le
6. Laser Off, Y value. Followed by 1 int16_le
7. Laser Off, X value. Followed by 1 int16_le
8: Laser On, X value. Followed by 1 int16_le.
现在我可以合理地假设 3 和 5 略有不同。 7 和 8 略有不同。字节码中有一堆模式。其中 4 个位是随机的。它们可能是 CRC 或实际上只是纯粹随机的,字节在组内均匀分布。所以这 4 个非控制字节可能是均匀分布的。
鉴于我不知道哈希值,甚至不知道这些字节的位置。这可以解决吗?我认为如果有一个非常简单的方法来做哈希,这个位置是可以解决的。我对随机位一无所知。我只能对其他位进行一些有根据的猜测。但是,模式 3、4、6 和 7 之类的东西非常相似,我可以清楚地说,如果将 0x50 添加到 3 的前 8 个字节并从后 8 个字节中减去 0x0A,这些模式是相同的。或者如果前 8 个字节加 0x10,后 8 个字节减去 0x08,则 4 和 6 相同。
但是我无法解决它。由于上下文含义(3,5 和 7,8),我认为应该分开 1 位的部分似乎不太相似。我的意思是#5 的部分显然是#3 的 2x 部分。有些似乎偏移了位,有些似乎在高半字节和低半字节中是静态的。
这里有很多图案,它是 2013 系列的激光板,所以它不会做一些处理器密集型的事情。
其他看似不高度相关的信息可用:https://github.com/meerk40t/moshi 用于该项目,以及那里的 wiki。
所有数字都是十六进制。
- 这些十六进制行是什么?
这些都是激光切割机控制板解释的同一命令的不同形式。
- 它们是从网络数据包中提取的吗?
这些是使用wireshark截获的,通过USB通道运行。然后将消息发送到 CH341 串行芯片。
- 您用于生成此流量的“x”和“y”值是什么?
X 和 Y 值是激光切割机要去的位置。这些由 16 位小端值给出。发出的命令具有某种关于正在发送的值类型的标志。 x 或 y 或两者和 y。这些是不同的命令,但每个命令有 16 种形式。
- “后跟 1 个 int16_le”是什么意思
我的意思是在命令结构中,这 16 种形式之一的特定命令后跟一个小端形式的单个 16 位整数。
问题是我希望这些值是相同的值,通常标记为打开或关闭某些字节,以从激光切割软件解释此命令希望激光切割板做什么。但是,不是 1 个命令意味着 1 件事,而是 16 个命令意味着 1 个(我认为)事情。这似乎很奇怪。有一堆图案,但我真的不知道那个图案是什么。
【问题讨论】:
-
您遗漏了大量上下文。足以让我什至无法开始弄清楚发生了什么。这些十六进制线是什么?它们是从网络数据包中提取的吗?您用于生成此流量的“x”和“y”值是多少? “后跟 1 个 int16_le”是什么意思?
-
@DanielMartin 我尽力回答您的问题,如果需要,我很乐意进一步解释。基本上这是一个问题,即颜色图表中的所有相同颜色如何在某种简单的算法中相关。
-
任何额外的见解都可以获得赏金和支票。特别是关于不符合我的回答中概述的模式的 0x74 和 0x0C。