第一次体会:
重新学习了一下前一段时间依葫芦画瓢写的解析asn.1的骨干的Wireshark lua插件的代码,突然发现自己貌似理解了Wireshark解析的基本思想:把一段码流划分成若干个小段,每个段取个名字,并描述一下这个段如何翻译,至于如何分段那就是协议的事情,各个协议所做的事情就是描述了分段的方法。所以Wireshark在解析方面所做的事情,归纳下来就以下几点:
(1)根据协议把码流分成小段
(2)给这个段取个名字,这个名字协议中会给的
(3)把这个段码流的含义翻译成人类能够直观理解的文字或者数字
第二次体会:
Wireshark的LUA脚本研究
(1)DissectorTable是一个全局LUA表,这个表的内容就是各种各样的协议对象(应该是树形结构体分层管理的),在解析报文的时候,应该会遍历这个表的某个子表,然后找到一个合适的协议去解析。例如说待解析的协议在TCP下面,它就会遍历TCP子表,看是否有合适的协议来解析报文。所以说,在新建一个协议的时候,必须要把这个协议添加到DissectorTable中,否则新建的协议将无法生效。
(2)对于新建的协议,必须要重载dissector方法,报文在解析的时候就是调用这个方法来解析
从两次体会的侧重点可以看出,第一次体会主要是体会了Wireshark解析操作的基本思想,第二次体会主要是体会了Wireshark是如何开放接口给程序员支持解析自定义协议的。两次体会在不同的层次
重新学习了一下前一段时间依葫芦画瓢写的解析asn.1的骨干的Wireshark lua插件的代码,突然发现自己貌似理解了Wireshark解析的基本思想:把一段码流划分成若干个小段,每个段取个名字,并描述一下这个段如何翻译,至于如何分段那就是协议的事情,各个协议所做的事情就是描述了分段的方法。所以Wireshark在解析方面所做的事情,归纳下来就以下几点:
(1)根据协议把码流分成小段
(2)给这个段取个名字,这个名字协议中会给的
(3)把这个段码流的含义翻译成人类能够直观理解的文字或者数字
第二次体会:
Wireshark的LUA脚本研究
(1)DissectorTable是一个全局LUA表,这个表的内容就是各种各样的协议对象(应该是树形结构体分层管理的),在解析报文的时候,应该会遍历这个表的某个子表,然后找到一个合适的协议去解析。例如说待解析的协议在TCP下面,它就会遍历TCP子表,看是否有合适的协议来解析报文。所以说,在新建一个协议的时候,必须要把这个协议添加到DissectorTable中,否则新建的协议将无法生效。
(2)对于新建的协议,必须要重载dissector方法,报文在解析的时候就是调用这个方法来解析
从两次体会的侧重点可以看出,第一次体会主要是体会了Wireshark解析操作的基本思想,第二次体会主要是体会了Wireshark是如何开放接口给程序员支持解析自定义协议的。两次体会在不同的层次