显然,新的 (v2) OpenCart 的密码加密方案不是简单的 md5 哈希。在为我的 OpenCart 安装更改主机后,我试图在网上搜索重置管理员密码的方法,但找不到任何东西。
谢谢你。
显然,新的 (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 =
并保存。这允许您使用第一个帐户(通常是默认管理员帐户)登录,而无需任何用户名和密码。一旦你这样做,扭转这个并再次保存。您仍将登录并可以根据需要编辑用户数据编辑密码
phpMyAdmin
通过编辑 MySQL 数据库通过或MySQL
命令提示符重置 OPENCART 管理员密码重置管理的唯一方法是修改viapassword
中的密码列,例如寻找丝绸之路,或者通过命令提示符更改列。如最后所述,您无法使用命令提示符生成新的 Salt & Hashing。请按照以下步骤操作:oc_user
phpMyAdmin
password
MySQL
MySQL
导航到 oc_user
表并查找名称为密码和盐的列,并更改所需的值user_id
密码:d1c194daffb03fc2653027c87f76a12a4eaeac5f
盐:x3x6r693j
这种字符串或哈希的组合将所需用户的管理密码更改/更改为“<em> password
”(不带引号)。这种方法可能会产生轻微的安全风险,因为盐是公开的数据,在此处发布。
点击“前往”。它会将您的密码更改为密码。现在,使用您现有的用户名和新密码登录 OpenCart 管理员 (www.yourwebsitename.com/admin) 仪表板。
用户名:<现有用户名>
密码:密码
通过了解您的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
结果: d1c194daffb03fc2653027c87f76a12a4eaeac5f
对于盐:
$salt = substr(md5(uniqid(rand(), true)), 0, 9)
uniqid()
, password_hash
并且password_verify
是纯粹的 PHP 函数。它们与 MySQL 无关
password_hash 不使用 MD5 算法对您的密码进行哈希处理。md5 和 password_hash() 产生两种不同的长度
导航到工具:OpenCart 2.0+ 用户密码重置生成器 ,您可以指定新密码和盐
对于登录管理员密码0ZReKeFZM75Y设置在database > oc_user
密码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
最后,用这个新的哈希更新数据库:
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 文件,在文本编辑器中打开文件 system/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'");
这将删除密码检查,因此无论您输入密码,您都将始终登录。登录后,立即更改此行,因为它将允许任何人以任何用户帐户登录,然后在“用户 - 用户 - 编辑”下更改您的密码。