Маленькая прога, шифрующая .txt через XOR со свитчами /s /d шифрование и дешифрование соотвественно.
Код | CODE SEGMENT ORG 100h ASSUME cs:code, ds:code
Main: mov dx, OFFSET cmdline call CmdTail mov si, dx mov di, OFFSET param Pass: movsb cmp byte ptr [si], 20h jne Pass add si, 1 mov di, OFFSET filename Repeat: movsb cmp byte ptr [si], 0 jne Repeat ; ------------------------------------ ; Open file ; ------------------------------------ mov ah, 3Dh mov al, 02h mov dx, OFFSET filename int 21h jc Error mov filenum, ax
; ------------------------------------ ; Read file ; ------------------------------------ mov ah, 3Fh mov bx, filenum mov cx, bufsize mov dx, OFFSET buffer int 21h jc Error mov filesize, ax
; ------------------------------------ ; Close file ; ------------------------------------ mov ah, 3Eh mov bx, filenum int 21h jc Error
; ------------------------------------ ; XOR encryption / decription ; ------------------------------------ mov di, 0 mov si, 0 mov bx, OFFSET buffer Iter: xor ax, ax mov al, [bx + si] xor al, key mov [bx + si], al add si, 1 add di, 1 cmp di, filesize jne Iter mov ah, 3Ch mov al, 02h mov dx, OFFSET filename int 21h jc Error mov filenum, ax ; ------------------------------------ ; Write buffer to file ; ------------------------------------ mov ah, 40h mov bx, filenum mov cx, filesize mov dx, OFFSET buffer int 21h jc Error ; ------------------------------------ ; Close file ; ------------------------------------ mov ah, 3Eh mov bx, filenum int 21h jc Error jmp Exit
Error: mov ah, 09h mov dx, OFFSET message int 21h
Exit: mov ah, 08h int 21h int 20h
cmdline DB 129 DUP (?) param DB 20 DUP (0) filename DB 20 DUP (" "),0 filenum DW 0 filesize DW 0 bufsize = 1024 buffer DB bufsize DUP (0)
key DB 117
message DB "Error!", '$'
include CmdTail.inc CODE ENDS END Main
|
|