;----------------------------- ;(c) 1997 Mariusz Kazmierczak ;----------------------------- ;Uwaga! Tworzy na dysku plik spass.dat w ktorym przechowuje ;'zaszyfrowane' haslo. (plik ukryty) ;Podczas wprowadzania _nowego_ hasla znaki sa wyswietlane. ;Zmiany hasla dokonuje sie przez skasowanie pliku spass.dat ;i ponowne uruchomienie programu. ;----------------------------------------------------------- ;Sposob kompilowania: ;tasm /m3 spass.asm ;tlink /t spass.obj ;----------------------------------------------------------- code segment org 100h assume cs:code Start: jmp begin fname db 'spass.dat',0 fdata db 16 dup (0) pass1 db 17,0,17 dup (0) text1 db 'Wprowadz haslo: $' text2 db 'Haslo nieprawidlowe - system zatrzymany $' text3 db 'OK!',30 dup (' '),'$' Begin: lea dx,fname mov ax,3d02h int 21h jc make_file mov bx,ax mov ah,3fh lea dx,fdata mov cx,16 int 21h mov ah,3eh int 21h lea dx,text1 mov ax,0900h int 21h mov cx,16 lea di,pass1+2 do: mov ax,0700h ;pasuje, bo nie sprawdza CTRL-C int 21h ;i nie wyswietla znkow mov [di],al cmp al,0dh je next inc di loop do next: lea di,pass1+2 lea si,fdata mov cx,16 do1: mov al,[di] mov ah,[si] not ah ror ah,2 ;proste rozszyfrowanie prostego szyfrowania cmp al,ah jne error inc di inc si loop do1 allend: lea dx,text3 mov ax,0900h int 21h mov ax,4c00h int 21h make_file: mov ax,0900h lea dx,text1 int 21h mov ax,0a00h lea dx,pass1 int 21h lea si,pass1+2 lea di,fdata mov cx,16 do3: mov al,[si] not al rol al,2 ;oto szyfrowanie! mov [di],al inc si inc di loop do3 mov ax,3c00h lea dx,fname mov cx,10b int 21h mov bx,ax mov ax,4000h lea dx,fdata mov cx,16 int 21h mov ax,3e00h int 21h jmp allend error: mov ax,0900h lea dx,text2 int 21h jmp $ ;cli ;zerowanie znacznika zezwolenia na przerwanie, ;hlt ;bo tylko NMI 'obudzi' procesor > zly znak < ;windows wspomina cos o ochronie i wyjatku ;po tych rozkazach he..he.. ale mozna jmp $ code ends end start