在我的职业生涯中,我已经从人类可读的规范中以各种语言实现了几种电信协议,坦率地说,我不再喜欢它了。
相反,我想将人类可读的协议规范翻译成机器可读的协议规范,并自动生成各种语言的协议处理程序。
我对 SMPP/CIMD2/EMI 协议、自动生成协议数据单元序列化器/解串器以及状态机、测试用例和其他基础设施特别感兴趣。
有人已经这样做了吗?
如果不是,您会为这样的任务推荐哪些语言、库和符号?
在我的职业生涯中,我已经从人类可读的规范中以各种语言实现了几种电信协议,坦率地说,我不再喜欢它了。
相反,我想将人类可读的协议规范翻译成机器可读的协议规范,并自动生成各种语言的协议处理程序。
我对 SMPP/CIMD2/EMI 协议、自动生成协议数据单元序列化器/解串器以及状态机、测试用例和其他基础设施特别感兴趣。
有人已经这样做了吗?
如果不是,您会为这样的任务推荐哪些语言、库和符号?
有ABNF,虽然它没有被广泛使用。以 CIMD PDU 为例
cimd-frame = start-of-text op-code COLON packet-number TAB parameter-list end-of-text
parameter-list = *(parameter)
parameter = code COLON value TAB
start-of-text = %x02
end-of-text = %x03
TAB = %x09
COLON = %x3A
…
有解析器生成器可以读取 ABNF 语法并生成解析器。
你的意思是像协议分析器所做的那样吗?他们获取数据流并将其解析为正确的字段并将每个字段显示给用户。听起来您想对解析的数据做一些不同的事情。你仍然需要编写协议解码,但之后你可以对数据做任何你想做的事情。
Wireshark 是开源和免费的,并且已经有很多协议解码,包括 SMPP。也有商业选择。