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

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

?? rtmp_tkip.c

?? 臺灣RALink公司的 rt2570無線 802.11g 網卡的 驅動的源代碼 ,支持linux2.4以上的 內河
?? C
?? 第 1 頁 / 共 3 頁
字號:
	{ 
		b = (a >> 1) | 0x8000; 
	} 
	else 
	{ 
		b = (a >> 1) & 0x7fff; 
	} 
	b = b % 65536; 
	return b; 
} 
/*
	========================================================================

	Routine	Description:
		Key Mixing function.
		
	Arguments:
      pAdapter		Pointer to our adapter
		pTKey       Pointer to the Temporal Key (TK), TK shall be 128bits.		
		pTA			Pointer to transmitter address
		nl			Least significant 16 bits of IV16
		nh			Most significant 32 bits of IV32 
		
	Return Value:
		None

	Note:
		Calculates an RC4 key.
	========================================================================
*/
VOID	RTMPTkipMixTKey( 
	IN	PTKIP_KEY_INFO	pTkip,
	IN	PUCHAR			pTKey,
	IN	PUCHAR			pTA)
{ 
	UINT	tsc0; 
	UINT	tsc1;
	UINT	tsc2; 

	UINT	ppk0; 
	UINT	ppk1; 
	UINT	ppk2; 
	UINT	ppk3; 
	UINT	ppk4; 
	UINT	ppk5; 
	UINT	p1k[5];

	int i; 
	int j; 

	tsc0 = (UINT)((pTkip->IV32 >> 16) % 65536); /* msb */ 
	tsc1 = (UINT)(pTkip->IV32 % 65536); 
	tsc2 = (UINT)(pTkip->IV16 % 65536); /* lsb */ 

	/* Phase 1, step 1 */ 
	p1k[0] = tsc1; 
	p1k[1] = tsc0; 
	p1k[2] = (unsigned int)(pTA[0] + (pTA[1]*256)); 
	p1k[3] = (unsigned int)(pTA[2] + (pTA[3]*256)); 
	p1k[4] = (unsigned int)(pTA[4] + (pTA[5]*256)); 

	/* Phase 1, step 2 */ 
	for (i=0; i<8; i++) 
	{ 
		j = 2*(i & 1); 
		p1k[0] = (p1k[0] + tkip_sbox( (p1k[4] ^ ((256*pTKey[1+j]) + pTKey[j])) % 65536 )) % 65536; 
		p1k[1] = (p1k[1] + tkip_sbox( (p1k[0] ^ ((256*pTKey[5+j]) + pTKey[4+j])) % 65536 )) % 65536; 
		p1k[2] = (p1k[2] + tkip_sbox( (p1k[1] ^ ((256*pTKey[9+j]) + pTKey[8+j])) % 65536 )) % 65536; 
		p1k[3] = (p1k[3] + tkip_sbox( (p1k[2] ^ ((256*pTKey[13+j]) + pTKey[12+j])) % 65536 )) % 65536; 
		p1k[4] = (p1k[4] + tkip_sbox( (p1k[3] ^ (((256*pTKey[1+j]) + pTKey[j]))) % 65536 )) % 65536; 
		p1k[4] = (p1k[4] + i) % 65536; 
	} 

	/* Phase 2, Step 1 */ 
	ppk0 = p1k[0]; 
	ppk1 = p1k[1]; 
	ppk2 = p1k[2]; 
	ppk3 = p1k[3]; 
	ppk4 = p1k[4]; 
	ppk5 = (p1k[4] + tsc2) % 65536; 

	/* Phase2, Step 2 */ 
	ppk0 = ppk0 + tkip_sbox( (ppk5 ^ ((256*pTKey[1]) + pTKey[0])) % 65536); 
	ppk1 = ppk1 + tkip_sbox( (ppk0 ^ ((256*pTKey[3]) + pTKey[2])) % 65536); 
	ppk2 = ppk2 + tkip_sbox( (ppk1 ^ ((256*pTKey[5]) + pTKey[4])) % 65536); 
	ppk3 = ppk3 + tkip_sbox( (ppk2 ^ ((256*pTKey[7]) + pTKey[6])) % 65536); 
	ppk4 = ppk4 + tkip_sbox( (ppk3 ^ ((256*pTKey[9]) + pTKey[8])) % 65536); 
	ppk5 = ppk5 + tkip_sbox( (ppk4 ^ ((256*pTKey[11]) + pTKey[10])) % 65536); 

	ppk0 = ppk0 + rotr1(ppk5 ^ ((256*pTKey[13]) + pTKey[12])); 
	ppk1 = ppk1 + rotr1(ppk0 ^ ((256*pTKey[15]) + pTKey[14])); 
	ppk2 = ppk2 + rotr1(ppk1); 
	ppk3 = ppk3 + rotr1(ppk2); 
	ppk4 = ppk4 + rotr1(ppk3); 
	ppk5 = ppk5 + rotr1(ppk4); 

	/* Phase 2, Step 3 */ 
	pTkip->RC4KEY[0] = (tsc2 >> 8) % 256; 
	pTkip->RC4KEY[1] = (((tsc2 >> 8) % 256) | 0x20) & 0x7f; 
	pTkip->RC4KEY[2] = tsc2 % 256; 
	pTkip->RC4KEY[3] = ((ppk5 ^ ((256*pTKey[1]) + pTKey[0])) >> 1) % 256; 

	pTkip->RC4KEY[4] = ppk0 % 256; 
	pTkip->RC4KEY[5] = (ppk0 >> 8) % 256; 

	pTkip->RC4KEY[6] = ppk1 % 256; 
	pTkip->RC4KEY[7] = (ppk1 >> 8) % 256; 

	pTkip->RC4KEY[8] = ppk2 % 256; 
	pTkip->RC4KEY[9] = (ppk2 >> 8) % 256; 

	pTkip->RC4KEY[10] = ppk3 % 256; 
	pTkip->RC4KEY[11] = (ppk3 >> 8) % 256; 

	pTkip->RC4KEY[12] = ppk4 % 256; 
	pTkip->RC4KEY[13] = (ppk4 >> 8) % 256; 

	pTkip->RC4KEY[14] = ppk5 % 256; 
	pTkip->RC4KEY[15] = (ppk5 >> 8) % 256; 	
} 


VOID RTMPTkipMixKey(
	UCHAR *key, 
	UCHAR *ta, 
	ULONG pnl, /* Least significant 16 bits of PN */
	ULONG pnh, /* Most significant 32 bits of PN */ 
	UCHAR *rc4key, 
	UINT *p1k)
{

	UINT tsc0; 
	UINT tsc1;
	UINT tsc2; 

	UINT ppk0; 
	UINT ppk1; 
	UINT ppk2; 
	UINT ppk3; 
	UINT ppk4; 
	UINT ppk5; 

	INT i; 
	INT j; 

	tsc0 = (unsigned int)((pnh >> 16) % 65536); /* msb */ 
	tsc1 = (unsigned int)(pnh % 65536); 
	tsc2 = (unsigned int)(pnl % 65536); /* lsb */ 

	/* Phase 1, step 1 */ 
	p1k[0] = tsc1; 
	p1k[1] = tsc0; 
	p1k[2] = (UINT)(ta[0] + (ta[1]*256)); 
	p1k[3] = (UINT)(ta[2] + (ta[3]*256)); 
	p1k[4] = (UINT)(ta[4] + (ta[5]*256)); 

	/* Phase 1, step 2 */ 
	for (i=0; i<8; i++) 
	{ 
		j = 2*(i & 1); 
		p1k[0] = (p1k[0] + tkip_sbox( (p1k[4] ^ ((256*key[1+j]) + key[j])) % 65536 )) % 65536; 
		p1k[1] = (p1k[1] + tkip_sbox( (p1k[0] ^ ((256*key[5+j]) + key[4+j])) % 65536 )) % 65536; 
		p1k[2] = (p1k[2] + tkip_sbox( (p1k[1] ^ ((256*key[9+j]) + key[8+j])) % 65536 )) % 65536; 
		p1k[3] = (p1k[3] + tkip_sbox( (p1k[2] ^ ((256*key[13+j]) + key[12+j])) % 65536 )) % 65536; 
		p1k[4] = (p1k[4] + tkip_sbox( (p1k[3] ^ (((256*key[1+j]) + key[j]))) % 65536 )) % 65536; 
		p1k[4] = (p1k[4] + i) % 65536; 
	} 

	/* Phase 2, Step 1 */ 
	ppk0 = p1k[0]; 
	ppk1 = p1k[1]; 
	ppk2 = p1k[2]; 
	ppk3 = p1k[3]; 
	ppk4 = p1k[4]; 
	ppk5 = (p1k[4] + tsc2) % 65536; 

	/* Phase2, Step 2 */ 
	ppk0 = ppk0 + tkip_sbox( (ppk5 ^ ((256*key[1]) + key[0])) % 65536); 
	ppk1 = ppk1 + tkip_sbox( (ppk0 ^ ((256*key[3]) + key[2])) % 65536); 
	ppk2 = ppk2 + tkip_sbox( (ppk1 ^ ((256*key[5]) + key[4])) % 65536); 
	ppk3 = ppk3 + tkip_sbox( (ppk2 ^ ((256*key[7]) + key[6])) % 65536); 
	ppk4 = ppk4 + tkip_sbox( (ppk3 ^ ((256*key[9]) + key[8])) % 65536); 
	ppk5 = ppk5 + tkip_sbox( (ppk4 ^ ((256*key[11]) + key[10])) % 65536); 

	ppk0 = ppk0 + rotr1(ppk5 ^ ((256*key[13]) + key[12])); 
	ppk1 = ppk1 + rotr1(ppk0 ^ ((256*key[15]) + key[14])); 
	ppk2 = ppk2 + rotr1(ppk1); 
	ppk3 = ppk3 + rotr1(ppk2); 
	ppk4 = ppk4 + rotr1(ppk3); 
	ppk5 = ppk5 + rotr1(ppk4); 

	/* Phase 2, Step 3 */ 
    /* Phase 2, Step 3 */

	tsc0 = (unsigned int)((pnh >> 16) % 65536); /* msb */ 
	tsc1 = (unsigned int)(pnh % 65536); 
	tsc2 = (unsigned int)(pnl % 65536); /* lsb */ 

	rc4key[0] = (tsc2 >> 8) % 256; 
	rc4key[1] = (((tsc2 >> 8) % 256) | 0x20) & 0x7f; 
	rc4key[2] = tsc2 % 256; 
	rc4key[3] = ((ppk5 ^ ((256*key[1]) + key[0])) >> 1) % 256; 

	rc4key[4] = ppk0 % 256; 
	rc4key[5] = (ppk0 >> 8) % 256; 

	rc4key[6] = ppk1 % 256; 
	rc4key[7] = (ppk1 >> 8) % 256; 

	rc4key[8] = ppk2 % 256; 
	rc4key[9] = (ppk2 >> 8) % 256; 

	rc4key[10] = ppk3 % 256; 
	rc4key[11] = (ppk3 >> 8) % 256; 

	rc4key[12] = ppk4 % 256; 
	rc4key[13] = (ppk4 >> 8) % 256; 

	rc4key[14] = ppk5 % 256; 
	rc4key[15] = (ppk5 >> 8) % 256; 

}

	
//
// TRUE: Success!
// FALSE: Decrypt Error!
//
BOOLEAN RTMPSoftDecryptTKIP(
	IN PRT2570ADAPTER pAdapter,
	IN PUCHAR	pData,
	IN ULONG	DataByteCnt, 
	IN PWPA_KEY	pWpaKey)
{
	PHEADER_802_11	pHeader;
	UCHAR			KeyID;
	UINT			HeaderLen;
    UCHAR			fc0;
	UCHAR			fc1;
	USHORT			fc;
	UINT			frame_type;
	UINT			frame_subtype;
    UINT			from_ds;
    UINT			to_ds;
	INT				a4_exists;
	INT				qc_exists;
	USHORT			duration;
	USHORT			seq_control;
	USHORT			qos_control;
	UCHAR			TA[MAC_ADDR_LEN];
	UCHAR			DA[MAC_ADDR_LEN];
	UCHAR			SA[MAC_ADDR_LEN];
	UCHAR			RC4Key[16];
	UINT			p1k[5]; //for mix_key;
	ULONG			pnl;/* Least significant 16 bits of PN */
	ULONG			pnh;/* Most significant 32 bits of PN */ 
	UINT			num_blocks;
	UINT			payload_remainder;
	ARCFOURCONTEXT 	ArcFourContext;
	ULONG			crc32 = 0;
	ULONG			trailfcs = 0;
	UCHAR			MIC[8];
	UCHAR			TrailMIC[8];

	fc0 = *pData;
	fc1 = *(pData + 1);

	fc = *((PUSHORT)pData);	
	
	frame_type = ((fc0 >> 2) & 0x03);
	frame_subtype = ((fc0 >> 4) & 0x0f);	

    from_ds = (fc1 & 0x2) >> 1;
    to_ds = (fc1 & 0x1);

    a4_exists = (from_ds & to_ds);
    qc_exists = ((frame_subtype == 0x08) ||    /* Assumed QoS subtypes */
                  (frame_subtype == 0x09) ||   /* Likely to change.    */
                  (frame_subtype == 0x0a) || 
                  (frame_subtype == 0x0b)
                 );

	HeaderLen = 24;
	if (a4_exists)
		HeaderLen += 6;

	KeyID = *((PUCHAR)(pData+ HeaderLen + 3));	
	KeyID = KeyID >> 6;

	if (pWpaKey[KeyID].KeyLen == 0)
	{
		DBGPRINT(RT_DEBUG_TRACE, "RTMPSoftDecryptTKIP failed!(KeyID[%d] Length can not be 0)\n", KeyID);
		return FALSE;
	}
	duration = *((PUSHORT)(pData+2));	

	seq_control = *((PUSHORT)(pData+22));
	
	if (qc_exists)
	{
		if (a4_exists)
		{
			qos_control = *((PUSHORT)(pData+30));
		}
		else
		{
			qos_control = *((PUSHORT)(pData+24));
		}
	}
	
	if (to_ds == 0 && from_ds == 1)
	{
		NdisMoveMemory(&DA, pData+4, MAC_ADDR_LEN);
		NdisMoveMemory(&SA, pData+16, MAC_ADDR_LEN);
		NdisMoveMemory(&TA, pData+10, MAC_ADDR_LEN);  //BSSID
	}	
	else if (to_ds == 0 && from_ds == 0 )
	{
		NdisMoveMemory(&TA, pData+10, MAC_ADDR_LEN);
		NdisMoveMemory(&DA, pData+4, MAC_ADDR_LEN);
		NdisMoveMemory(&SA, pData+10, MAC_ADDR_LEN);
	}
	else if (to_ds == 1 && from_ds == 0)
	{
		NdisMoveMemory(&SA, pData+10, MAC_ADDR_LEN);
		NdisMoveMemory(&TA, pData+10, MAC_ADDR_LEN);
		NdisMoveMemory(&DA, pData+16, MAC_ADDR_LEN);
	}
	else if (to_ds == 1 && from_ds == 1)
	{
		NdisMoveMemory(&TA, pData+10, MAC_ADDR_LEN);
		NdisMoveMemory(&DA, pData+16, MAC_ADDR_LEN);
		NdisMoveMemory(&SA, pData+22, MAC_ADDR_LEN);
	}

	num_blocks = (DataByteCnt - 16) / 16;
	payload_remainder = (DataByteCnt - 16) % 16;

	pnl = (*(pData + HeaderLen)) * 256 + *(pData + HeaderLen + 2);	
	pnh = *((PULONG)(pData + HeaderLen + 4));
	RTMPTkipMixKey(pWpaKey[KeyID].Key, TA, pnl, pnh, RC4Key, p1k);

	ARCFOUR_INIT(&ArcFourContext, RC4Key, 16); 
	ARCFOUR_DECRYPT(&ArcFourContext, pData + HeaderLen, pData + HeaderLen + 8, DataByteCnt - HeaderLen - 8);
	NdisMoveMemory(&trailfcs, pData + DataByteCnt - 8 - 4, 4);
	crc32 = RTMP_CALC_FCS32(PPPINITFCS32, pData + HeaderLen, DataByteCnt - HeaderLen - 8 - 4);  //Skip IV+EIV 8 bytes & Skip last 4 bytes(FCS).
	crc32 ^= 0xffffffff;             /* complement */
	if(crc32 != trailfcs)
	{
		DBGPRINT_RAW(RT_DEBUG_TRACE, "RTMPSoftDecryptTKIP, WEP Data ICV Error !\n");	 //ICV error.

		return (FALSE);
	}

	NdisMoveMemory(TrailMIC, pData + DataByteCnt - 8 - 8 - 4, 8);
	RTMPInitMICEngine(pAdapter, pWpaKey[KeyID].Key, DA, SA, pWpaKey[KeyID].RxMic);
	RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pData + HeaderLen, DataByteCnt - HeaderLen - 8 - 12);
	RTMPTkipGetMIC(&pAdapter->PrivateInfo.Tx);
	NdisMoveMemory(MIC, pAdapter->PrivateInfo.Tx.MIC, 8);

	if (!NdisEqualMemory(MIC, TrailMIC, 8))
	{
		DBGPRINT_RAW(RT_DEBUG_TRACE, "RTMPSoftDecryptTKIP, WEP Data MIC Error !\n");	 //MIC error.
		RTMPReportMicError(pAdapter, &pWpaKey[KeyID]);
		return (FALSE);		
	}

	pHeader	= (PHEADER_802_11)pData;
	pHeader->Controlhead.Frame.Wep = 0; //None WEP
	
	DBGPRINT(RT_DEBUG_TRACE, "RTMPSoftDecryptTKIP Decript done!!\n");
	return TRUE;
}

	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线视频观看58| jlzzjlzz亚洲女人18| 一区二区三区影院| 中文字幕中文字幕一区二区| 久久婷婷国产综合精品青草| 久久久蜜桃精品| www久久久久| 国产精品免费丝袜| 亚洲色图丝袜美腿| 亚洲一卡二卡三卡四卡无卡久久| 亚洲精品国产一区二区三区四区在线| 亚洲黄色av一区| 日韩精品国产欧美| 激情欧美日韩一区二区| 国产成人免费xxxxxxxx| 97久久精品人人做人人爽| 色婷婷综合久久久中文一区二区| 在线视频国产一区| 日韩欧美国产系列| 欧美经典一区二区| 一区二区三区中文字幕| 日本三级亚洲精品| 国产91精品在线观看| 一本色道久久综合亚洲91| 7878成人国产在线观看| 2024国产精品视频| 一区二区三区小说| 久久国产精品一区二区| 成人免费黄色在线| 欧美精选午夜久久久乱码6080| 欧美电影免费观看高清完整版| 国产精品久久久久永久免费观看| 一区二区三区四区激情| 国产毛片一区二区| 欧美影片第一页| 中文字幕第一区第二区| 日韩综合在线视频| 97精品久久久午夜一区二区三区| 欧美午夜电影在线播放| 亚洲国产精品二十页| 日本不卡一区二区| 色呦呦国产精品| 国产欧美一区二区精品性| 亚洲成人自拍偷拍| av亚洲精华国产精华| 欧美成人精精品一区二区频| 亚洲黄色免费网站| 成人免费观看av| 日韩美一区二区三区| 亚洲福利一区二区| 91黄色免费版| 中文字幕高清不卡| 国产福利精品导航| 日韩精品最新网址| 亚洲18色成人| 在线精品视频一区二区三四| 国产精品久久精品日日| 国产美女久久久久| 久久午夜羞羞影院免费观看| 天堂一区二区在线免费观看| 欧洲在线/亚洲| 一区二区三区中文在线| 99视频热这里只有精品免费| 国产女主播一区| 成人免费高清在线| 日本一区二区电影| 成人免费高清视频在线观看| 久久久久国产免费免费| 国产剧情在线观看一区二区| 精品电影一区二区| 国产原创一区二区三区| 久久久午夜精品理论片中文字幕| 国产在线国偷精品产拍免费yy| 精品福利一区二区三区免费视频| 麻豆成人在线观看| 精品国产露脸精彩对白| 国产中文字幕一区| 中文字幕欧美日本乱码一线二线| 高清不卡一区二区| 综合久久久久综合| 91国偷自产一区二区三区成为亚洲经典 | 美女国产一区二区三区| 欧美一二区视频| 精品一区中文字幕| 日本一区二区三区电影| 99久久国产免费看| 亚洲国产色一区| 日韩视频一区二区三区| 国产伦精品一区二区三区视频青涩| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲欧美激情插| 欧美三级在线视频| 精品在线观看视频| 中文字幕永久在线不卡| 欧美视频一区二区三区在线观看| 午夜国产精品一区| 久久精品亚洲麻豆av一区二区| www.亚洲免费av| 亚洲成a天堂v人片| 久久久久久电影| 色香蕉久久蜜桃| 韩国女主播成人在线| 自拍偷在线精品自拍偷无码专区| 欧美日韩国产在线观看| 激情综合色综合久久综合| 国产精品免费视频网站| 91麻豆精品国产综合久久久久久| 精品一区二区在线看| 亚洲三级在线免费| 日韩精品资源二区在线| 91视视频在线观看入口直接观看www | 亚洲一级二级三级在线免费观看| 日韩精品一区二区三区在线| 99re热这里只有精品免费视频 | 国产精品系列在线观看| 亚洲一区二区三区中文字幕在线| 26uuu精品一区二区在线观看| 色哟哟在线观看一区二区三区| 青椒成人免费视频| 亚洲欧美色综合| 国产日韩精品一区| 欧美美女一区二区在线观看| 高清成人在线观看| 麻豆高清免费国产一区| 亚洲激情中文1区| 久久伊99综合婷婷久久伊| 欧美巨大另类极品videosbest | 国产乱色国产精品免费视频| 天堂久久久久va久久久久| 亚洲天堂久久久久久久| 久久久99精品久久| 日韩三级视频中文字幕| 欧美日韩精品一区二区三区蜜桃| av在线这里只有精品| 国产另类ts人妖一区二区| 丝袜美腿高跟呻吟高潮一区| 亚洲制服丝袜av| 亚洲免费av高清| 亚洲免费高清视频在线| 1024成人网| 日韩毛片视频在线看| 国产精品每日更新在线播放网址| 久久久精品tv| 久久精品一级爱片| 国产日本亚洲高清| 久久看人人爽人人| 国产欧美一区二区在线| 久久久蜜桃精品| 国产午夜精品在线观看| 久久午夜羞羞影院免费观看| 久久一区二区视频| 国产欧美视频在线观看| 国产精品久久夜| 亚洲同性gay激情无套| 亚洲精品大片www| 亚洲成人自拍一区| 日本vs亚洲vs韩国一区三区二区| 日韩av网站免费在线| 免费看欧美女人艹b| 九九在线精品视频| 成人动漫精品一区二区| 91免费看片在线观看| 欧美综合一区二区| 欧美日本国产视频| 日韩免费成人网| 亚洲国产成人私人影院tom| 国产精品免费视频观看| 一区二区三区在线免费| 亚洲国产一区二区a毛片| 久久精品国产99国产| 国产成人精品免费在线| 色婷婷精品久久二区二区蜜臂av| 久久精品夜色噜噜亚洲a∨| 国产清纯美女被跳蛋高潮一区二区久久w | 日本91福利区| 亚洲激情成人在线| 一二三区精品视频| 日韩精品乱码av一区二区| 久久91精品久久久久久秒播| 国产高清久久久久| 色婷婷亚洲婷婷| 日韩欧美一卡二卡| 国产精品久久久久婷婷 | 欧美日韩国产一二三| 日韩精品一区二区三区在线播放| 国产三级精品在线| 天天综合色天天| 国产成人av在线影院| 日本精品裸体写真集在线观看| 日韩欧美国产电影| 亚洲精品国产高清久久伦理二区| 美女久久久精品| 91传媒视频在线播放| 久久久久久9999| 亚洲午夜免费福利视频| 国产激情一区二区三区桃花岛亚洲| 色综合视频一区二区三区高清| 日韩欧美一级二级三级| 又紧又大又爽精品一区二区| 亚洲电影一区二区三区|