|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『楼 主』:
(原创)批处理加密+解密(感谢namejm和bjsh版主!)
经本处理后处理后的批处理要经过加密和解密两个过程才能运行,同时经过加解密过程后使每行后增加了18位空字符,现已解决。
相信经过本批处理加密的文件很难被破解,可以便于大家将不经常使用的批处理都转换成文本文件收藏起来,要用的时候再解密出来就可以了,这也是本人花这么大心思的初衷。
为了便于分类保管,特别加入人工选择输出文件名功能。
友情提示:请大家小心使用变量延迟,在本P中就遇到了处理特殊字符"!"的问题,真的不瞒大家,我为这个是费尽了心力(出现的问题本人在9楼做了详细说明)。
感谢namejm的共享资料解决了关键问题,脱去因解决特殊字符"!"替换时生成的前后双引号(本人在16楼贴出了其原文,大家可以去学习学习以少走弯路),本批处理已修改如下:
@echo off&color 9f&mode con lines=10
title 批处理加密解密工具
echo.&echo.&echo.&echo.
echo made by zw19750516
ping /n 3 127.1 >nul
cls
echo.&echo.&echo.&echo.
set /p a= 请将要处理的批处理或文本文件拖放到这里:
:select
cls
echo.&echo.&echo.&echo.
set /p b= 请选择要做何处理:(1.加密 2.解密)
if "%b%"=="1" goto change
if "%b%"=="2" goto back
cls
echo.&echo.&echo.&echo.
echo 输入无效,请返回正确输入!
ping /n 3 127.1 >nul&goto select
:change
cls
echo.&echo.&echo.&echo.
set c=change
set /p c= 请输入要生成的txt文件名(默认为change):
for /f "tokens=*" %%i in ('findstr ".*" %a%') do (
set str=%%i
setlocal enabledelayedexpansion
set str=!str:a=犇!
set str=!str:b=猋!
set str=!str:c=骉!
set str=!str:d=蟲!
set str=!str:e=麤!
set str=!str:f=毳!
set str=!str:g=淼!
set str=!str:h=掱!
set str=!str:i=焱!
set str=!str:j=垚!
set str=!str:k=煊!
set str=!str:l=烜!
set str=!str:m=煐!
set str=!str:n=焓!
set str=!str:o=烓!
set str=!str:p=焺!
set str=!str:q=瓛!
set str=!str:r=炜!
set str=!str:s=翙!
set str=!str:t=燚!
set str=!str:u=焜!
set str=!str:v=琰!
set str=!str:w=燊!
set str=!str:x=眚!
set str=!str:y=奡!
set str=!str:z=慤!
echo "!str!" >>%c%.txt rem 为了处理特殊字符"!"无耐给字符加上了双引号
endlocal
)
cls
echo.&echo.&echo.&echo.
echo 正在转换中请稳候...
ping /n 3 127.1 >nul
cls
echo.&echo.&echo.&echo.
echo 已转换加密完毕,转换后的文件为%c%.txt,
echo 请妥协保管好加密后的文件,按任意键退出。
pause >nul&goto :eof
:back
cls
echo.&echo.&echo.&echo.
set c=back
set /p c= 请输入要生成的bat文件名(默认为back):
for /f "tokens=*" %%i in ('findstr ".*" %a%') do (
set str=%%~i rem 这里可有大学问(脱去字符双引号)
setlocal enabledelayedexpansion
set str=!str:犇=a!
set str=!str:猋=b!
set str=!str:骉=c!
set str=!str:蟲=d!
set str=!str:麤=e!
set str=!str:毳=f!
set str=!str:淼=g!
set str=!str:掱=h!
set str=!str:焱=i!
set str=!str:垚=j!
set str=!str:煊=k!
set str=!str:烜=l!
set str=!str:煐=m!
set str=!str:焓=n!
set str=!str:烓=o!
set str=!str:焺=p!
set str=!str:瓛=q!
set str=!str:炜=r!
set str=!str:翙=s!
set str=!str:燚=t!
set str=!str:焜=u!
set str=!str:琰=v!
set str=!str:燊=w!
set str=!str:眚=x!
set str=!str:奡=y!
set str=!str:慤=z!
echo !str:~,-18! >>%c%.bat rem 脱掉两次替换时每行后生成的17位空格
endlocal
)
cls
echo.&echo.&echo.&echo.
echo 正在转换中请稳候...
ping /n 3 127.1 >nul
cls
echo.&echo.&echo.&echo.
echo 已解密完毕,解密后的文件为%c%.bat,按任意键退出。
pause >nul&goto :eof [ Last edited by zw19750516 on 2008-3-31 at 01:14 PM ]
|
批处理之家新域名:www.bathome.net |
|
2008-3-29 18:12 |
|
|
luckboy45
中级用户
积分 487
发帖 212
注册 2007-4-1
状态 离线
|
|
2008-3-29 19:19 |
|
|
beeny
初级用户
积分 136
发帖 49
注册 2007-1-4
状态 离线
|
『第
3 楼』:
呵呵不错!就是好像不能再执行吧!
|
|
2008-3-29 20:45 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
|
2008-3-29 20:50 |
|
|
ZJHJ
高级用户
积分 609
发帖 374
注册 2006-8-2
状态 离线
|
『第
5 楼』:
我测试了
这种替换后不能运行了,也不支持中文.必须解密后才能运行的
|
|
2008-3-30 00:24 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
|
2008-3-30 01:45 |
|
|
plp626
银牌会员
钻石会员
积分 2278
发帖 1020
注册 2007-11-19
状态 离线
|
『第
7 楼』:
有个问题:
for 可以精简重复的任务,但就是不能精简多次set赋值这样的操作,
就像:
set str=!str:a=犇!
set str=!str:b=猋!
set str=!str:c=骉!
set str=!str:d=蟲!
set str=!str:e=麤!
set str=!str:f=毳!
set str=!str:g=淼!
set str=!str:h=掱!
set str=!str:i=焱!
set str=!str:j=垚!
set str=!str:k=煊!
set str=!str:l=烜!
set str=!str:m=煐!
set str=!str:n=焓!
set str=!str:o=烓!
set str=!str:p=焺!
set str=!str:q=瓛!
set str=!str:r=炜!
set str=!str:s=翙!
set str=!str:t=燚!
set str=!str:u=焜!
set str=!str:v=琰!
set str=!str:w=燊!
set str=!str:x=眚!
set str=!str:y=奡!
set str=!str:z=慤!
这样的代码,总是不能精简,这和指针有关吗?
|
山外有山,人外有人;低调做人,努力做事。
进入网盘(各种工具)~~ 空间~~cmd学习 |
|
2008-3-30 01:55 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
8 楼』:
友情提示:
批处理加密后是不能运行的,想恢复只要把原来加密时生成的chang.txt放进去解密还原成back.bat就可以运行了。同时,不好意思,发贴时没有写好说明,在这里补上了。
|
批处理之家新域名:www.bathome.net |
|
2008-3-30 11:44 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
9 楼』:
关于处理特殊字符"和! !的疑惑:
本加解密工具现在有个最大的问题没有得到解决,如果被处理的批处理中含有"! !"的话,所有的"! !"将不被处理。
我做了大量的处理和测试,只要加入set str="!str:^!=^!!"(也试着加入call,set str=!str:^!=^!!不起作用)进for循环中进可以解决"! !"不被处理的问题。rem实际上只要加入双引号就可以了,根本不要对!进行替换处理,以前我是没搞清楚,导致写入无效命令。
但随之出现的新的问题更叫人头痛,大家注意到在for循环中加入str="!str:^!=^!!"实际同时给每个%str%前后都加上了字符",原本简单的以为把echo !str:~,-18! >>%c%.bat修改下就可以解决了。但当我修改成echo !str:~2,--20! >>%c%.bat
后却发现解密出来的文件各行中有的""被处理掉了,有的前面的"还在,肯定会导致 不能运行,这就表明在每行前后增加的"字符导致增加的字符数并不一样
真的是叫人头痛啊,同样是前后增加的字符"但为什么会出现各行前后增加的字符数不一样的情况啊,望高人指点啊。
对了,问题比较复杂,不知道我说清楚了没有,版主可不要扣我分啊。
===============================================
本问题已在16楼得到解决,在此再次感谢namejm和bjsh版主。
[ Last edited by zw19750516 on 2008-3-31 at 01:16 PM ]
|
批处理之家新域名:www.bathome.net |
|
2008-3-30 12:05 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
|
2008-3-30 13:28 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
11 楼』:
你所加密后文件并不能运行
搜索一下s11ss的发贴 应该有收获的
用变量替换就可以
|
简单!简单!再简单! |
|
2008-3-30 13:38 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
|
2008-3-30 15:30 |
|
|
zh159
金牌会员
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第
13 楼』:
含有特殊字符的处理建议还是使用VBS的好
|
|
|
2008-3-30 16:13 |
|
|
knoppix7
银牌会员
积分 1287
发帖 634
注册 2007-5-2 来自 cmd.exe
状态 离线
|
『第
14 楼』:
.这样的解/加密太容易露馅了.论坛上还有其他的方法。自己看看把.
|
|
2008-3-30 21:09 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
15 楼』:
继续顶:
怎么没人来帮我解决我在9楼提出的问题啊,我都搜遍了论坛了,还是不知所以然!急啊!
|
批处理之家新域名:www.bathome.net |
|
2008-3-30 22:58 |
|