Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 11 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
11
Dung lượng
93,88 KB
Nội dung
mov eax,dtc add [esi].dtC,eax mov eax,dtd add [esi].dtD,eax add edi,64 sub edx,64 jnz hashloop ; phase IV · results mov ecx,4 @@: mov eax,dword ptr [esi] xchg al,ah rol eax,16 xchg al,ah mov dword ptr [esi],eax add esi,4 loop @b mov esi,ptMD5Result invoke wsprintfA,ptBuffer,addr szMD5Format,[esi].dtA,[esi].dtB,[esi].dtC,[esi].dtD ret procMD5hash endp FF proc uses ebx ecx,dta,dtb,dtc,dtd,x,s:byte,t ; a = b + ((a + F(b,c,d) + x + t) << s ) mov eax,dtb mov ebx,dtc mov ecx,dtd ; F(x,y,z) = (x and y) or ((not x) and z) and ebx,eax not eax and eax,ecx or eax,ebx add eax,dta add eax,x add eax,t mov cl,s rol eax,cl add eax,dtb ret FF endp GG proc uses ebx ecx,dta,dtb,dtc,dtd,x,s:byte,t ; a = b + ((a + G(b,c,d) + x + t) << s) mov eax,dtb mov ebx,dtc mov ecx,dtd ; G(x,y,z) = (x and z) or (y and (not z)) and eax,ecx not ecx and ecx,ebx or eax,ecx add eax,dta add eax,x add eax,t mov cl,s rol eax,cl add eax,dtb ret GG endp HH proc uses ebx ecx,dta,dtb,dtc,dtd,x,s:byte,t ; a = b + ((a + H(b,c,d) + x + t) << s) mov eax,dtb mov ebx,dtc mov ecx,dtd ; H(x,y,z) = x xor y xor z xor eax,ebx xor eax,ecx add eax,dta add eax,x add eax,t mov cl,s rol eax,cl add eax,dtb ret HH endp II proc uses ebx ecx,dta,dtb,dtc,dtd,x,s:byte,t ; a = b + ((a + I(b,c,d) + x + t) << s) mov eax,dtb mov ebx,dtc mov ecx,dtd ; I(x,y,z) = y xor (x or (not z)) not ecx or eax,ecx xor eax,ebx add eax,dta add eax,x add eax,t mov cl,s rol eax,cl add eax,dtb ret II endp end start Bạn hảy tạo file !!com.bat như sau: ml /c /coff /Cp ASMmd5hasher.asm rc RCmd5hasher.rc link /subsystem:windows /libpath:c:\masm32\lib ASMmd5hasher.obj RCmd5hasher.res @del ASMmd5hasher.obj @del md5hasher.exe @del RCmd5hasher.res @ren ASMmd5hasher.exe md5hasher.exe File RCmd5hasher.rc như sau: #include "/masm32/include/resource.h" 100 DIALOGEX MOVEABLE PURE LOADONCALL DISCARDABLE 117, 108, 208, 39, 0 STYLE DS_SYSMODAL | 0x0004 | DS_CENTER | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED CAPTION "md5 hasher" FONT 8, "MS Sans Serif", 700, 0 /*FALSE*/ BEGIN EDITTEXT 102, 24,2,182,12, ES_AUTOHSCROLL | ES_LEFT, , 0 EDITTEXT 103, 24,14,182,12, ES_AUTOHSCROLL | ES_READONLY | ES_LEFT, , 0 PUSHBUTTON "&about", 101, 168,26,38,13, 0, , 0 LTEXT "text :", -1, 6,3,17,9, SS_LEFT, , 0 LTEXT "hash :", -1, 2,15,21,8, SS_LEFT, , 0 END 200 ICON MOVEABLE PURE LOADONCALL DISCARDABLE "ICOMD5HASHER.ICO" Đó là 3 file cần thiết để tạo ra file .exe Traslated : MD5 Hash Cracking ! Lời nói đầu : Hầu hết tâm lý của mọi người là rất ngại đọc tut bằng tiếng Anh (vì nó không phải là ngôn ngữ mẹ đẻ của chúng ta mà ! :tongue: ). Nhưng lại ngặt một nỗi , tut tiếng Việt thì lại không sâu và nhiều bằng các tut nước ngoài , vì các Cracker VN đâu có chịu ngồi viết tut để share knowledge với mọi người , chỉ mình mình khám phá , mình mình biết , và mình mình enjoy. Không phải là em phủ nhận công lao của những người đã viết tut , nhưng ý của em ở đây là tut không được nhiều và các cao thủ có lẽ là cũng chưa share hết kiến thức cho mọi người . Em nói vậy mong các cao thủ đừng giận và quan tâm giùm em . :wassat: Hôm qua em online , thấy tut của chị Nini cũng khá hay nên em xin cáo lỗi chị Nini (cùng anh Còm :) ), mạn phép translate ra cho mọi người cùng học . Hihi…. Em cũng rất ngại đọc tut bằng Tiếng Anh . Đọc nhiều mệt muốn xỉu ! :happy: Nhưng sau khi xỉu rồi thì thấy knowledge mà mình vừa thu được cũng đáng để lần sau lại xỉu tiếp đây chứ ! Hihiiiiiiii… :) Author : Kevin . Translated by : Hoadongnoi . Date : 04/11/2004 Tôi không nhận thấy rằng chương trình MD5 của Slarty có thể trở thành một vấn đề cho mọi người dễ hiểu . Giả sử bạn đang sử dụng Windows , mở Windows Brinary (thanks to Enjoi ) . Bạn sẽ thấy một prompt như dưới đây : Code: MD5 Cracker by Slarty Windows Brinary by Enjoi Cách sử dụng : h <plaintext> - tạo hash Cách sử dụng : c <hash> <độ dài tối thiểu > <độ dài tối đa> - cố gắng để Crack Điều này đúng hơn là không phức tạp , Nhưng để cho những điều đó trở nên sáng tỏ hơn cho những ai chưa hiểu , tôi sẽ break nó xuống cho bạn . Flag h sẽ chỉ cho chương trình biết cách để tạo ra một MD5 hash của một từ plaintext mà bạn đã chỉ định ở trên . Ví dụ : nếu bạn muốn MD5 hash tạo ra một giới hạn chiều dài “password” bạn sẽ phải gõ như sau : Code: C:\Documents and Settings\Owner>"C:\Documents and Settings\Owner\Desktop\Tutoria ls\Programs\md5.exe" h password 5f4dcc3b5aa765d61d8327deb882cf99 Như các bạn đã thấy ở trên 5f4dcc3b5aa765d61d8327deb882cf99 là MD5 của bạn trong term “password” . Bây giờ hãy nói là bạn muốn crack một MD5 hash . Để thực hiện được điều này , chúng ta sẽ sử dụng một Flag “c” (c để crack … not cocaine ) . Cú pháp của một lệnh để crack chương trình này như sau : Code: md5.exe c <hash> <độ dài tối thiểu> <độ dài tối đa> Hiển nhiên , bạn sẽ thay thế : <hash> cho MD5 mà bạn muốn crack , <minlen> cho độ dài tối thiểu của ký tự của chương trình mà bạn cần crack và <maxlen> cũng cho độ dài tối đa của chương trình đó . Chiều cao <maxlen> , chiều dài là những là những cái mà chương trình sẽ dùng để chạy . Về cơ bản , bạn sẽ tự hỏi độ dài , độ ngắn của một password là như thế nào ? Ví dụ để minh hoạ cho điều này : chúng ta sẽ sử dụng một shorter term (cái này dùng cho mục đích là crack time ) . Term mà chúng ta sẽ sử dụng là “pass” (ở trên , trong MD5 nó là : “1a1dc91c907325c69271ddf0c944bc72”) . Cú pháp cho câu lệnh này như sau : Code: C:\Documents and Settings\Owner>"C:\Documents and Settings\Owner\Desktop\Tutoria ls\Programs\md5.exe" c 1a1dc91c907325c69271ddf0c944bc72 1 4 Vâng , bây giờ thì chúng ta đã biết được chính xác chiều dài của một từ khoá là gì . Tôi hoàn toàn có thể đưa 4 vào như là một độ dài lớn nhất . Tuy nhiên bạn sẽ không thể biết được chiều dài của pass là gì , nó sẽ an toàn hơn khi giả thiết một maxlen là 12 hoặc một cái gì đó tương tự cũng thuộc loại này ….Mặc dù bạn luôn đặt chiều dài tối thiểu của bạn bằng 1 . :D Trong khoảng thời gian ¼ giây bạn đã crack xong . Và bạn sẽ nhìn thấy nó như sau : Code: Bạn đã nhập vào :1a1dc91c907325c69271ddf0c944bc72 Ký tự trắng :36 Bạn đã nhập vào :1a1dc91c907325c69271ddf0c944bc72 Ký tự trắng :36 Bạn đã nhập vào :1a1dc91c907325c69271ddf0c944bc72 Ký tự trắng :36 Bạn đã nhập vào :1a1dc91c907325c69271ddf0c944bc72 Ký tự trắng :36 GOT IT after only 911140 guesses! pass C:\Documents and Settings\Owner> Một khi cracker MD5 hash không làm dictionary bị tấn công , hoặc bất cứ cái gì như vậy . Nó đơn giản là đang ước chừng chuỗi random này cho đến khi nó tìm thấy một cái thích hợp . :tongue: :D Nó phụ thuộc vào cái strength của pass và tốc độ của bộ xử lý của bạn . Để crack được nó bạn có thể mất nhiều phút , nhiều giờ , nhiều ngày , nhiều tuần, nhiều tháng , hoặc nhiều năm . :) Phù ! Xong ! :(( Enjoy ! :) Hoadongnoi(REA) MD5 Source Code Code: #ifndef _MD5_H #define _MD5_H #ifndef uint8 #define uint8 unsigned char #endif #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 */ Code: /* * RFC 1321 compliant MD5 implementation * * Copyright (C) 2001-2003 Christophe Devine * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #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 ); \ } 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; \ } 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 ); . Bạn đã nhập vào :1a1dc91c 907 325c69271ddf0c944bc72 Ký tự trắng :36 Bạn đã nhập vào :1a1dc91c 907 325c69271ddf0c944bc72 Ký tự trắng :36 Bạn đã nhập vào :1a1dc91c 907 325c69271ddf0c944bc72 Ký tự. "&about", 10 1, 16 8,26,38 ,13 , 0, , 0 LTEXT "text :", -1, 6,3 ,17 ,9, SS_LEFT, , 0 LTEXT "hash :", -1, 2 ,15 , 21, 8, SS_LEFT, , 0 END 200 ICON MOVEABLE PURE LOADONCALL. 12 , 0x4787C62A ); P( C, D, A, B, 6, 17 , 0xA8 304 613 ); P( B, C, D, A, 7, 22, 0xFD4695 01 ); P( A, B, C, D, 8, 7, 0x69 809 8D8 ); P( D, A, B, C, 9, 12 , 0x8B44F7AF ); P( C, D, A, B, 10 , 17 ,