因为大多数的批处理判断密码都是用IF
IF判断密码的 非常容易被破解
举个例子
就那6楼的代码来做示范- @echo off&SetLocal EnableDelayEdexpansion&cd /d "%~dp0"
-
- rem 1、判断是否添加了注册表项,没有则添加。
- REG QUERY hkcr\.### /v "mima" 1>nul 2>nul||reg add hkcr\.### /v "mima" /d "" /f >nul
- rem 2、查询注册表项,获取密码。
- for /f "tokens=1-3" %%a in ('REG QUERY hkcr\.### /v "mima"') do (set "mima=%%c")
- if "!mima!"=="" ( echo 没有设置密码。 ) else (goto :2)
-
- rem 设置密码
- :1
- set /p "code=设置密码:"
- if "!code!"=="" echo 密码不能为空。& goto :1
- reg add hkcr\.### /v "mima" /d "!code!" /f
- pause & goto :3
-
- rem 验证密码
- :2
- echo 设置了密码。
- set /p "code=输入密码:"
- if "!code!"=="!mima!" (
- echo;
- echo 密码正确。。
- pause
- ) else (
- echo =============
- echo 你妹,不对。
- goto :2
- )
-
- rem 操作
- :3
- cls
- echo 1.修改密码。
- echo 2.删除密码。
- echo 3.退出。
-
- set /p "case=请选择:"
- if "!case!"=="1" goto :1
- if "!case!"=="2" reg delete hkcr\.### /f & pause & goto :3
- if "!case!"=="3" exit
- echo 输入错误。& pause & goto :3
复制代码 注意复制代码 如果在要求书填入密码是输入:复制代码 那就成功破解了
为什么呢?
现在复制代码 中的 !code! 是复制代码 如果代入进去就会变成- if ""=="" goto 3 & echo "=="!mima!"
复制代码 if ""=="" 这里条件始终是正确的
所以 goto 3就会跳转到- :3
- cls
- echo 1.修改密码。
- echo 2.删除密码。
- echo 3.退出。
-
- set /p "case=请选择:"
- if "!case!"=="1" goto :1
- if "!case!"=="2" reg delete hkcr\.### /f & pause & goto :3
- if "!case!"=="3" exit
- echo 输入错误。& pause & goto :3
复制代码 也就是密码输入正确的地方
但这技巧只是绕过了密码验证
没有真正的得到密码 |