gpt4 book ai didi

lua - 当我关闭 wireshark 时,如何获取 wireshark Lua 解析器协议(protocol)首选项以保存并保留?

转载 作者:行者123 更新时间:2023-12-04 00:38:29 25 4
gpt4 key购买 nike

因此,我写了我只能称为 Awesome dissector 的东西。作用不大,但大大提高了我的工作效率。

我唯一的问题是我暴露了一些首选项,它们不会通过 wireshark 关闭/启动。

即:

先决条件:Lua 脚本必须在插件目录中...

  1. 打开 wireshark,编辑 > 首选项 > 协议(protocol) > http.queryparameters...
  2. 将 Param1 值设置为“aaa”,单击“确定”。 (会影响正常解剖。)
  3. 关闭 wireshark,重新启动,值又是别的东西。

我的剖析者:

-- Written by Eitam Doodai
-- trivial postdissector example
-- declare some Fields to be read
full_uri_from_request = Field.new("http.request.full_uri")

-- declare our (pseudo) protocol
http_query_params_proto = Proto("http.query_parameters","HTTP Query Parameters Postdissector")

-- create the fields for our "protocol"
query_param1 = ProtoField.string("http.query_parameters.param1","PARAM1")
query_param2 = ProtoField.string("http.query_parameters.param2","PARAM2")
query_param3 = ProtoField.string("http.query_parameters.param3","PARAM3")

-- add the field to the protocol
http_query_params_proto.fields = {query_param1}
http_query_params_proto.fields = {query_param2}
http_query_params_proto.fields = {query_param3}

-- Add prefs
local p1 = http_query_params_proto.prefs
p1.value1 = Pref.string ("Param1 Value", "123", "Param key to extract")
p1.value2 = Pref.string ("Param2 Value", "456", "Param key to extract")
p1.value3 = Pref.string ("Param3 Value", "789", "Param key to extract")

-- create a function to "postdissect" each frame
function http_query_params_proto.dissector(buffer,pinfo,tree)
-- obtain the current values the protocol fields
local full_uri_value = full_uri_from_request()
if full_uri_value then
local value = tostring(full_uri_value)
local subtree = tree:add(http_query_params_proto,"Query Param1")
local subtree = tree:add(http_query_params_proto,"Query Param2")
local subtree = tree:add(http_query_params_proto,"Query Param3")
_, _, query_param1_str = string.find(value,p1.value1 .. "=([^&]+)")
_, _, query_param2_str = string.find(value,p1.value2 .. "=([^&]+)")
_, _, query_param3_str = string.find(value,p1.value3 .. "=([^&]+)")
if query_param1_str then
subtree:add(query_param1,query_param1_str)
end

if query_param2_str then
subtree:add(query_param2,query_param2_str)
end
if query_param3_str then
subtree:add(query_param3,query_param3_str)
end
end
end

-- register our protocol as a postdissector
register_postdissector(http_query_params_proto)

最佳答案

如果您打开控制台并从命令行启动 wireshark,在您更改其中一个 http.query_parameters.param 设置后,保存它并关闭 wireshark,然后重新启动它,您将看到类似的东西:

...preferences line 1829: No such preference "http.query_parameters.value2" (applying your preferences once should remove this warning)

这就是一个问题:wireshark 打印出它在保存的首选项文件中找到的它不理解/不知道的首选项。

编辑:不要打开关于此的错误。问题是您使用的协议(protocol)名称已存在且具有首选项:“http”。换句话说,由于您基本上将首选项命名为 http.query...,wireshark 认为它应该属于 http 协议(protocol)模块,但是 real http 模块对此一无所知,因此 wireshark 会在下次尝试从首选项文件中读取时打印该错误。

长话短说:更改 Proto 和字段的名称等,以免与真实的协议(protocol)名称冲突。

关于lua - 当我关闭 wireshark 时,如何获取 wireshark Lua 解析器协议(protocol)首选项以保存并保留?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22231166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com