Ethereal-dev: Re: [Ethereal-dev] Re: Ethereal Gripe

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

From: Ed Warnicke <hagbard@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 20 Aug 2003 17:08:34 -0400 (EDT)
It strikes me that generally you've got a few families of
protocols:

1)	Fixed width binary fields
2)	RFC 822 derived ( HTTP, SIP, MGCP, etc)
3)	TLV based
4)	ASN.1 ber/per encoded

Most of these shouldn't be that hard to handle as generalized
cases... but everytime I find myself saying that I think of
DNS and DNS compression... there will always be oddballs...

Ed

On Wed, 20 Aug 2003, Ashok Narayanan wrote:

>
> That's a little tough; freeform protocols are somewhat harder to deal
> with.
>
> A lot of IETF protocols are going to this "TLV" type of message like
> used in RSVP. The message is a series of objects; each object has a
> type, a subtype, and a length (not necessarily in that order). Each
> object has a separate definition.
>
> Maybe some sort of XML parser that describes these objects, and the
> header? I was thinking about it some time back but gave up due to lack
> of time. Maybe I (or somebody) can dig up this chestnut again...
>
> -Ashok
>
> On Wed, Aug 20, 2003 at 10:45:55PM +0200, Andreas Sikkema wrote:
> >
> > John McDermott wrote:
> >
> > > This might be tricky with tethereal.  It would be nice to have a
> > > gui-based protocol analyzer builder, though, even if it were simple.  It
> > > could generate the "protocol specification language", C or perl/python.
> > > I was thinking of a sort of generic, basic (not BASIC) sort of tool so
> > > that if someone wanted to one could build a quick and dirty decoder.
> >
> > I am thinking along the lines of a very simple language (something
> > like a stripped version of ASN.1).
> >
> > You have bits, bytes, integers, strings and the sequence in which they
> > appear are the way the appear in the protocol. Maybe add something
> > like a choice, but that would make things slightly more complicated,
> > but not that much I think.
> >
> > PROTOCOL "MyFirstProtocol", "My very own first protocol"
> > REGISTER "tcp.port", 1720
> >
> > INTEGER length
> > BYTE CHOICE packet_type
> >      0      setup
> >             BYTE thing
> >             STRING caller_id
> >      1      connect
> >             BYTE otherthing
> >             INTEGER something
> >
> > This might be a little too simple (the parser might get confused
> > without explicit ends to things), butt his would generate something
> > along the lines (of the current code):
> >
> > void packet_dissect_MyFirstProtocol()
> > {
> >   create new tree for protocol
> >
> >   proto_tree_add_item( hf_length, ...);
> >
> >   int packet_type;
> >   packet_type = tvb_get_uint32(...);
> >   proto_tree_add_item( hf_packet_type, ...);
> >
> >   create new tvb
> >
> >   switch( packet_type )
> >   {
> >     case 0:
> >       dissect_setup();
> >     break;
> >     case 1:
> >       dissect_connect();
> >     break;
> >   }
> > }
> >
> >
> > --
> > Andreas Sikkema
> >
> > _______________________________________________
> > Ethereal-dev mailing list
> > Ethereal-dev@xxxxxxxxxxxx
> > http://www.ethereal.com/mailman/listinfo/ethereal-dev
>
> --
>
>
>
> --- Asok the Intern ----------------------------------------
> Ashok Narayanan
> IOS Network Protocols, Cisco Systems
> 1414 Mass Ave, Boxborough MA 01719
> Ph: 978-936-1608.  Fax: 978-936-2218 (Attn: Ashok Narayanan)
>
> _______________________________________________
> Ethereal-dev mailing list
> Ethereal-dev@xxxxxxxxxxxx
> http://www.ethereal.com/mailman/listinfo/ethereal-dev
>