Вы не указали диапазон байтов, составляющих строку. Это обычно определяется либо явным полем длины, либо NULL-терминатором. Точный метод определения диапазона зависит от конкретного протокола и рассматриваемого поля.
Пример каждого типа:
- Если есть поле длины, скажем, 1 байт вдлина, которая предшествует строке, тогда вы можете использовать что-то вроде:
local str_len = buffer(13, 1):le_uint()
subtree:add_le(m.msg_len_f, buffer(13))
if str_len > 0 then
subtree:add_le(m.msg_f, buffer(14, str_len))
end
- И если строка заканчивается на NULL, вы можете использовать что-то вроде:
local str = buffer(13):stringz()
local str_len = str:len()
subtree:add_le(m.msg_f, buffer(13, str_len + 1))
Это всего лишь псевдо-примеры, поэтому вам нужно применить любой метод, возможно, ни один из них, чтобы соответствовать вашим данным.
См. Справочное руководство по Lua API Wireshark для более подробной информации, или к Wireshark LuaAPI вики-страниц.