【问题标题】:how to convert to host byte order using lua in wireshark如何在wireshark中使用lua转换为主机字节顺序
【发布时间】:2014-06-28 14:51:19
【问题描述】:

我在寻找一个标准函数来进行字节顺序转换来为wireshark编写一个lua插件时没有运气。

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

您可以调用 tvb 函数来获得显式(这就是我现在正在做的,所以它不是可移植的:((())转换为大端或小端,但对主机端字节顺序没有任何影响。

我在网上搜索和搜索但没有任何结果,所以我希望有人能提供解决方案。

谢谢!

【问题讨论】:

  • 谢谢,我尝试导入struct模块,但是wireshark报错。我没有进一步探索,只是假设它不适用于wireshark内置的lua解释器。

标签: lua wireshark endianness


【解决方案1】:

如果你能确定你正在运行的系统的字节顺序就足够了吗?

至少在 Lua 5.1 和 5.2 中,字节码头的第 7 个字节对于小端系统是 1,对于大端系统是 0。您可以通过这种方式从任何 Lua 脚本中获取此字节:

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

如果您使用 LuaJIT,您只需检查以下值:

ffi.abi("le")

找出这一点应该足以让您编写可移植的代码。

【讨论】:

  • 不错的单行。它适用于wireshark的lua插件。是的,只要我知道系统的字节顺序,我就可以调用正确的转换函数。非常感谢!
【解决方案2】:

Wireshark 接近于支持 struct.unpack 的处理方式。它尚未发布稳定版本。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-24
    • 2023-03-11
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2015-06-28
    • 1970-01-01
    相关资源
    最近更新 更多