【问题标题】:How to parse ASN.1 binary data如何解析 ASN.1 二进制数据
【发布时间】:2014-08-17 10:35:51
【问题描述】:

我有一个“固定长度”二进制 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,我找不到满足我需求的东西。但它是一个专有工具,对我来说不是一个选择。

【问题讨论】:

    标签: python converter binaryfiles asn.1


    【解决方案1】:

    ASN.1 有一个模块:pyasn1

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

    【讨论】:

    • 谢谢! pyasn1 模块似乎有 BER 编码文件的解码器。它似乎没有完全适合我需要的东西。但我会继续挖掘。
    • 仅供参考,BCD 内容不是 ASN.1 的一部分。您将需要一个两步过程 - 解码 ASN.1 数据,然后解释 BCD。您可能会发现一些组合这些步骤的工具,但它们在概念上是不同的。我们在 obj-sys.com 上提供了执行此类操作的工具,但由于您需要非专有的解决方案,它们对您没有帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多