Wireshark-dev: Re: [Wireshark-dev] How to apply a custom translation/rendering method to the da
Fulko Hew wrote:
As the subject line asks, is there a function I can invoke in a
dissector to change the way the bottom pane of the display opperates.
No.
I'd like to affect two different things:
1/ I'd like all the data to be masked first before being displayed as hex
(just like stripping a parity bit)
If the data has to have that bit stripped before being processed by the
dissector, you should consider having the dissector generate a new
raw-data tvbuff containing the processed data, and do the dissection on
that tvbuff. The raw-data tvbuff, if the right calls are made, will
show up as a tab in the third pane.
See, for example, dissect_icqv5Client() in epan/dissectors/packet-icq.c,
which takes a tvbuff with encrypted data and generates a new tvbuff with
the decrypted data.
2/ I need to be able to send the data through a translate table before
being displayed as ASCII. (ie like EBCDIC to ASCII, but its not EBCDIC)
The short-term fix would be to add one or more new encodings to the
"char_enc" enum in epan/packet.h (note that it's stored in a 2-bit
bitfield, so if you need more than two encodings, you'll need to widen
that bitfield), have your dissector set pinfo->fd->flags.encoding to the
new value, and update packet_hex_print_common() in gtk/proto_draw.c and
print_hex_data_buffer() in print.c to know about the new encodings.
A more general mechanism would be useful (along with a general mechanism
for handling character encodings in strings; the two mechanisms might
share some things, e.g. the encoding tags).