中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 03:14
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区 » 寻一位会GRUB的朋友合作
可打印版本  3,672 / 23
第16楼 lianjiang2004 发表于 2007-03-19 20:46
金牌会员 发帖 1,884 积分 3,946
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是变值。
第17楼 oumiga 发表于 2007-03-20 00:14
初级用户 发帖 22 积分 154
输入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 ]
第18楼 lianjiang2004 发表于 2007-03-20 00:36
金牌会员 发帖 1,884 积分 3,946
当启动时,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是变值。

难道我还没说明白? 还是你理解问题?呵呵。
第19楼 lianjiang2004 发表于 2007-03-20 00:39
金牌会员 发帖 1,884 积分 3,946
这个时候,用户要输入旧密码999,再次转成MD5(此时应该是md5_2),
-------------------
应是MD5_1,不是md5_2。
MD5_1用于win下验证,MD5_2用于grub验证。
第20楼 oumiga 发表于 2007-03-20 00:56
初级用户 发帖 22 积分 154

应是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值,这个值是不会变的。
第21楼 lianjiang2004 发表于 2007-03-20 01:08
金牌会员 发帖 1,884 积分 3,946
假如你仔细看了我的回答,应早就该明白我说的了。
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。

看来至今你没明白我说的。
不过,不管如何,你现在自己已解决了,尽管我说了好多废话。呵呵。
第22楼 oumiga 发表于 2007-03-20 02:21
初级用户 发帖 22 积分 154
呵呵,老兄,你要是在3楼时,直接再点一下WIN下的MD5用于修改密码,我就不考虑GRUB MD5的值了,也不用上到22楼了,这么累,呵呵
第23楼 lianjiang2004 发表于 2007-03-20 05:51
金牌会员 发帖 1,884 积分 3,946
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比较,相同则输入新密码。” 难道不是说用与修改密码的吗? 呵呵。
第24楼 qsj 发表于 2007-03-20 08:59
初级用户 发帖 34 积分 70
grldr的内置菜单,可以用ultraedit打开编辑!
上一页  1 2
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023