【问题标题】:How to decode .BER using ASN1 Library in Python如何在 Python 中使用 ASN1 库解码 .BER
【发布时间】:2019-12-10 01:44:36
【问题描述】:

我有一个无法解码的 .BER 格式的编码文件。

经过搜索,我发现我需要使用 ASN1 库才能解码此文件并使其可读。

有人可以指导我如何在 python 上使用 ASN1 库解码 .BER 文件吗?

我在网上查了一下,发现有一些在线的 ASN1 解码器可以正确解码我的文件。但是,我将无法使用它们,因为我需要自己解码而不使用在线工具。我不知道如何在下面的脚本中获取这个标签和值。

导入 asn1 重新进口 导入操作系统 进口未来 Input_directory=open("D:\Encoded_Nokia.ber","rb")

对于 Input_directory 中的行: 解码器 = asn1.Decoder() 输出=decoder.start(行) tag,output=decoder.read()

这些是我得到的错误:

  File "C:\Python34\lib\site-packages\asn1.py", line 421, in read
    value = self._read_value(tag.nr, length)
  File "C:\Python34\lib\site-packages\asn1.py", line 508, in _read_value
    bytes_data = self._read_bytes(length)
  File "C:\Python34\lib\site-packages\asn1.py", line 541, in _read_bytes
    raise Error('Premature end of input.')
asn1.Error: Premature end of input.

【问题讨论】:

  • import asn1 import future Input_directory=open("D:\\Encoded_Nokia.ber","rb") 对于 Input_directory 中的行:decoder = asn1.Decoder() output=decoder.start(lines)标签,输出=decoder.read() ..>?
  • 您可以只编辑原始问题并将代码放在那里而不是放在评论中。

标签: python decoding asn1


【解决方案1】:

BER 可能对某些构造的数据值使用不定长编码。您收到的错误表明您将截断的字节传递给解码器。这意味着您应该像这样传递解码器的全部内容:

Input_directory=open("D:\Encoded_Nokia.ber","rb")

# reads everything
content = Input_directory.read()
output=decoder.start(content)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多