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

📄 auth.c

📁 ralink 2870 usb无线网卡 最新驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
        	IRQL = DISPATCH_LEVEL    ========================================================================== */VOID PeerAuthRspAtSeq4Action(    IN PRTMP_ADAPTER pAd,     IN MLME_QUEUE_ELEM *Elem) {    UCHAR         Addr2[MAC_ADDR_LEN];    USHORT        Alg, Seq, Status;    CHAR          ChlgText[CIPHER_TEXT_LEN];    BOOLEAN       TimerCancelled;    if(PeerAuthSanity(pAd, Elem->Msg, Elem->MsgLen, Addr2, &Alg, &Seq, &Status, ChlgText))     {        if(MAC_ADDR_EQUAL(pAd->MlmeAux.Bssid, Addr2) && Seq == 4)         {            DBGPRINT(RT_DEBUG_TRACE, ("AUTH - Receive AUTH_RSP seq#4 to me\n"));            RTMPCancelTimer(&pAd->MlmeAux.AuthTimer, &TimerCancelled);                        if (Status != MLME_SUCCESS)             {                pAd->StaCfg.AuthFailReason = Status;                COPY_MAC_ADDR(pAd->StaCfg.AuthFailSta, Addr2);            }                            pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;            MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status);        }    }    else    {        DBGPRINT(RT_DEBUG_TRACE, ("AUTH - PeerAuthRspAtSeq4Action() sanity check fail\n"));    }}/*    ==========================================================================    Description:        	IRQL = DISPATCH_LEVEL    ========================================================================== */VOID MlmeDeauthReqAction(    IN PRTMP_ADAPTER pAd,     IN MLME_QUEUE_ELEM *Elem) {    MLME_DEAUTH_REQ_STRUCT *pInfo;    HEADER_802_11 DeauthHdr;    PUCHAR        pOutBuffer = NULL;    NDIS_STATUS   NStatus;    ULONG         FrameLen = 0;    USHORT        Status;    pInfo = (MLME_DEAUTH_REQ_STRUCT *)Elem->Msg;    NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //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;        Status = MLME_FAIL_NO_RESOURCE;        MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_DEAUTH_CONF, 2, &Status);        return;    }    DBGPRINT(RT_DEBUG_TRACE, ("AUTH - Send DE-AUTH request (Reason=%d)...\n", pInfo->Reason));    MgtMacHeaderInit(pAd, &DeauthHdr, SUBTYPE_DEAUTH, 0, pInfo->Addr, pAd->MlmeAux.Bssid);    MakeOutgoingFrame(pOutBuffer,           &FrameLen,                       sizeof(HEADER_802_11),&DeauthHdr,                       2,                    &pInfo->Reason,                       END_OF_ARGS);    MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);	MlmeFreeMemory(pAd, pOutBuffer);        pAd->StaCfg.DeauthReason = pInfo->Reason;    COPY_MAC_ADDR(pAd->StaCfg.DeauthSta, pInfo->Addr);    pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;    Status = MLME_SUCCESS;    MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_DEAUTH_CONF, 2, &Status);	// send wireless event - for deauthentication	if (pAd->CommonCfg.bWirelessEvent)		RTMPSendWirelessEvent(pAd, IW_DEAUTH_EVENT_FLAG, pAd->MacTab.Content[BSSID_WCID].Addr, BSS0, 0); }/*    ==========================================================================    Description:        	IRQL = DISPATCH_LEVEL    ========================================================================== */VOID AuthTimeoutAction(    IN PRTMP_ADAPTER pAd,     IN MLME_QUEUE_ELEM *Elem) {    USHORT Status;    DBGPRINT(RT_DEBUG_TRACE, ("AUTH - AuthTimeoutAction\n"));    pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;    Status = MLME_REJ_TIMEOUT;    MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status);}/*    ==========================================================================    Description:        	IRQL = DISPATCH_LEVEL    ========================================================================== */VOID InvalidStateWhenAuth(    IN PRTMP_ADAPTER pAd,     IN MLME_QUEUE_ELEM *Elem) {    USHORT Status;    DBGPRINT(RT_DEBUG_TRACE, ("AUTH - InvalidStateWhenAuth (state=%ld), reset AUTH state machine\n", pAd->Mlme.AuthMachine.CurrState));    pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;    Status = MLME_STATE_MACHINE_REJECT;    MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status);}/*    ==========================================================================    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 PRTMP_ADAPTER pAd,     IN PUCHAR pAddr) {    HEADER_802_11 DeauthHdr;    PUCHAR        pOutBuffer = NULL;    NDIS_STATUS   NStatus;    ULONG         FrameLen = 0;    USHORT        Reason = REASON_CLS2ERR;        NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //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, &DeauthHdr, SUBTYPE_DEAUTH, 0, pAddr, pAd->MlmeAux.Bssid);    MakeOutgoingFrame(pOutBuffer,           &FrameLen,                       sizeof(HEADER_802_11),&DeauthHdr,                       2,                    &Reason,                       END_OF_ARGS);    MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);	MlmeFreeMemory(pAd, pOutBuffer);    pAd->StaCfg.DeauthReason = Reason;    COPY_MAC_ADDR(pAd->StaCfg.DeauthSta, pAddr);}BOOLEAN	AUTH_ReqSend(	IN  PRTMP_ADAPTER 		pAd,	IN  PMLME_QUEUE_ELEM	pElem,	IN  PRALINK_TIMER_STRUCT pAuthTimer,	IN  PSTRING				pSMName,	IN  USHORT				SeqNo,	IN  PUCHAR				pNewElement,	IN  ULONG				ElementLen){	USHORT             Alg, Seq, Status;	UCHAR              Addr[6];    ULONG              Timeout;    HEADER_802_11      AuthHdr;    BOOLEAN            TimerCancelled;    NDIS_STATUS        NStatus;    PUCHAR             pOutBuffer = NULL;    ULONG              FrameLen = 0, tmp = 0;		// Block all authentication request durning WPA block period	if (pAd->StaCfg.bBlockAssoc == TRUE)	{        DBGPRINT(RT_DEBUG_TRACE, ("%s - Block Auth request durning WPA block period!\n", pSMName));        pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;        Status = MLME_STATE_MACHINE_REJECT;        MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status);	}	    else if(MlmeAuthReqSanity(pAd, pElem->Msg, pElem->MsgLen, Addr, &Timeout, &Alg))     {    	/* reset timer */		RTMPCancelTimer(pAuthTimer, &TimerCancelled);		        COPY_MAC_ADDR(pAd->MlmeAux.Bssid, Addr);        pAd->MlmeAux.Alg  = Alg;        Seq = SeqNo;        Status = MLME_SUCCESS;                NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory        if(NStatus != NDIS_STATUS_SUCCESS)         {            DBGPRINT(RT_DEBUG_TRACE, ("%s - MlmeAuthReqAction(Alg:%d) allocate memory failed\n", pSMName, Alg));            pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;            Status = MLME_FAIL_NO_RESOURCE;            MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status);            return FALSE;        }        DBGPRINT(RT_DEBUG_TRACE, ("%s - Send AUTH request seq#1 (Alg=%d)...\n", pSMName, Alg));        MgtMacHeaderInit(pAd, &AuthHdr, SUBTYPE_AUTH, 0, Addr, pAd->MlmeAux.Bssid);        MakeOutgoingFrame(pOutBuffer,           &FrameLen,                           sizeof(HEADER_802_11),&AuthHdr,                           2,                    &Alg,                           2,                    &Seq,                           2,                    &Status,                           END_OF_ARGS);		if (pNewElement && ElementLen)		{			MakeOutgoingFrame(pOutBuffer+FrameLen,	&tmp, 							  ElementLen, 			pNewElement,                          	  END_OF_ARGS);			FrameLen += tmp;		}		        MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);    	MlmeFreeMemory(pAd, pOutBuffer);		RTMPSetTimer(pAuthTimer, Timeout);		return TRUE;    }     else     {        DBGPRINT_ERR(("%s - MlmeAuthReqAction() sanity check failed\n", pSMName));        		return FALSE;    }	return TRUE;}

⌨️ 快捷键说明

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