我正在尝试使用通信协议(S1AP具体),我正在尝试定义要测试的消息。
LTE 36.413规范详细说明了该协议,并在pdf的底部提供了ASN.1文件定义。我已经看到在WireShark的解剖器中使用了ASN文件,我猜我可以使用它来按照规范生成消息。
我想知道你如何使用ASN.1文件。我一直在研究并找到有关ASN.1编译器的信息以及与之相关的其他信息,但所有信息都让我非常困惑,因为没有人清楚地解释如何使用它。有人可以帮我理解如何使用它吗?
答案 0 :(得分:9)
经过多次打猎,我发现了ASN.1文件是什么。
这些ASN.1文件基本上包含协议描述和数据包描述。使用这些ASN.1文件,您可以生成.c和.h文件,以便在您希望使用它们的某些应用程序中使用。这非常方便,因为您不必创建自己的消息数据库。您只需要编译ASN.1文件,就可以编译C文件供您使用。
现在,您一定想知道,我该如何编译?那么,您通常需要某种ASN.1编译器。你必须付一些钱,但我能找到一个适用于Linux和Windows的开源软件。只要你有必要的依赖关系,它就有可能在MAC上工作,因为它是基于UNIX的。无论如何,这里是这个网页的链接。我不会解释如何使用它,因为我认为这个网页在记录使用方面做得很好。希望这对帮助我的人有所帮助。
在这里查看编译器http://lionet.info/asn1c/blog/
如果该链接不适合您,您可能需要尝试使用OSS Nocklava ASN1.C编译器这样的商业链接,或者如果需要考虑资金,那么尽管这个时间很长,但您可能需要创建自己的数据库。将采取。
一切顺利。
答案 1 :(得分:6)
ASN是一种数据描述语言。如您所说,找到的ASN文件定义指定了您的消息数据的表示,以符合S1AP协议下的编码和解码。
需要编译ASN文件。编译的输出将为您提供一些代码规范和正文(在大多数情况下为.h和.c代码文件),以自动将任何消息数据序列化/反序列化为S1AP数据模型,而不管编码和发送的平台如何。
要快速测试并了解如何使用您的ASN.1架构,您可以使用此服务:http://asn1-playground.oss.com/
此外,有关ASN.1强大功能的更深入和简洁的解释请阅读:https://www.thanassis.space/asn1.html。作者还分享了在欧洲航天局的监督下开发的开源ASN.1编译器。
作为旁注,可能值得研究协议缓冲区的使用,因为它代表了一种非常类似的技术,可以说是更现代的功能,例如向后/向前数据描述兼容性和反射:{{3} }