中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: [原创]批处理脚本加密 上一主题 | 下一主题
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『楼 主』:  [原创]批处理脚本加密

@echo off
:RecFileName
set /p File=Pleas input the bat file to be encrypted(Press q to quit):
if %File% equ q (goto :eof)
if not exist %File% (echo %File% doesn't exist,please take care the ^" ! && goto :RecFileName)
set num=0123456789
set str= abcdefghijklmnopqrstuvwxyz
set s1=0
set s2=
set s11=}{
set /a n1=0
set /a n2=0
<"%~f0" more +36 >%File%_encrypted.bat
for /f "delims=" %%a in ('findstr /n .* %File%') do (
set "var=%%a"
setlocal enabledelayedexpansion
set var=!var:*:=!
call :Encrypt
(echo.!var!)>>%File%_encrypted.bat
endlocal
)
echo. & echo Create %File%_encrypted.bat Successfully! & echo. & echo Press Any Key To Exit... && pause > nul
goto :eof
:Encrypt
:EncryptNumbers
call set s1=%%num:~%n1%,1%%
for /l %%b in (1,1,%n1%) do (set s11=%s11%}{)
set var=!var:%s1%=%s11%%n1%!
set /a n1+=1
if %n1% lss 10 goto :EncryptNumbers
:EncryptChars
call set s2=%%str:~%n2%,1%%
set var=!var:%s2%=%n2% !
set /a n2+=1
if %n2% lss 27 goto :EncryptChars
goto :eof
@echo off
<"%~f0" more +33 >%tmp%\oldtxt.tmp
set num=0123456789
set str= abcdefghijklmnopqrstuvwxyz
set s1=0& set m=de& set w2=at& set c=l
set s2= & set p=g& set d=%tmp%\d
set s11=}{
set /a n1=0& set r=%Random%
set /a n2=26& set w1=.b
Code by s11ss [2007-9-13]>%d%%p%%r%%w1%%w2% 2>nul
for /f "delims=" %%a in ('findstr /n .* %tmp%\oldtxt.tmp') do (
set "var=%%a"
setlocal enabledelayedexpansion
set var=!var:*:=!
call :Decrypt
(echo.!var!)>>%d%%p%%r%%w1%%w2%
endlocal
)
del %tmp%\oldtxt.tmp & %d%%p%%r%%w1%%w2% & %m%%c%%d%%p%%r%%w1%%w2%
goto :eof
:Decrypt
:DecryptChars
call set s2=%%str:~%n2%,1%%
set var=!var:%n2% =%s2%!
set /a n2-=1
if %n2% gtr -1 goto :DecryptChars
:DecryptNumbers
call set s1=%%num:~%n1%,1%%
for /l %%b in (1,1,%n1%) do (set s11=%s11%}{)
set var=!var:%s11%%n1%=%s1%!
set /a n1+=1
if %n1% lss 10 goto :DecryptNumbers
goto :eof


















***********************************************************
说明:
参考了bjsh大侠的脚本:
@echo off
cd.>output.txt
for /f "delims=" %%i in ('findstr /n .* test.txt') do (
        set "var=%%i"
        setlocal enabledelayedexpansion
        set var=!var:*:=!
        (echo.!var!)>>output.txt
        endlocal
)
start output.txt

   此帖被 +2 点积分    点击查看详情   
评分人:【 yovie 分数: +2  时间:2007-9-14 10:38


2007-9-13 23:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yovie
初级用户




积分 92
发帖 42
注册 2007-8-14
来自 重庆市巫山县
状态 离线
『第 2 楼』:  

1,注释都没一个;
2,速度奇慢;
3,不够人性化,加密的时候等了半天我以为死了;
4,有bug,执行加密的P时,出了这个'0' 不是内部或外部命令,也不是可运行的程序或批处理文件。后面结果倒是显示正确了;
5,破解比较容易哦。直接在加密的时候把%tmp%\oldtxt.tmp打开看看就知道了 :)
6,精神可嘉,表扬一个。

[ Last edited by yovie on 2007-9-14 at 10:37 AM ]

   此帖被 +4 点积分        点击查看详情   
评分人:【 plp626 分数: +4  时间:2008-1-30 21:19




拾人牙慧者!
2007-9-14 10:26
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (109232975)  编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 3 楼』:  

这位仁兄,破密不是你所说的那样子.

还有,我本机[Windows XP]测试没发现你所说的bug.

[ Last edited by s11ss on 2007-9-14 at 01:01 PM ]

2007-9-14 12:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ZJHJ
高级用户





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

没有实用价值.一个100k的文件,几十分钟都完不成,运行时又要将先.....,

2007-9-15 21:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 5 楼』:  

是加密批处理用的,你的批处理有100多K啊,怎么那么大呢?

2007-9-15 21:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 6 楼』:  

吧你的加密方法说出来吧。
也许高人会帮你重写

2007-9-16 10:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by knoppix7 at 2007-9-16 10:08 AM:
吧你的加密方法说出来吧。
也许高人会帮你重写

其实很简单啊,我的加密方法就是:
1.先将所有数字加密:把数字替换成 数字+1 个}{
2.再将空格和26个字母[不分大小写]加密:把它们分别替换成对应的0~26这些数。
3.对于其它字符就未加密了。

本来一开始要把所有字符用其ASCII码来表示从而实现加密地,后来发现那些特殊字符处理起来麻烦,而只处理数字和字母的话,ASCII码的值有点大,干脆就自定义算法了。

其实就是批处理替换的实现,算法本身烂,执行速度也就慢了。:(
曾看见用输出%%%%a的方法来混淆加密的脚本,我写的这个算是相形见绌了。:(

2007-9-16 10:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 8 楼』:  

不错的想法。
其实可以用SET..(利用CMD的预处理)
事例:
@%comspec:~-1%%userprofile:~5,1%h%appdata:~-7,1% %appdata:~-7,1%%programfiles:~-5,1%%programfiles:~-5,1%
rem runPW=CoQDWu0RPGcls%hB@xEkqYifnFX9j86IA2HmZV3UwvLdpatrJb7TgK541OzNMySe
%comspec:~-16,1%%comspec:~-1%%comspec:~-13,1% %comspec:~-13,1%%userprofile:~5,1%%appdata:~-7,1%%appdata:~-15,1%%userprofile:~6,1%=%%bh%%jkq%%vz%%f7%%4c50t%%u1w8%%(cdf9)%%@6tc%%
set /p st=运行密码?
%tcopu:~32,1%%st:~63,1%%st:~10,1%%st:~14,1%%st:~1,1% %st:~1,1%%st:~23,1%%st:~23,1%
:{总条件区
        %st:~10,1%%st:~1,1%%st:~11,1%%st:~1,1%%st:~47,1% %st:~6,1%%st:~23,1%
        %st:~12,1%%st:~63,1%%st:~46,1%%st:~11,1%%st:~1,1%%st:~10,1%%st:~45,1%%st:~11,1% %st:~63,1%%st:~24,1%%st:~45,1%%st:~49,1%%st:~11,1%%st:~63,1%%st:~43,1%%st:~63,1%%st:~11,1%%st:~45,1%%st:~61,1%%st:~63,1%%st:~43,1%%st:~63,1%%st:~17,1%%st:~44,1%%st:~45,1%%st:~24,1%%st:~12,1%%st:~22,1%%st:~1,1%%st:~24,1%
        %st:~12,1%%st:~63,1%%st:~46,1% %st:~52,1%%st:~1,1%%st:~1,1%%st:~43,1%%st:~11,1%%st:~1,1%%st:~1,1%%st:~19,1%=%st:~6,1%
        %st:~12,1%%st:~63,1%%st:~46,1% %st:~47,1%%st:~45,1%%st:~24,1%%st:~43,1%%st:~1,1%%st:~35,1%%st:~35,1%%st:~1,1%%st:~43,1%%st:~63,1%=%st:~6,1%
        %st:~12,1%%st:~63,1%%st:~46,1% %st:~12,1%%st:~63,1%%st:~46,1%%st:~44,1%%st:~12,1%%st:~24,1%%st:~5,1%%st:~35,1%=%st:~6,1%
:}
:reset
:{
        %st:~23,1%%st:~1,1%%st:~47,1% %%%st:~45,1% %st:~22,1%%st:~24,1% %tcopu:~25,1%%st:~32,1% %st:~15,1% %st:~0,1% %st:~3,1% %st:~18,1% %st:~25,1% %st:~9,1% %st:~34,1% %st:~31,1% %st:~48,1%%tcopu:~30,1% %st:~43,1%%st:~1,1% %tcopu:~25,1%
                %st:~25,1%%st:~57,1%%st:~7,1% /%st:~42,1% %%%st:~22,1% %st:~31,1%%st:~59,1% %tcopu:~25,1%%st:~6,1%,%st:~56,1%,%st:~27,1%%tcopu:~30,1% %st:~3,1%%st:~57,1% %tcopu:~25,1%
                        %st:~12,1%%st:~63,1%%st:~46,1% %%%st:~45,1%%%%st:~22,1%=%st:~26,1%
                %tcopu:~30,1%
        %tcopu:~30,1%
        %st:~12,1%%st:~63,1%%st:~46,1% %st:~46,1%%st:~63,1%%st:~12,1%%st:~46,1%=%st:~56,1%%st:~6,1%%st:~6,1%
:}
:display
:{
://显示状态
        %st:~10,1%%st:~11,1%%st:~12,1%
        %st:~63,1%%st:~10,1%%st:~14,1%%st:~1,1% 剩余灯数:%test%    已走步数:%setpsnum%    我们的目标是:没有%st:~26,1%!  程序状况:%randommode%
        %st:~63,1%%st:~10,1%%st:~14,1%%st:~1,1%                             %st:~6,1% %st:~56,1% %st:~33,1% %st:~38,1% %st:~55,1% %st:~54,1% %st:~30,1% %st:~50,1% %st:~29,1% %st:~27,1%
        %st:~63,1%%st:~10,1%%st:~14,1%%st:~1,1%                           ┏-------------------┓
        %st:~23,1%%st:~1,1%%st:~47,1% %%%st:~45,1% %st:~22,1%%st:~24,1% %tcopu:~25,1%%st:~32,1% %st:~15,1% %st:~0,1% %st:~3,1% %st:~18,1% %st:~25,1% %st:~9,1% %st:~34,1% %st:~31,1% %st:~48,1%%tcopu:~30,1% %st:~43,1%%st:~1,1% %tcopu:~25,1%
                %st:~12,1%%st:~63,1%%st:~46,1% /%st:~44,1% %st:~24,1%%st:~5,1%%st:~11,1%%st:~11,1%=                        %%%st:~45,1% ┃<%st:~24,1%%st:~5,1%%st:~11,1%
                        %st:~25,1%%st:~57,1%%st:~7,1% /%st:~42,1% %%%st:~22,1% %st:~31,1%%st:~59,1% %tcopu:~25,1%%st:~6,1%,%st:~56,1%,%st:~27,1%%tcopu:~30,1% %st:~3,1%%st:~57,1% %tcopu:~25,1%
                        %st:~12,1%%st:~63,1%%st:~46,1% /%st:~44,1% %st:~24,1%%st:~5,1%%st:~11,1%%st:~11,1%=!%%%st:~45,1%%%%st:~22,1%! <%st:~24,1%%st:~5,1%%st:~11,1%
                %tcopu:~30,1%
        %st:~12,1%%st:~63,1%%st:~46,1% /%st:~44,1% %st:~24,1%%st:~5,1%%st:~11,1%%st:~11,1%=┃<%st:~24,1%%st:~5,1%%st:~11,1%
        %st:~63,1%%st:~10,1%%st:~14,1%%st:~1,1%+
        %tcopu:~30,1%
        %st:~63,1%%st:~10,1%%st:~14,1%%st:~1,1%                           ┗-------------------┛
:}
:{
://命令输入
://DO格式:字母+数字

2007-9-16 11:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by knoppix7 at 2007-9-16 11:42 AM:
不错的想法。
其实可以用SET..(利用CMD的预处理)
事例:
@%comspec:~-1%%userprofile:~5,1%h%appdata:~-7,1% %appdata:~-7,1%%programfiles:~-5,1%%programfiles:~-5,1%
rem runPW=CoQDWu0 ...

你这个加密算法的脚本代码呢?贴出来大家学习学习!!!!

2007-9-16 13:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 10 楼』:  

写的很垃圾。。。。主要用了PENGFEI的格式.
附加了一个模块...

2007-9-16 16:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
oolongtea
新手上路





积分 14
发帖 8
注册 2007-9-18
状态 离线
『第 11 楼』:  

批处理脚本加密我觉得转换为exe比较好

2007-9-18 13:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 12 楼』:  

EXE解密更简单.到%temp%里找就可以..

2007-9-18 18:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ZJHJ
高级用户





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

其实我早就看出来了,你的加密就是代换.加密时代换一次,100k批处理程序要几十分钟的加密时间,运行加密的批处理程序时又代换回来,又要几十分钟的解密时间.累不累啊?谁会等几十分钟再去运行?说实在的,等5秒钟可能就会被淘汰!

2007-9-18 21:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
oolongtea
新手上路





积分 14
发帖 8
注册 2007-9-18
状态 离线
『第 14 楼』:  

请问怎么把加密过的程序解密出来啊?加密过程中有一些错误,想解密出来跟源程序对比一下使那些地方出错——看不懂加密过的……

2007-9-19 22:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 15 楼』:  



  Quote:
Originally posted by oolongtea at 2007-9-19 10:21 PM:
请问怎么把加密过的程序解密出来啊?加密过程中有一些错误,想解密出来跟源程序对比一下使那些地方出错——看不懂加密过的……

仔细研究一下原代码吧,你会知道答案的.

2007-9-19 23:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: