如何在Wireshark Lua dissector中访问TLS版本/包的校验和?

我是Wireshark和其Lua API的新手。我需要编写一个可以捕获端口443上的数据包,修改某些内容,然后将它们发送到目标的解析器。我找到了一个脚本这里,根据我的需求进行了修改:

-- 创建myproto协议及其字段
p_myproto = Proto(“myproto”,“My Protocol”)
local f_command = ProtoField.uint16(“myproto.command”,“命令”,base.HEX)
local f_data = ProtoField.string(“myproto.data”,“数据”,FT_STRING)

p_myproto.fields = {f_command}

- myproto解析器函数
function p_myproto.dissector(buf,pkt,root)
    print'packet captured')
  - 验证数据包长度是否足够,否则退出
  if buf:len()== 0 then return end
  pkt.cols.protocol = p_myproto.name
  local colss = pkt.cols

--pkt.cols.info:append(" " .. tostring(pkt.dst)。。tostring(pkt.src)。

print("".. tostring(pkt.dst))
print("".. tostring(pkt.src_port))
print"".. tostring(pkt.dst_port))

end

--初始化例程
function p_myproto.init()
end

- 为端口8002注册链式解析器
local tcp_dissector_table = DissectorTable.get(“tcp.port”)
dissector = tcp_dissector_table:get_dissector(443)
- 您可以从上面的函数p_myproto.dissector中调用解剖器
- 这样以前的分析器会得到调用
tcp_dissector_table:add(443,p_myproto)

我可以访问dst、src、dst_port等字段。整个列表可以在这里获得。但我找不到任何文档,告诉我如何访问/修改数据包的校验和、所选密码套件等。我知道它们存在于传输层,但我找不到任何文档,让我可以访问/修改这些值。

我做错了什么?在这方面的任何帮助将不胜感激!

谢谢!

点赞
用户2755698
用户2755698

你可以使用【字段提取器】访问任何字段,完整列表不在你参考的LuaAPI/Pinfo维基页面上,而是在Wireshark的显示过滤器参考页面上。

例如,如果你想要TCP校验和,可以使用:

fe_tcp_checksum = Field.new("tcp.checksum")

...

function p_myproto.dissector (buf, pkt, root)
    ...
    f_tcp_checksum = fe_tcp_checksum().value
    ...
end

Wireshark维基提供了更多Lua/示例

2018-01-02 16:48:15