Ethereal-dev: Re: [Ethereal-dev] Newbie::Naive Question :D

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Ulf Lamping <ulf.lamping@xxxxxx>
Date: Sat, 19 Nov 2005 15:45:09 +0100
fabio matturro wrote:

Hello,
I am a first timers at developing plugins, then - please - be indulgent : ) I would like to dissect a UDP-based protocol. As far as I've understood, this protocol doesn't always connect to the same port (neverthless the master uses a range of ports starting from 1025, its slaves from about 32000). I have started reading README.developer and other stuff and it suggests, as a very first step, to write a useless dissector which simply labels the protocol.
In order to do this it initializes:

static int global_foo_port = 1234;

and lines further:

disector.add ("udp.port", global_foo_port, foo_handle);

Here's the problem

Since there's no predetermined ports how can I initialize the dissector for this protocol? [I've read something about "conversion", not very thoroughly, though. Could it be the answer to my problems :D?]

As I'm not an expert on this, only a little help:

The "conversation" is about the grouping of several packets into a conversation. This is useful if relationships between packets are interesting, e.g. to calculate the time between two packets.

IMO what you are looking for is heuristic. This way the lower layer dissector will ask several upper layer dissectors "do you think this packet is for you?". The upper layer dissector will try to see if some characteristics are fulfilled (usually the first few bytes will follow a protocol specific pattern).

As I don't have much knowledge on this topic, you may read README.developer, the Developer Guide and, of course, the source code of some UDP based dissectors...

Regards, ULFL