有问题的型号是金士顿 SV300S37A120G。
我读这里尝试解锁安全密码时,如果密码包含特殊字符,则应在其两边加上“引号”。大写字母也适用吗?
我通过在实时 USB 上运行的 UbuntuStudio 中发出命令来设置密码sudo hdparm --user-master u --security-set-pass XXXXXX /dev/sda
。然后我可以确认安全性已从未启用到已启用。
更新
我之所以询问是因为我一直在尝试发出sudo hdparm --user-master u --security-unlock XXXXXX /dev/sda
(XXXXXX 是我选择的密码,然后""
,然后"NULL"
,
然后“我选择的密码用引号引起来”)。
无论我尝试哪种变体,我都会不断得到
security_password: "XXXXXX"
/dev/sda:
Issuing SECURITY_UNLOCK command, password="XXXXXX", user=user
SECURITY_UNLOCK: Input/output error
当我最初尝试继续时也发生了同样的情况sudo hdparm --user-master u --security-erase XXXXXX /dev/sda
。
更重要的是,今天早上我重新启动了系统,发现sudo hdparm -I /dev/sda
现在不仅已启用但是也锁定,Security
而在重启之前已启用但没有锁定。
更新二
--user-master u --security-erase "XXXXXX " /dev/sda
(这是我选择的密码 + 26 个空格 = 32 个字符)
或者
--user-master m --security-erase NULL /dev/sda
或者
--user-master m --security-erase " " /dev/sda
(即 32 个空格)
全部返回
security_password: "password_as_typed"
/dev/sda:
Issuing SECURITY_UNLOCK command, password="password_as_typed", user=user (in 1st case) OR master (in 2nd and 3rd case)
SECURITY_UNLOCK: Input/output error
任何形式的帮助将不胜感激。
答案1
好的。以下是我对那些可能有兴趣在 Ubuntu 环境中对金士顿 SSD 进行安全擦除的人说的话。
sudo hdparm --user-master u --security-set-pass <password> /dev/sda
按建议发行这里,在其他地方(<password>
您选择的密码)
确实会在您的驱动器上设置用户密码。
请注意,您不能将密码括在所谓的 V 形符号(<
和>
)中。
如果您这样做,终端将返回bash: password: No such file or directory
(password
即您选择的密码)。
您可以通过以下方式确认密码已设置sudo hdparm -I /dev/sda
安全现在将从未启用到已启用,
根据前面提到的链接,这意味着是时候继续了sudo hdparm --user-master u --security-erase <password> /dev/sda
。
麻烦就是从这里开始的。
security_password: "<password>"
/dev/sda:
Issuing SECURITY_ERASE command, password="<password>", user=user
SECURITY_ERASE: Input/output error
...终端回答道。
我不断尝试,输入带引号或不带引号的密码,用其他建议(如 、 或 )替换它""
,"NULL"
但NULL
终端一直给我相同的答案,归根结底Input/output error
两天过去了,我觉得重启是个明智的选择。下次我发布时,sudo hdparm -I /dev/sda
我可以看到安全不仅从未启用到已启用,而且来自没有锁定到锁定。
这是正常的。当密码刚设置时,驱动器保持解锁状态,直到下一次电源循环。
尽管这可能很正常,但我还是有点担心,因此我决定在对驱动器进行任何其他操作之前尝试解锁它。
根据我的经验,这是不可能的。
sudo hdparm --user-master u --security-unlock <password> /dev/sda
返回
security_password: "<password>"
/dev/sda:
Issuing SECURITY_UNLOCK command, password="<password>", user=user
SECURITY_UNLOCK: Input/output error
将密码括在引号中没有任何区别。
sudo hdparm --user-master m --security-unlock "" /dev/sda
sudo hdparm --user-master m --security-unlock "NULL" /dev/sda
sudo hdparm --user-master m --security-unlock NULL /dev/sda
甚至
sudo hdparm --user-master m --security-unlock " " /dev/sda
(即 32 个空格)
全部返回
security_password: "whatever_pw_I_provide"
/dev/sda:
Issuing SECURITY_UNLOCK command, password="whatever_pw_I_provide", user=master
SECURITY_UNLOCK: Input/output error
请注意,在这种情况下,我尝试米代替你,例如掌握代替用户,在某处读到过(目前找不到链接)设置用户密码会将主密码设置回 NULL;尽管在金士顿的情况下,他们说默认情况下它为 NULL,除非经销商更改。
(reference: https://www.kingston.com/datasheets/SVP100ES2_us.pdf)
无论如何,我做过尝试一下这两种变体米和你,毫无进展。
令我惊讶的是,有那么一刻我对自己说管它呢并输入
sudo hdparm --user-master m --security-erase "" /dev/sda
终端思考了我刚才说的话一会儿......然后,看啊,我的驱动器被擦除了。
""
返回Input/output error
该命令的同一个主密码( ) security-unlock
,可以很好地与该security-erase
命令配合使用。
正如 Tom Yan 所说,漏洞在hdparm
。
有报告称存在类似问题这里:
当我输入 NULL 作为安全性时,它显示为“ ”,但在解锁命令中输入 NULL 时显示为“NULL”
底线:不要锁定你的 SSD,除非你真的想删除它。
附言:遗憾的是我的声誉不允许我发布超过 2 个链接。
答案2
Input/output error
表示驱动器拒绝该密码(因为密码错误;或每次电源循环进行五次试验已经用完了,即expired: security count
在hdparm -I
),至少我的英特尔固态硬盘(X25-M G1 / 530)是这种情况。
我不确定是什么原因导致的您的驱动器/外壳不过。可能是你一直在使用旧版/有 bug 的 hdparm 版本;也可能是你的驱动器固件有 bug。
无论如何,您可以尝试:
- 如果你还没有使用 hdparm,请使用最新版本(目前为 9.48)
- 引用并用空格填充您的密码,直到达到最大可能的长度(即 32 个字符;例如
"XXXXXX "
) - 使用
--user-master m
代替--user-master u
,密码类似NULL
或" "
(即 32 个空格)
正如我之前提到的,确保你每次尝试的次数不要超过五次电源周期(在某些情况下,“重新启动”是不够的;hdparm -I
在花费精力之前请先确认)。
即使在 9.48 版本中也有一个漏洞使用--security-unlock
特殊密码NULL
,因此您可能要坚持使用,--security-disable
直到您弄清楚哪里出了问题(显然""
等同于NULL
因此也可以用来解决该错误)。
...现在不仅恢复启用,而且还锁定......
这是正常的。当密码刚设置时,驱动器保持解锁状态,直到下一次电源循环。
答案3
在这种情况下,特殊字符似乎是命令行会将其解释为开关或修饰符的任何字符。例如-
或/
,它可以被视为命令上的另一个标志。
为了安全起见,您应该假设任何非字母数字(az、1-0)都是“特殊”的,需要放在引号中。大写字母不是特殊字符。
另一方面,您可能总是需要用双引号括住密码,而不必担心密码中是否有特殊字符。
有趣的是,手册页没有指定这个限制,hdparm 手册页。
答案4
我遇到了同样的问题,启动安全擦除后驱动器被锁定。
我最终用这个命令解决了无密码问题:
sudo hdparm --security-disable NULL / dev / sda
检查后
sudo hdparm -I /dev/sda
阅读器不再被锁定:)