如何在wireshark中动态解密数据
how to dynamically decrypt data in wireshark
我在 wireshark 中为我的协议写了一个 lua 解析器:my.lua
。问题是我的协议对数据使用 AES 加密,每个会话的加密 AES 密钥都不同。
现在我在my.lua
中硬编码了16字节的aes-key,但是每次开始抓包或者加载一些保存的数据包之前,我都需要修改硬编码的值,非常不方便。
wireshark 中有没有允许用户输入的东西?例如,弹出对话框显示:"please input the aes key"
,在用户输入后,lua 脚本使用它进行解密。
考虑使用首选项 API。创建一个新的首选项就像设置索引一样简单,而读取首选项就是读取索引:
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
然后您可以右键单击协议树,select协议首选项并修改您的设置。有关文档,请参阅 https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Proto.html#lua_class_Pref。
(无耻插件:)可以在此处找到将首选项 API 与 luagcrypt 库(用于更快的 AES 解密)一起使用的示例:
我在 wireshark 中为我的协议写了一个 lua 解析器:my.lua
。问题是我的协议对数据使用 AES 加密,每个会话的加密 AES 密钥都不同。
现在我在my.lua
中硬编码了16字节的aes-key,但是每次开始抓包或者加载一些保存的数据包之前,我都需要修改硬编码的值,非常不方便。
wireshark 中有没有允许用户输入的东西?例如,弹出对话框显示:"please input the aes key"
,在用户输入后,lua 脚本使用它进行解密。
考虑使用首选项 API。创建一个新的首选项就像设置索引一样简单,而读取首选项就是读取索引:
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
然后您可以右键单击协议树,select协议首选项并修改您的设置。有关文档,请参阅 https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Proto.html#lua_class_Pref。
(无耻插件:)可以在此处找到将首选项 API 与 luagcrypt 库(用于更快的 AES 解密)一起使用的示例: