format PE console
use32
entry start
include 'win32a.inc'
;---------------------------------------
res dd ?
std_handle dd 0
s8 db 104,112,120 ;3
s7 db 102,109,116 ;3
s6 db 102,108,114,120 ;4
s5 db 100,105,110,115,120 ;5
s4 db 100,104,108,112,116,120 ;6
s3 db 99,102,105,108,111,114,117,120 ;8
s2 db 98,100,102,104,106,108,110,112,114,116,118,120,122 ;13
s1 db 97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122 ;a-z 26
serial db 8 dup(?)
seed dd ?
;---------------------------------------
start:
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov [std_handle],eax
xor ebx,ebx
inc ebx
call set_seed
cikl:
cmp ebx,1
jnz @f
call get_rnd
xor edx, edx
div[ 27 ]
mov byte [serial+ebx],[s1+al]
@@:
cmp ebx,2
jnz @f
call get_rnd
xor edx, edx
div [ 14 ]
mov byte [serial+ebx],[s2+al]
@@:
cmp ebx,3
jnz @f
call get_rnd
xor edx, edx
div [9 ]
mov byte [serial+ebx],[s3+al]
@@:
cmp ebx,4
jnz @f
call get_rnd
xor edx, edx
div [7 ]
mov byte [serial+ebx],[s4+al]
@@:
cmp ebx,5
jnz @f
call get_rnd
xor edx, edx
div [6]
mov byte [serial+ebx],[s5+al]
@@:
cmp ebx,6
jnz @f
call get_rnd
xor edx, edx
div [5]
mov byte [serial+ebx],[s6+al]
@@:
cmp ebx,7
jnz @f
call get_rnd
xor edx, edx
div[4 ]
mov byte [serial+ebx],[s7+al]
@@:
cmp ebx,8
jnz @f
call get_rnd
xor edx, edx
div[ 4]
mov byte [serial+ebx],[s8+al]
@@:
cmp ebx,8
jz ok
inc ebx
jmp cikl
ok:
invoke WriteConsole,[std_handle],serial,8,res,NULL
invoke ExitProcess,0
set_seed:
rdtsc
mov dword[seed], eax
retn
get_rnd:
mov eax, [seed]
mov ecx, 1103515245
cdq
mul ecx
add eax, 12345
mov [seed], eax
retn
data import
library kernel32,'KERNEL32.DLL',\
user32, 'USER32.DLL'
include 'api\kernel32.inc'
include 'api\user32.inc'
end data