我使用BladeRF SDR和GNU Radio收集了一些数据。 “其他3个”列基本上是操作,而“其他1个”似乎是一些序列,而“其他2个”则定义了机器人(如果您有多个使用的话,我想(我的一个朋友中有相同的具有不同的值)那里)。我不确定计数适合什么目的,但我想这是为了让机器人知道最终范围何时变得太宽(缺少一些信息?)。我缩小了字节及其含义,但是我无法为数据计算正确的CRC(校验和)。
旧-请在下面查看更新!
以下是一些示例数据:
<other1 > <other2> <other3> <count > <crc >
10110100 00111110 10001111 11001000 00000001 11110111 01011110
10110100 00111110 10001111 11001000 00000001 11111000 01010011
10110100 00111110 10001111 11001000 00000001 11111001 01010100
10110100 00111110 10001111 11001000 00000001 11111010 01010001
10110100 00111110 10001111 11001000 00000001 11111011 01010010
10110100 00111110 10001111 11001000 00000001 11111100 01010111
10110100 00111110 10001111 11001000 00000001 11111101 01011000
10110100 00111110 10001111 11001000 00000001 11111110 01010101
10110100 00111110 10001111 11001000 00000001 11111111 01010110
10110100 00111110 10001111 11001000 00000001 00000000 01100111
10110100 00111110 10001111 11001000 00000001 00000001 01101000
10110100 00111110 10001111 11001000 00000001 00000010 01100101
10110100 00111110 10001111 11001000 00000001 00000011 01100110
10110100 00111110 10001111 11001000 00000001 00000101 01100100
10110100 00111110 10001111 11001000 00000001 00000111 01100010
added data:
10110100 00111110 10001111 11001000 00000010 00000110 01100100
10110100 00111110 10001111 11101010 00000010 01100101 10011010
10110100 00111110 10001111 11101010 00000001 01100100 10011100
10110100 00111110 10001111 11101010 00000001 01100011 10011101
10110100 00111110 10001111 11101010 00000001 01100110 10011010
每个请求都必须计数,并且必须发送一些命令,例如“ other 3”列可以读为00000010而不是00000001。
如果有人可以给我一些提示,这将非常有帮助。我已经尝试过各种不同的技术,例如跨字节进行XOR或计算模等。-我什至尝试了不同的CRC算法蛮力工具-不幸的是没有成功。
编辑:我将数据放入excel并添加了一些内容功能(基本上将每个4位与上面的-最后一次传输进行比较)。我这样做是因为我认识到CRC保持不变。动作和计数都加1时就是这种情况。请看一下:
更新:
我发现了其他一些更详细的规格。在搜索了几个小时之后,从网上的同一家供应商那里得到,结果出来了,所以认为CRC实际上是一种奇偶校验。我还微调了我的gnu无线电捕获流程图并收集了一些新数据。请忽略上面的数据,并在此处查看:
other 1> other 2 > other 3> other 4 > parity
10110100 001111101000111111101010 00000001 011110101001 0101
10110100 001111101000111111101010 00000001 011110111001 0110
10110100 001111101000111111101010 00000001 011111001001 0011
10110100 001111101000111111101010 00000001 011111011001 0100
10110100 001111101000111111101010 00000010 011111101001 0100
10110100 001111101000111111101010 00000010 011111111001 0011
10110100 001111101000111111101010 00000010 100000001001 0011
10110100 001111101000111111101010 00000010 100000011001 0100
10110100 001111101000111111101010 00000001 100000101001 0100
10110100 001111101000111111101010 00000001 100000111001 0011
10110100 001111101000111111101010 00000001 100001001001 0110
10110100 001111101000111111101010 00000001 100001011001 0101
10110100 001111101000111111101010 00000010 100001101001 0101
10110100 001111101000111111101010 00000010 100001111001 0110
10110100 001111101000111111101010 00000010 100010001001 1011
10110100 001111101000111111101010 00000010 100010011001 1100
10110100 001111101000111111101010 00000001 100010101001 1100
10110100 001111101000111111101010 00000001 100010111001 1011
10110100 001111101000111111101010 00000001 100011001001 1110
10110100 001111101000111111101010 00000001 100011011001 1101
又是这里,因为花哨的excel:
有人知道如何计算该比价吗?我曾尝试拆分数据等并使用常规的奇偶校验计算,但不幸的是没有成功。
#1 楼
哦,老兄,别问我怎么了,但我想我已经解决了。让我们看看:
数据分成4位的数据包。然后,您分别将第一个,第二个,第三个和第四个字母合并在一起。这可以在1、2、3和4列中看到。然后,您在每个数字中计数1(每个数字都写在每个数字旁边)。如果它们是偶数,则奇偶校验位为0;如果它们是奇数,则为1。因此,在完成操作之前,现在必须对之前(!)的结果进行二进制加1。每次都匹配,因此我能够成功地以这种方式生成自己的帧。看来问题解决了。完善。非常感谢大家的贡献。
评论
换句话说,校验半字节是前面所有字节的异或。
–克里斯·斯特拉顿(Chris Stratton)
17年9月24日,1:13
@ChrisStratton请原谅这个问题,但是究竟需要对XOR进行什么操作?我已经尝试了类别中的每个奇偶校验块,但是没有用。
–Ω病毒
17年9月24日在7:26
将每个半字节与一个累加器进行XOR,该累加器最初为零,您将得到答案。如果该位的个数为奇数,则会在每个位保留1。
–克里斯·斯特拉顿(Chris Stratton)
17年9月24日在15:50
仅仅优化-您自己找出了需求:-)
–克里斯·斯特拉顿(Chris Stratton)
17年9月24日在19:36
@ChrisStratton对,但是XOR方法显然是正确的方法,我在python中很容易地实现了它。无论如何,最后还是需要+1。你知道为什么吗?
–Ω病毒
17年9月24日在19:43
评论
您在这里没有足够的信息,因为除了校验值外,您唯一显示的变化就是最后一个字节,即计数。因此,您无法区分前几个字节与该算法的某些静态起始值的影响。您可以做一些猜测,也许可以测试它们,甚至可以找到一个太漂亮而不可能的理论,但是仅凭给定数据就能真正逆转的就是最后一个字节在创建校验值中的作用。 >@ChrisStratton你是对的。我添加了一些更改其他值的数据。有帮助吗?
真好我会很惊讶,但是有可能会有一些滚动代码。您是否确认简单重播旧记录是否有效?认为您将需要对这一问题进行自我回答,但这将是有用的参考。
@SeanHoulihane我一开始也这么认为。但是经过几次失败的尝试后,我设法重新发送数据并被接受,因此我得出结论,没有滚动代码或类似的代码。我的意思是,这样就可以捕获动作的整个“草图”并重播它,但这是行不通的,因为必须一直适当地增加计数(仍然存在一定数量的差异-如前所述,我认为是因为范围问题等导致数据丢失。)如果没有,机器人将失去“同步”功能,需要将其带回并插入其扩展坞。
@MikaelFalkvidd这是一个好主意,通常是我的出发点。不幸的是,由于它是欧洲设备,因此没有FFC ID或类似名称。