|
lianjiang2004
金牌会员
积分 3946
发帖 1884
注册 2006-1-20
状态 离线
|
『第
16 楼』:
Quote: | Originally posted by oumiga at 2007-3-19 13:41:
密码同时为999,第一次转成MD5_1保存后,更改密码时输入旧密码,还是999,再转成MD5_2与MD5_1比较时,怎么不一样? 这样旧密码验证是过不去的,请教该如何解决?... |
|
md5_2与md5_1是不一样的。不是md5_2与md5_1比。而是输入的旧密码的md5_1与ini中的md5_1比。一样就验证通过。
前面讲了,md5_1是不变值,md5_2是变值。
|
Windows 一键还原
http://www.yjhy.com |
|
2007-3-19 20:46 |
|
|
oumiga
初级用户
积分 154
发帖 22
注册 2004-5-30
状态 离线
|
『第
17 楼』:
输入999,算出来的MD5_后,替换掉menu.lst中的 密码,然后再写入ini一份MD5_1
当启动时,GRUB就会核对menu.lst中的密码,此时输入999,就过去了,但在WIN下,如果要改密码,首先要核对ini中的md5_1, 这个时候,用户要输入旧密码999,再次转成MD5(此时应该是md5_2),与MD5_1比较,虽然MD5_1与md5_2都是在WIN下设置的密码999,但两次值是不同的,所以,WIN下改密码,此路不通。
我已经找到了解决办法,我用VB生成WIN下的32位或16位 MD5码,这个码是不会变的,我连续转换N次999,其MD5(32位)值还是b706835de79a2b4e80506f582af3676a,MD5(16位)还是e79a2b4e80506f58
因此,我觉得,用WIN下的MD5来核对密码,再修改密码,是比较安全准确的。
在论坛里找了个GRUB MD5的EXE,据说支持SHELL接口(用EXE运行这个MD5得到的MD5值再返回运行它的EXE),但我不会用,我用的是一种笨方法实现的。
现在基本都已搞定,就差测试了
也感谢lianjiang给的思路。让我直接在menu.lst上下手,没去走弯路
[ Last edited by oumiga on 2007-3-20 at 12:17 AM ]
|
|
2007-3-20 00:14 |
|
|
lianjiang2004
金牌会员
积分 3946
发帖 1884
注册 2006-1-20
状态 离线
|
『第
18 楼』:
当启动时,GRUB就会核对menu.lst中的密码,此时输入999,就过去了,但在WIN下,如果要改密码,首先要核对ini中的md5_1, 这个时候,用户要输入旧密码999,再次转成MD5(此时应该是md5_2),与MD5_1比较,虽然MD5_1与md5_2都是在WIN下设置的密码999,但两次值是不同的,所以,WIN下改密码,此路不通。
--------------
上面讲了:
md5_2与md5_1是不一样的。不是md5_2与md5_1比。而是输入的旧密码的md5_1与ini中的md5_1比。一样就验证通过。
md5_1是不变值,md5_2是变值。
难道我还没说明白? 还是你理解问题?呵呵。
|
Windows 一键还原
http://www.yjhy.com |
|
2007-3-20 00:36 |
|
|
lianjiang2004
金牌会员
积分 3946
发帖 1884
注册 2006-1-20
状态 离线
|
『第
19 楼』:
这个时候,用户要输入旧密码999,再次转成MD5(此时应该是md5_2),
-------------------
应是MD5_1,不是md5_2。
MD5_1用于win下验证,MD5_2用于grub验证。
|
Windows 一键还原
http://www.yjhy.com |
|
2007-3-20 00:39 |
|
|
oumiga
初级用户
积分 154
发帖 22
注册 2004-5-30
状态 离线
|
『第
20 楼』:
Quote: | 应是MD5_1,不是md5_2。
MD5_1用于win下验证,MD5_2用于grub验证。 |
|
运行GRUB MD5 将明码“999”加密后,产生的MD5值命名为MD5_1,
MD5_1 替换menu.lst中的旧密码(如果为空,就直接写上去 password --md5 xxxxx),然后再将MD5_1存到ini中(还用MD5_1变量表示),方便下次重设密码,核对旧密码 这步对吧? 问题来了...
当用户在WIN下重设密码时,要求输入旧密码,此时输入明码 “999”,如果再利用GRUB MD5把这次999的MD5值当做md5_2,与ini中的MD5_1比较的话,肯定不会通过了。因为ini中记录的只有一个数据,就是前MD5_1的值,也就是menu.lst中用的MD5密码。
解决办法:
用两个MD5值
首先还是调用GRUB MD5,得到md5_1,替换menu.lst,然后,ini中存的,是MD5_2,MD5_2必需是WIN下的MD5转换值(明码同是“999”,与GRUB MD5产生的MD5值不同),下次用户输入旧密码时,还用WIN下MD5转换为md5_3
再用MD5_3与存在ini中的MD5_2比较,这样就准确定的通过了。
焦点问题:
MD5_1是GRUB MD5产生的MD5值
MD5_2,MD5_3是WIN下MD5产生的32或16位MD5值,这个值是不会变的。
|
|
2007-3-20 00:56 |
|
|
lianjiang2004
金牌会员
积分 3946
发帖 1884
注册 2006-1-20
状态 离线
|
『第
21 楼』:
假如你仔细看了我的回答,应早就该明白我说的了。
3楼:
“关于第一问,我只讲思路。
1,设置密码,对输入密码字符分别用md5生成校验码(md5_1,此值不变)和生成grub用md5密码(md5_2,此值变),写入(或替换)文件比如pwd.ini。同时把生成的md5_2写入或替换掉menu.lst中旧密码。此密码将在启动grub时要就验证。
2,重设密码。输入就密码,生成md5_1,与pwd.ini中md5_1比较,相同则输入新密码。”
我说的md5_1就是你现在说的MD5_2,我说的md5_2就是你现在说的MD5_1。
看来至今你没明白我说的。
不过,不管如何,你现在自己已解决了,尽管我说了好多废话。呵呵。
|
Windows 一键还原
http://www.yjhy.com |
|
2007-3-20 01:08 |
|
|
oumiga
初级用户
积分 154
发帖 22
注册 2004-5-30
状态 离线
|
『第
22 楼』:
呵呵,老兄,你要是在3楼时,直接再点一下WIN下的MD5用于修改密码,我就不考虑GRUB MD5的值了,也不用上到22楼了,这么累,呵呵
|
|
2007-3-20 02:21 |
|
|
lianjiang2004
金牌会员
积分 3946
发帖 1884
注册 2006-1-20
状态 离线
|
『第
23 楼』:
Quote: | Originally posted by oumiga at 2007-3-20 02:21:
呵呵,老兄,你要是在3楼时,直接再点一下WIN下的MD5用于修改密码,我就不考虑GRUB MD5的值了,也不用上到22楼了,这么累,呵呵 |
|
因为我用的两个工具都叫md5.exe,都能运行与windows,且是命令行方式的。
我只能(会)称之一个是生成grub用md5密码(此值变),一个生成的是校验码(此值不变)。
3楼说l了:“重设密码。输入就密码,生成md5_1,与pwd.ini中md5_1比较,相同则输入新密码。” 难道不是说用与修改密码的吗? 呵呵。
|
Windows 一键还原
http://www.yjhy.com |
|
2007-3-20 05:51 |
|
|
qsj
初级用户
积分 70
发帖 34
注册 2006-10-28
状态 离线
|
『第
24 楼』:
grldr的内置菜单,可以用ultraedit打开编辑!
|
|
2007-3-20 08:59 |
|