我自己托管密码管理器sysPass:https://github.com/nuxsmin/sysPass
我将密码丢失到唯一的管理员帐户,但我仍然拥有主密码/密钥以及对数据库的完全访问权限。不幸的是,sysPass没有密码重置功能。</ p>
我知道sysPass正在使用带有10次迭代的BCrypt和主密码来为每个用户创建密码哈希。
有几个字段显然需要更新才能执行此操作:
user_pass - varbinary - 内容以:$ 2y $ 10 $ ...
开头user_mPass - varbinary - 内容以:def50200 ...
开头user_mKey - varbinary - 内容以:def10000def50200 ...
开头但我不知道如何使用该信息为我的管理员用户创建新密码。
知道怎么做吗?
感谢
答案 0 :(得分:0)
答案 1 :(得分:0)
我一直在研究这个。虽然坦率地说,我不确定它是否适用于密码重置,但是这是我将如何生成这些哈希值,初始化数据库以进行新部署的方式。使用/var/www/html
,syspass安装路径:
<?php
require_once('/var/www/html/vendor/defuse/php-encryption/src/Core.php');
require_once('/var/www/html/vendor/defuse/php-encryption/src/Crypto.php');
require_once('/var/www/html/vendor/defuse/php-encryption/src/DerivedKeys.php');
require_once('/var/www/html/vendor/defuse/php-encryption/src/Encoding.php');
require_once('/var/www/html/vendor/defuse/php-encryption/src/Exception/CryptoException.php');
require_once('/var/www/html/vendor/defuse/php-encryption/src/Exception/WrongKeyOrModifiedCiphertextException.php');
require_once('/var/www/html/vendor/defuse/php-encryption/src/Key.php');
require_once('/var/www/html/vendor/defuse/php-encryption/src/KeyOrPassword.php');
require_once('/var/www/html/vendor/defuse/php-encryption/src/KeyProtectedByPassword.php');
require_once('/var/www/html/vendor/defuse/php-encryption/src/RuntimeTests.php');
use Defuse\Crypto\KeyProtectedByPassword;
use Defuse\Crypto\Crypto;
$userLogin = isset($argv[1]) ? $argv[1] : "admin";
$userPass = isset($argv[2]) ? $argv[2] : "blabla";
$masterPass = isset($argv[3]) ? $argv[3] : "blabla-11-chars-long";
$salt = isset($argv[4]) ? $argv[4] : "be5570f6809a460bcbc5625fd3274ee0184c4164fe8707a8147dfcc84ac5";
$keypw = $userPass.$userLogin.$salt;
$mkey = KeyProtectedByPassword::createRandomPasswordProtectedKey($keypw)->saveToAsciiSafeString();
$k = KeyProtectedByPassword::loadFromAsciiSafeString($mkey)->unlockkey($keypw);
$mpass = Crypto::encrypt((string)$masterPass, $k);
print "ADMIN_MKEY=$mkey\n";
print "ADMIN_MPASS=$mpass\n";
?>
使用您的用户名作为第一个参数调用该脚本,第二个使用密码,第三个使用主密码并加一个盐(即您generatedSalt
中的config.xml
)来调用该脚本。
user_mPass
和user_mKey
应该用返回的ADMIN_MPASS
和ADMIN_MKEY
进行初始化。
虽然user_pass
可以使用类似的方法生成:
htpasswd -bnBC 10 "" "<your-admin-password>" | tr -d ':\n'