有一个很好的ASN.1工具叫做asn1c ( https:/github.comvlmasn1c ).
遗憾的是,当我尝试在Wireshark的Remote-Operations-Information-Objects ( https:/github.comwiresharkwiresharktreemasterepandissectorsasn1ros。 ),却出现了以下错误。
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。
那么。
这是正确的ASN.1()吗?
是的。
要验证它,请将3个文件的内容复制到 ros
文件夹的左侧框中(模式)。https:/asn1.ioasn1游乐场。 并打 compile
是某种延伸吗?
这要看你所说的扩展是什么意思。
ASN.1是一组文件。免费工具通常只限于 Basic Notation
(x.680号文件)和一些 Encoding Rules
(x.690、x.691等文件)
你所使用的工具所扼制的符号是 Information Object Specification
(x.681号文件)。如果你找到一个能正确处理它的开源工具,请在这里添加评论(我非常感兴趣
其实我可以用不会改变结果的C结构的东西来代替那个表达式吗?
不可以
如果你去掉约束,你仍然会发现很多其他的制作不会被解析(OPERATION,参数化类型)。
要了解更多关于信息对象的信息。
EDIT:
看这个文件 https:/github.comwiresharkwiresharkblobmasterepandissectorsasn1rosros.
他们把所有的信息对象都剥离出来,用废弃的ASN.1类型ANY代替。
bind-invoke [16] --OPERATION.&ArgumentType({operation})-- ANY
可能是这个要用。