Wireshark-users: Re: [Wireshark-users] bad handling of DHCP option 90?
From: Jaap Keuter <jaap.keuter@xxxxxxxxx>
Date: Wed, 25 Apr 2007 21:07:46 +0200 (CEST)
Hi,
I reworked the patch a little:
- No C++ comments
- No need to check for size < 11, that is already done
- Changed the comparison to the value taken from the value_string
Not much changes this way. Hope you can check it out before we commit
this. I don't have a sample capture.
Thanx,
Jaap
On Wed, 25 Apr 2007, Stefan Puiu wrote:
> Thanks for the reply,
>
> actually, both the secret ID and HMAC fields are not present in
> DHCPDISCOVER messages. I've attached a new stab at a patch against the
> SVN head - the previous one was against the 0.99.5 source.
>
> Stefan.
>
> On 4/24/07, Jaap Keuter <jaap.keuter@xxxxxxxxx> wrote:
> > Hi,
> >
> > What about the presentation of the HMAC MD5 Hash? That's got to be
> > conditional as well.
> > Please refer to the SVN version, your line numbers seem to indicate an
> > older revision of the file.
> >
> > Thanx,
> > Jaap
> >
> > On Mon, 23 Apr 2007, Stefan Puiu wrote:
> >
> > >
> > > Stefan Puiu <stefan.puiu@...> writes:
> > >
> > > >
> > > > Hi all,
> > > >
> > > > I captured some DHCP traffic using DHCP AUTH (option 90 - see
> > > > RFC3118) using tcpdump on a Linux device and was then trying to view
> > > > it from wireshark (0.99.4) on Windows. The problem is I'm getting some
> > > > warnings on the option length, and I think they are wrong.
> > >
> > > OK, I've decided to dive a bit into the code and see what's wrong. I seem to
> > > have found the offending code in epan/dissectors/proto-bootp.c.
> > >
> > > It seems that there's a general check on option 90 so that the length field is
> > > >= 11, which seems right according to RFC3118. Then, wireshark expects the
> > > option length to be >= 31 if HMAC-MD5 is used - trouble is, that is valid for
> > > packets of any other type besides DHCPDISCOVER. Here'an attempt at a patch -
> > > since I'm using cygwin on Windows, I can't verify it:
> > >
> > > --- packet-bootp.c.orig 2007-02-02 00:00:56.000000000 +0200
> > > +++ packet-bootp.c 2007-04-24 00:42:44.267830400 +0300
> > > @@ -1172,11 +1172,20 @@
> > > switch (algorithm) {
> > >
> > > case AUTHEN_DELAYED_ALGO_HMAC_MD5:
> > > - if (optlen < 31) {
> > > + if (!strcmp(*dhcp_type_p, "Discover")) {
> > > + if (optlen < 11) {
> > > + proto_item_append_text(vti,
> > > + " length isn't >= 11");
> > > + break;
> > > + }
> > > + }
> > > + else if (optlen < 31) {
> > > proto_item_append_text(vti,
> > > " length isn't >= 31");
> > > break;
> > > }
> > > +
> > > +
> > > proto_tree_add_text(v_tree, tvb, optoff, 4,
> > > "Secret ID: 0x%08x",
> > > tvb_get_ntohl(tvb, optoff));
> > >
> > > Basically, it uses 11 as the minimum size if the DHCP message type is
> > > DHCPDISCOVER, and 31 otherwise.
> > >
> > > Stefan.
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > Wireshark-users mailing list
> > > Wireshark-users@xxxxxxxxxxxxx
> > > http://www.wireshark.org/mailman/listinfo/wireshark-users
> > >
> > >
> >
> > _______________________________________________
> > Wireshark-users mailing list
> > Wireshark-users@xxxxxxxxxxxxx
> > http://www.wireshark.org/mailman/listinfo/wireshark-users
> >
>
Index: packet-bootp.c
===================================================================
--- packet-bootp.c (revision 21561)
+++ packet-bootp.c (working copy)
@@ -1188,21 +1188,25 @@
switch (algorithm) {
case AUTHEN_DELAYED_ALGO_HMAC_MD5:
- if (optlen < 31) {
- proto_item_append_text(vti,
- " length isn't >= 31");
+ if (!strcmp(*dhcp_type_p, val_to_str(1, opt53_text, ""))) {
+ /* Discover has no Secret ID nor HMAC MD5 Hash */
break;
+ } else {
+ if (optlen < 31) {
+ proto_item_append_text(vti,
+ " length isn't >= 31");
+ break;
+ }
+ proto_tree_add_text(v_tree, tvb, optoff, 4,
+ "Secret ID: 0x%08x",
+ tvb_get_ntohl(tvb, optoff));
+ optoff += 4;
+ optleft -= 4;
+ proto_tree_add_text(v_tree, tvb, optoff, 16,
+ "HMAC MD5 Hash: %s",
+ tvb_bytes_to_str(tvb, optoff, 16));
+ break;
}
- proto_tree_add_text(v_tree, tvb, optoff, 4,
- "Secret ID: 0x%08x",
- tvb_get_ntohl(tvb, optoff));
- optoff += 4;
- optleft -= 4;
- proto_tree_add_text(v_tree, tvb, optoff, 16,
- "HMAC MD5 Hash: %s",
- tvb_bytes_to_str(tvb, optoff, 16));
- break;
-
default:
if (optleft == 0)
break;
- Follow-Ups:
- Re: [Wireshark-users] bad handling of DHCP option 90?
- From: Stefan Puiu
- Re: [Wireshark-users] bad handling of DHCP option 90?
- From: stefan puiu
- Re: [Wireshark-users] bad handling of DHCP option 90?
- References:
- Re: [Wireshark-users] bad handling of DHCP option 90?
- From: Stefan Puiu
- Re: [Wireshark-users] bad handling of DHCP option 90?
- Prev by Date: Re: [Wireshark-users] Wireshark and Excel/OpenOffice
- Next by Date: [Wireshark-users] ask about headers
- Previous by thread: Re: [Wireshark-users] bad handling of DHCP option 90?
- Next by thread: Re: [Wireshark-users] bad handling of DHCP option 90?
- Index(es):