如何在Wireshark中使用Lua将转换为主机字节顺序

我没有找到一个标准函数来进行字节序转换,以便为wireshark写一个lua插件。

struct.pack似乎不起作用,至少在使用“require 'struct'”时,wireshark会抛出一个错误。

你可以调用tvb函数来获得显式的(这是我现在正在做的,所以不可移植:((()大端或小端的转换,但没有关于主机端字节顺序的转换。

我在网上搜索了很久,但没有找到解决方案,所以我希望有人能提供一个解决方案。

谢谢!

点赞
用户204011
用户204011

翻译:

你能否确定你正在运行的系统的字节序是否足够?

至少在 Lua 5.1 和 5.2 中,字节码头的第 7 个字节为 1 表示小端系统,为 0 表示大端系统。你可以通过以下方式从任何 Lua 脚本中获取这个字节:

string.dump(function() end):byte(7)

如果你使用 LuaJIT,你可以通过检查以下值来判断系统的字节序:

ffi.abi("le")

找到这个值就足以让你编写可移植的代码了。

2014-05-11 18:31:35
用户570728
用户570728

Wireshark即将支持struct.unpack方式操作,但是稳定版仍未发布。

http://ask.wireshark.org/questions/32715/no-struct-support-in-wireshark-1107s-lua-interpreter

2014-05-12 06:17:36