home *** CD-ROM | disk | FTP | other *** search
- .model tiny
- .386
- org 100h
- .data
-
- GroupLogo db 13,10
- db ' ▄▄▄▄▄ ',13,10
- db ' █ ▄ █ ',13,10
- db ' █▀▀▀▀▀▀▀▀ ▄ ▀▀▀▀▀ ▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀ ▀▀▀▀█ ',13,10
- db ' █ │░███████ │▓███████▀ │░███▀█▀▀▀▀▀▀▀ ▀ ▀▀▀▀ │░███▀█▀▀▀▀▀▓████▓▄ █ ',13,10
- db ' █ │▒███████ │▓███████ │▒███████ │▓███████▀ │▒███████ │▓███████ █ ',13,10
- db ' █ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ █ ',13,10
- db ' ▀ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ █▄▄▄ ',13,10
- db ' ▀ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████▄ ▄ █ ',13,10
- db ' █ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ █ ',13,10
- db ' █ │▓███████▄▄▄▄▄█▄█▓▀ │▓███████▄▄▄▄▄█▄████ │▓███████▀▀ ▀ ▀ █ ',13,10
- db ' █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▀ █▀▀▀▀▀▀▀▀▀ ▀ ▀▀ ',13,10
- db ' .::[ u n i t e d · c r æ c k i n g · f o r c e ]::. █ ▀ █ Antibody<SAC> ',13,10
- db ' █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▀ █▀▀▀▀▀▀▀▀▀ ▀ ▀▀ ',13,10
- db ' -----=====----- ',13,10
- db ' [■] All Ilium Software - Key Generator by Quantico [■] ',13,10
- db ' -----=====----- ',13,10
- db ' ',13,10,'$'
-
-
- IntroMsgOne db 13,10,'Enter a name please : ','$'
-
- Whichproduct db 13,10
- db '',13,10
- db '(1) - eWallet v1.2.1T ',13,10
- db '(2) - Keep Track v2.0.1T ',13,10
- db '(3) - ListPro v1.1.0T ',13,10
- db '(4) - Recordian v1.0.2T ',13,10
-
-
- db '',13,10
- db 'Enter a product (1-4) : ','$',13,10
- db ' ',13,10
-
-
- ErrorMsg db 13,10,'Need 5-25 digits, try again...',13,10,'$'
-
- ShowCodeMsg db 13,10,'Registration number : '
-
- CodeBuffer db 20 dup(0),13,10,'$'
-
- NameBuffer db 18h, 19h dup(0)
-
- ProdBuffer db 18h, 2 dup(0)
-
- Convert_Digs db '0123456789ABCDEF'
-
- namelength db 0
-
- ewallet db 'eWallet95',0
-
- keeptrack db 'KeepTrack95',0
-
- listpro db 'ListPro95',0
-
- recordian db 'Recordian95',0
-
- mess db 13 dup(0)
-
- ;----------------------------------------------------------------------
-
- .code
-
- .startup
-
- main proc near
- mov ah, 09h ;
- lea edx, GroupLogo ;
- int 21h ; show group logo
-
- mov ah, 09h ;
- lea edx, IntroMsgOne ;
- int 21h ; show intro and ask for input
-
- mov bx, 1905h ; limits for string input
- lea edi, NameBuffer ;
- call getstr ; read user input
- jc @error ;
-
- mov ah, 09h ;
- lea edx, Whichproduct ;
- int 21h ; show product message and ask for input
-
- xor edi, edi
- xor esi, esi
- lea edi, ProdBuffer ;
- call getprod ; read user input
-
- xor eax, eax ; clear eax
-
- call keygen ; create serial number
-
- mov ah, 09h ;
- lea dx, ShowCodeMsg ;
- int 21h ; print serial number
- jmp @exit ; finished, quit
- @error:
- mov ah, 09h
- lea dx, ErrorMsg
- int 21h
- @exit:
- mov al, 00h ;
- mov ah, 4Ch ;
- int 21h ; terminate program
- main endp
-
-
- keygen proc near
-
- int 3 ; for debugging
-
- lea dx, ProdBuffer+2 ; number of product
- movsx eax, byte ptr [edx] ; in eax
-
- cmp ax, 31h ; less than 1 ?
- jl no_code ; (just some error checking:)
- cmp ax, 34h ; greater than 4 ?
- jg no_code
-
- mov edi, offset mess ; area to store string for whatever
- ; product the user selected
- cmp ax, 31h
- jnz @keeptrack
- mov esi, offset ewallet
- mov ecx, 9
- rep movsb ; copy string for whatever product
- jmp selected
- @keeptrack:
- cmp ax, 32h
- jnz @listpro
- mov esi, offset keeptrack
- mov ecx, 0Bh
- rep movsb
- jmp selected
- @listpro:
- cmp ax, 33h
- jnz @recordian
- mov esi, offset listpro
- mov ecx, 9h
- rep movsb
- jmp selected
- @recordian:
- mov esi, offset recordian
- mov ecx, 0Bh
- rep movsb
-
- selected:
-
- mov ebx, offset NameBuffer+2 ; ebx = start of name
- mov esi, offset mess ; esi = product specific string
- mov al, byte ptr [esi] ; al = byte of string
- mov dl, byte ptr [ebx] ; dl = byte of name
- xor ecx, ecx ; ecx = 0
- back_up:
- cmp al, 20h ; does al = ' '
- jz get_next_letter ; if so, skip calculation and get next
- ; letter
- movsx eax, al ; eax = al
- mov ebx, ecx
- mov ebp, eax
- and ebx, 1
- and ebp, 0Fh
- shl ebx, 8
- sub ebp, ebx
- and eax, 70h
- shl ebp, 7
- add ebp, eax
- mov ebx, offset NameBuffer+2
- shr ecx, 1
- shl ebp, 4
- and ecx, 7FFFFh
- add ebp, ecx
- not ebp
- and ebp, 0FFFFFh
- mov ecx, ebp
- mov ebp, 20h
- get_next_letter:
- mov al, byte ptr [esi+1]
- inc esi
- test al, al
- jnz back_up
- back_up_2:
- cmp dl, 20h
- jz next_letter_2
- movsx eax, dl
- mov edx, ecx
- mov esi, eax
- and edx, 7FFFFh
- and esi, 0Fh
- shr ecx, 13h
- lea edx, [esi*4+edx]
- and ecx, 1
- sar eax, 4
- lea ecx, [edx*2+ecx]
- and eax, 7
- add ecx, eax
- not ecx
- and ecx, 0FFFFFh
- next_letter_2:
- mov dl, byte ptr [ebx+1]
- inc ebx
- test dl, dl
- jnz back_up_2
-
- test ecx, ecx
- jz no_code
-
- mov edi, offset CodeBuffer
- back_up_3:
- cmp ebp, 1
- jle finish
- mov eax, ecx
- xor edx, edx
- mov esi, 0Ah
- div esi
- mov eax, 0CCCCCCCDh
- add dl, 30h
- mov byte ptr [edi], dl
- mul ecx
- shr edx, 3
- inc edi
- mov ecx, edx
- dec ebp
- finish:
- test ecx, ecx
- jnz back_up_3
-
- mov byte ptr [edi],00
-
- no_code:
-
- ret ; end of procedure, return to caller
-
- keygen endp
-
-
-
- ; get string from user
- ; input :
- ; edi = pointer to buffer
- ; bl = min length
- ; bh = max length
- ; output :
- ; CF error, cx number of bytes read
-
- getstr proc near
- push dx ; save dx
- mov dx, di ;
- mov ah, 0Ah ;
- int 21h ; get user input
-
- movsx ecx, byte ptr [edi + 1] ; get number of digits
-
- mov byte ptr [edi + ecx + 2], 00h
-
- cmp cl, bh ; check maximum
- jg @@0
- cmp cl, bl ; check minimum
- jl @@0
- mov [namelength], cl ; store length
- xor ch, ch
- clc ; clear CF
- jmp @@1
- @@0:
- stc ; set CF (carry flag)
- @@1:
- pop dx ; restore dx
- ret
- getstr endp
-
-
- getprod proc near
- push dx ; save dx
- mov dx, di ;
- mov ah, 0Ah ;
- int 021h ; get user input
-
- movsx ecx, byte ptr [edi + 1] ; get number of digits
-
- mov byte ptr [edi + ecx + 2], 00h
-
- xor ch, ch
- clc ; clear CF
- pop dx ; restore dx
- ret
- getprod endp
-
- end main
-