不知 发表于 2016-11-5 19:31:23

G4D的MD5crypt输出格式是?怎样才能让它能够被password命令使用?

本帖最后由 不知 于 2016-11-5 19:41 编辑

想做个简易密码保护,但是md5crypt好像不能达到预期。
使用命令1:
echo 123456 | md5crypt > (md)0x80000+1 ;;cat (md)0x80000+1 ;; cat --locate=: | set skip= ;; dd if=(md)0x80000+1 of=(md)0x80000+1 bs=1 skip=%skip% ;; dd if=(md)0x80000+1 of=(md)0x80000+1 bs=1 skip=1 ;; cat (md)0x80000+1 | set pass= ;; password --md5 %pass%
输123456验证失败
而直接使用命令2:
password 123456
输123456验证成功。
实际应用时,会把(md)0x80000+1 改为硬盘的某一扇区储存md5值。

chenall 发表于 2016-11-7 10:38:16

以下是从QGHO中提取的部份代码

set /p newpwd=Input New Password: || exit
md5crypt %newpwd% | set newpwd=
set newpwd=%newpwd:~11%
echo
echo -n Verify New Password
password --md5 %newpwd%

不知 发表于 2016-11-6 14:25:08

看来只有使用明文密码了。

不点 发表于 2016-11-6 15:31:51

我不相信,置顶的教程里面没有这方面的内容?

如果确实没有的话,那么在搜索引擎里面搜一搜中文教程,实在不行的话,找找英文教程。“口令加密” 是 gnu grub 原有的内容,不是 grub4dos 新增的内容。因此,grub legacy 里面的教程,不管是中文还是英文,都是适用的。

百度如果不行,可以试试谷歌或其它搜索引擎。

不知 发表于 2016-11-6 16:02:31

不点 发表于 2016-11-6 15:31
我不相信,置顶的教程里面没有这方面的内容?

如果确实没有的话,那么在搜索引擎里面搜一搜中文教程,实 ...

谢谢

不知 发表于 2016-11-7 12:34:54

本帖最后由 不知 于 2016-11-7 12:45 编辑

chenall 发表于 2016-11-7 10:38
以下是从QGHO中提取的部份代码

set /p newpwd=Input New Password: || exit

谢谢指点。
知道了,是对md5crypt使用了命令管道的原因,直接在md5crypt后加字符串就没问题。

yjqd 发表于 2016-11-8 09:15:37

不知 发表于 2016-11-7 12:34
谢谢指点。
知道了,是对md5crypt使用了命令管道的原因,直接在md5crypt后加字符串就没问题。

记得windows下用md5加密不能用echo %Pass2%>MD5P.TMP,而是用>MD5P.TMP <nul Set/p=%Pass2%这种方式,前者会在MD5P.TMP产生换行,也就是MD5P.TMP的内容为%Pass2%和换行,后者在MD5P.TMP只会存在%Pass2%,不会存在换行

不知道grub4dos中的md5crypt是否和windows下用md5加密不能直接用echo类似
grub4dos的echo参数 -n不知道行不行
echo -n 123456 | md5crypt

不知 发表于 2016-11-8 09:28:14

yjqd 发表于 2016-11-8 09:15
记得windows下用md5加密不能用echo %Pass2%>MD5P.TMP,而是用>MD5P.TMP

谢谢,有可能吧,我中午去试一下。

yjqd 发表于 2016-11-8 14:25:46

本帖最后由 yjqd 于 2016-11-8 17:05 编辑

不知 发表于 2016-11-7 12:34
谢谢指点。
知道了,是对md5crypt使用了命令管道的原因,直接在md5crypt后加字符串就没问题。

好像你1楼命令没写完吧cat --locate=: | set skip=
cat --locate=: (md)0x80000+1 | set skip=

echo加参数-n,我测试成功了


见下图虚线框中部分,虚线框上面是没加参数-n

不知 发表于 2016-11-8 18:35:35

本帖最后由 不知 于 2016-11-8 19:46 编辑

yjqd 发表于 2016-11-8 14:25
好像你1楼命令没写完吧cat --locate=: | set skip=
cat --locate=: (md)0x80000+1 | set skip=



从echo到%pass%是一条命令,用chenall大元帅的代码吧,简洁多了。


现在其实是这样的:在分区根目录放一文件pass存放密码。
初始密码:
123456
pass内容:
$1$2ei2$Bm7jo8/I0tIbu6B8vsPIW
菜单代码:
find /pass | set pwroot=
cat %pwroot%/pass | set pass=
password --md5 %pass%
timeout 0
default0

title boot

echo -n VerifyPassword:
if "%pass%"=="" echo no password
if not "%pass%"==""password --md5 %pass%

find --set-root /bootmgr && chainloader /bootmgr
find --set-root /ntldr && chainloader /ntldr

title change password

echo -n VerifyPassword:
if "%pass%"=="" echo no password
if not "%pass%"==""password --md5 %pass%

set /p newpw=Input New Password:
if "%newpw%"=="" echo > %pwroot%/pass && exit
if not "%newpw%"=="" md5crypt %newpw% | set newpw=
set newpw=%newpw:~11%

set /p newpwd=Input New Password Again:
md5crypt %newpwd% | set newpwd=
set newpwd=%newpwd:~11%

if %newpw%==%newpwd%echo -n %newpwd% > %pwroot%/pass
if not %newpw%==%newpwd%echo change password failed,please try again,press enter to exit && set /p pause=

不知 发表于 2016-11-8 18:36:32

yjqd 发表于 2016-11-8 14:25
好像你1楼命令没写完吧cat --locate=: | set skip=
cat --locate=: (md)0x80000+1 | set skip=



看来确实是换行的问题。谢谢。

yjqd 发表于 2016-11-8 18:53:49

不知 发表于 2016-11-8 18:35
从echo到%pass%是一条命令,用chenall大元帅的代码吧,简洁多了。

明白了,原来命令可以连写
-----------------------------------------------------------------------------
当然了,chenall大元帅是直接用的截取命令,没写入到内存,代码就少多了
-----------------------------------------------------------------------------
要是微软的echo也有-n参数功能就好了
页: [1]
查看完整版本: G4D的MD5crypt输出格式是?怎样才能让它能够被password命令使用?