如何解析ASN.1二进制数据

时间:2014-08-17 10:35:52

标签: python converter binaryfiles asn.1

我有一个"固定长度"二进制ASN.1编码文件,带有用于映射数据元素的单独文档。例如,二进制文件的格式为:

0070 00A0 1700 35e7 0100 0010 0299 1a11
bc10 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0001 0001
0256 1c41 aa09 0000 0000 0000 0000 0000
.....

这里每条记录的长度为559字节。文档将记录结构作为长度(以字节为单位)。这种格式非常特定于此数据,因此我需要制作转换器。例如

No.     Field Name     Data Length (Bytes)   Description
1         Field1             2                 Binary
2         Field2             4                 BCD
3         Field3             1                 BCD (Right Aligned)
.....

如果这是标准的ASN.1编码,我没有任何信息。描述比这里显示的更详细,因为它们说出解码数字的含义。有些是二进制的,有些是BCD,有些是BCD(右对齐)。

我对ASN.1了解不多,所以我试图避免重新发明轮子。是否有任何工具(最好在python中)可以调整以将此二进制文件转换为文本CSV文件? 除了this之外,我还没能找到符合我需要的东西。但它是一种专有工具,对我来说不是一个选择。

1 个答案:

答案 0 :(得分:1)

ASN.1有​​一个模块:pyasn1

另一种可能性是使用内置的struct模块来分隔字段。以及this question读取二进制编码小数的答案。