.586p ENC_BUF_SIZE EQU 6000h ORIGIN EQU 100h ; ========================================================================== _TEXT SEGMENT PARA USE16 PUBLIC 'CODE' ASSUME CS:_TEXT, DS:_TEXT, SS:_TEXT, ES:_TEXT ORG ORIGIN PUBLIC Start Start: mov sp, OFFSET StackBase ; ; open input file ; mov ax, 3D00h lea dx, InFileName int 21h mov [FileHandle], ax ; ; read input file ; mov ah, 3Fh mov bx, [FileHandle] mov cx, ENC_BUF_SIZE lea dx, InBuffer int 21h ; ; close input file ; mov ah, 3Eh mov bx, [FileHandle] int 21h ; ========================================================================== ; ; encrypt the buffer ; mov ax, ds mov es, ax call ZTimerOn call RC4Encrypt call ZTimerOff call ZTimerReport ; ========================================================================== ; ; create output file ; mov ah, 3Ch mov cx, 0 lea dx, OutFileName int 21h ; ; open output file ; mov ax, 3D01h lea dx, OutFileName int 21h mov [FileHandle], ax ; ; write output file ; mov ah, 40h mov bx, [FileHandle] mov cx, ENC_BUF_SIZE lea dx, OutBuffer int 21h ; ; close output file ; mov ah, 3Eh mov bx, [FileHandle] int 21h ; ; DOS Exit ; Exit: mov ah, 04Ch mov al, 0 int 21h ; ; encryption key ; INCLUDE ENCKEY.INC INCLUDE ..\I386\ENCRYPT.INC INCLUDE ..\I386\ZENTIME.INC _rc4KeyCtl db 258 dup(?) InFileName db "in.bin", 0 FileHandle dw -1 OutFileName db "out.bin", 0 OutFileHandle dw -1 ALIGN 2 StackLimit db 1024 dup (?) StackBase EQU $ ENC_INPUT_OFFSET EQU $ InBuffer db ENC_BUF_SIZE DUP(0) ENC_OUTPUT_OFFSET EQU $ OutBuffer db ENC_BUF_SIZE DUP(0) _TEXT ENDS END Start