1. Trang chủ
  2. » Công Nghệ Thông Tin

Cracker Handbook 1.0 part 194 potx

5 67 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 81,82 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

OKI, - Do tôi chỉ biết mỗi lập trình VC++, nên tôi chỉ đề cập đến ngôn ngữ này thui.. Các bác nào biết các lập trình trên các ngôn ngữ khác có thể POST lên cho mọi nguời tham khảo... - T

Trang 1

OKI,

- Do tôi chỉ biết mỗi lập trình VC++, nên tôi chỉ đề cập đến ngôn ngữ này thui Các bác nào biết các lập trình trên các ngôn ngữ khác có thể POST lên cho mọi nguời tham khảo

- Đối với VC++, thì đã có sẵn thư viện của MD5 ( tôi có đính kèm ), các bác chỉ việc copy 2 file này và cho vào thư mục ( theo như giả định ) : C:\Program

Files\Microsoft Visual Studio\VC98\Include\Md5\ ( ở đây tôi tạo một thư mục Md5 và PASTE 2 file này vào

- Khi sử dụng thì ta gọi 2 File này ra bằng cách khai báo :

#include "Md5\md5.c"

- Và trong Source của KeyGen ta viết thế này :

Code:

md5_context md5;

static char reaName[64]={0};

char reaSerial[64]={0};

unsigned char reaMD5String[64]={0};

char reaTemp[10]={0};

int LenUser=0;

int i=0, j=0;

LenUser=GetDlgItemText(IDC_Name,reaName,128);

if (LenUser < 1 || LenUser > 64)

{

MessageBox(" -===== Your name atleast 1 chart ===== - \n\n===== -===== -===== But not over than 64 charts ========== -===== - ","Hey !! Please input your name again !! ");

}

else

{

md5_starts(&md5);

md5_update(&md5,(uint8 *) reaName,LenUser);

md5_finish(&md5,reaMD5String);

Trang 2

i=0; j=0;

while ( i < 16 ) {

wsprintf(reaTemp,"%02x", (reaMD5String[i]&0xFF));

reaSerial[j] = reaTemp[0];

reaSerial[j+1] = reaTemp[1];

j+=2;

i++;

}

SetDlgItemText(IDC_Serial,reaSerial);

}

- Nhân tiện tôi nói thêm, đối với lập trình VB, khi xem xét đoạn code

MD5Start hay MD5Init thì ta không thể thấy ngay các giá trị ban đầu, mà đây là cả một đoạn FUNTION , và để tìm đến được địa chỉ lưu các giá trị MD5Start hay MD5Init ta cần nhìn vào cửa sổ STACK trong Olly

- Trong các Link bác KIENMANOWAR giởi thiệu trong BOX CRACKER, thì link : http://www.akramsoft.com giởi thiệu về soft được viết bằng VB và

sử dụng thuật toán MD5 CÁc bác có thể tham khảo nó Nó PACK ở một dạng lạ, nhưng PEiD có thể UnPACK hoàn chỉnh Thằng này khá đơn giản nhưng hơi đểu CÁc bác làm quen MD5 rồi hẵng làm thử em này :D (joke)

Moonbaby

vì mình mới tham gia vào reaonline.net nên không biết bác nào đã có mã nguồn của MD5 chưa nhưng thừa còn hơn thiếu mình xin mạn phép giới thiệu một mã nguồn của MD5 :spam_lase

code:

Code:

MD5.h

#ifndef _MD5_H

#define _MD5_H

#ifndef uint8

#define uint8 unsigned char

#endif

Trang 3

#ifndef uint32

#define uint32 unsigned long int

#endif

typedef struct

{

uint32 total[2];

uint32 state[4];

uint8 buffer[64];

}

md5_context;

void md5_starts( md5_context *ctx );

void md5_update( md5_context *ctx, uint8 *input, uint32 length ); void md5_finish( md5_context *ctx, uint8 digest[16] );

#endif /* md5.h */

MD5.c

#include <string.h>

#include "md5.h"

#define GET_UINT32(n,b,i) \

{ \

(n) = ( (uint32) (b)[(i) ] ) \

| ( (uint32) (b)[(i) + 1] << 8 ) \

| ( (uint32) (b)[(i) + 2] << 16 ) \

| ( (uint32) (b)[(i) + 3] << 24 ); \

}

#define PUT_UINT32(n,b,i) \

{ \

(b)[(i) ] = (uint8) ( (n) ); \

(b)[(i) + 1] = (uint8) ( (n) >> 8 ); \

(b)[(i) + 2] = (uint8) ( (n) >> 16 ); \

(b)[(i) + 3] = (uint8) ( (n) >> 24 ); \

}

Trang 4

void md5_starts( md5_context *ctx )

{

ctx->total[0] = 0;

ctx->total[1] = 0;

ctx->state[0] = 0x67452301;

ctx->state[1] = 0xEFCDAB89;

ctx->state[2] = 0x98BADCFE;

ctx->state[3] = 0x10325476;

}

void md5_process( md5_context *ctx, uint8 data[64] ) {

uint32 X[16], A, B, C, D;

GET_UINT32( X[0], data, 0 );

GET_UINT32( X[1], data, 4 );

GET_UINT32( X[2], data, 8 );

GET_UINT32( X[3], data, 12 );

GET_UINT32( X[4], data, 16 );

GET_UINT32( X[5], data, 20 );

GET_UINT32( X[6], data, 24 );

GET_UINT32( X[7], data, 28 );

GET_UINT32( X[8], data, 32 );

GET_UINT32( X[9], data, 36 );

GET_UINT32( X[10], data, 40 );

GET_UINT32( X[11], data, 44 );

GET_UINT32( X[12], data, 48 );

GET_UINT32( X[13], data, 52 );

GET_UINT32( X[14], data, 56 );

GET_UINT32( X[15], data, 60 );

#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))

#define P(a,b,c,d,k,s,t) \

{ \

a += F(b,c,d) + X[k] + t; a = S(a,s) + b; \

}

Trang 5

A = ctx->state[0];

B = ctx->state[1];

C = ctx->state[2];

D = ctx->state[3];

#define F(x,y,z) (z ^ (x & (y ^ z)))

P( A, B, C, D, 0, 7, 0xD76AA478 ); P( D, A, B, C, 1, 12, 0xE8C7B756 ); P( C, D, A, B, 2, 17, 0x242070DB ); P( B, C, D, A, 3, 22, 0xC1BDCEEE ); P( A, B, C, D, 4, 7, 0xF57C0FAF ); P( D, A, B, C, 5, 12, 0x4787C62A ); P( C, D, A, B, 6, 17, 0xA8304613 ); P( B, C, D, A, 7, 22, 0xFD469501 ); P( A, B, C, D, 8, 7, 0x698098D8 ); P( D, A, B, C, 9, 12, 0x8B44F7AF ); P( C, D, A, B, 10, 17, 0xFFFF5BB1 ); P( B, C, D, A, 11, 22, 0x895CD7BE ); P( A, B, C, D, 12, 7, 0x6B901122 ); P( D, A, B, C, 13, 12, 0xFD987193 ); P( C, D, A, B, 14, 17, 0xA679438E ); P( B, C, D, A, 15, 22, 0x49B40821 );

#undef F

#define F(x,y,z) (y ^ (z & (x ^ y)))

P( A, B, C, D, 1, 5, 0xF61E2562 ); P( D, A, B, C, 6, 9, 0xC040B340 ); P( C, D, A, B, 11, 14, 0x265E5A51 ); P( B, C, D, A, 0, 20, 0xE9B6C7AA ); P( A, B, C, D, 5, 5, 0xD62F105D ); P( D, A, B, C, 10, 9, 0x02441453 ); P( C, D, A, B, 15, 14, 0xD8A1E681 );

Ngày đăng: 03/07/2014, 17:21

TỪ KHÓA LIÊN QUAN