sub-ghz 无线电编码 6 位

逆向工程 编码
2021-06-30 13:04:03

我有一个可以与医疗设备通信的 U 盘。我正在尝试解码通信。我已经弄清楚了基本的无线电参数(916.5MHz、ok、比特率、前导码、同步字),但还有一些编码我还没有弄清楚。

我可以给 U 盘提供不同的目标设备 ID,并且可以看到短(~12 字节)数据包变化的片段。实际上,对于6位设备id的每个字符,我看到数据包中有6位变化,具有一致的映射如下:

"010101" => "0",
"110001" => "1",
"110010" => "2",
"100011" => "3",
"110100" => "4",
"100101" => "5",
"100110" => "6",
"010110" => "7",
"011010" => "8",
"011001" => "9"

因此设备 ID 123456 被编码为“110001110010100011110100100101100110”。

我在数据中还看到了其他一些 6 位序列,例如:

001011 => ?
001101 => ?
101010 => ?
101100 => ?
011100 => ? 

每个代码中的第二位似乎是其余 5 位的奇偶校验位。第一点在某些方面似乎也很特别,但我还没有弄清楚。右侧的四位是值 1-6 的标准二进制编码。这些值也设置了第一位,这让我觉得当第一位未设置时,它会为正确的四位打开一些替代编码。

有任何想法吗?

2个回答

这还不是一个完整的答案,但也许无论如何它都会有所帮助。首先,对于每个 6 位代码,恰好设置了 3 位,强烈建议某种 3-of-6 二进制通道编码。我推断出以下规则:

  1. 必须设置 6 位中的 3 位
  2. 最后 3 位不能都是相同的值

这两种方法都具有信道编码的正当理由,因为它们可以确保每个符号周期始终至少有两次转换(1 到 0 或 0 到 1),因此有助于同步和时钟恢复。乍一看,它看起来像曼彻斯特编码或差分曼彻斯特,但事实并非如此,尤其是因为它似乎对每 6 位符号至少编码 4 位。

如果这两个假定规则都正确,则有 19 个可能的值(如果只有规则 1 正确,则有 21 个可能的值)。下面按数字顺序枚举它们,然后是符号编号,然后是观察到的符号含义(我已经分配了观察到但未知的符号值 uA 到 uE;理论上可能但未观察到的符号标记为 ?G 到 ?I ):

000111 00 disallowed by rule 2
001011 01 uA
001101 02 uB
001110 03 ?G
010011 04 ?H
010101 05 "0"
010110 06 "7"
011001 07 "9"
011010 08 "8"
011100 09 uC
100011 10 "3"
100101 11 "5"
100110 12 "6"
101001 13 ?I
101010 14 uD
101100 16 uE
110001 17 "1"
110010 18 "2"
110100 19 "4"
111000 20 disallowed by rule 2

对于符号“1”到“6”,低四位是编码值1-6,高两位是低四位中零的计数。如果分别为 ?I、uD 和 uE 提供 9,10 和 12 的值,它也适用。但是,这种解释不适用于其他值。

我最终想通了这一点。这是一种基于十六进制的编码。我被难倒的其余符号是“A”到“F”。

"010101" => "0",
"110001" => "1",
"110010" => "2",
"100011" => "3",
"110100" => "4",
"100101" => "5",
"100110" => "6",
"010110" => "7",
"011010" => "8",
"011001" => "9",
"101010" => "a",
"001011" => "b",
"101100" => "c",
"001101" => "d",
"001110" => "e",
"011100" => "f"