⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 auth.c

📁 华硕无线网卡 167G linux 驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
                {                    // 2. shared key, need to be challenged                    Seq++;                    RemoteStatus = MLME_SUCCESS;                    NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer);  //Get an unused nonpaged memory                    if(NStatus != NDIS_STATUS_SUCCESS)                     {                        DBGPRINT(RT_DEBUG_TRACE, "AUTH - PeerAuthRspAtSeq2Action() allocate memory fail\n");                        pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;                        MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_FAIL_NO_RESOURCE);                        return;                    }                                        DBGPRINT(RT_DEBUG_TRACE, "AUTH - Send AUTH request seq#3...\n");                    MgtMacHeaderInit(pAd, &AuthHdr, SUBTYPE_AUTH, 0, &Addr2, &pAd->PortCfg.Bssid);                    AuthHdr.Wep = 1;                    // Encrypt challenge text & auth information                    RTMPInitWepEngine(                    	pAd,                    	pAd->PortCfg.SharedKey[pAd->PortCfg.DefaultKeyId].Key,                    	pAd->PortCfg.DefaultKeyId,                    	pAd->PortCfg.SharedKey[pAd->PortCfg.DefaultKeyId].KeyLen,                    	CyperChlgText);					RTMPEncryptData(pAd, (PUCHAR) &Alg, CyperChlgText + 4, 2);					RTMPEncryptData(pAd, (PUCHAR) &Seq, CyperChlgText + 6, 2);					RTMPEncryptData(pAd, (PUCHAR) &RemoteStatus, CyperChlgText + 8, 2);					Element[0] = 16;					Element[1] = 128;					RTMPEncryptData(pAd, Element, CyperChlgText + 10, 2);					RTMPEncryptData(pAd, ChlgText, CyperChlgText + 12, 128);					RTMPSetICV(pAd, CyperChlgText + 140);                    MakeOutgoingFrame(OutBuffer,            &FrameLen,                                       MAC_HDR_LEN,          &AuthHdr,                                        CIPHER_TEXT_LEN + 16, CyperChlgText,                                       END_OF_ARGS);                    MiniportMMRequest(pAd, OutBuffer, FrameLen);                    RTMPSetTimer(pAd, &pAd->Mlme.AuthAux.AuthTimer, AUTH_TIMEOUT); //AUTH_KEY_TIMEOUT);                    pAd->Mlme.AuthMachine.CurrState = AUTH_WAIT_SEQ4;                }            }             else             {                pAd->PortCfg.AuthFailReason = Status;                COPY_MAC_ADDR(&pAd->PortCfg.AuthFailSta, &Addr2);                pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;                MlmeCntlConfirm(pAd, MT2_AUTH_CONF, Status);            }        }    }    else    {        DBGPRINT(RT_DEBUG_TRACE, "AUTH - PeerAuthSanity() sanity check fail\n");    }}/*    ==========================================================================    Description:        	IRQL = DISPATCH_LEVEL    ========================================================================== */VOID PeerAuthRspAtSeq4Action(    IN PRT2570ADAPTER pAd,     IN MLME_QUEUE_ELEM *Elem) {    MACADDR       Addr2;    USHORT        Alg, Seq, Status;    CHAR          ChlgText[CIPHER_TEXT_LEN];    if(PeerAuthSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr2, &Alg, &Seq, &Status, ChlgText))     {        if(MAC_ADDR_EQUAL(&(pAd->Mlme.AuthAux.Addr), &Addr2) && Seq == 4)         {            DBGPRINT(RT_DEBUG_TRACE, "AUTH - Receive AUTH_RSP seq#4 to me\n");            RTMPCancelTimer(&pAd->Mlme.AuthAux.AuthTimer);                        if(Status == MLME_SUCCESS)             {                pAd->PortCfg.Mauth = TRUE;            }             else             {                pAd->PortCfg.AuthFailReason = Status;                pAd->PortCfg.AuthFailSta = Addr2;            }                            pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;            MlmeCntlConfirm(pAd, MT2_AUTH_CONF, Status);        }    }    else    {        DBGPRINT(RT_DEBUG_TRACE, "AUTH - PeerAuthRspAtSeq4Action() sanity check fail\n");    }}/*    ==========================================================================    Description:        	IRQL = DISPATCH_LEVEL    ========================================================================== */VOID MlmeDeauthReqAction(    IN PRT2570ADAPTER pAd,     IN MLME_QUEUE_ELEM *Elem) {    MLME_DEAUTH_REQ_STRUCT *Info;    MACHDR        Hdr;    UCHAR        *OutBuffer = NULL;    NDIS_STATUS   NStatus;    ULONG         FrameLen = 0;    Info = (MLME_DEAUTH_REQ_STRUCT *)Elem->Msg;    NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer);  //Get an unused nonpaged memory    if (NStatus != NDIS_STATUS_SUCCESS)     {        DBGPRINT(RT_DEBUG_TRACE, "AUTH - MlmeDeauthReqAction() allocate memory fail\n");        pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;        MlmeCntlConfirm(pAd, MT2_DEAUTH_CONF, MLME_FAIL_NO_RESOURCE);        return;    }    DBGPRINT(RT_DEBUG_TRACE, "AUTH - Send DE-AUTH request...\n");    MgtMacHeaderInit(pAd, &Hdr, SUBTYPE_DEAUTH, 0, &Info->Addr, &pAd->PortCfg.Bssid);    MakeOutgoingFrame(OutBuffer,            &FrameLen,                       sizeof(MACHDR),       &Hdr,                       2,                    &Info->Reason,                       END_OF_ARGS);    MiniportMMRequest(pAd, OutBuffer, FrameLen);        pAd->PortCfg.DeauthReason = Info->Reason;    COPY_MAC_ADDR(&pAd->PortCfg.DeauthSta, &Info->Addr);    pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;    MlmeCntlConfirm(pAd, MT2_DEAUTH_CONF, MLME_SUCCESS);}/*    ==========================================================================    Description:        	IRQL = DISPATCH_LEVEL    ========================================================================== */VOID AuthTimeoutAction(    IN PRT2570ADAPTER pAd,     IN MLME_QUEUE_ELEM *Elem) {    DBGPRINT(RT_DEBUG_TRACE, "AUTH - AuthTimeoutAction\n");    pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;    MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_REJ_TIMEOUT);}/*    ==========================================================================    Description:        	IRQL = DISPATCH_LEVEL    ========================================================================== */VOID InvalidStateWhenAuth(    IN PRT2570ADAPTER pAd,     IN MLME_QUEUE_ELEM *Elem) {    DBGPRINT(RT_DEBUG_TRACE, "AUTH - InvalidStateWhenAuth (state=%d), reset AUTH state machine\n", pAd->Mlme.AuthMachine.CurrState);    pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;    MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_STATE_MACHINE_REJECT);}/*    ==========================================================================    Description:        Some STA/AP    Note:        This action should never trigger AUTH state transition, therefore we        separate it from AUTH state machine, and make it as a standalone service        	IRQL = DISPATCH_LEVEL    ========================================================================== */VOID Cls2errAction(    IN PRT2570ADAPTER pAd,     IN PMACADDR pAddr) {    MACHDR        Hdr;    UCHAR        *OutBuffer = NULL;    NDIS_STATUS   NStatus;    ULONG         FrameLen = 0;    USHORT        Reason = REASON_CLS2ERR;        NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer);  //Get an unused nonpaged memory    if (NStatus != NDIS_STATUS_SUCCESS)         return;    DBGPRINT(RT_DEBUG_TRACE, "AUTH - Class 2 error, Send DEAUTH frame...\n");    MgtMacHeaderInit(pAd, &Hdr, SUBTYPE_DEAUTH, 0, pAddr, &pAd->PortCfg.Bssid);    MakeOutgoingFrame(OutBuffer,            &FrameLen,                       sizeof(MACHDR),       &Hdr,                       2,                    &Reason,                       END_OF_ARGS);    MiniportMMRequest(pAd, OutBuffer, FrameLen);    pAd->PortCfg.DeauthReason = Reason;    COPY_MAC_ADDR(&pAd->PortCfg.DeauthSta, pAddr);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -