问题标签 [asn1tools]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
309 浏览

python - 如何解决不支持 RELATIVE-OID 的 ASN.1 库

我正在尝试使用asn1toolsPython 库来解码和编码符合Ember+标准的 BER 消息。

该标准的 DTDRELATIVE-OID在某些地方使用 ASN.1 的类型。但是,asn1tools不知道这种类型,可能是因为底层pyasn1库没有实现它(还没有,有一个拉请求)。这就是为什么我不能在我的 Python 程序中使用那个 DTD。但我真的必须这样做。

正如我所看到的,我的选择是创建一个包含 PR 的补丁版本pyasn1RELATIVE-OID使用asn1tools它,或者以某种方式在 DTD 中构建一个解决方法。

我已经尝试添加RELATIVE-OID ::= [UNIVERSAL 13] OCTET STRING到 DTD,但现在asn1tools响应Expected RELATIVE-OID with tag '2d' at offset 10, but got '0d'.基本上它似乎接受我的定义,但将其设为“通用构造 13”,而消息将其标记为“通用原语13”。

我有办法解决这个问题吗?

这是我的限制:

  • 我基本上必须使用asn1tools,我的代码已经严重依赖它。
  • 必须能够解析和创建与将这些字段标记为0d.
  • 可以随意在 DTD 中进行编辑,例如添加定义的类型RELATIVE-OID(但以什么方式?)或用其他东西替换每次出现的RELATIVE-OID,只要它仍然可以处理将字段标记为0d.
  • 我完全可以将RELATIVE-OID值作为不透明的斑点bytes或其他东西,这就是为什么我OCTET STRING首先尝试了解决方法。

我的 ASN.1 知识有限,而且我不擅长编写 DTD。也许有一种方法可以强制类型为“原始”?我很高兴有任何建议。如果您想自己尝试一下,请使用上面链接的 DTD。然后,使用以下 Python 代码:

0 投票
2 回答
230 浏览

python - - 如何使用 asn1tools (python) 解码文件中的多个 CDR 记录

asn1tools如何使用..从文件中解码多个 CDR 记录这是我的 python 代码:

print(decoded)只给出第一条记录。我的文件包含 1550 条记录....如何逐个标记我的文件asn1tools

0 投票
0 回答
68 浏览

python - python: asn1tools 编译错误

我正在使用 asn1tools 解码 3GPP NGAP 消息,但它显示 CompileError: Module 'NGAP-PDU-Contents' cannot import type 'ProtocolIE-Container' from missing module 'NGAP-Containers'。NGAP-PDU-Contents 中是否有任何错误。 .asn 文件?但其他导入类型都可以。请帮帮我,谢谢。

python 版本:3.8.5 asn1tools 版本:0.158.0 ngap .asn 文件:asnfiles

0 投票
1 回答
53 浏览

java - Android 中 Bash 文件的 ASN1 编译问题

我正在尝试在我的 android 项目中使用以下内容从 asn1 文件生成 java 文件,并且在 Mac OS 和窗口中生成文件时遇到错误,它工作正常。

下面是bash文件

上面的 bash 文件将从我的项目 build.gradle 文件中调用。下面是将从 bash 执行的最终命令。缩短文件路径以便于理解。

下面是我得到的错误

我在 libs 文件夹中的jasn1-compiler-1.9.0.jar文件中有主类。同样在 Windows 中生成文件,但在 Mac 中它不起作用。windows 和 Mac 的区别在于 Java 版本。Mac 有 Java 11,Windows 有 Java 1.8。我还尝试在上述代码的末尾添加 JDK 1.8 位置,如下所示。

-Dorg.gradle.java.home=/Users/Shared/Jenkins/.jenkins/tools/hudson.model.JDK/JDK_1_8

谁能帮我指出遗漏了什么?

0 投票
0 回答
9 浏览

python - 如何在 python 中使用 binascii.unhexlify 将解码后的数据保存到数据结构中

我使用此代码从 Request Payload 反序列化此字节数组,但无法理解如何将其保存为它的输出..尝试将结果附加到列表但没有成功.. import binascii import asn1tools

它会打印出 PayloadData 但它不允许我以任何有用的方式保存它我尝试将它附加到一个列表但由于某种原因它比应该的要多得多。独特的价值观也是如此,所以我认为它做得不对。