我正在开发一个具有一些数据包嗅探和解码功能的专用网络工具。我正在寻找旨在帮助解剖/解码任意数据包格式的语言。理想情况下,解决方案应基于开放标准。有关于SO的相关问题,但大多数涉及数据包嗅探的整个生命周期(我不太关心捕获,还有其他库可以做到这一点)。
一般来说,我正在寻找的是一种语言和支持框架,用于分组格式的明确定义和相应的运行时解码。因为这个问题可以推广到任何非网络二进制数据,所以对任意二进制流执行此操作的解决方案也将在范围内。我有点惊讶,目前在成熟和稳健的状态下没有这样的标准(至少我能找到) - 虽然似乎有很多有趣但不完全正确且几乎有项目(见下文)。也许这说明了问题的困难,或者可能是缺乏需求。
举例来说,我对以下类似的技术和想法很感兴趣(没有特别的顺序):
我不一定在这里寻找一个完整的解决方案(但如果有人知道我没有涉及的那个,那就太棒了)。我对我上面提到的技术的评论或轶事更感兴趣,以及我没有想到或涵盖的路线的指针或想法。
答案 0 :(得分:0)
Wireshark解剖器框架非常强大。请在此处阅读说明 -
http://www.wireshark.org/docs/wsdg_html_chunked/ChapterDissection.html#ChDissectWorks
我必须为你解决类似的问题。对我来说,协议必须与实际的传输介质无关(主要是udo或top),但在测试期间它只是在内存ipc中。
所以我使用protobuf以结构化的方式定义了一个协议 -
http://code.google.com/p/protobuf/
然后自己定义了一个解剖器,但不完全像 - http://code.google.com/p/protobuf-wireshark/
所以我可以在测试时使用直接内存分析解剖,并在线上进行wireshark解剖。当然,因为协议是使用protobuf定义的,所以在内存解析器和wireshark解析器之间有很多代码重用。
答案 1 :(得分:-1)
在Windows中尝试Winsock2界面。在Windows XP(SP2之前)或Windows Server变体中,对创建原始套接字,检查数据包内容等没有任何限制......