中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » (原创)批处理加密+解密(感谢namejm和bjsh版主!)
« [1] [2] »
作者:
标题: (原创)批处理加密+解密(感谢namejm和bjsh版主!) 上一主题 | 下一主题
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
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『第 2 楼』:  

呵呵,想法不错,支持楼主,顺便学习下!~



逍遥@浪子@反病毒
2008-3-29 19:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
beeny
初级用户





积分 136
发帖 49
注册 2007-1-4
状态 离线
『第 3 楼』:  

呵呵不错!就是好像不能再执行吧!

2008-3-29 20:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 4 楼』:  我测试了可以的:

但对于"!"有点感冒!!!



批处理之家新域名:www.bathome.net
2008-3-29 20:50
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
ZJHJ
高级用户





积分 609
发帖 374
注册 2006-8-2
状态 离线
『第 5 楼』:  

我测试了
这种替换后不能运行了,也不支持中文.必须解密后才能运行的

2008-3-30 00:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  

继续加油

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
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
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
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 10 楼』:  为了解决问题得到提高:

为了解决问题得到提高,自己顶一下了。



批处理之家新域名:www.bathome.net
2008-3-30 13:28
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 11 楼』:  

你所加密后文件并不能运行
搜索一下s11ss的发贴  应该有收获的
用变量替换就可以



简单!简单!再简单!
2008-3-30 13:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 12 楼』:  再顶:

问题没解决啊,高手们给点建议啊,急啊!!!!!!!!!!!!!!!!!



批处理之家新域名:www.bathome.net
2008-3-30 15:30
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
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
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: