如何动态解密wireshark中的数据

时间:2016-12-10 09:44:08

标签: wireshark wireshark-dissector

我在wireshark中为我的协议写了一个lua解剖器:my.lua。问题是我的协议对数据使用AES加密,加密AES密钥对于每个会话是不同的。

现在我在my.lua中对16字节-aes密钥进行了硬编码,但每次开始捕获或加载一些已保存的数据包之前,我都需要修改硬编码值,这非常不方便。

无论如何,wireshark中是否有允许用户输入内容的东西?例如,弹出对话框显示:"please input the aes key",在用户输入后,lua脚本使用它来进行解密。

1 个答案:

答案 0 :(得分:2)

考虑使用Prefs API。创建新的首选项就像设置索引一样简单,同时读取pref正在读取索引:

your_proto = Proto("yourproto", "Your Proto")
your_proto.prefs.key = Pref.string("Decryption key", "", "128-bit AES key (in hex)")

function your_proto.dissector(tvb, pinfo, tree)
    local decryption_key = your_proto.prefs.key
    decrypt(tvb, tvb())  -- assume suitable "decrypt" routine
end

然后,您可以右键单击协议树,选择“协议”首选项并修改您的设置。有关文档,请参阅https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Proto.html#lua_class_Pref

(无耻插件:)可以在此处找到使用带有luagcrypt库的Preferences API(用于更快的AES解密)的示例: