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

Cracker Handbook 1.0 part 402 doc

6 82 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 6
Dung lượng 157,32 KB

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

Nội dung

Hàm F có thể được định nghĩa bằng cách dùng “+” thay vì “v” từ XY và notXZ thì sẽ không bao giờ có 1’s trong vị trí bit giống như thế.. Chú ý quan tâm rằng nếu các bits của X,Y và Z là i

Trang 1

mov byte ptr [edi-1],080h <<<padding vào byte đầu tiên = 80h

xor edx,edx <<< edx=0

mov ebx,64 <<< ebx=64 (64byte=512bit) , ở đây tính tóan hệ số p trong biểu thức ( p*512+448) bits

div ebx <<< chia eax/ebx=eax/64 : thương số chứa trong eax, số dư chứa trong edx

neg edx <<< edx=-edx

add edx,64 <<<edx=64+edx=64+(-edx ở bước trên)

cmp edx,8 <<< so sánh edx với 8

jae @f <<< Nếu >= thì nhảy đến @@

;Đến đây các bạn hảy chú ý rằng : nếu phần dư khi chia cho 64 chứa trong edx phải

từ khỏang 0->56byte(488bit) thì ok và p=eax ,còn nếu trong khỏang 56->64 (64-56=8byte) thì p=eax+1 tức là edx+64

add edx,64

@@: mov ecx,edx <<<ecx=edx : khởi tạo biến đếm để padding set các bit = 0 xor al,al <<< al=0

rep stosb <<< set al=0 vào các bit padding trong ES:DI, luu từ trái qua phải và tăng

DI (EDI)

mov eax,dtBufferLength <<<eax= dtBufferLength

inc edx <<< edx=edx+1

add dtBufferLength,edx <<< dtBufferLength= dtBufferLength + edx

xor edx,edx <<< edx=0

mov ebx,8 <<< ebx=8 : để chuyển chiều dài sang dạng hex (b*8)

mul ebx <<< eax=eax*ebx=eax*8

mov dword ptr [edi-8],eax <<< padding 1word=Chiều dài b đã đổi sang dạng số hex vào

Trang 2

mov dword ptr [edi-4],edx <<< padding 1word = 0 vào

mov edx,dtBufferLength <<<edx= dtBufferLength

mov edi,ptBuffer <<<edi= ptBuffer

3.3 Bước 3: Khởi tạo giá trị đầu tiên cho MD Buffer :

Bộ đệm buffer của tín hiệu MD có 4-word (A,B,C,D) Chúng được sử dụng để tính tóan tín hiệu MD Ở đây mỗi A,B,C,D được gọi là register 32-bit Các registers này được khởi tạo giá trị đầu tiên với giá trị là số hexa như sau:

Word A: 01 23 45 67

Word B: 89 ab cd ef

Word C: fe dc ba 98

Word D: 76 54 32 10

Trong ASM:

; phase II · chaining variables initialization

mov esi,ptMD5Result

assume esi:ptr MD5RESULT

mov [esi].dtA,067452301h

mov [esi].dtB,0efcdab89h

mov [esi].dtC,098badcfeh

mov [esi].dtD,010325476h

3.4 Bước 4: Qui trình tính tóan tín hiệu trong khối 16-words Blocks

Như trên chúng ta biết p là số blocks của khối 16-words Blocks Vậy bước này là tiến trình tính tóan “ xáo trộn” các khối 16-word Blocks.Thường thì p=0 các bạn nên nhớ điều đó

Đầu tiên chúng ta định nghĩa các hàm bổ trợ mà mỗi một lần chúng lấy 3 word

Trang 3

32-bit và sinh ra một word 32-32-bit

F(X,Y,Z)=XY v not(X) Z

G(X,Y,Z)=XZ v Y not(Z)

H(X,Y,Z)=X xor Y xor Z

I(X,Y,Z)=Y xor (X v not (Z))

Đọan này các bạn tham khảo thêm về mặt tóan học của MD5 , sau đây tui chỉ dịch theo tài liệu để các bạn tiện tham khảo:

Trong mỗi một lần tính tóan , hàm F họat động như một điều kiện : Nếu X thỏa thì

là Y, khác thì là Z (if x then Y else Z) Hàm F có thể được định nghĩa bằng cách dùng “+” thay vì “v” từ XY và not(X)Z thì sẽ không bao giờ có 1’s trong vị trí bit giống như thế Chú ý quan tâm rằng nếu các bits của X,Y và Z là imdependent và unbiased,thì mỗi bit của hàm F(X,Y,Z) cũng sẽ là independent và unbiased

Hàm G,H và I cũng tương tự như hàm F, chúng họat động như tóan hạng so sánh bit sẽ sinh ra một output từ các bits của X,Y và Z như là một lọai mà nếu các bits tương ứng của X,Y và Z là independent và unbiased thì mỗi bit của hàm

G(X,Y,Z),H(X,Y,Z) và I(X,Y,Z) sẽ là independent và unbiased Chú ý rằng hàm H

là tóan hạng thao tác trên bit là “xor” hay là một hàm “tương đương”của chính inputs

Đây là bước sử dụng bảng T[1…64] được xây dựng từ hàm sin T[i] biểu thị cho phần tử thứ i của bảng T và bằng :

T[i]=int(4294967296*(asb(sin(i))) với i là radians

Những phần tử của mảng này cho ở phần phụ lục

Thực hiện theo các bước thao tác sau:

/*Qui trình trên mỗi 16-word block */

For i = 0 to N/16-1 do

/* Copy block i vào X */

For j = 0 to 15 do

Trang 4

Set X[j] to M[i*16+j]

end /* Kết thúc vòng lặp j */

/* Lưu A vào AA, B vào BB, C vào CC, và D vào DD */

AA = A

BB = B

CC = C

DD = D

/* Round 1 */

/* Với [abcd k s i] biểu thị cho họat động :

a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s) */

/* Thực hiện 16 họat động như dưới đây */

[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4]

[ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]

[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]

/* Round 2 */

/* Với [abcd k s i] biểu thị cho họat động :

a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s) */

/* Thực hiện 16 họat động như dưới đây */

[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20] [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24] [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28] [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]

/* Round 3 */

/* Với [abcd k s i] biểu thị cho họat động :

a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s) */

/* Thực hiện 16 họat động như dưới đây */

[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40] [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]

Trang 5

/* Round 4 */

/* Với [abcd k s i] biểu thị cho họat động :

a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s) */

/* Thực hiện 16 họat động như dưới đây */

[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]

[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]

[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]

[ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]

/* Rồi thi hành phép cộng như dưới đây (Đó là gia tăng mỗi 4 register bằng giá trị

đã có trước khi block này bắt đầu*/

A = A + AA

B = B + BB

C = C + CC

D = D + DD

end /* kết thúc vòng lặp i */

Trong ASM:

; phase III · hashing

hashloop: mov eax,[esi].dtA

mov dta,eax

mov eax,[esi].dtB

mov dtb,eax

mov eax,[esi].dtC

mov dtc,eax

mov eax,[esi].dtD

mov dtd,eax

; round 1

FF dta,dtb,dtc,dtd,dword ptr [edi+00*4],07,0d76aa478h

FF dtd,dta,dtb,dtc,dword ptr [edi+01*4],12,0e8c7b756h

FF dtc,dtd,dta,dtb,dword ptr [edi+02*4],17,0242070dbh

Trang 6

FF dtb,dtc,dtd,dta,dword ptr [edi+03*4],22,0c1bdceeeh

FF dta,dtb,dtc,dtd,dword ptr [edi+04*4],07,0f57c0fafh

FF dtd,dta,dtb,dtc,dword ptr [edi+05*4],12,04787c62ah

FF dtc,dtd,dta,dtb,dword ptr [edi+06*4],17,0a8304613h

FF dtb,dtc,dtd,dta,dword ptr [edi+07*4],22,0fd469501h

FF dta,dtb,dtc,dtd,dword ptr [edi+08*4],07,0698098d8h

FF dtd,dta,dtb,dtc,dword ptr [edi+09*4],12,08b44f7afh

FF dtc,dtd,dta,dtb,dword ptr [edi+10*4],17,0ffff5bb1h

FF dtb,dtc,dtd,dta,dword ptr [edi+11*4],22,0895cd7beh

FF dta,dtb,dtc,dtd,dword ptr [edi+12*4],07,06b901122h

FF dtd,dta,dtb,dtc,dword ptr [edi+13*4],12,0fd987193h

FF dtc,dtd,dta,dtb,dword ptr [edi+14*4],17,0a679438eh

FF dtb,dtc,dtd,dta,dword ptr [edi+15*4],22,049b40821h

; round 2

GG dta,dtb,dtc,dtd,dword ptr [edi+01*4],05,0f61e2562h

GG dtd,dta,dtb,dtc,dword ptr [edi+06*4],09,0c040b340h

GG dtc,dtd,dta,dtb,dword ptr [edi+11*4],14,0265e5a51h

GG dtb,dtc,dtd,dta,dword ptr [edi+00*4],20,0e9b6c7aah

GG dta,dtb,dtc,dtd,dword ptr [edi+05*4],05,0d62f105dh

GG dtd,dta,dtb,dtc,dword ptr [edi+10*4],09,002441453h

GG dtc,dtd,dta,dtb,dword ptr [edi+15*4],14,0d8a1e681h

GG dtb,dtc,dtd,dta,dword ptr [edi+04*4],20,0e7d3fbc8h

GG dta,dtb,dtc,dtd,dword ptr [edi+09*4],05,021e1cde6h

GG dtd,dta,dtb,dtc,dword ptr [edi+14*4],09,0c33707d6h

Ngày đăng: 03/07/2014, 18:20

TỪ KHÓA LIÊN QUAN