中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-27 08:48
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创][讨论]非编译型批处理加密方案与代码 精华I 查看 112,746 回复 364
16 发表于 2006-07-21 17:23 ·  中国 福建 泉州 石狮市
银牌会员
★★★
积分 1,276
发帖 469
注册 2002-12-23 13:00
23年会员
UID 586
性别 男
来自 福建泉州
状态 离线
7楼的强,不知是什么原理.不过使用DOS的TYPE就可以看到了.
只要不使用WINDOWS的记事本打开就可以看到了.

好像目前并没有能够很好的加密.BAT的软件.
像QuickBFC.EXE之类的只不过是将BAT文件打个包,运行时就先解压这个.BAT文件到一个目录下,然后再运行的.
QQ:366840202
http://chenall.net
17 发表于 2006-07-21 21:46 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
没看懂7楼的代码

有一种方法貌似可以骗一下小朋友:把bat换行的 0D 0A 改成 0A,貌似会给阅读造成一定的麻烦

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'>"
18 BAT文件加密法 (比Bat2Com那个软件好使<因为那个软件不支 发表于 2006-07-22 01:18 ·  中国 北京 电信
初级用户
积分 49
发帖 13
注册 2006-07-13 11:21
20年会员
UID 58500
状态 离线
想将加密的文件 还原回来 就要用记事本 另存为 时 编码格式 替换成 "UTF-8" 但最好还是在加密之前 做好备份 !因为 有时 不会还原成功!最后还是感谢大家的支持!
19 发表于 2006-07-22 08:54 ·  中国 北京 联通
银牌会员
★★★
DOS联盟捡破烂的
积分 1,144
发帖 425
注册 2005-10-20 00:00
20年会员
UID 43784
来自 北京
状态 离线
7楼的代码还真能够起到加密的作用,不知道是什么工作原理,想不出来,想不出来,不过还是顶一下,强!!!!!!!!

能否问一下7楼,这段代码是你自己想的,还是从哪里看到的?如果是自己想的请说说工作原理,如果是从别处看的,那就算了.......谢谢..........

[ Last edited by bagpipe on 2006-7-22 at 08:55 ]
20 感谢 第 19 楼 的哥们 发表于 2006-07-22 11:03 ·  中国 北京 电信
初级用户
积分 49
发帖 13
注册 2006-07-13 11:21
20年会员
UID 58500
状态 离线
这个方法 的确不是从别的地方找得 这点我敢确定 其实这个加密技术 也是我 不经意 发现的 要说是 什么原理呢 我估计 这是WINDOWS的一个BUG 就像 用记事本写一个词 “联通”(不加引号)是的,另存完后也会变成乱码的 不信可以试一试!
21 发表于 2006-07-22 12:47 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
7楼的方法怎么是一次性啊?
第二次就不管用了?
22 发表于 2006-07-22 16:08 ·  中国 广东 清远 联通
初级用户
积分 62
发帖 25
注册 2006-04-27 01:01
20年会员
UID 54520
状态 离线
伸出食指和中指,稍微分开大概20度角,然后插、插、插、、攻击对方眼球^_^
23 关于使用一次就失效的解决方案 发表于 2006-07-23 07:39 ·  中国 北京 电信
初级用户
积分 49
发帖 13
注册 2006-07-13 11:21
20年会员
UID 58500
状态 离线
解决方案为 将for /l %%a in (1,1,10) do ren *.jpg %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a

这段代码复制然后粘贴在后面 直到 成功实行 “加密”的结果了 ! 大家可以试试!并谢谢大家的支持!
24 发表于 2006-07-23 10:35 ·  中国 四川 成都 鹏博士宽带
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  从yuanyong630在18楼的描述来看,似乎是改变了记事本保存该bat的编码来达到保密的目的。怎么我的一次都没有成功?XP+SP2的系统。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
25 发表于 2006-07-23 12:15 ·  中国 山西 大同 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re namejm & others:

关于 yuanyong630 兄的加密方案,你的思路是正确的,只是有少许偏差。

记事本程序在保存一篇新建的文档时,如果没有指定编码类型,会使用缺省的ANSI类型(对于中文版来说,对应的就是GB码)。

而在打开一篇已创建的文档时,它会分析文档的编码类型,它首先判断文档头部有无BOM(Byte Order Mark,字节序标记,长度为2~3字节),如果有则根据其内容判断编码类型,FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)。

因为事实上有很多非ANSI编码的文档是没有任何BOM的“纯文本”,所以对这些文档不能简单的判断为ANSI编码。而需要使用一系列的统计学算法根据文档内容来猜测文档编码。记事本使用了 IsTextUnicode 函数来判断是否为 Unicode/Unicode big endian 编码,使用 IsTextUTF8 判断是否为 UTF8 编码。

但既然是统计学算法,就难免存在误判,尤其在文档内容过短时,由于样本的容量太小,这种误判的概率会显著增大。比如那个有名的微软与联通有仇的笑话,就是记事本在打开只有"联通"二字的ANSI编码文档时,IsTextUTF8 函数将其误判为UTF8编码;同样的误判也发生在 IsTextUnicode 函数上,比如具有 “this app can break”这种具有4335结构的文档,会被误判为 Unicode 编码。

需要说明的是,这种误判的可能性是建立在文本较短且其字节位特征不被干扰的前提上的。如果将上述的文本做稍许修改(即使只是增加一个回车),则误判很难再发生。

而 yuanyong630 兄方案的特殊性在于,它的字节串不但具有Unicode特征,而且很长达到了1288字节,也就是说它的Unicode特征性很强,所以可以抵抗一些较短的不具有Unicode特征串的干扰,这是由统计学的规律所决定的。但是在干扰串稍长时,Unicode的特征将会受到显著干扰,直至被 IsTextUnicode 函数认定为非 Unicode。所以,有些朋友总是无法测试成功,应该是与附加的批处理代码长度和内容相关。大家可以测试一下中的代码。

因为其他的编辑器(比如 Word / Wordpad / EditPlus / UltraEdit)使用了更新的编码类型判断算法,所以在 Unicode 判断上改进了不少,而 UTF8 的判断仍然不尽如人意。但因为理论上来说完全准确地算法并不存在,所以我们只能依靠避免使用无BOM的非ANSI文档,或者打开文档时手动指定编码类型。

另外,如果使用记事本保存了这些误判了编码类型的文件,则将难以恢复。如果使用误判编码保存,则将给原文档加上BOM标记,则使用其他编辑器也再无法观察到原文档。如果使用 ANSI 编码保存,则原文档将会被当作 Unicode 文档而被转换,还原的可能性接近于零。

Unicode简介
http://my.opera.com/neutronstar/blog/index.dml/tag/编码

微软为什么和联通有仇
http://blog.vckbase.com/localvar/archive/2005/07/12/9510.aspx

Notepad bug? Encoding issue?
http://weblogs.asp.net/cumpsd/archive/2004/02/27/81098.aspx

Bush Hid The Facts
http://www.shoutwire.com/comments/16341/Bush_Hid_The_Facts

cry.cmd

for /l %%a in (1,1,10) do ren *.jpg %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a
@echo off
echo bbs.cn-dos.net
echo.
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
26 发表于 2006-07-23 12:27 ·  中国 山西 大同 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re electronixtar(17):

对于将 0d 0a 改为 0a 的方法,不如将之改为 0d 。也即将回车换行改为只回车不换行,则当前行的文本会被没有换行的文本行所覆盖,如此反复覆盖叠加。如果在批处理的最后一行添加一句长度大于以上所有行的注释文本,则最终只会显示这样注释。

这样的方法,对EDIT和TYPE是有效的,所以在DOS时代曾一度流行。不过,这个方案与yuanyong630兄的方案类似,只是针对于特定文本处理器的特定文本处理机制,无法适用于所有平台环境。

至于其他的加密方法,也各有缺陷,想达到软件工程的要求是比较困难的。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
27 [原创][CMD]批处理非编译型加密方案与代码 发表于 2006-07-23 13:24 ·  中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
20年会员
UID 58987
来自 湖南.娄底
状态 离线
首先多谢 yuanyong630 提供的加密代码, 我只是利用它写了这个工具,方便大家使用


修改了版主提示的更改图片文件名称的缺陷,一共提供四种加密方式.

[ Last edited by pengfei on 2006-10-2 at 09:12 ]
附件
BAT加密工具.rar (978 bytes, 下载附件所需积分 1 点, 下载次数: 2056)
28 发表于 2006-07-23 13:43 ·  中国 辽宁 大连 教育网
中级用户
★★
DOS之友
积分 332
发帖 168
注册 2005-10-06 00:00
20年会员
UID 43171
性别 男
来自 天涯
状态 离线
在我这里测试不成功.不管是用一还是用二 都是在我的代码前面加入了下列代码
for /l %%a in (1,1,10) do ren *.jpg %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a
测试环境: windows xp pro sp2 高手是这样炼成的:C:\WINDOWS\Help\ntcmds.chm
29 发表于 2006-07-23 13:58 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
试了一下,发现只有开始第一行开始为“@echo off”的才能加密成功,但也不是所有得都可以
加密后记事本打开也是乱码,可以执行

[ Last edited by zxcv on 2006-7-23 at 14:01 ]
30 hgf 发表于 2006-07-23 14:03 ·  中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
20年会员
UID 58987
来自 湖南.娄底
状态 离线
'lkj;l

[ Last edited by pengfei on 2007-1-22 at 10:43 AM ]
论坛跳转: