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

Hacker Professional Ebook part 138 ppt

15 66 0
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 190,6 KB

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

Nội dung

unbiased,thì mỗi bit của hàm FX,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

Trang 1

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

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]

Trang 2

/* 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]

/* 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

Trang 3

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

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

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

GG dtb,dtc,dtd,dta,dword ptr [edi+08*4],20,0455a14edh

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

Trang 4

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

GG dtc,dtd,dta,dtb,dword ptr [edi+07*4],14,0676f02d9h

GG dtb,dtc,dtd,dta,dword ptr [edi+12*4],20,08d2a4c8ah

; round 3

HH dta,dtb,dtc,dtd,dword ptr [edi+05*4],04,0fffa3942h

HH dtd,dta,dtb,dtc,dword ptr [edi+08*4],11,08771f681h

HH dtc,dtd,dta,dtb,dword ptr [edi+11*4],16,06d9d6122h

HH dtb,dtc,dtd,dta,dword ptr [edi+14*4],23,0fde5380ch

HH dta,dtb,dtc,dtd,dword ptr [edi+01*4],04,0a4beea44h

HH dtd,dta,dtb,dtc,dword ptr [edi+04*4],11,04bdecfa9h

HH dtc,dtd,dta,dtb,dword ptr [edi+07*4],16,0f6bb4b60h

HH dtb,dtc,dtd,dta,dword ptr [edi+10*4],23,0bebfbc70h

HH dta,dtb,dtc,dtd,dword ptr [edi+13*4],04,0289b7ec6h

HH dtd,dta,dtb,dtc,dword ptr [edi+00*4],11,0eaa127fah

HH dtc,dtd,dta,dtb,dword ptr [edi+03*4],16,0d4ef3085h

HH dtb,dtc,dtd,dta,dword ptr [edi+06*4],23,004881d05h

HH dta,dtb,dtc,dtd,dword ptr [edi+09*4],04,0d9d4d039h

HH dtd,dta,dtb,dtc,dword ptr [edi+12*4],11,0e6db99e5h

HH dtc,dtd,dta,dtb,dword ptr [edi+15*4],16,01fa27cf8h

HH dtb,dtc,dtd,dta,dword ptr [edi+02*4],23,0c4ac5665h

; round 4

II dta,dtb,dtc,dtd,dword ptr [edi+00*4],06,0f4292244h

II dtd,dta,dtb,dtc,dword ptr [edi+07*4],10,0432aff97h

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

II dtb,dtc,dtd,dta,dword ptr [edi+05*4],21,0fc93a039h

II dta,dtb,dtc,dtd,dword ptr [edi+12*4],06,0655b59c3h

II dtd,dta,dtb,dtc,dword ptr [edi+03*4],10,08f0ccc92h

II dtc,dtd,dta,dtb,dword ptr [edi+10*4],15,0ffeff47dh

II dtb,dtc,dtd,dta,dword ptr [edi+01*4],21,085845dd1h

II dta,dtb,dtc,dtd,dword ptr [edi+08*4],06,06fa87e4fh

II dtd,dta,dtb,dtc,dword ptr [edi+15*4],10,0fe2ce6e0h

II dtc,dtd,dta,dtb,dword ptr [edi+06*4],15,0a3014314h

II dtb,dtc,dtd,dta,dword ptr [edi+13*4],21,04e0811a1h

II dta,dtb,dtc,dtd,dword ptr [edi+04*4],06,0f7537e82h

II dtd,dta,dtb,dtc,dword ptr [edi+11*4],10,0bd3af235h

II dtc,dtd,dta,dtb,dword ptr [edi+02*4],15,02ad7d2bbh

II dtb,dtc,dtd,dta,dword ptr [edi+09*4],21,0eb86d391h

Trang 5

mov eax,dta

add [esi].dtA,eax

mov eax,dtb

add [esi].dtB,eax

mov eax,dtc

add [esi].dtC,eax

mov eax,dtd

add [esi].dtD,eax

add edi,64

sub edx,64

jnz hashloop

Trong đó các biến và hàm được định nghĩa như sau:

MD5RESULT STRUCT

dtA dd ?

dtB dd ?

dtC dd ?

dtD dd ?

MD5RESULT ENDS

FF MACRO dta,dtb,dtc,dtd,x,s,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

Trang 6

rol eax,cl

add eax,dtb

mov dta,eax

ENDM

GG MACRO dta,dtb,dtc,dtd,x,s,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

mov dta,eax

ENDM

HH MACRO dta,dtb,dtc,dtd,x,s,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

Trang 7

xor eax,ebx

xor eax,ecx

add eax,dta

add eax,x

add eax,t

mov cl,s

rol eax,cl

add eax,dtb

mov dta,eax

ENDM

II MACRO dta,dtb,dtc,dtd,x,s,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

mov dta,eax

ENDM

Trang 8

3.5 Xuất ra :

Tín hiệu message digest sinh ra là A,B,C,D Đó là : bắt đầu với byte thấp nhất của

A và kết thúc là byte cao nhất của D

Đến đây là coi như đã mô tả hòan chỉnh về thuật tóan MD5

Trong ASM:

Ở đây chủ yếu là sắp xếp lại chuổi hashes bắt đầu từ byte thấp của A và kết thúc ở byte cao của D

; 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

ret

The_lighthouse(REA)

TÒAN BỘ NGUỒN CODE TRONG ASM VỀ HÀM MD5hash:

Khi các bạn lập trình trong ASM, các bạn sử dụng nguồn code này để tính MD5-hashes

; _

_

; MD5hash : hashes a string using the md5 algorithm

;¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯��¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯��¯¯¯¯¯¯¯¯¯¯

Trang 9

¯¯¯¯¯¯¯¯¯¯

; input :

; ptBuffer: pointer to the string buffer (doesn' t have to be zero-terminated, must be

at least 64bytes large)

; dtBufferLength: length of the buffer

; ptMD5Result: pointer to a MD5RESULT structure

; output :

; ptMD5Result: contains the hash dwords in dtA, dtB, dtC, dtD

; _

_

; roy|fleur

;¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯��¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯��¯¯¯¯¯¯¯¯¯¯

¯¯¯¯¯¯¯¯¯¯

MD5hash proto :dword,:dword,:dword

MD5RESULT STRUCT

dtA dd ?

dtB dd ?

dtC dd ?

dtD dd ?

MD5RESULT ENDS

FF MACRO dta,dtb,dtc,dtd,x,s,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

Trang 10

add eax,dta

add eax,x

add eax,t

mov cl,s

rol eax,cl

add eax,dtb

mov dta,eax

ENDM

GG MACRO dta,dtb,dtc,dtd,x,s,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

mov dta,eax

Trang 11

ENDM

HH MACRO dta,dtb,dtc,dtd,x,s,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

mov dta,eax

ENDM

II MACRO dta,dtb,dtc,dtd,x,s,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

Trang 12

xor eax,ebx

add eax,dta

add eax,x

add eax,t

mov cl,s

rol eax,cl

add eax,dtb

mov dta,eax

ENDM

.code

MD5hash proc uses eax ebx ecx edx edi

esi,ptBuffer:dword,dtBufferLength:dword,ptMD5Resul t:dword local dta:dword,dtb:dword,dtc:dword,dtd:dword

; phase I · padding

mov edi,ptBuffer

mov eax,dtBufferLength

inc eax

add edi,eax

mov byte ptr [edi-1],080h

xor edx,edx

mov ebx,64

div ebx

neg edx

Trang 13

add edx,64

cmp edx,8

jae @f

add edx,64

@@: mov ecx,edx

xor al,al

rep stosb

mov eax,dtBufferLength

inc edx

add dtBufferLength,edx

xor edx,edx

mov ebx,8

mul ebx

mov dword ptr [edi-8],eax

mov dword ptr [edi-4],edx

mov edx,dtBufferLength

mov edi,ptBuffer

; phase II · chaining variables initialization mov esi,ptMD5Result

assume esi:ptr MD5RESULT

mov [esi].dtA,067452301h

mov [esi].dtB,0efcdab89h

mov [esi].dtC,098badcfeh

Trang 14

mov [esi].dtD,010325476h

; 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

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

Trang 15

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

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

GG dtb,dtc,dtd,dta,dword ptr [edi+08*4],20,0455a14edh

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

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

GG dtc,dtd,dta,dtb,dword ptr [edi+07*4],14,0676f02d9h

GG dtb,dtc,dtd,dta,dword ptr [edi+12*4],20,08d2a4c8ah

; round 3

HH dta,dtb,dtc,dtd,dword ptr [edi+05*4],04,0fffa3942h

HH dtd,dta,dtb,dtc,dword ptr [edi+08*4],11,08771f681h

HH dtc,dtd,dta,dtb,dword ptr [edi+11*4],16,06d9d6122h

HH dtb,dtc,dtd,dta,dword ptr [edi+14*4],23,0fde5380ch

HH dta,dtb,dtc,dtd,dword ptr [edi+01*4],04,0a4beea44h

HH dtd,dta,dtb,dtc,dword ptr [edi+04*4],11,04bdecfa9h

HH dtc,dtd,dta,dtb,dword ptr [edi+07*4],16,0f6bb4b60h

HH dtb,dtc,dtd,dta,dword ptr [edi+10*4],23,0bebfbc70h

HH dta,dtb,dtc,dtd,dword ptr [edi+13*4],04,0289b7ec6h

HH dtd,dta,dtb,dtc,dword ptr [edi+00*4],11,0eaa127fah

HH dtc,dtd,dta,dtb,dword ptr [edi+03*4],16,0d4ef3085h

HH dtb,dtc,dtd,dta,dword ptr [edi+06*4],23,004881d05h

HH dta,dtb,dtc,dtd,dword ptr [edi+09*4],04,0d9d4d039h

HH dtd,dta,dtb,dtc,dword ptr [edi+12*4],11,0e6db99e5h

HH dtc,dtd,dta,dtb,dword ptr [edi+15*4],16,01fa27cf8h

HH dtb,dtc,dtd,dta,dword ptr [edi+02*4],23,0c4ac5665h

; round 4

Ngày đăng: 04/07/2014, 11:20

TỪ KHÓA LIÊN QUAN