Ethereal-dev: [no subject]
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Jeffrey Perry <j.perry@xxxxxxxxxxxxxxxx>
Date: Mon, 05 Jul 1999 12:23:11 -0400
Yes, one comment. I think this is the right approach, I would suggest taking it one step farther though. If you build the parser into ethereal, then no recompiles would be needed for adding a new protocol. This is how Etherpeek on Windows works. > Hi, > > I wanted to discuss my progress as far as generating code for decode > modules is concerned, and seek some input and discussion. > > At present, I have a Perl program that can parse a description file of the > following sort: > > SMB open_andx { > andx; # An andx SMB > request { > UCHAR Word Count (WCT) = 15; > UCHAR AndXCommand; > UCHAR AndXReserved; > USHORT AndXOffset; > BITFIELD 16 Flags = { > 0x01 = { "Return Additional Info" , "Dont Return Additional Info" }; > 0x02 = { "Exclusive OpLock Requested" , "Exclusive OpLock not > Requested" }; > 0x04 = { "Batch OpLock Requested" , "Batch OpLock not Requested" }; > }; > USHORT Desired Access; > USHORT Search Attributes; > USHORT File Attributes; > USHORT Creation Time | fcall dissect_smb_time; # Call dissect_smb_time > USHORT Creation Date | fcall dissect_smb_date; # Call dissect_smb_date > USHORT Open Function; > ULONG Allocated Size; > ULONG Reserved1; > ULONG Reserved2; > USHORT Byte Count; > UCHAR Buffer Format; > STRING File Name; > } > response { > UCHAR Word Count (WCT) = 15; > UCHAR AndXCommand; > UCHAR AndXReserved; > USHORT AndXOffset; > USHORT FID; > USHORT Attributed; > USHORT Last Write Time | fcall dissect_dos_time; > USHORT Last Write Date | fcall dissect_dos_date; > ULONG Data Size; > USHORT Granted Access; > USHORT File Type; > USHORT Device State; > USHORT Action; > ULONG Server FID; > USHORT Reserved; > USHORT Byte Count; > } > } > > I can handle structured protocols and can associate calls to helper > routines in Ethereal with fields, as well as fields that depend on other > fields in simple ways (ie, length of F2 is F1). > > Now, my parser is very fragile, and the language is ugly, and I do not > handle all possible constructs, so I am thinking of rewriting the whole > thing, and I thought, why not try to handle more protocols? > > It seems like there are three different protocol types: > > 1. Highly structured, like SMB, which are easy to do using the above approach > > 2. Less structured, like FTP, which, none-the-less could be done with the > above approach, > > 3. Unstructured, like Telnet, which appear hard, but might be describable. > > My goal would be a protocol decode builder package, that can build all the > dissect routines and can plug things into the correct place to add a new > protocol. > > Are there any comments? > > > Regards > ------- > Richard Sharpe, sharpe@xxxxxxxxxx, NS Computer Software and Services P/L, > Samba (Team member www.samba.org), Ethereal (Team member www.zing.org) > Co-author, SAMS Teach Yourself Samba in 24 Hours >
- Follow-Ups:
- [ethereal-dev] Re:
- From: Laurent Deniel
- [ethereal-dev] Re:
- From: Richard Sharpe
- [ethereal-dev] Re:
- References:
- [no subject]
- From: Richard Sharpe
- [no subject]
- Prev by Date: [no subject]
- Next by Date: [ethereal-dev] Re:
- Previous by thread: [no subject]
- Next by thread: [ethereal-dev] Re:
- Index(es):