阅读:780回复:7
求破解的算法!
现在已经知道了加密的算法,怎么才能够得到破解的算法呢!
#include \"windows.h\" #include \"stdio.h\" PULONG g_pulDestVal = NULL; void FillTable() { register ULONG ulRegEAX = 0; register ULONG ulRegEBX = 0; register ULONG ulRegECX = 0; register ULONG ulRegEDX = 0; if(g_pulDestVal == NULL) { g_pulDestVal = new ULONG[0x100]; } for(ulRegEAX = 0; ulRegEAX < 0x100; ulRegEAX++) { ulRegECX = ulRegEAX; for(ulRegEDX = 8;ulRegEDX != 0; ulRegEDX--) { if(ulRegECX&1) { ulRegECX >>= 1; ulRegECX ^= 0XEDB88320; }else{ ulRegECX >>= 1; } } g_pulDestVal[ulRegEAX] = ulRegECX; } } ULONG FindTable( PCHAR pPassword, ULONG ulPasswdStrlen ) { ULONG ulLoopVal = 0; ULONG ulChar = 0; ULONG ulResult = 0xFFFFFFFF; for(ulLoopVal = 0; ulLoopVal < ulPasswdStrlen; ulLoopVal++) { ulChar = pPassword[ulLoopVal]; ulChar ^= (ulResult & 0xFF); ulResult >>= 0x8; ulResult ^= g_pulDestVal[ulChar]; } return ulResult; } inline void AscIIINC( PCHAR pPassword, ULONG ulPasswdStrlen ) { ULONG i = 0; for(;; ) { if(i >= ulPasswdStrlen) { break; } if(pPassword < \'0\') { pPassword = \'0\'-1; } /* if((pPassword >\'9\' )&&(pPassword < \'A\')) { pPassword = \'A\'-1; } if((pPassword >\'Z\' )&&(pPassword < \'a\')) { pPassword = \'a\'-1; } */ pPassword++; if(pPassword >= \'9\'+1) { pPassword = \'0\'; }else{ break; } /* if(pPassword >= \'z\'+1) { pPassword = \'0\'; }else{ if( ((pPassword >= \'0\') && (pPassword <= \'9\')) ||((pPassword >= \'A\') && (pPassword <= \'Z\')) ||((pPassword >= \'a\') && (pPassword <= \'z\')) ) { break; } if((pPassword >\'9\' )&&(pPassword < \'A\')) { pPassword = \'A\'; break; } if((pPassword >\'Z\' )&&(pPassword < \'a\')) { pPassword = \'a\'; break; } } */ i++; } } ULONG QueryVal1( ULONG ulVal, ULONG ulBitCount ) { ULONG ulLoopVal; ULONG ultmpVal; ulBitCount &= 0x1F; ulLoopVal = ulBitCount; for(; ulLoopVal != 0; ulLoopVal--) { ultmpVal = ulVal; ultmpVal &= 0x80000000; ulVal <<= 1; if(ultmpVal) { ulVal |= 1; } } /* _asm{ mov ecx,ulBitCount mov eax,ulVal and ecx,0x1F mov edx,ecx dec ecx test edx,edx jz QueryValStep3 lea edx,[ecx+1] QueryValStep1: mov ecx,eax and ecx,0x80000000 shl eax,1 test ecx,ecx jz QueryValStep2 or al,1 QueryValStep2: dec edx jnz QueryValStep1 QueryValStep3: mov ulVal,eax } */ return ulVal; } ULONG QueryVal2( ULONG ulVal, ULONG ulBitCount ) { ULONG ulLoopVal; ULONG ultmpVal; ulBitCount &= 0x1F; ulLoopVal = ulBitCount; for(; ulLoopVal != 0; ulLoopVal--) { ultmpVal = ulVal; ultmpVal &= 1; ulVal >>= 1; if(ultmpVal) { ulVal |= 0x80000000; } } /* _asm{ mov ecx,ulBitCount mov eax,ulVal and ecx,0x1F mov edx,ecx dec ecx test edx,edx jz QueryValStep3 lea edx,[ecx+1] QueryValStep1: mov ecx,eax and ecx,1 shr eax,1 test ecx,ecx jz QueryValStep2 or al,0x80000000 QueryValStep2: dec edx jnz QueryValStep1 QueryValStep3: mov ulVal,eax } */ return ulVal; } ULONG AskEncryWord( ULONG ulFirstPassWd ) { PUCHAR p = NULL; PUCHAR pPassword = NULL; ULONG ulPassWd = 0; UCHAR ucByte; pPassword = (PUCHAR)&ulPassWd; p = (PUCHAR)&ulFirstPassWd; ucByte = (UCHAR)QueryVal1(p[0],3); ucByte ^= 0x74; pPassword[0] = ucByte; ucByte = (UCHAR)QueryVal2(p[1],5); ucByte ^= 0x74; pPassword[1] = ucByte; ucByte = (UCHAR)QueryVal1(p[2],7); ucByte ^= 0x74; pPassword[2] = ucByte; ucByte = (UCHAR)QueryVal2(p[3],3); ucByte ^= 0x74; pPassword[3] = ucByte; ucByte = pPassword[0]; pPassword[0] = pPassword[1]; pPassword[1] = ucByte; ucByte = pPassword[2]; pPassword[2] = pPassword[3]; pPassword[3] = ucByte; return ulPassWd; } void main(void) { ULONG ulFirstPassWd = 0; ULONG ulLastPassWord = 0; CHAR cPassword[513] = {\'0\'}; FillTable(); for(;;) { printf(\"%s\\n\",cPassword); ulFirstPassWd = FindTable(cPassword,strlen(cPassword)); ulFirstPassWd = ~ulFirstPassWd; ulFirstPassWd = AskEncryWord(ulFirstPassWd); if(ulLastPassWord == 0x746A3C71) { printf(\"Password Is %s\\n\",cPassword); getchar(); break; } AscIIINC(cPassword,sizeof(cPassword)-1); } if(g_pulDestVal) { delete [] g_pulDestVal; } } 已经知道的是0x746A3C71就是加密之后的password了!并且算法已经弄出来了!这个程序就是准备使用穷举的方法!但是实在是太慢了!不知道怎么弄出破解的算法,主要就是 C=A^B E=C^D 现在只知道B和E怎么求的A呢! |
|
最新喜欢:![]() |
沙发#
发布于:2003-02-17 16:52
很容易破解还叫加密算法吗
|
|
板凳#
发布于:2003-02-17 17:35
很容易破解还叫加密算法吗 有加密就会有解吗???????? |
|
|
地板#
发布于:2003-02-17 18:27
引用: 理论上有 |
|
|
地下室#
发布于:2003-02-17 19:08
[quote]引用: 理论上有 [/quote] 实际上是一定有 |
|
|
5楼#
发布于:2003-02-17 19:13
据说有一种叫天窗算法的,无法逆向求解。
具体我也不了解,以前好像道听途说过。 |
|
|
6楼#
发布于:2003-02-17 19:21
市场上的游戏软件的破解
一般是用什么方法 |
|
|
7楼#
发布于:2003-02-18 08:09
[quote]引用: 理论上有 [/quote] 有加密肯定就有解(不只是理论上),但有加密算法不一定就有 解密算法(暴力破解除外)。 |
|
|