我有一个Petrainer PET998DRU减震项圈(类似于此项),被应该训练的狗咬了一部分。我将其保存到具有以下按钮的位置:


模式(选择灯光,蜂鸣声,振动和击打声
激活(发送适当的刺激)
/>向上箭头(增加刺激量)

显示器不起作用,所以我不知道试行和错误设置以外的设置(哪个刺激和多少)。

我已经按照这里的方法进行了操作:http://brettleaver.com/collar/,直到我得到的为止,但是协议在该模型上有所不同,我只能找出设备ID和激励类型(我认为)。我可以在单独的433Mhz发射机上重播数据包,并且项圈响应适当,但我想弄清楚整个数据包。激励的数量是我需要帮助解码的。 >
蜂鸣声的逻辑


我将其解码为0xDF 7E DE ED 7F D6 AB
如果这是错误的,请告诉我,因为它可能会为我提供提示我想不通其余的内容。

zap的逻辑


我将其解码为0x‭DF DE DE ED 6F 7A AA C0‬。结束最后一个八位位组的最后一位假定为逻辑0。但是,也许这个假设是错误的。

我对其他数据包也进行了类似的解码,但是我不会发布所有图像。

编辑:从那以后我就捕获了振动和突变我知道持续时间是0。振动0xDE FE DE ED 7F D5 AB


除Light以外的所有数据包均以0xDF 7E DE ED 7F D6 AB开始。下一个位置(7,F,D或B)似乎确定了刺激类型。接下来的5始终是0x‭DF DE DE ED 7F EA AB‬,因此似乎可以确定设备ID。之后的所有字符都将编码zap或buzz的持续时间,然后与某种校验和相关。

这是我按顺序获得蜂鸣声的结果。记录完每一个后,我加一,然后再次发送命令:



0x‭DF BE DE ED 7F DA AB 0XDF


0xE DE ED 0x‭DF BE DE ED


7F AD 55 80 0x‭DF BE DE ED



7F 6D 55 80 0x‭DF BE DE ED



7F 56 AA C0 0x‭DF BE DE ED
...

我发现一个有趣的事情是,以下模式之一始终存在,但我无法弄清其含义:


/> 7E ED 55 80
0x‭DF BE DE ED

编辑:另外要注意的是,永远不会有2个连续的零。

假设我从一开始并没有犯太大的错误(这是我第一次尝试进行逆向工程),是否有人看到正在使用的显而易见的编码方案或校验和?

我的最终目标是编写一个新的433MHz发射机,并使其能够通过尚待开发的移动应用进行控制。

评论

硬件逆向工程可能会有所帮助。

意思是,分析发送器硬件并转储其固件?

与购买新产品相比,这听起来要付出很多努力。 :)

顺便说一句,您能解释一下事情应该如何运作吗?并非所有人都知道宠物教练是什么。 (因此,有一部分接收信号,另一部分就像遥控器,由于狗的作用而使某些按钮坏了,对吧?)

另外:您想做什么? (“模拟”损坏的按钮?如果是哪一个?)

#1 楼

回答
将“间隔”视为两个连续的“高”间隔之间的“低”间隔,而忽略第一个最长的间隔。然后,一个1比特对应一个长的间隙,一个0比特对应一个短的间隙。

因此,这样解码的消息是:
88 14 4b 00 ee   : Light
84 14 4b 00 de   : Beep
81 14 4b 00 7e   : Zap
82 14 4b 00 be   : Vibrate
82 14 4b 01 be   : Buzz stim in sequential order
82 14 4b 02 be
82 14 4b 03 be
82 14 4b 04 be
82 14 4b 05 be
82 14 4b 06 be
82 14 4b 07 be
82 14 4b 08 be

除了远程UID是14 4b而不是20 89之外,与http://brettleaver.com/collar/上所述的模式完全相同。
(引用上面的链接:

现在我们可以轻松解码遥控器发送的内容!多次更改设置并查看其如何更改传输后,可以清楚地表示所代表的信号。
81 20 89 32 7e
如果遥控器是遥控器,则将其设置为8。在通道1上
如果遥控器在通道2上,则设置为f
当遥控器请求电击时,它将设置为81 20 89 32 7e
当遥控器请求振动时,将其设置为1
当遥控器请求蜂鸣时,将设置为2
将设置为q4312079 q当遥控器请求LED闪光灯时
4
这些字节代表遥控器的UID,并且永不改变。
8
该字节代表振动/冲击的强度。
衣领将忽略100以上的任何内容
当遥控器请求电击时,它将设置为81 20 89 32 7e
当遥控器请求电击时,它将设置为81 20 89 32 7e。振动
当遥控器请求发出蜂鸣声时将设置为81 20 89 32 7e
当遥控器请求LED闪光时将设置为7
B
将设置为如果遥控器在频道1上,则为D
如果遥控器在频道2上,则为E
81 20 89 32 7e
最后一个字节等于第一个字节,但是其位被反转和反转。我认为这是一种错误检查机制,因为在这种情况下,衣领会忽略所有传输。



派生
考虑信号以二进制形式:
1101111110111110110111101110110101111111101011010101010110000000
1101111110111110110111101110110101111111011011010101010110000000
1101111110111110110111101110110101111111010101101010101011000000
1101111110111110110111101110110101111110111011010101010110000000
1101111110111110110111101110110101111110110101101010101011000000
1101111110111110110111101110110101111110101101101010101011000000
1101111110111110110111101110110101111110101010110101010101100000
1101111110111110110111101110110101111101111011010101010110000000

请注意E部分如何出现在所有序列中,而不是固定在某个位置?这使我怀疑消息的长度是可变的,尾随零也没关系。
所有消息的通用前缀是0。我们将切掉这部分,但在消息中留下一个81 20 89 32 7e,其原因稍后将变得显而易见。
其余部分是:
11110
11101
111010
11011
110110
110101
1101010
10111

请注意,这应该是(a
从OP的观察(没有两个连续的零)开始,请注意上面的数据中有3对,其中后一个是前一个,并附加了bold italic,我猜11011111101111101101111011101101011111被编码为1,而0被编码为0(反之亦然)。
10替换为1可得到:
1110
1101
1100
1011
1010
1001
1000
0111

看起来足够好。这是按递减顺序计数的,因此我们必须取反这些位(1编码为101编码为0)。因为表示的值是1到100,所以前3个位也是该值的一部分。
我还怀疑

只是传输开始标记,并且确实没有贡献数据,因为它比所有其他数据都要大。

评论


感谢那。您真的认为他们设计的如此复杂吗?这种编码是否以某种方式使其传输更可靠?我将对一个转换器进行编码,在该转换器中可以输入一个实际数字,然后它将输出上述编码。然后,我将尝试从0到100的其他数字,并查看项圈是否响应。

–dreed75
18-10-25在22:35

很好的线索user202729!我继续按照您的示例(1 = 0,10 = 1)解码整个比特流,并且也忽略了第一比特。我得到的值与brettleaver.com/collar上的值完全相同,只是我的设备ID为14 4B。如果您想修改答案以清除问题,我会接受您的答案。知道为什么他们要这样编码吗?也许仅仅是使逆向工程变得困难:)。

–dreed75
18-10-26在2:50