Lua диссектор для HTTP, не может найти конец строки - PullRequest
1 голос
/ 06 марта 2019

Я пытаюсь разделить строковые данные в протоколе HTTP в wireshark, используя lua, и мне не удается найти конец строки, это то, что у меня сейчас есть

HTTP_protocol = Proto("ourHTTP", "HTTPProtocol")

first =ProtoField.string("HTTP_protocol.first", "first", base.ASCII)
second =ProtoField.string("HTTP_protocol.second", "second", base.ASCII)
HTTP_protocol.fields = {first}

function HTTP_protocol.dissector(buffer, pinfo, tree)
 length = buffer:len()

 if length ==0 then return end
pinfo.cols.protocol = HTTP_protocol.name
local subtree = tree:add(HTTP_protocol, buffer(), "HTTPProtocol data ")
local string_length

for i = 0, length - 1, 1 do
  if (buffer(i,1):uint() == '\r') then
    string_length = i - 0
    break
  end
end
subtree:add(first, buffer(0,string_length))

end
porttable = DissectorTable.get("tcp.port")
porttable:add(80, HTTP_protocol)

Я пыталсяпоиск '\ r', '\ 0' и '\ n', но независимо от того, что я все еще получаю, все строки вводятся как одна.Я что-то не так делаю?

1 Ответ

1 голос
/ 09 марта 2019

Вместо этого вы можете использовать 0x0D.Это код ASCII для \r.Таким образом, это закончится как

if (buffer(i,1):uint() == 0x0D) then

В Wireshark:

Picture of Wireshark with proper lineshift

...