Пример #1
0
void
vMgrDecodeReassocRequest(
    PWLAN_FR_REASSOCREQ  pFrame
     )
{
    PWLAN_IE   pItem;
    pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;

    // Fixed Fields
    pFrame->pwCapInfo = (unsigned short *)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
                                + WLAN_REASSOCREQ_OFF_CAP_INFO);
    pFrame->pwListenInterval = (unsigned short *)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
                                      + WLAN_REASSOCREQ_OFF_LISTEN_INT);
    pFrame->pAddrCurrAP = (PIEEE_ADDR)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
                                       + WLAN_REASSOCREQ_OFF_CURR_AP);

    // Information elements
    pItem = (PWLAN_IE)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
                       + WLAN_REASSOCREQ_OFF_SSID);

    while(((unsigned char *)pItem) < (pFrame->pBuf + pFrame->len)) {

        switch (pItem->byElementID){
            case WLAN_EID_SSID:
                if (pFrame->pSSID == NULL)
                    pFrame->pSSID = (PWLAN_IE_SSID)pItem;
                break;
            case WLAN_EID_SUPP_RATES:
                if (pFrame->pSuppRates == NULL)
                    pFrame->pSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
                break;

            case WLAN_EID_RSN:
                if (pFrame->pRSN == NULL) {
                    pFrame->pRSN = (PWLAN_IE_RSN)pItem;
                }
                break;
            case WLAN_EID_RSN_WPA:
                if (pFrame->pRSNWPA == NULL) {
                    if (WPAb_Is_RSN((PWLAN_IE_RSN_EXT)pItem) == true)
                        pFrame->pRSNWPA = (PWLAN_IE_RSN_EXT)pItem;
                }
                break;

            case WLAN_EID_EXTSUPP_RATES:
                if (pFrame->pExtSuppRates == NULL)
                    pFrame->pExtSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
                break;
            default:
                DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Unrecognized EID=%dd in reassocreq decode.\n",
                            pItem->byElementID);
                break;
        }
        pItem = (PWLAN_IE)(((unsigned char *)pItem) + 2 + pItem->len);
    }
    return;
}
Пример #2
0
VOID
vMgrDecodeAssocRequest(
    IN  PWLAN_FR_ASSOCREQ  pFrame
    )
{
    PWLAN_IE   pItem;

    pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
    
    pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
                                + WLAN_ASSOCREQ_OFF_CAP_INFO);
    pFrame->pwListenInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
                                + WLAN_ASSOCREQ_OFF_LISTEN_INT);

    
    pItem = (PWLAN_IE)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
                            + WLAN_ASSOCREQ_OFF_SSID);

    while (((PBYTE)pItem) < (pFrame->pBuf + pFrame->len)) {
        switch (pItem->byElementID){
            case WLAN_EID_SSID:
                if (pFrame->pSSID == NULL)
                    pFrame->pSSID = (PWLAN_IE_SSID)pItem;
                break;
            case WLAN_EID_SUPP_RATES:
                if (pFrame->pSuppRates == NULL)
                    pFrame->pSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
                break;

            case WLAN_EID_RSN:
                if (pFrame->pRSN == NULL) {
                    pFrame->pRSN = (PWLAN_IE_RSN)pItem;
                }
                break;
            case WLAN_EID_RSN_WPA:
                if (pFrame->pRSNWPA == NULL) {
                    if (WPAb_Is_RSN((PWLAN_IE_RSN_EXT)pItem) == TRUE)
                        pFrame->pRSNWPA = (PWLAN_IE_RSN_EXT)pItem;
                }
                break;
            case WLAN_EID_EXTSUPP_RATES:
                if (pFrame->pExtSuppRates == NULL)
                    pFrame->pExtSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
                break;

            default:
                DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Unrecognized EID=%dd in assocreq decode.\n",
                        pItem->byElementID);
                break;
        }
        pItem = (PWLAN_IE)(((PBYTE)pItem) + 2 + pItem->len);
    }
    return;
}
Пример #3
0
void
vMgrDecodeProbeResponse(
     PWLAN_FR_PROBERESP  pFrame
    )
{
    PWLAN_IE    pItem;


    pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;

    /*              */
    pFrame->pqwTimestamp = (PQWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
                                    + WLAN_PROBERESP_OFF_TS);
    pFrame->pwBeaconInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
                                       + WLAN_PROBERESP_OFF_BCN_INT);
    pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
                                + WLAN_PROBERESP_OFF_CAP_INFO);

    /*                      */
    pItem = (PWLAN_IE)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
                       + WLAN_PROBERESP_OFF_SSID);

    while (((PBYTE)pItem) < (pFrame->pBuf + pFrame->len)) {
        switch (pItem->byElementID) {
        case WLAN_EID_SSID:
            if (pFrame->pSSID == NULL)
                pFrame->pSSID = (PWLAN_IE_SSID)pItem;
            break;
        case WLAN_EID_SUPP_RATES:
            if (pFrame->pSuppRates == NULL)
                pFrame->pSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
            break;
        case WLAN_EID_FH_PARMS:
            break;
        case WLAN_EID_DS_PARMS:
            if (pFrame->pDSParms == NULL)
                pFrame->pDSParms = (PWLAN_IE_DS_PARMS)pItem;
            break;
        case WLAN_EID_CF_PARMS:
            if (pFrame->pCFParms == NULL)
                pFrame->pCFParms = (PWLAN_IE_CF_PARMS)pItem;
            break;
        case WLAN_EID_IBSS_PARMS:
            if (pFrame->pIBSSParms == NULL)
                pFrame->pIBSSParms = (PWLAN_IE_IBSS_PARMS)pItem;
            break;

        case WLAN_EID_RSN:
            if (pFrame->pRSN == NULL)
                pFrame->pRSN = (PWLAN_IE_RSN)pItem;
            break;
        case WLAN_EID_RSN_WPA:
            if (pFrame->pRSNWPA == NULL) {
                if (WPAb_Is_RSN((PWLAN_IE_RSN_EXT)pItem) == TRUE)
                    pFrame->pRSNWPA = (PWLAN_IE_RSN_EXT)pItem;
            }
            break;
        case WLAN_EID_ERP:
            if (pFrame->pERP == NULL)
                pFrame->pERP = (PWLAN_IE_ERP)pItem;
            break;
        case WLAN_EID_EXTSUPP_RATES:
            if (pFrame->pExtSuppRates == NULL)
                pFrame->pExtSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
            break;

        case WLAN_EID_COUNTRY:      /*   */
            if (pFrame->pIE_Country == NULL)
                pFrame->pIE_Country = (PWLAN_IE_COUNTRY)pItem;
            break;

        case WLAN_EID_PWR_CONSTRAINT:   /*    */
            if (pFrame->pIE_PowerConstraint == NULL)
                pFrame->pIE_PowerConstraint = (PWLAN_IE_PW_CONST)pItem;
            break;

        case WLAN_EID_CH_SWITCH:    /*    */
            if (pFrame->pIE_CHSW == NULL)
                pFrame->pIE_CHSW = (PWLAN_IE_CH_SW)pItem;
            break;

        case WLAN_EID_QUIET:        /*    */
            if (pFrame->pIE_Quiet == NULL)
                pFrame->pIE_Quiet = (PWLAN_IE_QUIET)pItem;
            break;

        case WLAN_EID_IBSS_DFS:
            if (pFrame->pIE_IBSSDFS == NULL)
                pFrame->pIE_IBSSDFS = (PWLAN_IE_IBSS_DFS)pItem;
            break;

        default:
            DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Bad EID=%dd in proberesp\n", pItem->byElementID);
            break;
        }

        pItem = (PWLAN_IE)(((PBYTE)pItem) + 2 +  pItem->len);
    }
}
Пример #4
0
void
vMgrDecodeBeacon(
    PWLAN_FR_BEACON  pFrame
    )
{
    PWLAN_IE        pItem;

    pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;

    // Fixed Fields
    pFrame->pqwTimestamp = (PQWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
                                    + WLAN_BEACON_OFF_TS);
    pFrame->pwBeaconInterval = (unsigned short *)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
                                       + WLAN_BEACON_OFF_BCN_INT);
    pFrame->pwCapInfo = (unsigned short *)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
                                + WLAN_BEACON_OFF_CAPINFO);

    // Information elements
    pItem = (PWLAN_IE)((unsigned char *)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)))
                       + WLAN_BEACON_OFF_SSID);
    while( ((unsigned char *)pItem) < (pFrame->pBuf + pFrame->len) ){

        switch (pItem->byElementID) {
            case WLAN_EID_SSID:
                if (pFrame->pSSID == NULL)
                    pFrame->pSSID = (PWLAN_IE_SSID)pItem;
                break;
            case WLAN_EID_SUPP_RATES:
                if (pFrame->pSuppRates == NULL)
                    pFrame->pSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
                break;
            case WLAN_EID_FH_PARMS:
                //pFrame->pFHParms = (PWLAN_IE_FH_PARMS)pItem;
                break;
            case WLAN_EID_DS_PARMS:
                if (pFrame->pDSParms == NULL)
                    pFrame->pDSParms = (PWLAN_IE_DS_PARMS)pItem;
                break;
            case WLAN_EID_CF_PARMS:
                if (pFrame->pCFParms == NULL)
                    pFrame->pCFParms = (PWLAN_IE_CF_PARMS)pItem;
                break;
            case WLAN_EID_IBSS_PARMS:
                if (pFrame->pIBSSParms == NULL)
                    pFrame->pIBSSParms = (PWLAN_IE_IBSS_PARMS)pItem;
                break;
            case WLAN_EID_TIM:
                if (pFrame->pTIM == NULL)
                    pFrame->pTIM = (PWLAN_IE_TIM)pItem;
                break;

            case WLAN_EID_RSN:
                if (pFrame->pRSN == NULL) {
                    pFrame->pRSN = (PWLAN_IE_RSN)pItem;
                }
                break;
            case WLAN_EID_RSN_WPA:
                if (pFrame->pRSNWPA == NULL) {
                    if (WPAb_Is_RSN((PWLAN_IE_RSN_EXT)pItem) == true)
                        pFrame->pRSNWPA = (PWLAN_IE_RSN_EXT)pItem;
                }
                break;

            case WLAN_EID_ERP:
                if (pFrame->pERP == NULL)
                    pFrame->pERP = (PWLAN_IE_ERP)pItem;
                break;
            case WLAN_EID_EXTSUPP_RATES:
                if (pFrame->pExtSuppRates == NULL)
                    pFrame->pExtSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
                break;

            case WLAN_EID_COUNTRY:      //7
                if (pFrame->pIE_Country == NULL)
                    pFrame->pIE_Country = (PWLAN_IE_COUNTRY)pItem;
                break;

            case WLAN_EID_PWR_CONSTRAINT:   //32
                if (pFrame->pIE_PowerConstraint == NULL)
                    pFrame->pIE_PowerConstraint = (PWLAN_IE_PW_CONST)pItem;
                break;

            case WLAN_EID_CH_SWITCH:    //37
                if (pFrame->pIE_CHSW == NULL)
                    pFrame->pIE_CHSW = (PWLAN_IE_CH_SW)pItem;
                break;

            case WLAN_EID_QUIET:        //40
                if (pFrame->pIE_Quiet == NULL)
                    pFrame->pIE_Quiet = (PWLAN_IE_QUIET)pItem;
                break;

            case WLAN_EID_IBSS_DFS:
                if (pFrame->pIE_IBSSDFS == NULL)
                    pFrame->pIE_IBSSDFS = (PWLAN_IE_IBSS_DFS)pItem;
                break;

            default:
                DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Unrecognized EID=%dd in beacon decode.\n", pItem->byElementID);
                break;

        }
        pItem = (PWLAN_IE)(((unsigned char *)pItem) + 2 + pItem->len);
    }

    return;
}