HDPARM-从文件读取密码?(或输入十六进制)

HDPARM-从文件读取密码?(或输入十六进制)

这里几乎完全是 Linux 新手,但我被迫从 Windows 切换到实时 Ubuntu 来实现一些 HDLocking 魔法。

TLDR;我有一台旧的原装 Xbox,需要用某个密码锁定内部驱动器才能再次启动(原装驱动器坏了,但我设法恢复了内部 EEPROM 串行密钥,用于锁定/解锁驱动器)

到目前为止:我花了几个小时在谷歌上搜索,现在可以轻松地锁定、解锁和禁用驱动器上的纯文本密码。但我不敢尝试使用十六进制,因为似乎没有 '' 或 "" 括号支持​​?,或者没有提到读取十六进制(或转换后的十六进制)

这是我需要用来锁定驱动器的十六进制密钥。8e 05 80 83 89 85 67 2b c6 c3 c1 2a 9c ef d5 2a 44 63 90 e7 00 00 00 00 00 00 00 00 00 00 00 00 00

到目前为止,我一直在使用以下命令进行纯文本传递。hdparm --user-master u --security-set-pass PASSWORD /dev/sdc

这里有 Linux/Hex 专家可以帮助我吗?:)

答案1

更新答案

hdparm9.46 版(发布于 2015-06-14)起,hdparm支持十六进制字符串形式的二进制密码。您只需将其添加hex:到密码前面,因此您的输入将如下所示:

hdparm --user-master u --security-set-pass hex:8e0580838985672bc6c3c12a9cefd52a446390e7000000000000000000000000 /dev/sdc

您需要提供完整的 64 个字符的十六进制密码,因此如果您的密码短于所需的 32 个字节,请确保在右侧用零填充。

此方法还接受左侧填充的空字节,这是功能要求 @myxal 提到


旧答案

您可以使用xxd -r -p将该十六进制数转换为二进制数,以用作安全密码hdparm

hdparm --user-master u --security-set-pass "$(echo '8e 05 80 83 89 85 67 2b c6 c3 c1 2a 9c ef d5 2a 44 63 90 e7' | xxd -r -p)" /dev/sdc

(空字节(00)是不必要的,hdparm无论如何都会自动填充它们。)

如果您犯了错误,请按如下方式取消设置密码:

hdparm --user-master u --security-disable "$(echo '8e 05 80 83 89 85 67 2b c6 c3 c1 2a 9c ef d5 2a 44 63 90 e7' | xxd -r -p)" /dev/sdc

explainshell.com 对 <code>xxd -r -p</code> 的解释

相关内容