中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创][讨论]非编译型批处理加密方案与代码
« [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] ... [25] »
作者:
标题: [原创][讨论]非编译型批处理加密方案与代码 上一主题 | 下一主题
bhdc
初级用户





积分 48
发帖 23
注册 2006-2-23
状态 离线
『第 91 楼』:  

才发现原来可以这样,学习中。。。。。。。

2006-10-20 20:03
查看资料  发送邮件  发短消息 网志   编辑帖子
ykkysysy
新手上路




积分 8
发帖 4
注册 2006-10-19
状态 离线
『第 92 楼』:  

有效……支持……感谢 ……! 绝对的智慧和技术的结晶!
那请问楼上的,怎么重新显示内容呢?有盾必有矛吧?

2006-10-21 04:37
查看资料  发送邮件  发短消息 网志   编辑帖子
hijackjave
新手上路





积分 3
发帖 2
注册 2006-10-19
状态 离线
『第 93 楼』:  

好复杂啊~我看不懂~

2006-10-21 11:31
查看资料  发短消息 网志   编辑帖子
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 94 楼』:  

  对这加密与解密的原理还是不太清楚,请哪位高手口述一下。谢了。

  另外,对于F82中pengfei兄关于加密与加密的代码,自己测试了一下,发现只是在批处理的首行加上了“author:pengfei@www.cn-dos.net”这一句,貌似没起到什么加密与解密的效果。不知其因,望高手们不吝施教。


2006-10-21 14:37
查看资料  发送邮件  发短消息 网志   编辑帖子
anakin
新手上路




积分 1
发帖 4
注册 2006-10-12
状态 离线
『第 95 楼』:  

我很菜,老鸟别笑话我 呵呵~~ 
我以前见到过一个方法 很简单
就是用十六位编辑器给BAT加上FFEF文件头,让记事本一类的文本编辑器以UNICODE方式打开批处理文件
不过加上后会导致被加密批处理文件的第一条命令执行错误,
我们可以在FFFE后面加了一个0D0A,就是回车换行,
虽然不影响第一条命令执行,但是会在屏幕上出现 “不是内部或外部命令,也不是可运行的程序或批处理文件” 的错误信息,
这里可以加个 63 6C 73 0D 0A  既 cls(回车)

2006-10-31 13:07
查看资料  发送邮件  发短消息 网志   编辑帖子
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 96 楼』:  

楼上好方法!




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-10-31 22:33
查看资料  发送邮件  发短消息 网志   编辑帖子
8250
新手上路





积分 12
发帖 6
注册 2006-3-29
状态 离线
『第 97 楼』:  

看这一个帖子,明白了好一些东西,谢谢分享。

2006-11-1 22:22
查看资料  发送邮件  发短消息 网志   编辑帖子
wjxsjd
初级用户





积分 31
发帖 15
注册 2006-11-2
状态 离线
『第 98 楼』:  

长知识!

2006-11-3 01:23
查看资料  发送邮件  发短消息 网志   编辑帖子
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 99 楼』:  

汗...    刚才论坛不能上, 一提交居然发了两贴.

[ Last edited by pengfei on 2006-11-19 at 09:50 AM ]

2006-11-19 09:43
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 100 楼』:  变量加密程序!

在DOS联盟这几个月来让我学到了不少东西, 看到这里的人都这么热心, 很受感动. 在Windows普及的今天, 还有这么多人执著地爱着DOS.

    通过这么久的讨论, 大家对混淆文本编码的加密方案有了一定的了解, 也学到了不少知识. 这种加密方案制作的加密程序比较成熟, 使用方便. "bat加密最终版.bat"和"bat强制加密程序.exe"

    同时, 也写了针对这两种加密方法的解密程序. "bat解密程序.bat"

    前阵忽然想到了用变量加密的方法, 理论上觉得可行, 于是开始编写"bat变量加密程序.bat"一写才觉得不是那么好玩的. 首先是对密码转换统一代码, 接下来遇到很多问题.  

    这种算法还不是很成熟, 虽然经过测试, 替时没有发现错误. 但如果控制字符, 运算符, 转义符等特殊字符; 还有引号配对, 括号配对, 环境变量, 替换变量, 参数等符号在同一行以不同顺序出现就有可能加密失败.

    这只是我胡乱写的测试代码, 真正大家加密的批处理要是出现这些字符的集合, 我想批处理加密后的可靠性就不得而知了. 呵呵~  说到这里大家不要不敢用哦...

    测试过几十个批处理, 其中有多达千余行的脚本, 有的批处理中还有大量的特殊字符, 加密后没有发现错误. 只是某些字符互相影响有可能出现未知错误. 需要大家更普遍的测试才知道.

    突然发现讨论这么久, 原来11楼3742668版主对这种加密方法已经有所研究了. 呵呵~

    建议大家先使用变量加密方法加密后, 再用"批处理加密解密工具集.rar"的"BAT加密最终版"或"BAT强制加密程序"再次进行加密. 这样能起到比较好的加密效果. 如果要看源码, 对方需要解密两次才可以.
   
    修正了加密后大写变小写的缺陷, 欢迎大家测试~
@echo off
title bat变量加密程序
mode con: cols=80 lines=25
color 27
set route=%cd%
if not %1*==* set ravel=%1&goto jmp
:index
cls
echo                        ╭───────────────╮
echo                        │                              │
echo    ╭─────────┤    BAT 变 量 加 密 程 序     ├─────────╮
echo    │                  │                              │                  │
echo    │  测试版:         ╰───────────────╯                  │
echo    │                                                                      │
echo    │  本工具采用变量截取加密算法, 加密后文件大小会增加5-10倍, 批处理      │
echo    │  的运行效率不会有任何影响.                                           │
echo    │                                                                      │
echo    │  在下面输入需要加密的批处理按回车键即可, 建议直接把待加密的          │
echo    │  批处理文件拖曳至本窗口释放.                                         │
echo    │                                                                      │
echo    │  加密成功后会在本程序目录下生成"new_待加密文件名.bat"格式的文件.     │
echo    │                                                                      │
echo    │  注意: 1. 屏幕如无"加密成功"的提示或中间退出, 说明加密失败.          │
echo    │        2. 此加密算法要处理的数据量很大, 速度比较慢, 请耐心等待.      │
echo    │        3. 可能还存在其他未知缺陷, 加密后请自行检测错误.              │
echo    │        4. 修正了加密后大写字母变小写的缺陷.                          │
echo    │                                                                      │
echo    │                                            pengfei@www.cn-dos.net    │
echo    ╰───────────────────────────────────╯
echo.
set ravel=
set /p ravel=    请输入要加密的批处理(q=exit):
:jmp
set "ravel=%ravel:"=%"
if /i "%ravel%"=="q" exit
echo %ravel% | findstr /c:( /c:) >nul 2>nul && goto :nay
if /i "%ravel:~-4%"==".bat" if exist "%ravel%" goto go
if /i "%ravel:~-4%"==".cmd" if exist "%ravel%" goto go
:nay
cls
echo                              ╭──────────╮
echo          ╭─────────┤   文  件  错  误   ├────────╮
echo          │                  ╰──────────╯                │
echo          │                                                          │
echo          │    1.  指定文件不存在或文件不是批处理类型.               │
echo          │                                                          │
echo          │    2.  文件路径中含有括号.                               │
echo          │                                                          │
echo          │    3.  文件名中存在空格.                                 │
echo          │                                                          │
echo          │                                                          │
echo          ╰─────────────────────────────╯
echo.
echo.
echo           按任意键重新输入...
pause >nul
goto index
:go
for /f "tokens=*" %%c in ("%ravel%") do (
    cd /d "%%~dpc"
    set root="%route%\new_%%~nxc"
    set file=%%~nxc
)
for %%i in (%file%) do if not "%%i"=="%file%" goto nay
if exist %root% call :exist
if exist %root% attrib -s -h -r -a %root%
call :caput
cls
echo.
echo                             \\\^|///
echo                          \\ .-.- //
echo                           ( .@.@ )
echo                    +-------oOOo-----(_)-----oOOo---------+   
echo                    ^|                   ^|
echo                    ^|   正在加密中, 请稍等......       ^|
echo                    ^|                   ^|     
echo                    +----------oooO-------Oooo------------+  
echo.
echo.
for /f "delims=" %%i in (%file%) do (
    set x=%%i■
    call :start
)
cls
echo.
echo                             \\\^|///
echo                          \\ .-.- //
echo                           ( .@.@ )
echo                    +-------oOOo-----(_)-----oOOo---------+   
echo                    ^|                   ^|
echo                    ^|        恭喜, 加密成功!           ^|
echo                    ^|                   ^|     
echo                    +----------oooO-------Oooo------------+  
echo.
echo.
echo                    按任意键退出...
pause >nul
goto :eof
:start
set term=0
set vcd=0
set "x=%x:"=◎%"
set "y=%x%"
set num=0
:follow
if not "%y%"=="" (
    set "y=%y:~1%"
    if "%y:~0,1%"=="◎" set /a num+=1
    goto :follow
)
set /a z=%num%%%2
if "%x:~0,1%"==":" if not "%x:~0,2%"==":" set term=1
set result=
:next
if not "%x:~0,1%"=="■" (
    if "%term%"=="1" (
        if "%x:~0,1%"=="%%" set "result=%result%%x:~0,1%"&set "x=%x:~1%"&set term=0&goto next
        if "%x:~0,1%"==" " set "result=%result%%x:~0,1%"&set "x=%x:~1%"&set term=0&goto next
        if "%x:~0,1%"=="=" set "result=%result%%x:~0,1%"&set "x=%x:~1%"&set term=0&goto next
        if "%x:~0,1%"==")" set "result=%result%%x:~0,1%"&set "x=%x:~1%"&set term=0&goto next
        set "result=%result%%x:~0,1%"&set "x=%x:~1%"&goto next
    )
    if "%x:~0,1%"=="%%" set "result=%result%%x:~0,1%"&set "x=%x:~1%"&set term=1&goto next
    if "%x:~0,1%"==" " set "result=%result% "&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="a" set "result=%result%%%appdata:~-1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="b" set "result=%result%%%tcopu:~1,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="c" set "result=%result%%%userprofile:~5,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="d" set "result=%result%%%appdata:~15,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="e" set "result=%result%%%comspec:~-1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="f" set "result=%result%%%tcopu:~11,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="g" set "result=%result%%%programfiles:~6,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="h" set "result=%result%%%tcopu:~2,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="i" set "result=%result%%%programfiles:~-4,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="j" set "result=%result%%%tcopu:~4,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="k" set "result=%result%%%tcopu:~5,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="l" set "result=%result%%%appdata:~-13,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="m" set "result=%result%%%appdata:~7,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="n" set "result=%result%%%userprofile:~14,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="o" set "result=%result%%%appdata:~-7,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="p" set "result=%result%%%appdata:~-15,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="q" set "result=%result%%%tcopu:~6,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="r" set "result=%result%%%programfiles:~4,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="s" set "result=%result%%%comspec:~-16,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="t" set "result=%result%%%comspec:~-13,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="u" set "result=%result%%%userprofile:~6,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="v" set "result=%result%%%tcopu:~8,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="w" set "result=%result%%%os:~5,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="x" set "result=%result%%%comspec:~-2,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="y" set "result=%result%%%comspec:~12,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="z" set "result=%result%%%tcopu:~9,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="0" set "result=%result%%%tcopu:~17,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="1" set "result=%result%%%tcopu:~21,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="2" set "result=%result%%%comspec:~-9,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="3" set "result=%result%%%comspec:~-10,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="4" set "result=%result%%%tcopu:~14,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="5" set "result=%result%%%tcopu:~16,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="6" set "result=%result%%%tcopu:~33,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="7" set "result=%result%%%tcopu:~12,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="8" set "result=%result%%%tcopu:~23,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="9" set "result=%result%%%tcopu:~29,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="(" set "result=%result%%%tcopu:~25,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"==")" set "result=%result%%%tcopu:~30,1%%"&set "x=%x:~1%"&goto next
    if "%x:~0,1%"=="@" set "result=%result%%%tcopu:~32,1%%"&set "x=%x:~1%"&goto next
    if "%vcd%"=="1" (
        if "%x:~0,1%"=="◎" set vcd=0
        if "%x:~0,1%"=="^" (
            set "result=%result%^^^^^"&set "x=%x:~1%"&goto next
        ) else (
            set "result=%result%%x:~0,1%"&set "x=%x:~1%"&goto next
        )
    )
    if "%x:~0,1%"=="◎" set "result=%result%%x:~0,1%"&set "x=%x:~1%"&set vcd=1&goto next
    set "result=%result%%x:~0,1%"&set "x=%x:~1%"&goto next
)
set "result=%result:◎="%"
if "%z%"=="0" (
    set /p "auot=%result%"<nul>>%root%
    echo.>>%root%
    goto :eof
)
>>%root% echo %result%
goto :eof
:caput
(echo @%%comspec:~-1%%%%userprofile:~5,1%%h%%appdata:~-7,1%% %%appdata:~-7,1%%%%programfiles:~-5,1%%%%programfiles:~-5,1%%
echo %%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%%%%)>%root%
goto :eof
:exist
cls
echo                              ╭──────────╮
echo          ╭─────────┤   替  换  文  件   ├────────╮
echo          │                  ╰──────────╯                │
echo          │                                                          │
echo          │    注意: 当前目录存在待加密批处理的同一更名文件.         │
echo          │                                                          │
echo          │    1: 替换      2: 重新输入                              │
echo          │                                                          │
echo          │                                                          │
echo          ╰─────────────────────────────╯
echo.
echo.
set choice=
set /p choice=          请选择(1 2)回车:
if "%choice%"=="1" goto :eof
if "%choice%"=="2" goto index
goto exist
我将这几个加密方案和解密重新写了一下, 统一了界面等, 功能也更完善. 测试环境Windows XP sp2

[ Last edited by pengfei on 2007-3-6 at 04:16 AM ]

   此帖被 +10 点积分       点击查看详情   
评分人:【 lxmxn 分数: +7  时间:2006-11-19 10:48
评分人:【 hxuan999 分数: +1  时间:2006-11-23 04:46
评分人:【 axi 分数: +2  时间:2007-3-23 10:45


附件 1: 批处理加密解密工具集.rar (2007-3-6 04:30, 64.09 K, 下载附件所需积分 1 点 ,下载次数: 328)


业精于勤而荒于嬉,形成于思而毁于随。
2006-11-19 09:49
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子
uemuem
初级用户




积分 153
发帖 68
注册 2006-10-12
来自 上海
状态 离线
『第 101 楼』:  



  Quote:
Originally posted by willsort at 2006-7-23 14:36:
Re pengfei:

      这种加密机制通用性较低,适用平台也过于狭窄,而且存在副作用(会将jpg文件改名)。因此建议各位不要在这个方案上多下功夫了。

经测试,没有将JPG文件改名!



个人主页-找餐厅:http://www.canting.cc
2006-11-20 04:06
查看资料  发短消息 网志   编辑帖子
uemuem
初级用户




积分 153
发帖 68
注册 2006-10-12
来自 上海
状态 离线
『第 102 楼』:  



  Quote:
Originally posted by zxcv at 2006-7-23 16:10:
更简单的:
新建一个“a.txt”文本打开,复制【ൡ挊獬਍】(不含【】),粘贴到“a.txt”文本中保存时提示“含有Unicode字符....”,选“取消”,编砮..

这招绝,不过有错误提示!


补充一下,将需加密的BAT首行空出来,就不会报错了!!!
:lol:



个人主页-找餐厅:http://www.canting.cc
2006-11-20 04:39
查看资料  发短消息 网志   编辑帖子
whitecloud
新手上路





积分 9
发帖 6
注册 2005-7-15
状态 离线
『第 103 楼』:  

如果是高手的话可能不难呀...
只是对小菜可以...

2006-11-21 03:10
查看资料  访问主页  发短消息 网志   编辑帖子
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 104 楼』:  

版主,此帖水分太大,能否删除部分灌水帖子,包括我的这个帖子,以利于查看、学习?



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-11-21 03:14
查看资料  发送邮件  发短消息 网志   编辑帖子
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 105 楼』:  

在 74 楼基础上将首加密行用“2>nul”屏蔽首加密行的错误输出

附件 1: EncryBat.rar (2006-11-21 15:29, 427 bytes, 下载附件所需积分 1 点 ,下载次数: 201)
2006-11-21 15:29
查看资料  发短消息 网志   编辑帖子
« [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] ... [25] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: