找一个文本文件用protecter.exe以密码abc和abcd分别加密两次,左右比较一下:
明文在这:
http://i26.tinypic.com/1tk9xy.png
密码在这:
http://i25.tinypic.com/2i1coht.png
[ 本帖最后由 ☉☉ 于 2008-2-20 14:43 编辑 ] 昏倒......木有加密算法了, 2楼的不用问了 原帖由 corba 于 2008-2-20 13:41 发表 http://www.dolc.de/forum/images/common/back.gif
对破解很感兴趣,看界面貌似是C++写的
嫩不用感兴趣了。另外貌似不是C++,貌似是BORLAND DELPHI $汗$
[ 本帖最后由 ☉☉ 于 2008-2-20 14:55 编辑 ] 用zip就可以对文件进行加密了。
lz你是要用加密算法的控件还是要研究加密算法。 虽然对密码每位的ASCII进行了运算,不过实际上这函数还是可逆的。另外,信息仍然是明文。
不知道你是怎么理解加密。
[ 本帖最后由 ☉☉ 于 2008-2-21 00:51 编辑 ] 还是那句老话,东西做差不多了再拿出来。这里不是菜鸟喳喳,简单的东西就没必要展示了。
看楼主的意思是想做个本身带GUI的绿色软件,那么我想最少有两个条件要满足,第一是要简小精悍,这个学软件的都懂,即使是GUI也要写最精悍的GUI。第二就是功能要强大,既然是加密那么就要够健壮,30位密码的MD5似乎挡不住穷举吧。
偶的建议,一是既然绿色最好那就是平台无关,java是最好选择。第二是用二进制就能看到结构的文件不是什么好文件,DELPHI也不是正确选择。用C++或者JAVA编译下来的文件效果会更好。 尽管楼主这次发的东西比较简单, 但做事情的态度很值得称赞$ok$
12楼的, MD5的文档你还没看过吧? 另外"绿色软件"跟"平台无关"完全是两个概念, 和Java有关系? 用Java编译, 至少用户还得装个Java虚拟机吧, 哪称得上绿色? MD5不是加密算法吧?就是个hash函数,加不了密 楼上的你也别动气了。他们说你并不是因为要贬低你懂得少,但你文件不加密,通过一个密码验证来获取文件,这个意义何在?用zip或者rar加密岂不更方便?
上面说的快速破解可能是夸张了点,但并非不可能,关键是看你如何加密的了。尤其是你使用现成的加密模块而不做自己的处理。懂解密的人,还是很有机会知道你用什么方法加密的。
比方你用2个加密算法进行加密:
加密函数1(text)=密文
加密函数2(密文)=密文2
如果破解者了解这2个加密算法的特征,就完全可以破解你。
至于上面那位说delphi不好,这个没什么道理。skype就是跨平台的,它也是用delphi写的。工具只要自己用的顺手就可以了。再说,做应用程序方面,的确是delphi方便。 楼主主要是想探讨生成exe自解压文件的方法,加密的问题好像开始没在意。
delphi python java c++等等都是成熟稳定的语言并且有多平台编译器。各有特长没啥可争的。
回复 17# 的帖子
"如果破解者了解这2个加密算法的特征,就完全可以破解你"这句话不成立,
加密算法设计的假设之一就是在破解者知道加密算法,但是不知道密码的前提下,无法短时间破解出明文 学info既不能自认为不是菜鸟,也请不要把其它人都当成傻瓜。
MD5相信学INFO的都知道,基本算法而已。是一种不可逆的编码算法,因此要“还原”出原始密码就只能用穷举法。使用公开的 MD5 算法模块,在P4-1.5G的机器上一秒钟就可以尝试约20000个号码,何况还有密码字典。楼主用的,无非是把用户输入的密码计算成MD5值,然后再去和保存在文件中的MD5值进行比较,再确定输入的密码是否正确。不过楼主连信息都没有加密,说起来也没什么意义吧。何况MD5是用来保证数据完整性的,用来加密密码,似乎是免为其难了。
没人说绿色软件和平台无关是一回事。绿色的概念是免注册,免系统改动,这个地球人都知道。平台无关是对楼主的建议。
JAVA平台怎么了?现在有机器不装java虚拟环境的么?起码有现成的GUI支持,也不用只在windows下玩小跑吧。没有小瞧楼主的意思,也没有质疑楼主的编程能力。不过照楼主这类开发的手法和这种接纳的态度,似乎和ICPC的头衔相去太远吧。
[ 本帖最后由 corba 于 2008-2-22 01:01 编辑 ] 原帖由 corba 于 2008-2-22 00:33 发表 http://dolc.de/forum/images/common/back.gif
学info既不能自认为不是菜鸟,也请不要把其它人都当成傻瓜。
MD5相信学INFO的都知道,基本算法而已。是一种不可逆的编码算法,因此要“还原”出原始密码就只能用穷举法。使用公开的 MD5 算法模块,在P4-1.5G的机器 ...
ICPC的头衔??
我多说句废话,学INFO不能急噪,不能太功利. 对于生成的文件,用HEX编辑器,比如ultraedit,找到007A5DD偏移处,
把此处的 85 改成 84 保存
不用输入密码既可以打开
(附加信息 仅对于目前2008-2-22 10:13楼主更新的那个版本)
PS . 为啥这个版不能上传附件。$怒吼$
http://i29.tinypic.com/fcug4.png
[ 本帖最后由 ☉☉ 于 2008-2-22 14:13 编辑 ] 仅对于楼上2008-2-22 15:45那个版本:
protector.exe 在81D02h字节偏移处 85 改 84 ,可以不用输入密码restore任何文件。
再来我可不玩了,disassembler不是好玩的。 xue xiao you jia mi fang xiang de jiao shou he ke cheng, xia xue qi zhun bei xuan. suan zuo Math de Nebenfach.
da jia bu yao xiao hua lz. zhong guo xue shu huan jing bu hao zhi chu jiu shi Pin Ping duo yu Gu Li... 呵呵,能理解楼主,也支持楼主。每个人都有自己的经验积累过程。要不断的完善自己我们需要动力,而这种动力很多时候就来源于每一阶段的成就感。相信楼主当初发这个小软件也就是觉得自己做了一个挺实用的小软件。虽然在这里有大家的褒贬不一的评价,但楼主确实学到了很多东西,也有了更大的进步,这就是收获。我们自己常常回顾过去引以为自豪的东西,也会感觉到那时候的幼稚(呵呵,褒义哟)。 这说明我们进步了。不好意思,罗嗦了,因为觉得楼主的现在和以前的我很像。呵呵。
顺便给楼主一点我的建议,呵呵,我对加密不是很懂,只是随便说说。
既然楼主已经能够将用户密码通过MD5加密,那么用户密码大家是不可能从文件中看到了,就认为从生成文件的角度看,密码是安全的。就以这个密码为明文加密基础,楼主可以对文件按如下步骤加密:
1.将用户密码成为变量PASS_ORI, 生成后的MD5 成为PASS_MD5
2.二进制读取Source文件,每次读取用户密码长度个单位(Len(PASS_ORI)),放到一个变量里面,这里就叫ORI_CONTEXT. 一直到文件读取结束. 每读取一组后,对ORI_CONTEXT 和PASS_ORI进行XOR运算,依次写入新文件。呵呵,为什么要进行这个运算呢,其实这就是最简单的可还原运算.反正用户密码是基础, 用户密码不正确,也就不能正确还原。
3.还原的时候当然先根据用户输入的密码进行MD5运算,然后和PASS_MD5比较,如果正确,用这个用户密码再对秘文进行XOR运算。这样就可以得到原文了。当然我只说了基本原理,里面还有一些常规处理,比如字节长度等等,这个楼主可以自由发挥。
比方 用户的明文是ABC, 用户密码是 CDF
ABC XOR CDF = 密文
密文 XOR CDF = ABC XOR CDF XOR CDF = ABC
那么我们看一下这样做究竟如何保证安全性:
密码比对是通过与产生文件中的MD5比较的,假设别人更换了产生文件中的MD5码(通过二进制编辑器),那么可以绕过楼主的密码验证这一关。
绕过了这一关以后,因为对方依旧没有正确的密码,所以在进行XOR运算时,是不可能还原出原值的。恢复的文本也就不正确。
其实基于这个基础,楼主还可以用MD5对文件进行校对,防止用户恶意更改文件中的部分数据已达到欺骗的目的. 好像楼上有人这么做得。方法就是先按照上面方法产生加密文件,然后对全文件进行MD5加密得到文件校对码,由于这个校对码是定长度,可以将校对码插入文件中的一个位置,呵呵,不要放在最后,放在最后别人连校对码一起改了。这个位置可以由用户密码的某种运算来决定。反正这些都是自由发挥的拉。。。。
核心运算伪代码:
encrypt(source, destination, usrPass)
{
destination.write(applicationInfo);
PASS_MD5 = MD5_algo(usrPass);
destination.write(PASSMD5);
while (!source.end)
{
ORI_TEXT = source.read(Len(UsrPass));
if (LEN(ORI_TEXT) < LEN(UsrPass))
{
TempUsrPass = UsrPass.sub(0, LEN(ORI_TEXT);
}
else
{ TempUsrPass = UsrPass;}
ENCRYPT_TEXT = ORI_TEXT XOR TempUsrPass
destination.write(ENCRYPT_TEXT);
}
}
解密的,还有校正的楼主自己写吧。
其实我个人觉得好的加密方法都是在知道加密算法的基础上还不能解密。完全依赖于密码。
呵呵,我就是突发奇想,可能有很多没考虑到,也许方法就是完全不对的。欢迎大家拍转。目的就是给楼主提供一些思考这个问题的方法而已。
[ 本帖最后由 lovely1234 于 2008-2-26 21:49 编辑 ]
页:
[1]