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

📄 ntlm挑战模式散列认证加密协议过程,算法实现与一些想法.txt

📁 NTLM挑战模式散列认证加密协议过程
💻 TXT
📖 第 1 页 / 共 5 页
字号:
            d2=d2^a1;

            a1=0;
            d1=*(DWORD *)(ecb+16*i+8);
            d4=*(DWORD *)(ecb+16*i+0xc);
            d1=(d1^d2)&0xfcfcfcfc;
            d4=(d4^d2)&0xcfcfcfcf;
            a1=d1&0xff;
            a2=(d1>>8)&0xff;
            d4=(d4>>4)|(d4<<0x1c);
            a3=DESSpBox1[a1/4];
            a1=d4&0xff;
            d3=d3^a3;
            a3=DESSpBox3[a2/4];
            d3=d3^a3;
            a2=(d4>>8)&0xff;
            d1=d1>>0x10;
            a3=DESSpBox2[a1/4];
            d3=d3^a3;
            a1=(d1>>8)&0xff;
            d4=d4>>0x10;
            a3=DESSpBox4[a2/4];
            d3=d3^a3;
            a2=(d4>>8)&0xff;
            d1=d1&0xff;
            d4=d4&0xff;
            a1=DESSpBox7[a1/4];
            d3=d3^a1;
            a1=DESSpBox8[a2/4];
            d3=d3^a1;
            a1=DESSpBox5[d1/4];
            d3=d3^a1;
            a1=DESSpBox6[d4/4];
            d3=d3^a1;
        }
        d3=(d3>>1)|(d3<<0x1f);
        d1=d2;
        d2=(d2^d3)&0XAAAAAAAA;
        d1=d1^d2;
        d3=d3^d2;
        d1=(d1<<0x17)|(d1>>9);
        d2=d1;
        d1=(d1^d3)&0x3fc03fc;
        d2=(d2^d1);
        d3=d3^d1;
        d2=(d2<<0xa)|(d2>>0x16);
        d1=d2;
        d2=(d2^d3)&0x33333333;
        d1=d1^d2;
        d3=d3^d2;
        d3=(d3<<0x12)|(d3>>0xe);
        d2=d3;
        d3=(d3^d1)&0xfff0000f;
        d2=d2^d3;
        d1=d1^d3;
        d2=(d2<<0xc)|(d2>>0x14);
        d3=d2;
        d2=(d2^d1)&0xf0f0f0f0;
        d3=d3^d2;
        d1=d1^d2;
        d1=(d1>>4)|(d1<<0x1c);
        *(DWORD *)LM=d1;
        *(DWORD *)(LM+4)=d3;
    }
    else
    {
    }
}

void md5init(unsigned char * LM)
{
    memset(LM,0,0x58);
    *(DWORD *)(LM+8)=0x67452301;
    *(DWORD *)(LM+0xc)=0xefcdab89;
    *(DWORD *)(LM+0x10)=0x98badcfe;
    *(DWORD *)(LM+0x14)=0x10325476;
    *(DWORD *)(LM+0x0)=0;
    *(DWORD *)(LM+0x0)=0;
}

void md5final(unsigned char * LM)
{
    DWORD a1,d1,d2,s1;
    DWORD b1,b2;
    d1=*(DWORD *)(LM+0XC);
    s1=*(DWORD *)(LM+0X10);
    d2=*(DWORD *)(LM+0X14);
    b2=*(DWORD *)(LM+0X18);
    b1=(((d2^s1)&d1)^d2)+b2;
    b2=*(DWORD *)(LM+0X8);
    b1=b1+b2+0xd76aa478;
    b1=((b1<<0x7)|(b1>>0x19))+d1;
    //第一轮
    b2=*(DWORD *)(LM+0X1c);    
    a1=(((s1^d1)&b1)^s1)+0xe8c7b756;
    d2=d2+b2+a1;
    d2=((d2<<0xc)|(d2>>0x14))+b1;
    b2=*(DWORD *)(LM+0X20);    
    a1=(((d1^b1)&d2)^d1)+0x242070db;
    s1=s1+b2+a1;
    s1=((s1<<0x11)|(s1>>0xf))+d2;
    b2=*(DWORD *)(LM+0X24);    
    a1=(((d2^b1)&s1)^b1)+0xc1bdceee;
    d1=d1+b2+a1;
    d1=((d1<<0x16)|(d1>>0xa))+s1;
    b2=*(DWORD *)(LM+0X28);    
    a1=(((d2^s1)&d1)^d2)+0xf57c0faf;
    b1=b1+b2+a1;
    b1=((b1<<0x7)|(b1>>0x19))+d1;
    b2=*(DWORD *)(LM+0X2c);    
    a1=(((s1^d1)&b1)^s1)+0x4787C62A;
    d2=d2+b2+a1;
    d2=((d2<<0xc)|(d2>>0x14))+b1;    
    b2=*(DWORD *)(LM+0X30);    
    a1=(((d1^b1)&d2)^d1)+0xA8304613;
    s1=s1+b2+a1;
    s1=((s1<<0x11)|(s1>>0xf))+d2;    
    b2=*(DWORD *)(LM+0X34);    
    a1=(((d2^b1)&s1)^b1)+0xFD469501;
    d1=d1+b2+a1;
    d1=((d1<<0x16)|(d1>>0xa))+s1;    
    b2=*(DWORD *)(LM+0X38);    
    a1=(((d2^s1)&d1)^d2)+0x698098D8;
    b1=b1+b2+a1;
    b1=((b1<<0x7)|(b1>>0x19))+d1;
    b2=*(DWORD *)(LM+0X3c);    
    a1=(((s1^d1)&b1)^s1)+0x8B44F7AF;
    d2=d2+b2+a1;
    d2=((d2<<0xc)|(d2>>0x14))+b1;
    b2=*(DWORD *)(LM+0X40);    
    a1=(((d1^b1)&d2)^d1)+0xFFFF5BB1;
    s1=s1+b2+a1;
    s1=((s1<<0x11)|(s1>>0xf))+d2;
    b2=*(DWORD *)(LM+0X44);    
    a1=(((d2^b1)&s1)^b1)+0x895CD7BE;
    d1=d1+b2+a1;
    d1=((d1<<0x16)|(d1>>0xa))+s1;
    b2=*(DWORD *)(LM+0X48);    
    a1=(((d2^s1)&d1)^d2)+0x6B901122;
    b1=b1+b2+a1;
    b1=((b1<<0x7)|(b1>>0x19))+d1;
    b2=*(DWORD *)(LM+0X4c);    
    a1=(((s1^d1)&b1)^s1)+0xFD987193;
    d2=d2+b2+a1;
    d2=((d2<<0xc)|(d2>>0x14))+b1;
    b2=*(DWORD *)(LM+0X50);    
    a1=(((d1^b1)&d2)^d1)+0xA679438E;
    s1=s1+b2+a1;
    s1=((s1<<0x11)|(s1>>0xf))+d2;
    b2=*(DWORD *)(LM+0X54);    
    a1=(((d2^b1)&s1)^b1)+0x49B40821;
    d1=d1+b2+a1;
    d1=((d1<<0x16)|(d1>>0xa))+s1;
    //第二轮
    b2=*(DWORD *)(LM+0X1c);    
    a1=(((s1^d1)&d2)^s1)+0xF61E2562;
    b1=b1+b2+a1;
    b1=((b1<<0x5)|(b1>>0x1b))+d1;
    b2=*(DWORD *)(LM+0X30);    
    a1=(((d1^b1)&s1)^d1)+0xC040B340;
    d2=d2+b2+a1;
    d2=((d2<<0x9)|(d2>>0x17))+b1;
    b2=*(DWORD *)(LM+0X44);    
    a1=(((d2^b1)&d1)^b1)+0x265E5A51;
    s1=s1+b2+a1;
    s1=((s1<<0xe)|(s1>>0x12))+d2;
    b2=*(DWORD *)(LM+0X18);    
    a1=(((d2^s1)&b1)^d2)+0xE9B6C7AA;
    d1=d1+b2+a1;
    d1=((d1<<0x14)|(d1>>0xc))+s1;
    b2=*(DWORD *)(LM+0X2c);    
    a1=(((s1^d1)&d2)^s1)+0xD62F105D;
    b1=b1+b2+a1;
    b1=((b1<<0x5)|(b1>>0x1b))+d1;
    b2=*(DWORD *)(LM+0X40);    
    a1=(((d1^b1)&s1)^d1)+0x2441453;
    d2=d2+b2+a1;
    d2=((d2<<0x9)|(d2>>0x17))+b1;
    b2=*(DWORD *)(LM+0X54);    
    a1=(((d2^b1)&d1)^b1)+0xD8A1E681;
    s1=s1+b2+a1;
    s1=((s1<<0xe)|(s1>>0x12))+d2;
    b2=*(DWORD *)(LM+0X28);    
    a1=(((d2^s1)&b1)^d2)+0xE7D3FBC8;
    d1=d1+b2+a1;
    d1=((d1<<0x14)|(d1>>0xc))+s1;
    b2=*(DWORD *)(LM+0X3c);    
    a1=(((s1^d1)&d2)^s1)+0x21E1CDE6;
    b1=b1+b2+a1;
    b1=((b1<<0x5)|(b1>>0x1b))+d1;
    b2=*(DWORD *)(LM+0X50);    
    a1=(((d1^b1)&s1)^d1)+0xC33707D6;
    d2=d2+b2+a1;
    d2=((d2<<0x9)|(d2>>0x17))+b1;
    b2=*(DWORD *)(LM+0X24);    
    a1=(((d2^b1)&d1)^b1)+0xF4D50D87;
    s1=s1+b2+a1;
    s1=((s1<<0xe)|(s1>>0x12))+d2;
    b2=*(DWORD *)(LM+0X38);    
    a1=(((d2^s1)&b1)^d2)+0x455A14ED;
    d1=d1+b2+a1;
    d1=((d1<<0x14)|(d1>>0xc))+s1;
    b2=*(DWORD *)(LM+0X4c);    
    a1=(((s1^d1)&d2)^s1)+0xA9E3E905;
    b1=b1+b2+a1;
    b1=((b1<<0x5)|(b1>>0x1b))+d1;
    b2=*(DWORD *)(LM+0X20);    
    a1=(((d1^b1)&s1)^d1)+0xFCEFA3F8;
    d2=d2+b2+a1;
    d2=((d2<<0x9)|(d2>>0x17))+b1;
    b2=*(DWORD *)(LM+0X34);    
    a1=(((d2^b1)&d1)^b1)+0x676F02D9;
    s1=s1+b2+a1;
    s1=((s1<<0xe)|(s1>>0x12))+d2;
    b2=*(DWORD *)(LM+0X48);    
    a1=(((d2^s1)&b1)^d2)+0x8D2A4C8A;
    d1=d1+b2+a1;
    d1=((d1<<0x14)|(d1>>0xc))+s1;
    //第三轮
    b2=*(DWORD *)(LM+0X2c);    
    a1=((d2^s1)^d1)+0xFFFA3942;
    b1=b1+b2+a1;
    b1=((b1<<0x4)|(b1>>0x1c))+d1;
    b2=*(DWORD *)(LM+0X38);    
    a1=((s1^d1)^b1)+0x8771F681;
    d2=d2+b2+a1;
    d2=((d2<<0xb)|(d2>>0x15))+b1;
    b2=*(DWORD *)(LM+0X44);    
    a1=(d2^d1)^b1;
    s1=s1+b2+0x6D9D6122+a1;
    s1=((s1<<0x10)|(s1>>0x10))+d2;
    b2=*(DWORD *)(LM+0X50);    
    a1=d2^s1;
    d1=d1+b2+0xFDE5380C+(b1^a1);
    d1=((d1<<0x17)|(d1>>0x9))+s1;
    b2=*(DWORD *)(LM+0X1c);    
    b1=b1+b2+0xA4BEEA44+(d1^a1);
    b1=((b1<<0x4)|(b1>>0x1c))+d1;
    b2=*(DWORD *)(LM+0X28);    
    a1=((s1^d1)^b1)+0x4BDECFA9;
    d2=d2+b2+a1;
    d2=((d2<<0xb)|(d2>>0x15))+b1;
    b2=*(DWORD *)(LM+0X34);    
    a1=(d2^d1)^b1;
    s1=s1+b2+0xF6BB4B60+a1;
    s1=((s1<<0x10)|(s1>>0x10))+d2;
    b2=*(DWORD *)(LM+0X40);    
    a1=(d2^s1);
    d1=d1+b2+0xBEBFBC70+(b1^a1);
    d1=((d1<<0x17)|(d1>>0x9))+s1;
    b2=*(DWORD *)(LM+0X4c);    
    b1=b1+b2+0x289B7EC6+(d1^a1);
    b1=((b1<<0x4)|(b1>>0x1c))+d1;
    b2=*(DWORD *)(LM+0X18);    
    a1=((s1^d1)^b1)+0xEAA127FA;
    d2=d2+b2+a1;
    d2=((d2<<0xb)|(d2>>0x15))+b1;
    b2=*(DWORD *)(LM+0X24);    
    a1=(d2^d1)^b1;
    s1=s1+b2+0xD4EF3085+a1;
    s1=((s1<<0x10)|(s1>>0x10))+d2;
    b2=*(DWORD *)(LM+0X30);    
    a1=d2^s1;
    d1=d1+b2+0x4881D05+(b1^a1);
    d1=((d1<<0x17)|(d1>>0x9))+s1;
    b2=d1^a1;
    a1=*(DWORD *)(LM+0X3c)+0xD9D4D039;    
    b1=b1+b2+a1;
    b1=((b1<<0x4)|(b1>>0x1c))+d1;
    b2=*(DWORD *)(LM+0X48);
    a1=((s1^d1)^b1)+0xE6DB99E5;
    d2=d2+b2+a1;
    d2=((d2<<0xb)|(d2>>0x15))+b1;
    b2=*(DWORD *)(LM+0X54);
    a1=((d2^d1)^b1);
    s1=s1+b2+0x1FA27CF8+a1;
    s1=((s1<<0x10)|(s1>>0x10))+d2;
    b2=*(DWORD *)(LM+0X20);
    a1=((d2^s1)^b1);
    d1=d1+b2+0xC4AC5665+a1;
    d1=((d1<<0x17)|(d1>>0x9))+s1;
    //第4轮
    b2=*(DWORD *)(LM+0X18);
    a1=(((d2^0xFFFFFFFF)|d1)^s1)+0xF4292244;
    b1=b1+b2+a1;
    b1=((b1<<0x6)|(b1>>0x1a))+d1;
    b2=*(DWORD *)(LM+0X34);
    a1=(((s1^0xFFFFFFFF)|b1)^d1)+0x432AFF97;
    d2=d2+b2+a1;
    d2=((d2<<0xa)|(d2>>0x16))+b1;
    b2=*(DWORD *)(LM+0X50);
    a1=(((d1^0xFFFFFFFF)|d2)^b1)+0xAB9423A7;
    s1=s1+b2+a1;
    s1=((s1<<0xf)|(s1>>0x11))+d2;
    b2=*(DWORD *)(LM+0X2c);
    a1=(((b1^0xFFFFFFFF)|s1)^d2);
    d1=d1+b2+0xFC93A039+a1;
    d1=((d1<<0x15)|(d1>>0xb))+s1;
    b2=*(DWORD *)(LM+0X48);
    a1=(((d2^0xFFFFFFFF)|d1)^s1)+0x655B59C3;
    b1=b1+b2+a1;
    b1=((b1<<0x6)|(b1>>0x1a))+d1;
    b2=*(DWORD *)(LM+0X24);
    a1=(((s1^0xFFFFFFFF)|b1)^d1)+0x8F0CCC92;
    d2=d2+b2+a1;
    d2=((d2<<0xa)|(d2>>0x16))+b1;
    b2=*(DWORD *)(LM+0X40);
    a1=(((d1^0xFFFFFFFF)|d2)^b1)+0xFFEFF47D;
    s1=s1+b2+a1;
    s1=((s1<<0xf)|(s1>>0x11))+d2;
    b2=*(DWORD *)(LM+0X1c);
    a1=(((b1^0xFFFFFFFF)|s1)^d2)+0x85845DD1;
    d1=d1+b2+a1;
    d1=((d1<<0x15)|(d1>>0xb))+s1;
    b2=*(DWORD *)(LM+0X38);
    a1=(((d2^0xFFFFFFFF)|d1)^s1)+0x6FA87E4F;
    b1=b1+b2+a1;
    b1=((b1<<0x6)|(b1>>0x1a))+d1;
    b2=*(DWORD *)(LM+0X54);
    a1=(((s1^0xFFFFFFFF)|b1)^d1)+0xFE2CE6E0;
    d2=d2+b2+a1;
    d2=((d2<<0xa)|(d2>>0x16))+b1;
    b2=*(DWORD *)(LM+0X30);
    a1=(((d1^0xFFFFFFFF)|d2)^b1)+0xA3014314;
    s1=s1+b2+a1;
    s1=((s1<<0xf)|(s1>>0x11))+d2;
    b2=*(DWORD *)(LM+0X4c);
    a1=(((b1^0xFFFFFFFF)|s1)^d2)+0x4E0811A1;
    d1=d1+b2+a1;
    d1=((d1<<0x15)|(d1>>0xb))+s1;
    b2=*(DWORD *)(LM+0X28);
    a1=(((d2^0xFFFFFFFF)|d1)^s1)+0xF7537E82;
    b1=b1+b2+a1;
    b1=((b1<<0x6)|(b1>>0x1a))+d1;
    b2=*(DWORD *)(LM+0X44);
    a1=(((s1^0xFFFFFFFF)|b1)^d1)+0xBD3AF235;
    d2=d2+b2+a1;
    d2=((d2<<0xa)|(d2>>0x16))+b1;
    b2=*(DWORD *)(LM+0X20);
    a1=(((d1^0xFFFFFFFF)|d2)^b1)+0x2AD7D2BB;
    s1=s1+b2+a1;
    s1=((s1<<0xf)|(s1>>0x11))+d2;
    b2=*(DWORD *)(LM+0X3c);
    a1=(((b1^0xFFFFFFFF)|s1)^d2)+0xEB86D391;
    d1=d1+b2+a1;
    d1=((d1<<0x15)|(d1>>0xb))+s1;

    b2=*(DWORD *)(LM+0X8);
    b1=b1+b2;
    b2=*(DWORD *)(LM+0Xc);
    d1=d1+b2;
    b2=*(DWORD *)(LM+0X10);
    s1=s1+b2;
    b2=*(DWORD *)(LM+0X14);
    d2=d2+b2;
    *(DWORD *)(LM+0X8)=b1;
    *(DWORD *)(LM+0Xc)=d1;
    *(DWORD *)(LM+0X10)=s1;
    *(DWORD *)(LM+0X14)=d2;
}  

Copyright ? 1998-2003 

⌨️ 快捷键说明

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