如何在sysPass中重置管理员密码?

时间:2018-02-11 19:13:47

标签: passwords reset

我自己托管密码管理器sysPass:https://github.com/nuxsmin/sysPass

我将密码丢失到唯一的管理员帐户,但我仍然拥有主密码/密钥以及对数据库的完全访问权限。不幸的是,sysPass没有密码重置功能。<​​/ p>

我知道sysPass正在使用带有10次迭代的BCrypt和主密码来为每个用户创建密码哈希。

有几个字段显然需要更新才能执行此操作:

user_pass - varbinary - 内容以:$ 2y $ 10 $ ...

开头

user_mPass - varbinary - 内容以:def50200 ...

开头

user_mKey - varbinary - 内容以:def10000def50200 ...

开头

但我不知道如何使用该信息为我的管理员用户创建新密码。

知道怎么做吗?

感谢

2 个答案:

答案 0 :(得分:0)

  • 使用bcrypt(十回合)对要更改的新密码进行加密
  • 登录到数据库(转到表:usrData)
  • 将您新生成的哈希转换为二进制(使用hexworkshop)

how to generate binary

  • 复制左侧生成的文本
  • 用从hexworkshop获得的新二进制字符串替换“ user_pass”字段值
  • 您可以使用新密码登录

答案 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_mPassuser_mKey应该用返回的ADMIN_MPASSADMIN_MKEY进行初始化。

虽然user_pass可以使用类似的方法生成:

htpasswd -bnBC 10 "" "<your-admin-password>" | tr -d ':\n'