授课时间:2005年12月4日 批处理:批处理有也有些人称为批处理脚本,也有说成为批处理程序的。英文是batch 。我们现在的批处理文件后缀就是取其单词的前三个字母 *.bat,或者 *.cmd 。 一行可视为一个命令。每行命令里可以以包含多条子命令。从第一行开始到最后一行结束。(整体是这样的,如果中间加如如if ;for之类的循环 条件之类的除外)。基于批处理的平台是DOS系统。全名是磁盘操作系统disk operation system 。不过批处理(DOS命令)在入侵过程中用处还是很多的,DOS系统有一个好处: 速度快,不留痕迹。而且用多了会觉得比WIN下面的鼠标点的要爽。 现在进入批处理的正题。 .bat跟.cmd后缀运行的效果都是一样的.两种不同的后缀而已. 命令行在XP (NT之上的都是叫cmd调出.在win98类的系统都是以command调出. 现在谈下关系批处理的功能. 在入侵中,在实际操作中都有非常重要的作用. 先说下在入侵中...相信大家都见过这么一句代码:net use \ip\ipc$ "password" /u:"administrator"。如果把他转化成批量管理,或者破解的话,用批处理命令来解决怎么办? 下面我们将讲到这个. 还有实际应用中,比如说网吧的应用系统。自动备份功能,用批处理来解决的话也会更方便。 好了,功能及应用就说到这里,我们开始讲关于批处理的命令如何写。 一echo 命令 可以说这是一句回显开关命令. 大家可以在自己的CMD下试试 echo /? 帮助文件是如何的 。我想问,如果知道用户名和密码,用批处理能编个开IPC$的软件吗?(在本机上运行的)。你再输入echo off ,就关闭了回显了. 这个命令基本上只是显示后面的提示而建立的,比如你输入一个命令行 @echo Just me is a good guy 。屏幕就会显示Just me is a good guy。这条命令基本上的功能就是这样. 二 .@命令. 这条命令的作用于是不显示@后面的命令. 例如:书上的例子:@echo Now initializing the program,please wait a minite... 。如果你输入 @format x:/q/u/autoset 这个作用就大了{格式化}。大家注意后面的autoset。以前在98之前的时候都用/y来试用的。现在NT以后禁了Y参数,不过这个autoset是可以了.效果一样. @format X: /q/u/autoset 这句命令的作用主要告诉大家的是,如果在别人的屏幕上不显示正在快速格式化他他的硬盘. 如果在前面再加上一句 @echo please wait a minite... 。再说一些诱域性的话,也就没人怀疑你在做坏事了. 这条命令基本上就是这样了. 三 goto 这条命令跟C语言里的Goto好像差不多. 你新建一个文本文档。再把这个新建文本文档的后缀.txt改成.bat。如果想要编辑你的这个批处理的话就右键单击,编辑. 好了.我们继续讲Goto命令. 看过C基础的一定知道书上有个例子是 .... :loop .... go to loop; 很简单的一个命令,意思就是跳动到哪句去执行的意思. 这个loop是标签的意思.前面一定要加上 " : "号 。也就是两个点。这条语句的基本作用就是这样了,例子在后面举出来. 四rem语言句. rem命令。这个相对来说就比较简单了,意思就是注释性的.相当于C里面的\\ /* ....*/ 。ASP文件里面的 -...-意思就是注释的意思。不起任何执行命令的作用不着. 不起任何执行命令的作用。@rem i'm a great man 。嘿嘿.牛B下. :P [此贴子已经被封____了于2005-12-4 22:36:19编辑过]叫我宝宝就可以了!2005-12-4 22:18:02举报帖子 宝汽X 等级:新手上路文章:19积分:219门派:无门无派注册:2005年11月26日第 2 楼 --------------------------------------------------------------------------------五.pause命令 这条命令的作用就比较大了.也比较好懂. @echo off :begin copy a:*.* d:\back echo Please put a new disk into driver A pause goto begin 这个批处理文件就含比较多的内容了. 好了.我来讲下这条命令. @echo off是关闭回显的意思 begin 在这里是做标签的意思. echo Please put a new disk into driver A 。这条语句是显示Please put a new disk into driver A pause命令是等待用户键入任意建 goto begin 重新开始一次. 就是输入任意建以后再跳转到begin copy a:*.* d:\back 这个批处理的作用是一张一张的复制软盘. Pause命令本身就是这个提示.不用你去写一条显示类似的语句. 你输入pause就会显示,请键入任意键继续。如果是英文操作系统会出现; prest any key to continue 再讲批处理的一个特性: 批处理调用内部或者外部命令之后就不再去管他了,不管他是不是在进行.也不管他是否进行结束。如果你复制一张软盘的话就得自己把握时间. 如果你再用这条命令的话,他会继续copy这张软盘 。 六.call 命令 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。父批处理程序就是指写有call命令的批处理程序。这条语言要求自身理解的. 多看别人写的批处理程序也基本上可以明白. 七.start命令 调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。关于这条命令的解释有一条重要的规则:执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。 如果你直接在命令提示框里面输入start会再弹出一个同样的窗口 。也就是说默认调用的是DOS窗口 。所以...你为了在某个文件夹里面调用cmd. 可以建bat文件里面写入cmd也可以写入start都是一个效果. 八.choice 命令 这条命令如果单独写在cmd里面是不行的. 这条命令的简介: 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234…… choice /c:dme defrag,mem,end 。大家看下这条命令的效果 {注:choice在NT里面已经不支持了. }98的操作系统.或者磁盘操作系统.可以在百度或者哪里找choice的资料. 开始讲比较严肃的东西了.这两条命令比较重要 九.If 命令 if 条件 待执行的命令 if =={%1} goto noparms goto 批处理文件运行到这里将跳到goto 所指定的标号处, 一般与if配合使用。 noparms只是一个标签. 这三个好好看到.多看几遍 if goto choice for 是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。 if 表示将判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式: 1、if "参数" == "字符串" 待执行的命令 参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号) 如if "%1"=="a" format a: 2、if exist 文件名 待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。如if exist config.sys edit config.sys 3、if errorlevel 数字 待执行的命令 如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。如if errorlevel 2 goto x2 DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码 再说下标号 ":" 标号用 :字符串 表示,标号所在行不被执行 十.for命令 for 命令比较复杂.使用起来只能多看,多练,多分析才能懂里面的东西。 基本格式: FOR [%%f] in (集合) DO [命令] 跟C不一样 %%f 就是 设置 意思.这里的设置范围是有限度的。这个范围就是里面的集合里面 如果一条批处理文件中有一行: for %%c in (*.bat *.txt) do type %%c tpye就是DOS命令,是显示文件内容的意思 *下面for 的官方帮助.* 转第三部分 叫我宝宝就可以了!2005-12-4 22:27:13举报帖子 宝汽X 等级:新手上路文章:19积分:219门派:无门无派注册:2005年11月26日第 3 楼 --------------------------------------------------------------------------------接第二部分 for in (set) do command [ CommandLineOptions] %variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 command-parameters 为特定命令指定参数或命令行开关。 在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable 而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I 如果命令扩展名被启用,下列额外的 FOR 命令格式会受到 支持: FOR /D %variable IN (set) DO command [command-parameters] 如果集中包含通配符,则指定与目录名匹配,而不与文件 名匹配。 FOR /R [[drive:]path] %variable IN (set) DO command [command- 检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句。如果在 /R 后没有指定目录,则使用当前 目录。如果集仅为一个单点(.)字符,则枚举该目录树。 FOR /L %variable IN (start,step,end) DO command [command-para 该集表示以增量形式从开始到结束的一个数字序列。 因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生 序列 (5 4 3 2 1)。 FOR /F ["options"] %variable IN (file-set) DO command FOR /F ["options"] %variable IN ("string") DO command FOR /F ["options"] %variable IN (command) DO command 或者,如果有 usebackq 选项: FOR /F ["options"] %variable IN (file-set) DO command FOR /F ["options"] %variable IN ("string") DO command FOR /F ["options"] %variable IN (command) DO command filenameset 为一个或多个文件名。继续到 filenameset 中的 下一个文件之前,每份文件都已被打开、读取并经过处理。 处理包括读取文件,将其分成一行行的文字,然后将每行 解析成零或更多的符号。然后用已找到的符号字符串变量值 调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开 的第一个空白符号。跳过空白行。您可通过指定可选 "options" 参数替代默认解析操作。这个带引号的字符串包括一个或多个 指定不同解析选项的关键字。这些关键字为: eol=c - 指一个行注释字符的结尾(就一个) skip=n - 指在文件开始时忽略的行数。 delims=xxx - 指分隔符集。这个替换了空格和跳格键的 默认分隔符集。 tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代 的 for 本身。这会导致额外变量名称的 格式为一个范围。通过 nth 符号指定 m 符号字符串中的最后一个字符星号, 那么额外的变量将在最后一个符号解析之 分配并接受行的保留文本。 usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且 引号字符为文字字符串命令并允许在 fi 中使用双引号扩起文件名称。 sample1: FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command 会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将 每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或 空格定界符号。请注意,这个 for 程序体的语句引用 %i 来 取得第二个符号,引用 %j 来取得第三个符号,引用 %k 来取得第三个符号后的所有剩余符号。对于带有空格的文件 名,您需要用双引号将文件名括起来。为了用这种方式来使 用双引号,您还需要使用 usebackq 选项,否则,双引号会 被理解成是用作定义某个要分析的字符串的。 %i 专门在 for 语句中得到说明,%j 和 %k 是通过 tokens= 选项专门得到说明的。您可以通过 tokens= 一行 指定最多 26 个符号,只要不试图说明一个高于字母 z 或 Z 的变量。请记住,FOR 变量是单一字母、分大小写和全局的; 同时不能有 52 个以上都在使用中。 您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是, 用单引号将括号之间的 filenameset 括起来。这样,该字符 串会被当作一个文件中的一个单一输入行。 最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将 括号之间的 filenameset 变成一个反括字符串。该字符串会 被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进 内存,并被当作文件分析。因此,以下例子: FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i 会枚举当前环境中的环境变量名称。 另外,FOR 变量参照的替换已被增强。您现在可以使用下列 选项语法: ~I - 删除任何引号("),扩充 %I %~fI - 将 %I 扩充到一个完全合格的路径名 %~dI - 仅将 %I 扩充到一个驱动器号 %~pI - 仅将 %I 扩充到一个路径 %~nI - 仅将 %I 扩充到一个文件名 %~xI - 仅将 %I 扩充到一个文件扩展名 %~sI - 扩充的路径只含有短名 %~aI - 将 %I 扩充到文件的文件属性 %~tI - 将 %I 扩充到文件的日期/时间 %~zI - 将 %I 扩充到文件的大小 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个完全合格的名称。如果环境变量 未被定义,或者没有找到文件,此组合键会扩充 空字符串 可以组合修饰符来得到多重结果: %~dpI - 仅将 %I 扩充到一个驱动器号和路径 %~nxI - 仅将 %I 扩充到一个文件名和扩展名 %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名 %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个驱动器号和路径。 %~ftzaI - 将 %I 扩充到类似输出线路的 DIR 在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法 用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名 比较易读,而且避免与不分大小写的组合键混淆。 (我在这里说下看书的方法: 看理论性的东西最好不要错过每一句话,每一个字眼.特别是权威的书籍要求不要跳过任何一个不懂的问题. 如果只是实践性的,可以跳过一些知识点,进行下一节的学习. 像MS的官方帮助相当实用,希望大家看的字母争取都能懂一些 ) 在批处理文件中使用 FOR 命令时,指定变量使用 %%variable 再继续讲一些 for的实例用法 利用FOR暴力破解一台NT的机器. 如果猜中他的管理员帐号是administrator 我的IPC连接命令 net use \\ip\ipc$ ""/user:"" 只要小小的改动几条命令 for /f i% in (welldo.txt) do net use \ip\ipc$ "i%" /u:"administrator" 然后在这个welldo.txt文件里面列举可能有产生的密码 完 叫我宝宝就可以了!2005-12-4 22:27:49举报帖子 宝汽X 等级:新手上路文章:19积分:219门派:无门无派注册:2005年11月26日第 4 楼 --------------------------------------------------------------------------------在多次调用start命令后,会产生几个文件,请问怎么修改这急个文件的存放位置啊!{注:我调用的是私服启动文件} 叫我宝宝就可以了!2005-12-5 16:18:08举报帖子 Vikas 等级:新手上路文章:4积分:55门派:无门无派注册:2005年10月9日第 5 楼 --------------------------------------------------------------------------------看看我的系统更新的BAT: @ECHO OFFCLS prompt [webmaster@endsec.com]☆☆title 登哥专用版color 07@echo onPAUSEstart F:\DESK\系统更新包\Upgrade17.55.40.exestart F:\DESK\系统更新包\tt2.21.execall F:\DESK\系统更新包\fav2c.batstart C:\163.lnkCopy F:\Sec\个性化\声音\Windows XP 关机.wav C:\WINDOWS\Media\Windows XP 关机.wavCopy F:\Sec\个性化\声音\Windows XP 启动.wav C:\WINDOWS\Media\Windows XP 启动.wav

评论