如何重置OpenCart 2+管理密码



显然,新的(v2)OpenCart的密码加密方案不是一个简单的md5哈希。在我为OpenCart安装更改主机后,我试图在网上搜索重置管理员密码的方法,但找不到任何东西。

谢谢。

如果您只需要重新获得访问权限并更改密码,那么您可以很容易地做到这一点。打开system/library/user.php(在以后的版本中为system/library/cart/user.php)并找到以开头的行

$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user WHERE username = 

WHERE放入#之前,将其更改为

$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user #WHERE username = 

并保存。这允许您使用第一个帐户(通常是默认的管理员帐户)登录,而无需任何用户和密码。一旦执行此操作,请将其反转并再次保存。您仍将登录并可以编辑用户数据编辑密码,如您所愿

通过phpMyAdminMySQL命令提示符编辑MySQL数据库来重置OPENCART ADMIN密码

重置管理password的唯一方法是通过phpMyAdmin修改oc_user中的密码列,类似于寻找丝绸之路,或者通过MySQL命令提示符更改password列。您无法生成新的Salt&使用MySQL命令提示符进行散列,如末尾所述。遵循以下步骤:

导航到oc_user表并查找具有名称密码&盐并更改所需CCD_ 14 的值

密码:d1c194daffb03fc2653027c87f76a12a4eaac5f

盐:x3x6r693j

字符串或哈希的组合将所需用户的管理密码更改为"password"(不带引号)。这种方法可能会产生较小的安全风险,因为salt将是公开的数据,在这里发布。

单击"Go"。它会将您的密码更改为密码。现在,使用您现有的用户名和新密码登录OpenCart Admin(www.yourwebsitename.com/Admin)Dashboard。

用户名:<现有用户名>

密码:密码

通过了解user_id,以上所有步骤都可以通过一个命令完成:

update `oc_user` set `password` = sha1( concat(`salt`, sha1( concat(`salt`, sha1('password'))))) where user_id = 1


解释:

密码用随机盐加密

sha1($salt . sha1($salt . sha1($password)))

上述方法用于加密文件admin/model/user/user.php中的密码

SELECT SHA1( CONCAT( salt, SHA1( CONCAT( salt, SHA1(  'password' ) ) ) ) ) 
FROM oc_user
WHERE user_id =1
LIMIT 0 , 30

结果:d1c194daffb03fc2653027c87f76a12a4aeac5f

对于盐:

$salt = substr(md5(uniqid(rand(), true)), 0, 9)

uniqid()password_hashpassword_verify都是纯PHP函数。它们与MySQL 无关

password_hash不使用MD5算法对您的密码进行哈希运算。md5和password_hash()生成两个不同长度的


导航到工具:OpenCart 2.0+用户密码重置生成器您可以指定您的新密码和盐

用于登录管理员密码database > oc_user 中设置的0ZReKeFZM75Y

密码0c7a864c5a737f08f001f3123849ba5e03af3d06

和盐HYSQS59P9

以管理用户行。

OpenCart(来自admin/model/user/user.php)将密码存储为

sha1($salt . sha1($salt . sha1($data['password'])))

假设你有数据库访问权限,你可以检索盐作为

SELECT salt FROM your_db.oc_user WHERE username='your_username';

然后生成新的散列,例如在bash中($SALT是上一个命令的结果):

echo -n $SALT$(echo -n $SALT$(echo -n "newpassword" | sha1sum|cut -d' ' -f1 )|sha1sum|cut -d' ' -f1)|sha1sum

最后,用这个新散列更新DB:

UPDATAE your_db.oc_user SET password='newhash' WHERE username='your_username';

然后使用新密码登录。

您可以使用以下脚本生成新密码:

<?php    
  $salt = 'pMiPpQ7N4';   //salt, update user.salt with this
  $password = 'test123'; //actual password
  //update user.password with this
  echo sha1($salt . sha1($salt . sha1($password))); 
?>

假设您有权访问php文件,请在文本编辑器中打开文件系统/library/cart/user.php,并将第40行,即方法login()的第一行,从:

$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user WHERE username = '" . $this->db->escape($username) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1'");

至:

$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user WHERE username = '" . $this->db->escape($username) . "' AND status = '1'");

这将删除密码检查,因此无论您输入的密码是什么,您都将始终登录登录后,立即将该行更改回,因为它将允许任何人在任何用户帐户下登录,然后在"下更改您的密码;用户-用户-编辑";。

最新更新