6

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

谢谢你。

4

6 回答 6

15

如果您只需要重新获得访问权限并更改密码,那么您可以轻松完成。打开system/library/user.phpsystem/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 = 

并保存。这允许您使用第一个帐户(通常是默认管理员帐户)登录,而无需任何用户名和密码。一旦你这样做,扭转这个并再次保存。您仍将登录并可以根据需要编辑用户数据编辑密码

于 2015-03-06T19:32:01.997 回答
4

phpMyAdmin通过编辑 MySQL 数据库通过或MySQL命令提示符重置 OPENCART 管理员密码

重置管理的唯一方法是修改viapassword中的密码列,例如寻找丝绸之路,或者通过命令提示符更改列。如最后所述,您无法使用命令提示符生成新的 Salt & Hashing。请按照以下步骤操作:oc_userphpMyAdminpasswordMySQLMySQL

导航到 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+ 用户密码重置生成器 ,您可以指定新密码和盐

于 2018-04-02T17:35:28.427 回答
3

对于登录管理员密码0ZReKeFZM75Y设置在database > oc_user

密码0c7a864c5a737f08f001f3123849ba5e03af3d06

和盐HYSQS59P9

到管理员用户行。

于 2019-06-10T12:38:51.183 回答
1

密码由 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';

然后使用新密码登录。

于 2015-09-20T12:21:58.960 回答
0

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

<?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))); 
?>
于 2020-05-01T18:22:11.240 回答
0

假设您可以访问 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'");

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

于 2020-07-22T20:08:05.443 回答