亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wpa.c

?? 經過修改的在uClinux2.6上正常運行的ralink rt2571芯片組的設備驅動程序.
?? C
?? 第 1 頁 / 共 5 頁
字號:
		DBGPRINT_RAW(RT_DEBUG_INFO, "PTK = ");
		for (i = 0; i < 64; i++)
			DBGPRINT_RAW(RT_DEBUG_INFO, "%2x-", pAd->PortCfg.PTK[i]);
		DBGPRINT_RAW(RT_DEBUG_INFO, "\n FrameLen = %d\n", FrameLen);
			
		hmac_md5(pAd->PortCfg.PTK, LEN_EAP_MICK, pOutBuffer, FrameLen, Mic);
	}
	NdisMoveMemory(Packet.KeyDesc.KeyMic, Mic, LEN_KEY_DESC_MIC);


    FrameLen = 0;   
    MakeOutgoingFrame(pOutBuffer,   &FrameLen, 
                      LENGTH_802_3, &Header802_3,
//                    sizeof(EAPHEAD), EAPHEAD, 
		              Packet.Len[1] + 4,    &Packet,
		              END_OF_ARGS);

	// 5. Copy frame to Tx ring and prepare for encryption
    RTMPToWirelessSta(pAd, pOutBuffer, FrameLen);
	
    // Free allocated memory
    MlmeFreeMemory(pAd, pOutBuffer);
	
	// 6. Update GTK
	NdisZeroMemory(pGroupKey, sizeof(NDIS_802_11_KEY) + LEN_EAP_KEY);
	pGroupKey->Length    = sizeof(NDIS_802_11_KEY) + LEN_EAP_KEY;
	pGroupKey->KeyIndex  = 0x20000000 | pGroup->KeyDesc.KeyInfo.KeyIndex;
	pGroupKey->KeyLength = pGroup->KeyDesc.KeyLength[0] * 256 + pGroup->KeyDesc.KeyLength[1];

	COPY_MAC_ADDR(pGroupKey->BSSID, pAd->PortCfg.Bssid);
	NdisMoveMemory(pGroupKey->KeyMaterial, GTK, LEN_EAP_KEY);
	// Call Add peer key function
	RTMPWPAAddKeyProc(pAd, pGroupKey);
	
    kfree(pGroupKey);
	kfree(mpool);
    
	DBGPRINT(RT_DEBUG_TRACE, "WpaGroupMsg1Action <-----\n");
}
/*
	========================================================================
	
	Routine Description:
		Init WPA MAC header

	Arguments:
		pAd	Pointer	to our adapter
		
	Return Value:
		None
		
	Note:
		
	========================================================================
*/
VOID	WpaMacHeaderInit(
	IN		PRTMP_ADAPTER	pAd, 
	IN OUT	PHEADER_802_11	pHdr80211, 
	IN		UCHAR			wep, 
	IN		PUCHAR		    pAddr1)	
{
	NdisZeroMemory(pHdr80211, sizeof(HEADER_802_11));
	pHdr80211->FC.Type	= BTYPE_DATA;	
	pHdr80211->FC.ToDs	= 1;
	if (wep	== 1)
		pHdr80211->FC.Wep = 1;
	
	 //	Addr1: DA, Addr2: BSSID, Addr3:	SA
	COPY_MAC_ADDR(pHdr80211->Addr1, pAddr1);
	COPY_MAC_ADDR(pHdr80211->Addr2, pAd->CurrentAddress);
	COPY_MAC_ADDR(pHdr80211->Addr3, pAd->PortCfg.Bssid);
	pHdr80211->Sequence =	pAd->Sequence;
}

/*
	========================================================================
	
	Routine Description:
		SHA1 function 

	Arguments:
		
	Return Value:

	Note:
		
	========================================================================
*/
VOID	HMAC_SHA1(
	IN	UCHAR	*text,
	IN	UINT	text_len,
	IN	UCHAR	*key,
	IN	UINT	key_len,
	IN	UCHAR	*digest)
{
	SHA_CTX	context;
	UCHAR	k_ipad[65]; /* inner padding - key XORd with ipad	*/
	UCHAR	k_opad[65]; /* outer padding - key XORd with opad	*/
	INT		i;

	// if key is longer	than 64	bytes reset	it to key=SHA1(key)	
	if (key_len	> 64) 
	{
		SHA_CTX		 tctx;
		SHAInit(&tctx);
		SHAUpdate(&tctx, key, key_len);
		SHAFinal(&tctx,	key);
		key_len	= 20;
	}
	NdisZeroMemory(k_ipad, sizeof(k_ipad));
	NdisZeroMemory(k_opad, sizeof(k_opad));
	NdisMoveMemory(k_ipad, key,	key_len);
	NdisMoveMemory(k_opad, key,	key_len);

	// XOR key with	ipad and opad values  
	for	(i = 0;	i <	64;	i++) 
	{	
		k_ipad[i] ^= 0x36;
		k_opad[i] ^= 0x5c;
	}

	// perform inner SHA1 
	SHAInit(&context); 						/* init context for 1st pass */
	SHAUpdate(&context,	k_ipad,	64);		/*	start with inner pad */
	SHAUpdate(&context,	text, text_len);	/*	then text of datagram */
	SHAFinal(&context, digest);				/* finish up 1st pass */

	//perform outer	SHA1  
	SHAInit(&context);					/* init context for 2nd pass */
	SHAUpdate(&context,	k_opad,	64);	/*	start with outer pad */
	SHAUpdate(&context,	digest,	20);	/*	then results of	1st	hash */
	SHAFinal(&context, digest);			/* finish up 2nd pass */
}

/*
    ========================================================================
    
    Routine Description:
    Parse KEYDATA field.  KEYDATA[] May contain 2 RSN IE and optionally GTK.  
    GTK  is encaptulated in KDE format at  p.83 802.11i D10

    Arguments:
        
    Return Value:

    Note:
        802.11i D10  
        
    ========================================================================
*/
VOID ParseKeyData(
    IN  PRTMP_ADAPTER   pAd,
    IN  PUCHAR          pKeyData,
    IN  UCHAR           KeyDataLen)
{
    PKDE_ENCAP          pKDE = NULL;
    PNDIS_802_11_KEY    pGroupKey = NULL;
    PUCHAR              pMyKeyData = pKeyData;
    UCHAR               KeyDataLength = KeyDataLen;
    UCHAR               GTKLEN;
    INT                 i;
    
    if (!NdisEqualMemory(pKeyData, pAd->PortCfg.RSN_IE, pAd->PortCfg.RSN_IELen))
    {
        DBGPRINT(RT_DEBUG_ERROR, " RSN IE mismatched !!!!!!!!!! \n");
    }
    else
        DBGPRINT(RT_DEBUG_TRACE, " RSN IE matched !!!!!!!!!! \n");

    DBGPRINT(RT_DEBUG_ERROR, "KeyDataLen = %d  \n", KeyDataLen);

/*
====================================================================
======================================================================
*/
    if ((*pKeyData == WPARSNIE) && (*(pKeyData+1) != 0) && (KeyDataLength >= (2 + *(pKeyData+1))))      
    {
        pMyKeyData = pKeyData + *(pKeyData+1) + 2;
        KeyDataLength -= (2 + *(pKeyData+1));
        DBGPRINT_RAW(RT_DEBUG_TRACE,"WPA RSN IE length %d contained in Msg3 = \n", (2 + *(pKeyData+1)));
    }
    if ((*pMyKeyData == WPA2RSNIE) && (*(pMyKeyData+1) != 0) && (KeyDataLength >= (2 + *(pMyKeyData+1))))       
    {
        pMyKeyData += (*(pMyKeyData+1) + 2);
        KeyDataLength -= (2 + *(pMyKeyData+1));
        DBGPRINT_RAW(RT_DEBUG_TRACE,"WPA2 RSN IE length %d contained in Msg3 = \n", (2 + *(pMyKeyData+1)));
    }
        DBGPRINT_RAW(RT_DEBUG_TRACE,"KeyDataLength %d   \n", KeyDataLength);
    if ((KeyDataLength >= 8) && (KeyDataLength <= sizeof(KDE_ENCAP)))
    {
        pKDE = (PKDE_ENCAP) pMyKeyData;
        DBGPRINT_RAW(RT_DEBUG_TRACE,"pKDE = \n");
        DBGPRINT_RAW(RT_DEBUG_TRACE,"pKDE->Type %x:", pKDE->Type);
        DBGPRINT_RAW(RT_DEBUG_TRACE,"pKDE->Len 0x%x:", pKDE->Len);
        DBGPRINT_RAW(RT_DEBUG_TRACE,"pKDE->OUI %x %x %x :", pKDE->OUI[0],pKDE->OUI[1],pKDE->OUI[2] );
        DBGPRINT_RAW(RT_DEBUG_TRACE,"\n");                      
    }   
    
    if (pKDE->GTKEncap.Kid == 0)
    {
        DBGPRINT_RAW(RT_DEBUG_ERROR,"GTK Key index zero , error\n");
        return;
    }

        GTKLEN = pKDE->Len -6;

        DBGPRINT_RAW(RT_DEBUG_TRACE,"GTK Key[%d] len=%d ", pKDE->GTKEncap.Kid, GTKLEN);
        for (i = 0; i < GTKLEN; i++)
        {
            DBGPRINT_RAW(RT_DEBUG_TRACE,"%02x:", pKDE->GTKEncap.GTK[i]);
        }
        DBGPRINT_RAW(RT_DEBUG_TRACE,"\n");                       

        // Update GTK
        pGroupKey = kmalloc(MAX_LEN_OF_MLME_BUFFER, MEM_ALLOC_FLAG);  // allocate memory
        if (pGroupKey == NULL)
		    return;
	    
        NdisZeroMemory(pGroupKey, sizeof(NDIS_802_11_KEY) + LEN_EAP_KEY);
	    pGroupKey->Length    = sizeof(NDIS_802_11_KEY) + LEN_EAP_KEY;
	    pGroupKey->KeyIndex  = 0x20000000 | pKDE->GTKEncap.Kid;
	    pGroupKey->KeyLength = GTKLEN;

	    COPY_MAC_ADDR(pGroupKey->BSSID, pAd->PortCfg.Bssid);
	    NdisMoveMemory(pGroupKey->KeyMaterial, pKDE->GTKEncap.GTK, 32);

        // Call Add peer key function
        RTMPWPAAddKeyProc(pAd, pGroupKey);

        kfree(pGroupKey);

}

VOID WPAMake8023Hdr(
    IN PRTMP_ADAPTER    pAd, 
    IN PCHAR            pDAddr, 
    IN OUT PCHAR        pHdr)
{    
     // Addr1: DA, Addr2: BSSID, Addr3: SA
    NdisMoveMemory(pHdr, pDAddr, MAC_ADDR_LEN);
    NdisMoveMemory(&pHdr[MAC_ADDR_LEN], pAd->CurrentAddress, MAC_ADDR_LEN);
    pHdr[2*MAC_ADDR_LEN] = 0x88;
    pHdr[2*MAC_ADDR_LEN+1] = 0x8e;
    
}

/*
	========================================================================
	
	Routine Description:
		PRF function 

	Arguments:
		
	Return Value:

	Note:
		802.1i	Annex F.9
		
	========================================================================
*/
VOID	PRF(
	IN	UCHAR	*key,
	IN	INT		key_len,
	IN	UCHAR	*prefix,
	IN	INT		prefix_len,
	IN	UCHAR	*data,
	IN	INT		data_len,
	OUT	UCHAR	*output,
	IN	INT		len)
{
	INT		i;
	UCHAR	input[1024];
	INT		currentindex = 0;

	INT		total_len;
	
	NdisMoveMemory(input, prefix, prefix_len);
	input[prefix_len] =	0;
	NdisMoveMemory(&input[prefix_len + 1], data, data_len);
	total_len =	prefix_len + 1 + data_len;
	input[total_len] = 0;
	total_len++;
	for	(i = 0;	i <	(len + 19) / 20; i++)
	{
		HMAC_SHA1(input, total_len,	key, key_len, &output[currentindex]);
		currentindex +=	20;
		input[total_len - 1]++;
	}	
}

/*
	========================================================================
	
	Routine Description:
		Count TPTK from PMK

	Arguments:
		
	Return Value:
		Output		Store the TPTK

	Note:
		
	========================================================================
*/
VOID    WpaCountPTK(
	IN	UCHAR	*PMK,
	IN	UCHAR	*ANonce,
	IN	UCHAR	*AA,
	IN	UCHAR	*SNonce,
	IN	UCHAR	*SA,
	OUT	UCHAR	*output,
	IN	UINT	len)        
{	
	UCHAR	concatenation[76];
	UINT	CurrPos = 0;
	UCHAR	temp[32];
	UCHAR	Prefix[] = {'P', 'a', 'i', 'r', 'w', 'i', 's', 'e', ' ', 'k', 'e', 'y', ' ', 
						'e', 'x', 'p', 'a', 'n', 's', 'i', 'o', 'n'};

	NdisZeroMemory(temp, sizeof(temp));

    // Get smaller address
    if (RTMPCompareMemory(SA, AA, 6) == 1)
	    NdisMoveMemory(concatenation, AA, 6);
    else
        NdisMoveMemory(concatenation, SA, 6);
    CurrPos += 6;

    // Get larger address
    if (RTMPCompareMemory(SA, AA, 6) == 1)
	    NdisMoveMemory(&concatenation[CurrPos], SA, 6);
    else
	    NdisMoveMemory(&concatenation[CurrPos], AA, 6);
    CurrPos += 6;

    // Get smaller address
    if (RTMPCompareMemory(ANonce, SNonce, 32) == 1)
	    NdisMoveMemory(&concatenation[CurrPos], SNonce, 32);
    else
	    NdisMoveMemory(&concatenation[CurrPos], ANonce, 32);
    CurrPos += 32;

    // Get larger address
    if (RTMPCompareMemory(ANonce, SNonce, 32) == 1)
	    NdisMoveMemory(&concatenation[CurrPos], ANonce, 32);
    else
	    NdisMoveMemory(&concatenation[CurrPos], SNonce, 32);
    CurrPos += 32;

    PRF(PMK, LEN_MASTER_KEY, Prefix, 22, concatenation, 76, output, len);

}

/*
	========================================================================
	
	Routine Description:
		Misc function to Generate random number

	Arguments:
		
	Return Value:

	Note:
		802.1i  Annex F.9
		
	========================================================================
*/
VOID	GenRandom(
	IN	PRTMP_ADAPTER	pAd, 
	OUT	UCHAR			*random)
{	
	INT		i, curr;
	UCHAR	local[80], KeyCounter[32];
	UCHAR	result[80];
	ULONG	CurrentTime;
	UCHAR	prefix[] = {'I', 'n', 'i', 't', ' ', 'C', 'o', 'u', 'n', 't', 'e', 'r'};

	NdisZeroMemory(result, 80);
	NdisZeroMemory(local, 80);
	NdisZeroMemory(KeyCounter, 32);
	COPY_MAC_ADDR(local, pAd->CurrentAddress);
	
	for	(i = 0;	i <	32;	i++)
	{		
		curr =	MAC_ADDR_LEN;
		CurrentTime = jiffies;
		COPY_MAC_ADDR(local,  pAd->CurrentAddress);
		curr +=	MAC_ADDR_LEN;
		NdisMoveMemory(&local[curr],  &CurrentTime,	sizeof(CurrentTime));
		curr +=	sizeof(CurrentTime);
		NdisMoveMemory(&local[curr],  r

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
voyeur盗摄精品| 精品一区二区精品| 国产三级精品三级| 日韩精品一区二区三区视频播放| 欧美无砖砖区免费| 91精品91久久久中77777| 色菇凉天天综合网| 欧美色图一区二区三区| 欧美体内she精高潮| 欧美日本乱大交xxxxx| 欧美日韩高清在线播放| 欧美一级在线视频| 国产亚洲1区2区3区| 国产精品女主播在线观看| 亚洲欧洲日韩av| 亚洲h精品动漫在线观看| 亚洲不卡av一区二区三区| 夜夜揉揉日日人人青青一国产精品 | 国产91丝袜在线播放九色| 国产成人自拍网| 91视视频在线直接观看在线看网页在线看| 欧美一级免费观看| 国产夜色精品一区二区av| 中文字幕中文字幕中文字幕亚洲无线| 中文字幕亚洲一区二区va在线| 一区二区三区欧美亚洲| 久久国产麻豆精品| 91色九色蝌蚪| 精品国产免费视频| 亚洲女厕所小便bbb| 免费视频一区二区| 91在线视频观看| 日韩网站在线看片你懂的| 国产精品久久久久影视| 日韩专区中文字幕一区二区| 国产成人午夜精品影院观看视频| 色婷婷香蕉在线一区二区| 日韩一区二区免费在线电影 | 欧美中文字幕久久| 日韩精品中文字幕在线不卡尤物 | 7777精品伊人久久久大香线蕉的| 精品国产成人系列| 亚洲成a人片在线观看中文| 国产成人精品aa毛片| 欧美乱妇15p| 亚洲国产成人av好男人在线观看| 久久精品久久精品| 91精品福利在线| 国产精品日产欧美久久久久| 日韩中文字幕一区二区三区| 91玉足脚交白嫩脚丫在线播放| 日韩免费电影一区| 亚洲一区二区影院| 97久久精品人人爽人人爽蜜臀| 日韩精品影音先锋| 亚洲成av人片一区二区三区| 色综合激情久久| 欧美极品少妇xxxxⅹ高跟鞋 | 久久久亚洲高清| 午夜精品久久久久久久| 91婷婷韩国欧美一区二区| 久久精品夜夜夜夜久久| 麻豆精品国产传媒mv男同| 欧美亚洲尤物久久| 亚洲免费在线看| 粉嫩一区二区三区性色av| 久久久精品中文字幕麻豆发布| 日韩vs国产vs欧美| 欧美精品在线一区二区三区| 一区二区三区中文字幕| 99精品久久99久久久久| 国产精品情趣视频| 国产91丝袜在线观看| 久久久美女毛片| 国产精品综合网| 久久久影院官网| 777久久久精品| 亚洲大片精品永久免费| 95精品视频在线| 亚洲另类春色校园小说| 在线观看网站黄不卡| 亚洲在线观看免费视频| 欧美色图一区二区三区| 视频在线观看一区| 精品少妇一区二区三区日产乱码 | 国产成人免费高清| 国产精品网友自拍| 91丨porny丨蝌蚪视频| 亚洲综合丝袜美腿| 欧美日本在线播放| 九九热在线视频观看这里只有精品| 欧美精品一区二区三区久久久| 国产麻豆日韩欧美久久| 中文字幕一区二区三区不卡| 色婷婷综合激情| 日韩av一区二| 国产欧美日韩精品在线| 91蜜桃婷婷狠狠久久综合9色| 洋洋av久久久久久久一区| 91精品婷婷国产综合久久竹菊| 韩国精品一区二区| 亚洲精品高清在线| 91精品国产91热久久久做人人| 黑人巨大精品欧美黑白配亚洲| 国产精品乱人伦一区二区| 欧美性色黄大片| 国产a区久久久| 视频一区视频二区中文字幕| 久久久久久久久久久久久女国产乱| 成人激情电影免费在线观看| 亚洲国产美女搞黄色| 久久夜色精品国产欧美乱极品| 91浏览器打开| 久久精品国产免费看久久精品| 综合在线观看色| 欧美一区二区视频网站| 成人免费视频视频在线观看免费 | 成人精品国产一区二区4080| 亚洲丝袜制服诱惑| 欧美一区二区三区免费视频| 成人激情开心网| 久久不见久久见免费视频1| 亚洲一区二区在线视频| 国产精品成人免费在线| 欧美高清激情brazzers| 99视频一区二区三区| 精品一区二区免费看| 日韩影视精彩在线| 亚洲激情五月婷婷| 国产精品久久久久久亚洲毛片| 欧美大片国产精品| 欧美日韩国产另类一区| 成人av资源站| 国产高清久久久| 国产一区二区剧情av在线| 秋霞午夜av一区二区三区| 亚洲国产一区视频| 亚洲女同ⅹxx女同tv| 国产精品久久久爽爽爽麻豆色哟哟| 欧美白人最猛性xxxxx69交| 欧美群妇大交群中文字幕| 久久综合久久久久88| 欧美午夜不卡在线观看免费| 色婷婷综合久久久久中文| 91色|porny| 色成年激情久久综合| 色8久久精品久久久久久蜜| 97久久精品人人做人人爽| 97se亚洲国产综合在线| 成人av动漫在线| 99精品视频一区| 99re在线视频这里只有精品| 成人免费视频免费观看| 波多野结衣中文字幕一区二区三区 | 91超碰这里只有精品国产| 欧美日韩亚洲综合在线 | 国产精品一区在线| 国模套图日韩精品一区二区| 久久成人综合网| 国产麻豆日韩欧美久久| 成人深夜在线观看| 一本色道**综合亚洲精品蜜桃冫| 91原创在线视频| 欧美精品第1页| 日韩欧美国产精品| 久久久久久久久久久久久久久99 | 日韩精品视频网| 韩国欧美国产1区| 高清成人免费视频| 97久久超碰精品国产| 中文字幕一区在线观看视频| 亚洲女同一区二区| 奇米综合一区二区三区精品视频| 久久精品噜噜噜成人av农村| 国产成人精品免费一区二区| 色婷婷亚洲综合| 欧美一级一区二区| 中文字幕第一区综合| 亚洲精品视频观看| 奇米一区二区三区av| 国产v综合v亚洲欧| 一本到不卡免费一区二区| 日韩视频国产视频| 中文一区二区在线观看| 亚洲午夜久久久| 国产综合久久久久久久久久久久| 国产成人免费视频网站| 欧美日韩一区二区三区四区 | 精品成人一区二区三区四区| 中文字幕电影一区| 午夜私人影院久久久久| 国产原创一区二区| 精品婷婷伊人一区三区三| 欧美videos大乳护士334| 一区二区中文视频| 韩日av一区二区| 欧美日韩国产a| 亚洲色图色小说| 国产成人啪免费观看软件| 91精品免费观看|