缘起

最近在编写 lua 插件时,遇到一个问题:发现tvb中的字节码,传入 lua-protobuf 中,部分报文解码失败。
于是经过一顿debug,最后将字节码写入文件,对比 lua-protobuf 中的字节码和 tvb 中的字节码,发现不一致。

解决办法

通过 goolge 找到了如下一篇文章,wireshark-lua-stringbyte-error 不应该使用 tvb_range:string() 这个方法默认是带字符集转换的,要想将原始的bytes转为 lua string,需要使用raw方法。

1
2
-- local lua_str = tvb_range:string()
local lua_str = tvb_range:raw(tvb_range:offset(), tvb_range:len())

总结

这个问题,本质还是没有仔细阅读 wireshark lua 插件关于 tvb 的API文档导致的。
有时候遇到问题,我们可以先通过 google 快速解决问题;
然后,有时间可以多看看官方的文档,可以获得更深的理解。

参考链接