Subversion Repositories Kolibri OS

Rev

Rev 205 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 205 Rev 485
1
;    à¨¬¥à ॠ«¨§ æ¨¨ £¥­¥à â®à  MD5 - å¥è 
1
;    à¨¬¥à ॠ«¨§ æ¨¨ £¥­¥à â®à  MD5 - å¥è 
2
;
2
;
3
;    MD5 Generator
3
;    MD5 Generator
4
;    
4
;    
5
;    €¢â®à: Hex
5
;    €¢â®à: Hex
6
;    ‘ ©â: www.mestack.narod.ru
6
;    ‘ ©â: www.mestack.narod.ru
7
;    ˆ¤¥ï, ॠ«¨§ æ¨ï ¨ ®â« ¤ª .
7
;    ˆ¤¥ï, ॠ«¨§ æ¨ï ¨ ®â« ¤ª .
8
;
8
;
9
;    €¢â®à: Halyavin
9
;    €¢â®à: Halyavin
10
;    ‘ ©â: www.shade.msu.ru/~msu-se/home.html
10
;    ‘ ©â: www.shade.msu.ru/~msu-se/home.html
11
;    „®à ¡®âª , ®â« ¤ª  ¨ ®¯â¨¬¨§ æ¨ï.
11
;    „®à ¡®âª , ®â« ¤ª  ¨ ®¯â¨¬¨§ æ¨ï.
12
;
12
;
13
;    Š®¬¯¨«¨àã¥âìáï Fasm'®¬ ¤«ï Œ¥­ãí⎑
13
;    Š®¬¯¨«¨àã¥âìáï Fasm'®¬ ¤«ï Œ¥­ãí⎑
14
include 'lang.inc'
14
include 'lang.inc'
15
macro diff16 title,l2
-
 
16
 {
-
 
17
  local s,d,l1
-
 
18
  s = l2
-
 
19
  display title,': 0x'
-
 
20
  repeat 8
-
 
21
   d = 48 + s shr ((8-%) shl 2) and $0F
15
include '..\..\..\..\macros.inc'
22
   if d > 57
-
 
23
    d = d + 65-57-1
-
 
24
   end if
-
 
25
   display d
-
 
26
  end repeat
-
 
27
  display 13,10
-
 
28
 }    
-
 
29
 
16
 
30
use32
17
use32
31
 
18
 
32
                org     0x0
19
                org     0x0
33
 
20
 
34
  db     'MENUET01'  ; 8-¡ ©â­ë© ¨¤¥­â¨ä¨ª â®à MenuetOS
21
  db     'MENUET01'  ; 8-¡ ©â­ë© ¨¤¥­â¨ä¨ª â®à MenuetOS
35
  dd     0x01        ; ¢¥àá¨ï § £®«®¢ª  (¢á¥£¤  1)
22
  dd     0x01        ; ¢¥àá¨ï § £®«®¢ª  (¢á¥£¤  1)
36
  dd     START       ;  ¤à¥á ¯¥à¢®© ª®¬ ­¤ë
23
  dd     START       ;  ¤à¥á ¯¥à¢®© ª®¬ ­¤ë
37
  dd     I_END       ; à §¬¥à ¯à®£à ¬¬ë
24
  dd     I_END       ; à §¬¥à ¯à®£à ¬¬ë
38
  dd     0x100000    ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
25
  dd     0x4000      ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
39
  dd     0x100000    ;  ¤à¥á ¢¥à設ë áâíª 
26
  dd     0x4000      ;  ¤à¥á ¢¥à設ë áâíª 
40
  dd     0x0         ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢ (­¥ ¨á¯®«ì§ã¥âáï)
27
  dd     0x0         ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢ (­¥ ¨á¯®«ì§ã¥âáï)
41
  dd     0x0         ; § à¥§¥à¢¨à®¢ ­®
28
  dd     0x0         ; § à¥§¥à¢¨à®¢ ­®
42
 
29
 
43
START:                                  ;  ç «® ¢ë¯®«­¥­¨ï ¯à®£à ¬¬ë
30
START:                                  ;  ç «® ¢ë¯®«­¥­¨ï ¯à®£à ¬¬ë
-
 
31
 
44
 
32
red:
45
        call draw_window            ; ‘¯¥à¢  ¯¥à¥à¨á㥬 ®ª­®
33
        call draw_window            ; ‘¯¥à¢  ¯¥à¥à¨á㥬 ®ª­®
46
 
34
 
47
still:
35
still:
48
 
36
 
49
    mov  eax,23                 ; Ž¦¨¤ ¥¬ ᮡë⨩
37
    mov  eax,10                 ; Ž¦¨¤ ¥¬ ᮡë⨩
50
    mov  ebx,1
-
 
51
    int  0x40
38
    mcall
52
 
39
 
53
    cmp  eax,1                  ; ‡ ¯à®á ­  ¯¥à¥à¨á®¢ªã ?
40
    cmp  eax,1                  ; ‡ ¯à®á ­  ¯¥à¥à¨á®¢ªã ?
54
    jz   red
41
    jz   red
55
    cmp  eax,2                  ; ­ ¦ â  ª« ¢¨è¨ ?
42
    cmp  eax,2                  ; ­ ¦ â  ª« ¢¨è¨ ?
56
    jz   key
-
 
57
    cmp  eax,3                  ; ­ ¦ â  ª­®¯ª  ?
-
 
58
    jz   button
43
    jnz   button
59
 
-
 
60
    jmp  still
-
 
61
 
-
 
62
red:
-
 
63
    call draw_window
-
 
64
    jmp  still
-
 
65
 
44
 
66
key:
45
key:
67
    mov  eax,2
46
    mov  eax,2
68
    int  0x40
47
    mcall
69
    jmp  still
48
    jmp  still
70
 
49
 
71
button:
50
button:
72
    mov  eax,17
51
    mov  eax,17
73
    int  0x40
52
    mcall
74
 
53
 
75
    cmp  ah,1                  ;  id ª­®¯ª¨ = 1 ?
54
    cmp  ah,1                  ;  id ª­®¯ª¨ = 1 ?
76
    jnz  noclose
55
    jnz  noclose
77
    mov  eax,-1
56
    or  eax,-1
78
    int  0x40
57
    mcall
79
 
58
 
80
  noclose:
59
  noclose:
81
 
60
 
82
    cmp  ah,2                  ; ƒ¥­¥à¨à®¢ âì?
61
    cmp  ah,2                  ; ƒ¥­¥à¨à®¢ âì?
83
    je   procMD5hash
62
    je   procMD5hash
84
 
63
 
85
    jmp  still
64
    jmp  still
86
 
65
 
87
 
66
 
88
procMD5hash:        
67
procMD5hash:        
89
 
68
 
90
    ; phase I - padding
69
    ; phase I - padding
91
    mov    edi,ptBuffer
70
    mov    edi,ptBuffer
92
    mov    eax,[dtBufferLength]
71
    mov    eax,[dtBufferLength]
93
 
72
 
94
    inc    eax
73
    inc    eax
95
    add    edi,eax
74
    add    edi,eax
96
    mov     byte [edi-1],0x80
75
    mov     byte [edi-1],0x80
97
 
76
 
98
    xor    edx,edx
77
    xor    edx,edx
99
 
78
 
100
    mov    ebx,64
79
    mov    ebx,64
101
    div    ebx
80
    div    ebx
102
 
81
 
103
    neg    edx
82
    neg    edx
104
    add    edx,64
83
    add    edx,64
105
 
84
 
106
    cmp    edx,8
85
    cmp    edx,8
107
    jae    @f
86
    jae    @f
108
 
87
 
109
    add    edx,64
88
    add    edx,64
110
    
89
    
111
@@:    mov    ecx,edx
90
@@:    mov    ecx,edx
112
    xor    al,al
91
    xor    al,al
113
    rep    stosb
92
    rep    stosb
114
 
93
 
115
    mov    eax,[dtBufferLength]
94
    mov    eax,[dtBufferLength]
116
 
95
 
117
    inc    edx
96
    inc    edx
118
    add    [dtBufferLength],edx
97
    add    [dtBufferLength],edx
119
 
98
 
120
    xor    edx,edx
99
    xor    edx,edx
121
 
100
 
122
    mov    ebx,8
101
    mov    ebx,8
123
    mul    ebx
102
    mul    ebx
124
 
103
 
125
    mov    [edi-8],eax
104
    mov    [edi-8],eax
126
    mov    [edi-4],edx
105
    mov    [edi-4],edx
127
 
106
 
128
    mov    edx,[dtBufferLength]
107
    mov    edx,[dtBufferLength]
129
 
108
 
130
    mov    edi,ptBuffer
109
    mov    edi,ptBuffer
131
 
110
 
132
    ; phase II - chaining variables initialization
111
    ; phase II - chaining variables initialization
133
    mov     dword [dtA],067452301h
112
    mov     dword [dtA],067452301h
134
    mov     dword [dtB],0efcdab89h
113
    mov     dword [dtB],0efcdab89h
135
    mov     dword [dtC],098badcfeh
114
    mov     dword [dtC],098badcfeh
136
    mov     dword [dtD],010325476h
115
    mov     dword [dtD],010325476h
137
       
116
       
138
    mov    esi,ptMD5Result
117
    mov    esi,ptMD5Result
139
 
118
 
140
hashloop:
119
hashloop:
141
;diff16 "hashloop",hashloop
120
;diff16 "hashloop",hashloop
142
    mov    eax,[dtA]
121
    mov    eax,[dtA]
143
    mov    [dta],eax
122
    mov    [dta],eax
144
    mov    eax,[dtB]
123
    mov    eax,[dtB]
145
    mov    [dtb],eax
124
    mov    [dtb],eax
146
    mov    eax,[dtC]
125
    mov    eax,[dtC]
147
    mov    [dtc],eax
126
    mov    [dtc],eax
148
    mov    eax,[dtD]
127
    mov    eax,[dtD]
149
    mov    [dtd],eax
128
    mov    [dtd],eax
150
    
129
    
151
macro ff dta,dtb,dtc,dtd,data,shift,cc
130
macro ff dta,dtb,dtc,dtd,data,shift,cc
152
{
131
{
153
    mov     eax,dtb
132
    mov     eax,dtb
154
    mov     ebx,dtc
133
    mov     ebx,dtc
155
    mov     ecx,dtd
134
    mov     ecx,dtd
156
    
135
    
157
    and     ebx,eax
136
    and     ebx,eax
158
    not     eax
137
    not     eax
159
    and     eax,ecx
138
    and     eax,ecx
160
    or      eax,ebx
139
    or      eax,ebx
161
    
140
    
162
    add     eax,dta
141
    add     eax,dta
163
    add     eax,data
142
    add     eax,data
164
    add     eax,cc
143
    add     eax,cc
165
    rol     eax,shift
144
    rol     eax,shift
166
    add     eax,dtb
145
    add     eax,dtb
167
    mov     dta,eax
146
    mov     dta,eax
168
}
147
}
169
macro gg dta,dtb,dtc,dtd,data,shift,cc
148
macro gg dta,dtb,dtc,dtd,data,shift,cc
170
{
149
{
171
    mov     eax,dtb
150
    mov     eax,dtb
172
    mov     ebx,dtc
151
    mov     ebx,dtc
173
    mov     ecx,dtd
152
    mov     ecx,dtd
174
    
153
    
175
    and     eax,ecx
154
    and     eax,ecx
176
    not     ecx
155
    not     ecx
177
    and     ecx,ebx
156
    and     ecx,ebx
178
    or      eax,ecx
157
    or      eax,ecx
179
    
158
    
180
    add     eax,dta
159
    add     eax,dta
181
    add     eax,data
160
    add     eax,data
182
    add     eax,cc
161
    add     eax,cc
183
    rol     eax,shift
162
    rol     eax,shift
184
    add     eax,dtb
163
    add     eax,dtb
185
    mov     dta,eax
164
    mov     dta,eax
186
}
165
}
187
macro hh dta,dtb,dtc,dtd,data,shift,cc
166
macro hh dta,dtb,dtc,dtd,data,shift,cc
188
{
167
{
189
    mov     eax,dtb
168
    mov     eax,dtb
190
    mov     ebx,dtc
169
    mov     ebx,dtc
191
    mov     ecx,dtd
170
    mov     ecx,dtd
192
    
171
    
193
    xor     eax,ebx
172
    xor     eax,ebx
194
    xor     eax,ecx
173
    xor     eax,ecx
195
    
174
    
196
    add     eax,dta
175
    add     eax,dta
197
    add     eax,data
176
    add     eax,data
198
    add     eax,cc
177
    add     eax,cc
199
    rol     eax,shift
178
    rol     eax,shift
200
    add     eax,dtb
179
    add     eax,dtb
201
    mov     dta,eax
180
    mov     dta,eax
202
}
181
}
203
macro ii dta,dtb,dtc,dtd,data,shift,cc
182
macro ii dta,dtb,dtc,dtd,data,shift,cc
204
{
183
{
205
    mov     eax,dtb
184
    mov     eax,dtb
206
    mov     ebx,dtc
185
    mov     ebx,dtc
207
    mov     ecx,dtd
186
    mov     ecx,dtd
208
    
187
    
209
    not     ecx
188
    not     ecx
210
    or      eax,ecx
189
    or      eax,ecx
211
    xor     eax,ebx
190
    xor     eax,ebx
212
    
191
    
213
    add     eax,dta
192
    add     eax,dta
214
    add     eax,data
193
    add     eax,data
215
    add     eax,cc
194
    add     eax,cc
216
    rol     eax,shift
195
    rol     eax,shift
217
    add     eax,dtb
196
    add     eax,dtb
218
    mov     dta,eax
197
    mov     dta,eax
219
}        
198
}        
220
    ; round 1
199
    ; round 1
221
    ff [dta],[dtb],[dtc],[dtd],dword [edi+00*4],07,0xd76aa478
200
    ff [dta],[dtb],[dtc],[dtd],dword [edi+00*4],07,0xd76aa478
222
    ff [dtd],[dta],[dtb],[dtc],dword [edi+01*4],12,0xe8c7b756
201
    ff [dtd],[dta],[dtb],[dtc],dword [edi+01*4],12,0xe8c7b756
223
    ff [dtc],[dtd],[dta],[dtb],dword [edi+02*4],17,0x242070db
202
    ff [dtc],[dtd],[dta],[dtb],dword [edi+02*4],17,0x242070db
224
    ff [dtb],[dtc],[dtd],[dta],dword [edi+03*4],22,0xc1bdceee
203
    ff [dtb],[dtc],[dtd],[dta],dword [edi+03*4],22,0xc1bdceee
225
    ff [dta],[dtb],[dtc],[dtd],dword [edi+04*4],07,0xf57c0faf
204
    ff [dta],[dtb],[dtc],[dtd],dword [edi+04*4],07,0xf57c0faf
226
    ff [dtd],[dta],[dtb],[dtc],dword [edi+05*4],12,0x4787c62a
205
    ff [dtd],[dta],[dtb],[dtc],dword [edi+05*4],12,0x4787c62a
227
    ff [dtc],[dtd],[dta],[dtb],dword [edi+06*4],17,0xa8304613
206
    ff [dtc],[dtd],[dta],[dtb],dword [edi+06*4],17,0xa8304613
228
    ff [dtb],[dtc],[dtd],[dta],dword [edi+07*4],22,0xfd469501
207
    ff [dtb],[dtc],[dtd],[dta],dword [edi+07*4],22,0xfd469501
229
    ff [dta],[dtb],[dtc],[dtd],dword [edi+08*4],07,0x698098d8
208
    ff [dta],[dtb],[dtc],[dtd],dword [edi+08*4],07,0x698098d8
230
    ff [dtd],[dta],[dtb],[dtc],dword [edi+09*4],12,0x8b44f7af
209
    ff [dtd],[dta],[dtb],[dtc],dword [edi+09*4],12,0x8b44f7af
231
    ff [dtc],[dtd],[dta],[dtb],dword [edi+10*4],17,0xffff5bb1
210
    ff [dtc],[dtd],[dta],[dtb],dword [edi+10*4],17,0xffff5bb1
232
    ff [dtb],[dtc],[dtd],[dta],dword [edi+11*4],22,0x895cd7be
211
    ff [dtb],[dtc],[dtd],[dta],dword [edi+11*4],22,0x895cd7be
233
    ff [dta],[dtb],[dtc],[dtd],dword [edi+12*4],07,0x6b901122
212
    ff [dta],[dtb],[dtc],[dtd],dword [edi+12*4],07,0x6b901122
234
    ff [dtd],[dta],[dtb],[dtc],dword [edi+13*4],12,0xfd987193
213
    ff [dtd],[dta],[dtb],[dtc],dword [edi+13*4],12,0xfd987193
235
    ff [dtc],[dtd],[dta],[dtb],dword [edi+14*4],17,0xa679438e
214
    ff [dtc],[dtd],[dta],[dtb],dword [edi+14*4],17,0xa679438e
236
    ff [dtb],[dtc],[dtd],[dta],dword [edi+15*4],22,0x49b40821
215
    ff [dtb],[dtc],[dtd],[dta],dword [edi+15*4],22,0x49b40821
237
    ; round 2
216
    ; round 2
238
    gg [dta],[dtb],[dtc],[dtd],dword [edi+01*4],05,0xf61e2562
217
    gg [dta],[dtb],[dtc],[dtd],dword [edi+01*4],05,0xf61e2562
239
    gg [dtd],[dta],[dtb],[dtc],dword [edi+06*4],09,0xc040b340
218
    gg [dtd],[dta],[dtb],[dtc],dword [edi+06*4],09,0xc040b340
240
    gg [dtc],[dtd],[dta],[dtb],dword [edi+11*4],14,0x265e5a51
219
    gg [dtc],[dtd],[dta],[dtb],dword [edi+11*4],14,0x265e5a51
241
    gg [dtb],[dtc],[dtd],[dta],dword [edi+00*4],20,0xe9b6c7aa
220
    gg [dtb],[dtc],[dtd],[dta],dword [edi+00*4],20,0xe9b6c7aa
242
    gg [dta],[dtb],[dtc],[dtd],dword [edi+05*4],05,0xd62f105d
221
    gg [dta],[dtb],[dtc],[dtd],dword [edi+05*4],05,0xd62f105d
243
    gg [dtd],[dta],[dtb],[dtc],dword [edi+10*4],09,0x02441453
222
    gg [dtd],[dta],[dtb],[dtc],dword [edi+10*4],09,0x02441453
244
    gg [dtc],[dtd],[dta],[dtb],dword [edi+15*4],14,0xd8a1e681
223
    gg [dtc],[dtd],[dta],[dtb],dword [edi+15*4],14,0xd8a1e681
245
    gg [dtb],[dtc],[dtd],[dta],dword [edi+04*4],20,0xe7d3fbc8
224
    gg [dtb],[dtc],[dtd],[dta],dword [edi+04*4],20,0xe7d3fbc8
246
    gg [dta],[dtb],[dtc],[dtd],dword [edi+09*4],05,0x21e1cde6
225
    gg [dta],[dtb],[dtc],[dtd],dword [edi+09*4],05,0x21e1cde6
247
    gg [dtd],[dta],[dtb],[dtc],dword [edi+14*4],09,0xc33707d6
226
    gg [dtd],[dta],[dtb],[dtc],dword [edi+14*4],09,0xc33707d6
248
    gg [dtc],[dtd],[dta],[dtb],dword [edi+03*4],14,0xf4d50d87
227
    gg [dtc],[dtd],[dta],[dtb],dword [edi+03*4],14,0xf4d50d87
249
    gg [dtb],[dtc],[dtd],[dta],dword [edi+08*4],20,0x455a14ed
228
    gg [dtb],[dtc],[dtd],[dta],dword [edi+08*4],20,0x455a14ed
250
    gg [dta],[dtb],[dtc],[dtd],dword [edi+13*4],05,0xa9e3e905
229
    gg [dta],[dtb],[dtc],[dtd],dword [edi+13*4],05,0xa9e3e905
251
    gg [dtd],[dta],[dtb],[dtc],dword [edi+02*4],09,0xfcefa3f8
230
    gg [dtd],[dta],[dtb],[dtc],dword [edi+02*4],09,0xfcefa3f8
252
    gg [dtc],[dtd],[dta],[dtb],dword [edi+07*4],14,0x676f02d9
231
    gg [dtc],[dtd],[dta],[dtb],dword [edi+07*4],14,0x676f02d9
253
    gg [dtb],[dtc],[dtd],[dta],dword [edi+12*4],20,0x8d2a4c8a
232
    gg [dtb],[dtc],[dtd],[dta],dword [edi+12*4],20,0x8d2a4c8a
254
    ; round 3
233
    ; round 3
255
    hh [dta],[dtb],[dtc],[dtd],dword [edi+05*4],04,0xfffa3942
234
    hh [dta],[dtb],[dtc],[dtd],dword [edi+05*4],04,0xfffa3942
256
    hh [dtd],[dta],[dtb],[dtc],dword [edi+08*4],11,0x8771f681
235
    hh [dtd],[dta],[dtb],[dtc],dword [edi+08*4],11,0x8771f681
257
    hh [dtc],[dtd],[dta],[dtb],dword [edi+11*4],16,0x6d9d6122
236
    hh [dtc],[dtd],[dta],[dtb],dword [edi+11*4],16,0x6d9d6122
258
    hh [dtb],[dtc],[dtd],[dta],dword [edi+14*4],23,0xfde5380c
237
    hh [dtb],[dtc],[dtd],[dta],dword [edi+14*4],23,0xfde5380c
259
    hh [dta],[dtb],[dtc],[dtd],dword [edi+01*4],04,0xa4beea44
238
    hh [dta],[dtb],[dtc],[dtd],dword [edi+01*4],04,0xa4beea44
260
    hh [dtd],[dta],[dtb],[dtc],dword [edi+04*4],11,0x4bdecfa9
239
    hh [dtd],[dta],[dtb],[dtc],dword [edi+04*4],11,0x4bdecfa9
261
    hh [dtc],[dtd],[dta],[dtb],dword [edi+07*4],16,0xf6bb4b60
240
    hh [dtc],[dtd],[dta],[dtb],dword [edi+07*4],16,0xf6bb4b60
262
    hh [dtb],[dtc],[dtd],[dta],dword [edi+10*4],23,0xbebfbc70
241
    hh [dtb],[dtc],[dtd],[dta],dword [edi+10*4],23,0xbebfbc70
263
    hh [dta],[dtb],[dtc],[dtd],dword [edi+13*4],04,0x289b7ec6
242
    hh [dta],[dtb],[dtc],[dtd],dword [edi+13*4],04,0x289b7ec6
264
    hh [dtd],[dta],[dtb],[dtc],dword [edi+00*4],11,0xeaa127fa
243
    hh [dtd],[dta],[dtb],[dtc],dword [edi+00*4],11,0xeaa127fa
265
    hh [dtc],[dtd],[dta],[dtb],dword [edi+03*4],16,0xd4ef3085
244
    hh [dtc],[dtd],[dta],[dtb],dword [edi+03*4],16,0xd4ef3085
266
    hh [dtb],[dtc],[dtd],[dta],dword [edi+06*4],23,0x04881d05
245
    hh [dtb],[dtc],[dtd],[dta],dword [edi+06*4],23,0x04881d05
267
    hh [dta],[dtb],[dtc],[dtd],dword [edi+09*4],04,0xd9d4d039
246
    hh [dta],[dtb],[dtc],[dtd],dword [edi+09*4],04,0xd9d4d039
268
    hh [dtd],[dta],[dtb],[dtc],dword [edi+12*4],11,0xe6db99e5
247
    hh [dtd],[dta],[dtb],[dtc],dword [edi+12*4],11,0xe6db99e5
269
    hh [dtc],[dtd],[dta],[dtb],dword [edi+15*4],16,0x1fa27cf8
248
    hh [dtc],[dtd],[dta],[dtb],dword [edi+15*4],16,0x1fa27cf8
270
    hh [dtb],[dtc],[dtd],[dta],dword [edi+02*4],23,0xc4ac5665
249
    hh [dtb],[dtc],[dtd],[dta],dword [edi+02*4],23,0xc4ac5665
271
    ; round 4
250
    ; round 4
272
    ii [dta],[dtb],[dtc],[dtd],dword [edi+00*4],06,0xf4292244
251
    ii [dta],[dtb],[dtc],[dtd],dword [edi+00*4],06,0xf4292244
273
    ii [dtd],[dta],[dtb],[dtc],dword [edi+07*4],10,0x432aff97
252
    ii [dtd],[dta],[dtb],[dtc],dword [edi+07*4],10,0x432aff97
274
    ii [dtc],[dtd],[dta],[dtb],dword [edi+14*4],15,0xab9423a7
253
    ii [dtc],[dtd],[dta],[dtb],dword [edi+14*4],15,0xab9423a7
275
    ii [dtb],[dtc],[dtd],[dta],dword [edi+05*4],21,0xfc93a039
254
    ii [dtb],[dtc],[dtd],[dta],dword [edi+05*4],21,0xfc93a039
276
    ii [dta],[dtb],[dtc],[dtd],dword [edi+12*4],06,0x655b59c3
255
    ii [dta],[dtb],[dtc],[dtd],dword [edi+12*4],06,0x655b59c3
277
    ii [dtd],[dta],[dtb],[dtc],dword [edi+03*4],10,0x8f0ccc92
256
    ii [dtd],[dta],[dtb],[dtc],dword [edi+03*4],10,0x8f0ccc92
278
    ii [dtc],[dtd],[dta],[dtb],dword [edi+10*4],15,0xffeff47d
257
    ii [dtc],[dtd],[dta],[dtb],dword [edi+10*4],15,0xffeff47d
279
    ii [dtb],[dtc],[dtd],[dta],dword [edi+01*4],21,0x85845dd1
258
    ii [dtb],[dtc],[dtd],[dta],dword [edi+01*4],21,0x85845dd1
280
    ii [dta],[dtb],[dtc],[dtd],dword [edi+08*4],06,0x6fa87e4f
259
    ii [dta],[dtb],[dtc],[dtd],dword [edi+08*4],06,0x6fa87e4f
281
    ii [dtd],[dta],[dtb],[dtc],dword [edi+15*4],10,0xfe2ce6e0
260
    ii [dtd],[dta],[dtb],[dtc],dword [edi+15*4],10,0xfe2ce6e0
282
    ii [dtc],[dtd],[dta],[dtb],dword [edi+06*4],15,0xa3014314
261
    ii [dtc],[dtd],[dta],[dtb],dword [edi+06*4],15,0xa3014314
283
    ii [dtb],[dtc],[dtd],[dta],dword [edi+13*4],21,0x4e0811a1
262
    ii [dtb],[dtc],[dtd],[dta],dword [edi+13*4],21,0x4e0811a1
284
    ii [dta],[dtb],[dtc],[dtd],dword [edi+04*4],06,0xf7537e82
263
    ii [dta],[dtb],[dtc],[dtd],dword [edi+04*4],06,0xf7537e82
285
    ii [dtd],[dta],[dtb],[dtc],dword [edi+11*4],10,0xbd3af235
264
    ii [dtd],[dta],[dtb],[dtc],dword [edi+11*4],10,0xbd3af235
286
    ii [dtc],[dtd],[dta],[dtb],dword [edi+02*4],15,0x2ad7d2bb
265
    ii [dtc],[dtd],[dta],[dtb],dword [edi+02*4],15,0x2ad7d2bb
287
    ii [dtb],[dtc],[dtd],[dta],dword [edi+09*4],21,0xeb86d391
266
    ii [dtb],[dtc],[dtd],[dta],dword [edi+09*4],21,0xeb86d391
288
    
267
    
289
    mov    eax,[dta]
268
    mov    eax,[dta]
290
    add    [dtA],eax
269
    add    [dtA],eax
291
    mov    eax,[dtb]
270
    mov    eax,[dtb]
292
    add    [dtB],eax
271
    add    [dtB],eax
293
    mov    eax,[dtc]
272
    mov    eax,[dtc]
294
    add    [dtC],eax
273
    add    [dtC],eax
295
    mov    eax,[dtd]
274
    mov    eax,[dtd]
296
    add    [dtD],eax
275
    add    [dtD],eax
297
 
276
 
298
    add    edi,64
277
    add    edi,64
299
 
278
 
300
    sub    edx,64
279
    sub    edx,64
301
    jnz    hashloop
280
    jnz    hashloop
302
 
281
 
303
    ; phase IV - results
282
    ; phase IV - results
304
 
283
 
305
    mov    ecx,4
284
    mov    ecx,4
306
    mov     esi,ptMD5Result
285
    mov     esi,ptMD5Result
307
 
286
 
308
@@:    mov    eax,[esi]
287
@@:    mov    eax,[esi]
309
    xchg    al,ah
288
    xchg    al,ah
310
    rol    eax,16
289
    rol    eax,16
311
    xchg    al,ah
290
    xchg    al,ah
312
    mov    [esi],eax
291
    mov    [esi],eax
313
 
292
 
314
    add    esi,4
293
    add    esi,4
315
    loop    @b
294
    loop    @b
316
 
295
 
317
translate:
296
translate:
318
;diff16 "translate",translate
297
;diff16 "translate",translate
319
    mov     esi,ptMD5Result-5
298
    mov     esi,ptMD5Result-5
320
    mov     edi,hexresult
299
    mov     edi,hexresult
321
    mov     ecx,16
300
    mov     ecx,16
322
@@:
301
@@:
323
    test    ecx,3
302
    test    ecx,3
324
    jnz     .nojmp
303
    jnz     .nojmp
325
    add     esi,8
304
    add     esi,8
326
.nojmp:
305
.nojmp:
327
    xor     eax,eax
306
    xor     eax,eax
328
    mov     al,byte [esi]
307
    mov     al,byte [esi]
329
    mov     edx,eax
308
    mov     edx,eax
330
    shr     eax,4
309
    shr     eax,4
331
    mov     bl,byte [table+eax]
310
    mov     bl,byte [table+eax]
332
    mov     [edi],bl
311
    mov     [edi],bl
333
    inc     edi
312
    inc     edi
334
    and     edx,15
313
    and     edx,15
335
    mov     bl,byte [table+edx]
314
    mov     bl,byte [table+edx]
336
    mov     [edi],bl
315
    mov     [edi],bl
337
    dec     esi
316
    dec     esi
338
    inc     edi
317
    inc     edi
339
    loop    @b
318
    loop    @b
340
    
319
    
341
    mov    esi,hexresult
320
    mov    esi,hexresult
342
     
321
     
343
        mov     [text], esi
322
        mov     [text], esi
344
    mov     eax,32
323
    mov     eax,32
345
        mov     [textlen], eax
324
        mov     [textlen], eax
346
    call    draw_window
325
    call    draw_window
347
 
326
 
348
    jmp     still
327
    jmp     still
349
 
328
 
350
;   *********************************************
329
;   *********************************************
351
;   *******  WINDOW DEFINITIONS AND DRAW ********
330
;   *******  WINDOW DEFINITIONS AND DRAW ********
352
;   *********************************************
331
;   *********************************************
353
 
332
 
354
 
333
 
355
draw_window:
334
draw_window:
356
 
335
 
357
    mov eax,12               ; function 12:tell os about windowdraw
336
    mov eax,12               ; function 12:tell os about windowdraw
358
    mov ebx,1                      ; 1, start of draw
337
    mov ebx,1                      ; 1, start of draw
359
    int 0x40
338
    mcall
360
                                   ; DRAW WINDOW
339
                                   ; DRAW WINDOW
361
    mov  eax,0                     ; function 0 : define and draw window
340
    mov  eax,0                     ; function 0 : define and draw window
362
    mov  ebx,100*65536+230         ; [x start] *65536 + [x size]
341
    mov  ebx,100*65536+230         ; [x start] *65536 + [x size]
363
    mov  ecx,60*65536+100          ; [y start] *65536 + [y size]
342
    mov  ecx,60*65536+100          ; [y start] *65536 + [y size]
364
    mov  edx,0x03ffffff            ; color of work area RRGGBB
343
    mov  edx,0x13ffffff            ; color of work area RRGGBB
365
    mov  esi,0x80aabbcc            ; color of grab bar  RRGGBB,8->color gl
-
 
366
    mov  edi,0x00aabbcc            ; color of frames    RRGGBB
344
    mov  edi,title                 ; WINDOW LABEL
367
    int  0x40
345
    mcall
-
 
346
 
368
 
-
 
369
                                   ; WINDOW LABEL
-
 
370
    mov  eax,4                     ; function 4 : write text to window
-
 
371
    mov  ebx,8*65536+8             ; [x start] *65536 + [y start]
-
 
372
    mov  ecx,0x00ffffff            ; color of text RRGGBB
-
 
373
    mov  edx,labeltext             ; pointer to text beginning
-
 
374
    mov  esi,lte-labeltext         ; text length
-
 
375
    int  0x40
347
                                   
376
                   ; ¨á㥬 ª­®¯ªã ¤«ï £¥­¥à æ¨¨
348
                   ; ¨á㥬 ª­®¯ªã ¤«ï £¥­¥à æ¨¨
377
    mov  eax,8                     ; function 8 : define and draw button
349
    mov  eax,8                     ; function 8 : define and draw button
378
    mov  ebx,20*65536+80           ; [x start] *65536 + [x size]
350
    mov  ebx,20*65536+80           ; [x start] *65536 + [x size]
379
    mov  ecx,34*65536+14           ; [y start] *65536 + [y size]
351
    mov  ecx,34*65536+14           ; [y start] *65536 + [y size]
380
    mov  edx,2                     ; button id
352
    mov  edx,2                     ; button id
381
    mov  esi,0x5588dd              ; button color RRGGBB
353
    mov  esi,0x5588dd              ; button color RRGGBB
382
    int  0x40
354
    mcall
383
    
355
    
384
                                   ;  §¢ ­¨¥ ­  ª­®¯ªã
356
                                   ;  §¢ ­¨¥ ­  ª­®¯ªã
385
    mov  eax,4                     ; function 4 : write text to window
357
    mov  eax,4                     ; function 4 : write text to window
386
    mov  ebx,23*65536+38           ; [x start] *65536 + [y start]
358
    mov  ebx,23*65536+38           ; [x start] *65536 + [y start]
387
    mov  ecx,0x000000              ; color of text RRGGBB
359
    mov  ecx,0x000000              ; color of text RRGGBB
388
    mov  edx,gen_txt               ; pointer to text beginning
360
    mov  edx,gen_txt               ; pointer to text beginning
389
    mov  esi,gen_len-gen_txt       ; text length
361
    mov  esi,gen_len-gen_txt       ; text length
390
    int  0x40
362
    mcall
391
 
-
 
392
    mov  eax,4               ; draw info text with function 4
363
 
393
    mov  ebx,20*65536+70
364
    mov  ebx,20*65536+70
394
    mov  ecx,0x000000
365
    mov  ecx,0x000000
395
    mov  edx,[text]
366
    mov  edx,[text]
396
    xor  eax,eax
367
    xor  eax,eax
397
    mov  al, [textlen]
368
    mov  al, [textlen]
398
    mov  esi,eax
369
    mov  esi,eax
399
    mov  eax,4
370
    mov  eax,4
400
    int  0x40
371
    mcall
401
 
372
 
402
    mov  eax,12                    ; function 12:tell os about windowdraw
373
    mov  eax,12                    ; function 12:tell os about windowdraw
403
    mov  ebx,2                     ; 2, end of draw
374
    mov  ebx,2                     ; 2, end of draw
404
    int  0x40
375
    mcall
405
 
376
 
406
    ret
377
    ret
407
 
378
 
408
;Ž¡« áâì ¤ ­­ëå
379
;Ž¡« áâì ¤ ­­ëå
409
 
380
 
410
labeltext: db 'MD5 Generator'
-
 
411
lte:
381
title db 'MD5 Generator',0
412
 
382
 
413
text:  dd 0
383
text:  dd 0
414
textlen: dd 0
384
textlen: dd 0
415
 
385
 
416
gen_txt: db '‘£¥­¥à¨à®¢ âì'
386
gen_txt: db '‘£¥­¥à¨à®¢ âì'
417
gen_len: 
387
gen_len: 
418
 
388
 
419
InputMD5Rez:  dd 0
389
InputMD5Rez:  dd 0
420
InputMD5Rezlen:
390
InputMD5Rezlen:
421
 
391
 
422
ptBuffer:  db '123' ;‡ ¬¥­¨âì ­  £¥­¥à¨à㥬®¥ á«®¢®
392
ptBuffer:  db '123' ;‡ ¬¥­¨âì ­  £¥­¥à¨à㥬®¥ á«®¢®
423
rb 61
393
rb 61
424
dtBufferLength: dd 3 ; §¬¥à ptBuffer
394
dtBufferLength: dd 3 ; §¬¥à ptBuffer
425
 
395
 
426
ptMD5Result:
396
ptMD5Result:
427
 
397
 
428
dtA:  dd 0
398
dtA:  dd 0
429
dtB:  dd 0
399
dtB:  dd 0
430
dtC:  dd 0
400
dtC:  dd 0
431
dtD:  dd 0
401
dtD:  dd 0
432
 
402
 
433
dta:  dd 0
403
dta:  dd 0
434
dtb:  dd 0
404
dtb:  dd 0
435
dtc:  dd 0
405
dtc:  dd 0
436
dtd:  dd 0
406
dtd:  dd 0
437
 
407
 
438
x: dd 0
408
x: dd 0
439
s: dd 0
409
s: dd 0
440
t: dd 0
410
t: dd 0
441
 
411
 
442
table: db '0123456789abcdef'
412
table: db '0123456789abcdef'
443
hexresult db 32
413
hexresult db 32
444
 
414
 
445
I_END:
415
I_END: