Wireshark mailing list archives

Re: Wide char strings in LUA dissector


From: Helge Kruse <Helge.Kruse () gmx net>
Date: Wed, 30 Nov 2016 15:39:24 +0100

Am 29.11.2016 um 04:00 schrieb Guy Harris:

So you'd either have to fetch the length yourself and use an FT_STRING field, or get FT_UINT_STRING supported in Lua.

Currently I used a workaround and wrote a LUA function that retrieves
the wide char string from the tvb.

-- Get a wide character string from a TVB.
-- Assume the high byte of all 16-bit characters is always zero.
-- If the number of bytes is not know pass -1 to get the remaing
-- bytes of the packet.
function WideCharString(tvb, offset, remaining)
        local s = ""
        if remaining == -1 then
                remaining = tvb:reported_length_remaining()
        end
        while (offset < remaining) do
                local c = tvb:range(offset, 1):string()
                if c == "" then return s end
                s = s .. c -- string.format("%s", c)
                offset = offset + 2
        end
        return s
end

If I add this to a tree then I get the correct name:
        local rem = tvb:reported_length_remaining()
        local name = WideCharString(tvb, 8, rem - 8)
        tree:add("WName:", tvb:range(8, rem - 8), name)

But although the range is addressed with "tvb:range(8, rem - 8)" the
bytes in the packet panes are not highlighted for this tree item.

So, I fear it would be better to get FT_UINT_STRING in LUA supported.

Regards
Helge

___________________________________________________________________________
Sent via:    Wireshark-users mailing list <wireshark-users () wireshark org>
Archives:    https://www.wireshark.org/lists/wireshark-users
Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-users
             mailto:wireshark-users-request () wireshark org?subject=unsubscribe


Current thread: