как получить доступ к версии TLS / контрольной сумме пакета в анализаторе Wireshark Lua?

я новичок в wireshark и его lua api. Мне нужно написать диссектор, который может перехватывать пакеты на порту 443, изменять часть содержимого и затем отправлять их по назначению. Я нашел скрипт здесь который я изменил в соответствии со своими потребностями:

-- create myproto protocol and its fields
p_myproto = Proto ("myproto","My Protocol")
local f_command = ProtoField.uint16("myproto.command", "Command", base.HEX)
local f_data = ProtoField.string("myproto.data", "Data", FT_STRING)

p_myproto.fields = {f_command}

-- myproto dissector function
function p_myproto.dissector (buf, pkt, root)
    print ('packet captured')
  -- validate packet length is adequate, otherwise quit
  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

-- Initialization routine
function p_myproto.init()
end

-- register a chained dissector for port 8002
local tcp_dissector_table = DissectorTable.get("tcp.port")
dissector = tcp_dissector_table:get_dissector(443)
  -- you can call dissector from function p_myproto.dissector above
  -- so that the previous dissector gets called
tcp_dissector_table:add(443, p_myproto)

Я могу получить доступ к таким полям, как dst, src, dst_port и т. д. Весь список доступен здесь . Но я нигде не могу найти ссылку на то, как я могу получить доступ/изменить контрольную сумму пакета, выбранные наборы шифров и т. д. Я знаю, что они существуют на транспортном уровне, но я не смог найти никакой документации, которая позволила бы мне получить доступ/изменить эти значения.

Что я делаю неправильно? любая помощь в этом отношении будет оценена!

Спасибо!


person Hussain Ali Akbar    schedule 26.12.2017    source источник


Ответы (1)


Вы можете получить доступ к любому полю с помощью Fiel Extractor< /em>, и весь список недоступен в 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/Examples.

person Christopher Maynard    schedule 02.01.2018
comment
о, ты прав. Справочная страница фильтра дисплея wireshark - это то, что я не смог найти. Спасибо! - person Hussain Ali Akbar; 03.01.2018