代码之家  ›  专栏  ›  技术社区  ›  dfilkovi

无线M总线/OMS分组解码

aes
  •  2
  • dfilkovi  · 技术社区  · 11 年前
    3E4424237952324825077A09503005702970D754206CF3FFA5A2EE90103E42049140ACA625243A7DC4550DB811208D8299D7A34EB9ECBEE9CD751A685F0FF05D1A3D004F320600211B
    

    这是我从一个wm总线(OMS)水表收到的数据包,它由CRC字节组成。

    正如我从OMS文档中得到的,这是CBC初始向量:

    24237952324825070909090909090909
    

    AES密码为:1111111111111111

    我得到的第一个需要解码的AES块是:

    702970d754206cf3ffa5a2ee90103e42 
    

    解码后,前两个字节应该是2f2f,但它们不是。

    1 回复  |  直到 5 年前
        1
  •  5
  •   Marwie    8 年前

    如果你没有得到 0x2F 0x2F 那么简单的答案是:你拿错了aes密钥。

    详细信息: 您似乎获取了正确的字节,并为OMS电报导出了正确的IV。如果解密部分的前2个字节未导致 0x2F 0x2F 则这表明您对该电报使用了错误的AES密钥。

    你说你的钥匙是1111111111111111,但这是什么?OMS的AES-CBC密钥使用16字节(128bit)。您只有16个字符,但要用十六进制表示16个字节,需要32个字符。所以这把钥匙有点可疑: 0x01010101010101010101010101010101 不工作。

    两者都不是 0x31313131313131313131313131313131 (在ASCII中为16乘以1)

    然而,我成功地用

    0x11111111111111111111111111111111
    
    //Decrypted telegram:
    3E 44 24 23 79 52 32 48 25 07 7A 09 50 30 05 2F 2F 0C 13 00 02 00 00 02 5A F5 00 02 FD 17 00 10 02 FD 74 ED 16 C2 01 6C DF 17 CC 01 13 00 02 00 00 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F
    

    所以最后看起来你只拿走了一半的密钥,这就是解密失败的原因。

    推荐文章