【问题标题】:Parsing and editing ASN1 binary blob in C在 C 中解析和编辑 ASN1 二进制 blob
【发布时间】:2018-07-27 17:01:52
【问题描述】:

我有一个有效的编码 ASN1 二进制 blob,我想对其进行修改。 此外,我没有编码的 ASN1 的定义文件,但我知道它的结构(例如,假设它是一个包含几个整数和一个八位字节字符串的序列)。 因此,我更喜欢通过迭代序列及其字段来修改编码的二进制文件,通过设置新值和编码新修改的二进制 blob 来修改它们。

我该怎么做?即如何解析编码的 ASN1 二进制文件,对其进行修改并用 C 语言重新编码? 是否有任何库能够做到这一点?

我正在用 C 语言为 Windows 开发一个软件模块。这一点很重要,因为(通常)许多库都是面向 Linux 的,并且在为 Windows 构建它们时遇到了麻烦。

谢谢。

【问题讨论】:

  • 问题是什么?
  • 用一个明确的问题编辑了我的帖子 - 如何解析编码的 ASN1 二进制文件、修改它并用 C 语言重新编码?

标签: c windows asn.1


【解决方案1】:

我在过去的项目中为此使用了asn1c。您确实需要规范:asn1c 基于它生成解码器和编码器。听起来在你的情况下写起来并不难。

它将在 Windows 上运行。 FAQ 声称编译器现在需要 GCC,但不能使用 MSVC 编译。您可以从 www.mingw.org 或 Cygwin 获取适用于 Windows 的 GCC。

【讨论】:

  • 感谢您的回答,我尝试使用 asn1c 但遇到了问题。二进制 blob 的一部分是 Kerberos (KRB5) 数据结构,但在编译 krb5.asn1 规范时存在问题。你能帮忙吗?
  • 抱歉,不,已经 10 年了。如果您不需要解析 KRB5 对象中的内容,也许您可​​以在规范中用空的虚拟 SEQUENCE 替换它? IIRC 有一种方法可以访问每个对象的编码字节,因此您可以为不想解析的类型实现传递。
猜你喜欢
  • 1970-01-01
  • 2014-02-20
  • 2011-06-12
  • 1970-01-01
  • 2019-04-27
  • 1970-01-01
  • 2023-03-15
  • 2011-05-19
  • 1970-01-01
相关资源
最近更新 更多