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

📄 zdtkipseed.c

📁 ZYDAS zd1211b driver for Linux2.4
💻 C
📖 第 1 页 / 共 2 页
字号:
        iv32 = 0;        for (i=0; i<4; i++) {	// initiv is little endian                iv32 += *initiv << (i*8);                *initiv++;        }        Seed->IV32 = iv32+1; // Force Recaculating on Tkip Phase1        Tkip_phase1_key_mix(iv32, Seed);        Seed->IV16 = iv16;        Seed->IV32 = iv32;}/***********************************************************************//*                                                                     *//*   FUNCTION DESCRIPTION                   Tkip_phase1_key_mix        *//*                                                                     *//*   TKIP seed generation function for phase1 key mixing               *//*                                                                     *//*   AUTHOR                                                            *//*     Liam,Hwu            ZyDAS Technology   Corporation              *//*   Return value:													   *//*		Return TRUE if expected IV sequence is correct.	               *//*                                                                     *//***********************************************************************/char Tkip_phase1_key_mix(U32 iv32, Seedvar *Seed){        unsigned short tsc0;        unsigned short tsc1;        int i, j;        if (iv32 == Seed->IV32)    //don't need to proceed this function the same                return 1;        else {                tsc0 = (unsigned short)((iv32 >> 16) & 0xffff); /* msb */                tsc1 = (unsigned short)(iv32 & 0xffff);                /* Phase 1, step 1 */                Seed->TTAK[0] = tsc1;                Seed->TTAK[1] = tsc0;                Seed->TTAK[2] = (unsigned short)(Seed->TA[0] + (Seed->TA[1] <<8));                Seed->TTAK[3] = (unsigned short)(Seed->TA[2] + (Seed->TA[3] <<8));                Seed->TTAK[4] = (unsigned short)(Seed->TA[4] + (Seed->TA[5] <<8));                /* Phase 1, step 2 */                for (i=0; i<8; i++) {                        j = 2*(i & 1);                        Seed->TTAK[0] = (Seed->TTAK[0] + tkip_sbox(Seed->TTAK[4]                                         ^ Mk16(Seed->TK[1+j],Seed->TK[j]))) & 0xffff;                        Seed->TTAK[1] = (Seed->TTAK[1] + tkip_sbox(Seed->TTAK[0]                                         ^ Mk16(Seed->TK[5+j],Seed->TK[4+j] ))) & 0xffff;                        Seed->TTAK[2] = (Seed->TTAK[2] + tkip_sbox(Seed->TTAK[1]                                         ^ Mk16(Seed->TK[9+j],Seed->TK[8+j] ))) & 0xffff;                        Seed->TTAK[3] = (Seed->TTAK[3] + tkip_sbox(Seed->TTAK[2]                                         ^ Mk16(Seed->TK[13+j],Seed->TK[12+j])))& 0xffff;                        Seed->TTAK[4] = (Seed->TTAK[4] + tkip_sbox(Seed->TTAK[3]                                         ^ Mk16(Seed->TK[1+j] ,Seed->TK[j]  ))) & 0xffff;                        Seed->TTAK[4] = (Seed->TTAK[4] + i) & 0xffff;                }                if (iv32 == (Seed->IV32+1)) {                        Seed->iv32tmp = iv32;                        return 1;                } else                        return 0;        }}/***********************************************************************//*                                                                     *//*   FUNCTION DESCRIPTION                   Tkip_phase2_key_mix        *//*                                                                     *//*   TKIP seed generation function for phase2 key mixing               *//*                                                                     *//*   AUTHOR                                                            *//*     Liam,Hwu            ZyDAS Technology   Corporation              *//*   Return value:													   *//*		Return TRUE if expected IV sequence is correct.	               *//*                                                                     *//***********************************************************************/char Tkip_phase2_key_mix(U16 iv16, Seedvar *Seed){        unsigned int tsc2;        tsc2 = iv16;        /* Phase 2, Step 1 */        Seed->ppk[0] = Seed->TTAK[0];        Seed->ppk[1] = Seed->TTAK[1];        Seed->ppk[2] = Seed->TTAK[2];        Seed->ppk[3] = Seed->TTAK[3];        Seed->ppk[4] = Seed->TTAK[4];        Seed->ppk[5] = (Seed->TTAK[4] + tsc2) & 0xffff;        /* Phase2, Step 2 */        Seed->ppk[0] = Seed->ppk[0] + tkip_sbox(Seed->ppk[5] ^ Mk16(Seed->TK[1],Seed->TK[0])) ;        Seed->ppk[1] = Seed->ppk[1] + tkip_sbox(Seed->ppk[0] ^ Mk16(Seed->TK[3],Seed->TK[2])) ;        Seed->ppk[2] = Seed->ppk[2]	+ tkip_sbox(Seed->ppk[1] ^ Mk16(Seed->TK[5],Seed->TK[4])) ;        Seed->ppk[3] = Seed->ppk[3]	+ tkip_sbox(Seed->ppk[2] ^ Mk16(Seed->TK[7],Seed->TK[6])) ;        Seed->ppk[4] = Seed->ppk[4]	+ tkip_sbox(Seed->ppk[3] ^ Mk16(Seed->TK[9],Seed->TK[8] )) ;        Seed->ppk[5] = Seed->ppk[5]	+ tkip_sbox(Seed->ppk[4] ^ Mk16(Seed->TK[11],Seed->TK[10])) ;        Seed->ppk[0] = Seed->ppk[0]	+ rotr1(Seed->ppk[5] ^ Mk16(Seed->TK[13],Seed->TK[12]));        Seed->ppk[1] = Seed->ppk[1]	+ rotr1(Seed->ppk[0] ^ Mk16(Seed->TK[15],Seed->TK[14]));        Seed->ppk[2] = Seed->ppk[2] + rotr1(Seed->ppk[1]);        Seed->ppk[3] = Seed->ppk[3] + rotr1(Seed->ppk[2]);        Seed->ppk[4] = Seed->ppk[4] + rotr1(Seed->ppk[3]);        Seed->ppk[5] = Seed->ppk[5] + rotr1(Seed->ppk[4]);        if (iv16 == 0) {                if (Seed->IV16 == 0xffff) {                        Seed->iv16tmp = 0;                        return 1;                } else                        return 0;        } else if (iv16 == (Seed->IV16+1)) {                Seed->iv16tmp = iv16;                return 1;        } else                return 0;}/***********************************************************************//*                                                                     *//*   FUNCTION DESCRIPTION                   Tkip_getseeds              *//*                                                                     *//*   Get RC4Key seeds generated by TKIP                                *//*                                                                     *//*   AUTHOR                                                            *//*     Liam,Hwu            ZyDAS Technology   Corporation              *//*                                                                     *//***********************************************************************/void Tkip_getseeds(U16 iv16, U8 *RC4Key, Seedvar *Seed){        RC4Key[0]  = Hi8(iv16);        RC4Key[1]  = (Hi8(iv16) | 0x20) & 0x7f;        RC4Key[2]  = Lo8(iv16);        RC4Key[3]  = ((Seed->ppk[5] ^ Mk16(Seed->TK[1],Seed->TK[0]))>>1) & 0xff;        RC4Key[4]  = Seed->ppk[0] & 0xff;        RC4Key[5]  = Seed->ppk[0] >> 8  ;        RC4Key[6]  = Seed->ppk[1] & 0xff;        RC4Key[7]  = Seed->ppk[1] >> 8  ;        RC4Key[8]  = Seed->ppk[2] & 0xff;        RC4Key[9]  = Seed->ppk[2] >> 8  ;        RC4Key[10] = Seed->ppk[3] & 0xff;        RC4Key[11] = Seed->ppk[3] >> 8  ;        RC4Key[12] = Seed->ppk[4] & 0xff;        RC4Key[13] = Seed->ppk[4] >> 8  ;        RC4Key[14] = Seed->ppk[5] & 0xff;        RC4Key[15] = Seed->ppk[5] >> 8  ;}/***********************************************************************//*                                                                     *//*   FUNCTION DESCRIPTION                   Tkip_updateiv              *//*                                                                     *//*   update stored iv value                                            *//*                                                                     *//*   AUTHOR                                                            *//*     Liam,Hwu            ZyDAS Technology   Corporation              *//*                                                                     *//***********************************************************************/void Tkip_updateiv(Seedvar *Seed){        Seed->IV16 = Seed->iv16tmp;        Seed->IV32 = Seed->iv32tmp;}#endif

⌨️ 快捷键说明

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