【问题标题】:Is this correct ASN.1 syntax?这是正确的 ASN.1 语法吗?
【发布时间】:2020-06-09 11:40:24
【问题描述】:

有一个很棒的 ASN.1 工具叫做 asn1c (https://github.com/vlm/asn1c)。

遗憾的是,当我尝试在 Wireshark 的 Remote-Operations-Information-Objects (https://github.com/wireshark/wireshark/tree/master/epan/dissectors/asn1/ros) 上使用它时,它失败并出现以下错误:

ASN.1 grammar parse error near Remote-Operations-Generic-ROS-PDUs.asn:20 (token "!"): syntax error, unexpected '!', expecting ')'
Cannot parse "Remote-Operations-Generic-ROS-PDUs.asn"

由于我对 ASN.1 还很陌生,所以我想问一下这个

(CONSTRAINED BY { -- must conform to the above definition --} !
 RejectProblem:general-unrecognizedPDU)

实际上是正确的 ASN.1。我猜是这样,因为 Wireshark 的 tools/ans2wrs.py 成功解析了它。据说这两种工具都支持 2002 版的 ASN.1。

所以:

  1. 这是正确的 ASN.1 () 吗?
  2. 它是某种扩展吗?
  3. 我真的可以用不会改变结果 C 结构的东西替换那个表达式吗?

【问题讨论】:

    标签: asn.1


    【解决方案1】:

    这是正确的 ASN.1 () 吗?

    是的。

    要验证它,复制https://asn1.io/asn1playground/左侧框(架构)中ros文件夹中3个文件的内容,然后点击compile

    它是某种扩展吗?

    这取决于你所说的扩展是什么意思。

    ASN.1 是一组文档。 免费工具通常仅限于 Basic Notation(文档 x.680)和一些 Encoding Rules(文档 x.690、x.691 等)

    您正在使用的工具令人窒息的符号是Information Object Specification(文档 x.681)。如果你发现一个开源工具可以正确处理它,请在这里添加评论(我很感兴趣)

    我可以用不会改变最终 C 结构的东西来替换那个表达式吗?

    没有

    如果你去掉约束,你仍然会发现很多其他的产品不会被解析(OPERATION,参数化类型)

    了解更多信息对象:

    编辑:

    看看这个文件https://github.com/wireshark/wireshark/blob/master/epan/dissectors/asn1/ros/ros.asn

    他们已经剥离了所有信息对象,并用已弃用的 ASN.1 类型 ANY 替换它们

    bind-invoke  [16]  --OPERATION.&ArgumentType({operation})-- ANY
    

    可能就是这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多