欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

egis发布了adsubstract pro 2.1注册器,带源码的。 (2千字)

egis发布了adsubstract pro 2.1注册器,带源码的。 (2千字)

/*
ADSubstract v2.10 Keymaker by Egis/CORE
Compile: cl /o2 adsk.c md5dgst.c
*/
#include <stdio.h>
#include <stdlib.h>
#include "md5.h"
typedef    unsigned char    BYTE;
typedef    unsigned int    WORD;
typedef    unsigned long    DWORD;
typedef unsigned _int64 QWORD;
BYTE    base[] = { "0123456789abcdefghijklmnopqrstuvwxyz" };
QWORD tobase( BYTE m )
{
    BYTE    i;
    for( i = 0; i < 36; i++ )
        if( base[ i ] == m )
            return i;
    return 0;
}
QWORD t64( BYTE *t )
{
    QWORD  q;
    BYTE    p[ 100 ], *b = p;
    q = 0;
    memset( p, 0, 100 );
    strcpy( p, t );
    strlwr( p );
    while( *b ) {
        q *= 32;
        q += tobase( *b );
        b++;
    }
    return q;
}
void p64( QWORD key )
{
    BYTE    s[ 20 ], *p = s, m;
    memset( s, 0, 20 );
    while( key ) {
        *p = base[ key % 32L ];
        key /= 32L;
        p++;
    }
    p = s;
    while( *p ) {
        if( *p == '1' ) *p = 'w';
        if( *p == 'b' ) *p = 'x';
        if( *p == 'o' ) *p = 'z';
        p++;
    }
    strrev( s );
    strupr( s );
    printf( s );
}
void main( void )
{
    MD5_CTX    c;
    BYTE        md[ MD5_DIGEST_LENGTH ];
    int        i;
    DWORD      magic[ 10 ] = { 0x5733a0c3, 0x155cf8be, 0xffc55d8d, 0x11cf424, 0x7117d5b1, 0x4baf5541, 0x83179f31, 0x20f3f593 };
    BYTE        pad[ 10 ];
    QWORD      k1, k2;
    QWORD      k;
    char        key[ 10 ] = { "EGIS" };
    printf( "\n ._______/\\__________/\\_______/\\___________.\n"
        " /    _____\\_  ___    \\_____  \\    _____/\n"
        "/    \\      \\    _\\    /  /  /__    __\\___\n"
        "\\____________/__________\\___\\____  \\________/\n"
        "+-ds-----------+ C.O.R.E..2.K +- \\_/ -------+\n\n"
        "ADSubstract Pro v2.10 Keymaker by Egis/CORE.\n" );
    while( 1 ) {
        srand( time( NULL ) );
        for( i = 4; i < 8; i++ )
            key[ i ] = base[ rand() % 32 ];       
        k1 = t64( key );
        pad[ 0 ] = ( BYTE )( ( k1 & 0xff00 ) >> 8 );
        pad[ 1 ] = ( BYTE )( ( k1 & 0xff0000 ) >> 16 );
        pad[ 2 ] = ( BYTE )( ( k1 & 0xff000000 ) >> 24 );
        pad[ 3 ] = ( BYTE )( ( k1 & 0xff00000000 ) >> 32 );
        pad[ 4 ] = ( BYTE )( k1 & 0xff );
        if( pad[ 4 ] > 18 )
            break;
    }
    printf( "\nYour registration code: " );
    p64( k1 );
    MD5_Init( &c );
    MD5_Update( &c, ( BYTE* ) magic, 32 );
    MD5_Update( &c, pad, 5 );
    MD5_Update( &c, ( BYTE* ) magic, 32 );
    MD5_Final( md, &c );
   
    k2 = md[ 0 ];
    k2 <<= 8;
    k2 += md[ 1 ];
    k2 <<= 8;
    k2 += md[ 2 ];
    k2 <<= 8;
    k2 += md[ 3 ];
    k2 <<= 8;
    k2 += md[ 4 ];
    p64( k2 );
    printf( "\n" );
}

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功