[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 34# defanive


       我的想法类似于batman,不过用关键代码将全局代码封锁起来并不怎么容易实现,我想使用一种算法来加密:
       用SET语句、FOR语句等进行数学运算。这种算法应该可以实现,将所有计算过程变得随机些,然后获取一个关键的数字,缺乏这个数字代码就无法成功执行,算法之类的可以参考RSA等。就目前所见过的批处理代码而言,即使再困难的代码都可以阅读出来,但数学题,即使写给你看你不一定会做。如果我把关键的算式抽走,那么代码就无法成功执行了。比如,写一个关于计算圆周率的代码,如果其中某些地方出错,代码就无法成功执行了,但你知道圆周率的结果,却不知道我们私下设置的密码的结果。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 33# batman
我也有这个想法。与其让破解者删掉if判断,不如让密码从根本上影响整个批处理的运行。最好再结合上文件自检MD5(当然也不是if检查,像密码一样作为往后代码的一部分)。不过有心者必然能破解,但是任何本机运行的加解密代码都是不安全的。我们能做到的是让破解者认为破解密码带来的代价比不上收获就可以了。
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

本帖最后由 batman 于 2012-2-28 12:31 编辑

这就是以前写的,代码和密码融为一体
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p code=请输入运行密码:
  3. set "zw=for %%i in (%code%) do "&set "wz=set "&set "ww=call :zh"
  4. %ww%
  5. !_5!!_3!!_8!!_15! !_2!!_2!!_19!.!_2!!_1!!_20!!_8!!_15!!_13!.!_3!!_14!
  6. !_16!!_1!!_21!!_19!!_5!
  7. :zh
  8. %zw%(%wz%/a n+=1&%wz%_!n!=%%i)
复制代码
1

评分人数

    • ivor: 很复杂哟,没看懂技术 + 1
***共同提高***

TOP

回复 31# batman


    在代码中提取密码总要储存在一个变量内 被别人echo或set一下就看到了

TOP

在本人看来:
唯一不能被暴破以及不会在文本中被找到的批处理密码是和代码融为一体的密码
以前本人曾写过这样一段代码但是因为实用性太差就没有继续下去了。。。
个人终极结论:在批处理中进行加密和设置密码基本属于吃饱了撑了型(研究除外)
***共同提高***

TOP

本帖最后由 lllsoslll 于 2012-2-28 10:56 编辑

思考了下:
有效防止密码被破解的一个途径就是让程序中没有跳转,而且,程序的每一行代码与上一行代码都有依存关系,这种依存是和密码唯一相关的,这样要破解就相当于重写程序;而且,需要破解者完全掌握了你代码的整体框架和思路才行;

可想这样的防破解程序可读性会很差,自然也使得效率降低;这对bat这正开源脚本来说很不符。

不过如果是娱乐的话,看来这是一个很有意思的研究。。。
SOS --- >> lllsoslll@163.com

TOP

回复 27# cjiabing


    如果密码存于某个变量 直接在输入前echo

TOP

回复 25# batman


    简单用变量延迟就不怕特殊输入了,我觉得批处理的硬伤还是开源,随便改写一下就知道密码了(甚至不需要密码),不过话说回来,所有软件的密码验证到了汇编层也都是脆弱的...

TOP

本人谈谈在批处理中设置密码的情况。
      在批处理程序上设置密码与批处理作为一个开源脚本的特点有冲突。对于我们而言,批处理没有太多的秘密,只要你右键打开批处理你就能把批处理的五脏六腑看个一清二楚,即使运行时需要密码,你都可以在编辑的情况下查到密码。因此,在批处理上设置密码有点“多此一举”。解决这个问题的办法就是,将批处理进第二次编码,转换为其他语言或模式。至于现在的批处理加密,在开头多加几个%基本上算是小儿科。对于运行程序使用if code==%input% echo ok判断密码是否正确更是让人汗颜,这样的话,只要你打开记事本查看代码,密码就躺在IF语句里。批处理脚本比起html语句来也并非那么复杂呢!
     考虑到现代密码的要求是,公开算法和加密方法,那么,批处理的算法是公开了,公钥和私钥却无法掌握。在批处理中运用数学来设置代码可能会比较实在一些,因为会看批处理的人还得会算数学题,特别是会找素数!就是让你看见了你也没办法,批处理加密要实现的就是这个目标。
     最后,还是很无奈的一个问题,就是即使你添加了一段可以加密的代码,不输入正确的密码你就无法继续运行bat,但只要你打开编辑,绕过这一段代码,那么,设密也就形同虚设了。
     所以,将bat转为exe等其他程序文件,利用外部加密才是最有效的办法。
     当然,在批处理内设置不了密码,但不妨碍用批处理给其他程序编码和解码,批处理能做的也就是这些了。
     至于动态密码,你动或者不动,批处理就在那里,你用记事本打开就看见密码了!~
1

评分人数

    • ivor: 算法是不分语言的,慢慢积累技术 + 1
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

其实批处理是原码运行,设置什么密码都没有多大用处。 我曾经用过在你想要的机器上可以运行,复制在其他机器上不可运行。别人把 那段删除,一切都。。。。。。。

TOP

批处理有必要设置密码吗?

对不一点都不懂的人肯定是不需要

对于懂的人你再设密码别人一个特殊输入就能完暴你的密码

至于如何完暴?

大家从批处理中的密码验证上多想一想吧
1

评分人数

    • ivor: 不看源码,怎么爆破 - -!技术 + 1
***共同提高***

TOP

回复 23# find

可以显示 验证码什么的不显示你知道验证码是什么吗?

TOP

回复 22# jinzeyu


所谓随机数,就是连你自己都不知道它下一个值是什么,又如何去推算密码呢?

TOP

生成一个四位随机数
如:1234
拆分成123 4
即 把123每位+4
密码为567
就是123+444=567


假如是这样的随机数
如 6789
把678每位+9
8+9=17
7+9=16
6+9=15

密码为
0017
0160
1500
-------
1677

就是678+999
1

评分人数

    • ivor: 另一种方法技术 + 1

TOP

本帖最后由 ivor 于 2012-2-26 02:46 编辑

回复 20# plp626


    没必要再加上永久密码,既然我能告诉别人一次性密码,那我肯定随时知道准确密码的。就像find说的一次性密码,这才是有重点。折中来说不能太复杂也不能太简单。除了时间没有更好的办法了额,原理有点像手机密保或者将军令等等。这么说你们应该更明白了吧。
虽然我不知道将军令或者手机密保的算法。基数肯定是时间,不然做不到动态验在证。不需要准确方法,只是让大家说说想法而已。。。。

TOP

返回列表