Ventoy 密码插件

使用本插件你可以针对 Ventoy 开始启动时,或者是在启动某一个具体的镜像文件时设置密码保护。
需要说明的是,并没有绝对安全的密码方案,尤其是考虑到 Ventoy 的开源属性以及 U盘的可移动性。因此这里的密码保护只是一个很简单的功能。
建议只用来作为一般性的保护或者是用来防止一般性的误操作。

注意:
1、grub对小键盘的支持不够好,因此在输入密码时(尤其是输入数字时)请不要使用右侧小键盘。

  • Json 配置

推荐使用 VentoyPlugson 工具进行配置,无需手动创建、编辑json文件。请参考 VentoyPlugson
关于 ventoy.json 的位置以及相关说明,请首先参考 插件入口 (*必读)
在镜像分区 /ventoy/ventoy.json 中定义了一个 password 结构用来描述相关配置。

{
    "password": {
        "bootpwd": "txt#123456",
        "isopwd": "txt#111",
        "wimpwd": "txt#222",
        "imgpwd": "txt#333",
        "vhdpwd": "txt#444",
        "efipwd": "txt#555",
        "vtoypwd": "txt#666",
        "menupwd": [
            {
                "parent":"/MyVhdDir/WindowsVHD",
                "pwd":"md5#def#14fa11b4ab450b0204182266140e284d"
            },
            {
                "file":"/ISO/MX-19.1_x64.iso",
                "pwd":"md5#e10adc3949ba59abbe56e057f20f883e"
            },
            {
                "file":"/ISO/ubuntu-20.04-desktop-amd64.iso",
                "pwd":"md5#abc#0659c7992e268962384eb17fafe88364"
            }
        ]
    }
}

关键字 类型 描述
bootpwd STRING 启动Ventoy时的密码。连续3次输入错误之后 Ventoy 会退出。
isopwd STRING 所有 .iso 文件的默认密码。输入错误之后会返回到 Ventoy 主菜单。
wimpwd STRING 所有 .wim 文件的默认密码。输入错误之后会返回到 Ventoy 主菜单。
imgpwd STRING 所有 .img 文件的默认密码。输入错误之后会返回到 Ventoy 主菜单。
vhdpwd STRING 所有 .vhd/.vhdx 文件的默认密码。输入错误之后会返回到 Ventoy 主菜单。
efipwd STRING 所有 .efi 文件的默认密码。输入错误之后会返回到 Ventoy 主菜单。
vtoypwd STRING 所有 .vtoy 文件的默认密码。输入错误之后会返回到 Ventoy 主菜单。
file STRING 要设置密码的镜像文件的全路径。本参数支持模糊匹配,请参考 插件路径匹配说明
parent STRING 镜像文件所在目录的全路径(以 / 开始)。此目录下的所有文件 (.iso/.wim ...) 都会使用这个相同的密码。 注意最后不能以斜杠结尾。
pwd STRING 镜像文件启动时的密码。输入错误之后会返回到 Ventoy 主菜单。
  • 密码优先级

menupwd file > menupwd parent > isopwd/wimpwd/imgpwd...

/abc/def/iso 文件为例:
如果通过 menupwd 里面的 file 明确设置了此文件的密码,则优先使用此密码;
如果没有设置,则看有没有通过 menupwd 里面的 parent/abc/def 目录设置密码,如果有则使用此密码;
如果也没有设置,则看有没有设置 isopwd 密码,如果有则使用此密码;
如果还没有设置,则最终此 iso 文件就没有启动密码。

  • 密码格式
格式 举例 说明
普通文本 txt#123456 普通文本类型密码,最简单的明文形式。密码长度不能超过32个字符。固定以 txt# 开头,后面跟密码。
注意密码中不能有双引号 " 因为Ventoy内嵌的json解析器非常简单,也不支持转义字符。
普通 MD5 md5#e10adc3949ba59abbe56e057f20f883e 密码文本的MD5校验值。固定以 md5# 开头,后面跟密码的MD5值。本例中为 123456 的 MD5 值。
"加盐" MD5 md5#abc#0659c7992e268962384eb17fafe88364 "盐"+密码文本组合之后的MD5校验值。固定以 md5#xxx# 开头,后面跟"盐"+密码的MD5值。
其中 xxx 为 "盐"的部分,长度不能超过16个字符,同时不能包含井号 # (为防止解析出错)。
在本例中密码为 123456 MD5部分对应的是 abc123456 的 MD5 值。

对于最后这种 "加盐" MD5 这里简单说明一下。
由于同一个数据的 MD5 值是一样的。所以,假设你对不同的文件设置了相同的密码,如果使用普通的MD5值,这样别人虽然不知道密码具体是什么,但是能一眼就看出来, 你这几个密码是同一个,
因为 MD5 值都是一样的。这在有些情况下可能不太好。
这里你可以在密码前面再加上几个随机的字符,然后拼起来之后再计算 MD5 值。这样只要这几个随机的字符不一样,即使密码部分一样,最后的 MD5 也是不一样的。这几个随机的字符就叫做 "盐" 。
"盐"的长度不固定,一般随机加上一两个字符即可。例如,下面这几组密码都是 123456,但是分别以 a/b/c/d 作为"盐",最后的MD5值也都完全不一样。

md5#a#dc483e80a7a0bd9ef71d8cf973673924
md5#b#8df32286deed62bae5bf746672805c78
md5#c#ad07fb25aa2d3a9f96ee12f25e0be902
md5#d#adf00707a1c0154a9ad8edb57c8646f4

注意在输入的时候,仍然只是输入密码部分,不包含 "盐" 的部分。

  • MD5 计算

对于 MD5 值可以使用 https://tool.oschina.net/encrypt?type=2 或者其他在线工具计算,非常方便。
另外,如果你有Linux的shell环境,也可以执行如下命令来计算MD5。(注意要加 -n 参数,否则会把最后的回车也作为数据的一部计算MD5

echo -n 123456|md5sum

  • 多模式选项

支持。可以分别针对 x86 Legacy BIOS、IA32 UEFI、x86_64 UEFI 和 ARM64 UEFI 模式做不同的设置。详细说明请参考 多模式选项