有一个很好的ASN.1工具叫做asn1c ( https://github.com/vlm/asn1c )。
可悲的是,当我试图在Wireshark的远程操作-信息对象( 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的工具/ans2wrs.py成功地解析了它。这两种工具据说都支持2002年版的ASN.1。
所以:
发布于 2020-06-09 13:05:28
这是正确的ASN.1 ()吗?
是。
要验证它,请将ros文件夹中的3个文件的内容复制到https://asn1.io/asn1playground/的左侧框(模式)中,然后点击compile
是某种扩展吗?
这取决于你所说的延伸是什么意思。
ASN.1是一组文件。免费工具通常限制在Basic Notation (文档x.680)和一些Encoding Rules (文档x.690,x.691等)。
您正在使用的工具是Information Object Specification (Documentx.681)。如果您找到一个开放源码工具来正确地处理它,请在这里添加一个评论(我非常感兴趣)
--我真的可以用不会改变结果C结构的东西来代替这个表达式吗?
不是
如果您移除约束,您仍然会发现许多其他的产品不会被解析(操作、参数化类型)。
要了解更多关于信息对象的信息:
编辑:
看这个文件https://github.com/wireshark/wireshark/blob/master/epan/dissectors/asn1/ros/ros.asn
他们已经删除了所有的信息对象,并将它们替换为废弃的ASN.1类型
bind-invoke [16] --OPERATION.&ArgumentType({operation})-- ANY也许这就是该用的。
https://stackoverflow.com/questions/62281770
复制相似问题