Skip to content

Commit

Permalink
fixed ie tag walk
Browse files Browse the repository at this point in the history
  • Loading branch information
= committed Sep 9, 2024
1 parent 7c88b43 commit 5251cc8
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 24 deletions.
51 changes: 29 additions & 22 deletions hcxpcapngtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -2402,6 +2402,7 @@ qsort(aplist, aplistptr -aplist, MACLIST_SIZE, sort_maclist_by_mac_count);
qsort(pmkidlist, pmkidlistptr -pmkidlist, PMKIDLIST_SIZE, sort_pmkidlist_by_mac);
if(ncvalue == 0) qsort(handshakelist, handshakelistptr -handshakelist, HANDSHAKELIST_SIZE, sort_handshakelist_by_timegap);
else qsort(handshakelist, handshakelistptr -handshakelist, HANDSHAKELIST_SIZE, sort_handshakelist_by_rcgap);

zeigerhsakt = handshakelist;
zeigerpmkidakt = pmkidlist;
zeigermacold = aplist;
Expand Down Expand Up @@ -3178,57 +3179,63 @@ while(0 < infolen)
if(tagptr->len > infolen) return false;
if(tagptr->id == TAG_SSID)
{
if(tagptr->len > ESSID_LEN_MAX)
{
taglenerrorcount++;
return false;
}
if(isessidvalid(tagptr->len, &tagptr->data[0]) == false) return false;
if((tagok & TAG_SSID_OK) == 0)
{
ef = true;
memcpy(zeiger->essid, &tagptr->data[0], tagptr->len);
zeiger->essidlen = tagptr->len;
if(tagptr->len > ESSID_LEN_MAX)
{
taglenerrorcount++;
return false;
}
if(isessidvalid(tagptr->len, &tagptr->data[0]) == false) return false;
{
ef = true;
memcpy(zeiger->essid, &tagptr->data[0], tagptr->len);
zeiger->essidlen = tagptr->len;
}
tagok |= TAG_SSID_OK;
}
tagok |= TAG_SSID_OK;
}
else if(tagptr->id == TAG_CHAN)
{
if(tagptr->len == 1) zeiger->channel = tagptr->data[0];
if((tagok & TAG_CHAN_OK) == 0)
{
if(tagptr->len == 1)
{
zeiger->channel = tagptr->data[0];
tagok |= TAG_CHAN_OK;
}
}
}
else if(tagptr->id == TAG_COUNTRY)
{
if(tagptr->len > 2)
{
zeiger->country[0] = tagptr->data[0];
zeiger->country[1] = tagptr->data[1];
if((tagok & TAG_COUNTRY_OK) == 0)
{
zeiger->country[0] = tagptr->data[0];
zeiger->country[1] = tagptr->data[1];
tagok |= TAG_COUNTRY_OK;
}
}
}
else if(tagptr->id == TAG_RSN)
{
if(tagptr->len >= RSNIE_LEN_MIN)
{
if(gettagrsn(tagptr->len, tagptr->data, zeiger) == false) return false;
tagok |= TAG_RSN_OK;
}
}
else if(tagptr->id == TAG_VENDOR)
{
if(tagptr->len >= VENDORIE_SIZE)
{
if(gettagvendor(tagptr->len, tagptr->data, zeiger) == false) return false;
tagok |= TAG_VENDOR_OK;
}
}
infoptr += tagptr->len +IETAG_SIZE;
infolen -= tagptr->len +IETAG_SIZE;
}
if((infolen != 0) && (infolen != 4) && (ef == false))
{
if((tagok & TAG_SSID_OK) == TAG_SSID_OK) return true;
if((tagok & TAG_RSN_OK) == TAG_RSN_OK) return true;
if((tagok & TAG_VENDOR_OK) == TAG_VENDOR_OK) return true;
return false;
}
if((infolen != 0) && (infolen != 4) && (ef == false)) return false;
return true;
}
/*===========================================================================*/
Expand Down
4 changes: 2 additions & 2 deletions include/ieee80211.h
Original file line number Diff line number Diff line change
Expand Up @@ -368,8 +368,8 @@ struct ie_tag
#define TAG_VENDOR 0xdd
#define TAG_EXT 0xff
#define TAG_SSID_OK 0x01
#define TAG_RSN_OK 0x02
#define TAG_VENDOR_OK 0x04
#define TAG_CHAN_OK 0x02
#define TAG_COUNTRY_OK 0x04
uint8_t len;
uint8_t data[1];
} __attribute__((__packed__));
Expand Down

0 comments on commit 5251cc8

Please sign in to comment.