Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解密MySQL密码_Mysql - Fatal编程技术网

如何解密MySQL密码

如何解密MySQL密码,mysql,Mysql,创建我的公司使用的平台的开发人员不再为我们工作,我不知道如何从自定义PHP应用程序中检索密码 当我查看PHPmyAdmin时,密码被加密(例如*2470C006DEE42FD1618BB99005ADCA2EC9D1E19) 如何更改或检索这些密码?只需将它们更改为密码(“您的密码”)如果使用了正确的加密方法,则无法轻松检索它们 只需使用新密码重置它们 编辑:字符串似乎正在使用: 幸运的是,如果最初的开发人员很好,您将无法获得纯文本。我说“幸运”,否则你可能有一个不安全的系统 对于管理员密码,由

创建我的公司使用的平台的开发人员不再为我们工作,我不知道如何从自定义PHP应用程序中检索密码


当我查看PHPmyAdmin时,密码被加密(例如*2470C006DEE42FD1618BB99005ADCA2EC9D1E19)


如何更改或检索这些密码?

只需将它们更改为
密码(“您的密码”)
如果使用了正确的加密方法,则无法轻松检索它们

只需使用新密码重置它们

编辑:字符串似乎正在使用:


幸运的是,如果最初的开发人员很好,您将无法获得纯文本。我说“幸运”,否则你可能有一个不安全的系统

对于管理员密码,由于您有代码,您应该能够从已知的纯文本创建哈希密码,以便您可以控制应用程序。遵循原始开发人员使用的算法


如果它们没有被盐析和散列,那么请确保您将其作为“最佳实践”应用。

您不能在mysql中解密密码,因为密码是使用md5散列算法进行散列的,而md5散列算法不是编码算法

如何解密MySQL密码

你不能真的这么做,因为它们是散列的,不是加密的

下面是当前MySQL使用的
PASSWORD
函数的本质。您可以从sql终端执行它:

mysql> SELECT SHA1(UNHEX(SHA1("password")));

+------------------------------------------+
| SHA1(UNHEX(SHA1("password")))            |
+------------------------------------------+
| 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+------------------------------------------+
1 row in set (0.00 sec)

如何更改或检索这些

如果您在登录debian或ubuntu系统时遇到问题,请首先尝试以下方法(感谢tohuwawohu at):

然后,使用debian维护用户登录:

$ mysql -u debian-sys-maint -p
password:
最后,更改用户的密码:

mysql> UPDATE mysql.user SET Password=PASSWORD('new password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit;

当我查看PHPmyAdmin时,密码是加密的

相关,如果需要转储用户数据库以获取相关信息,请尝试:

mysql> SELECT User,Host,Password FROM mysql.user;
+------------------+-----------+----------------------+
| User             | Host      | Password             |
+------------------+-----------+----------------------+
| root             | localhost | *0123456789ABCDEF... |
| root             | 127.0.0.1 | *0123456789ABCDEF... |
| root             | ::1       | *0123456789ABCDEF... |
| debian-sys-maint | localhost | *ABCDEF0123456789... |
+------------------+-----------+----------------------+
是的,这些密码是没有盐的。因此,攻击者可以预构建表并将其应用于所有MySQL安装。此外,对手可以了解哪些用户拥有相同的密码

可以说,mySQL的员工没有遵循最佳实践。John Steven在OWASP的密码存储最佳实践方面做了一篇出色的论文。公平地说,MySQL用户之所以这么做,可能是因为架构、设计或实现中的难点(我只是不知道)



如果您使用
密码
更新
命令,但更改无效,请参阅。尽管页面名为“重置权限”,但它实际上是关于如何更改密码的。(MySQL密码更改过程太混乱了,你必须跳出障碍,但事实就是如此)。

哈希是一个单向过程,但使用密码列表,你可以重新生成哈希,并与存储的哈希进行比较,以“破解”密码


此站点尝试为您执行此操作-运行密码列表,并根据您的哈希告诉您明文密码。

这是linux服务器的最佳方式

sudo mysql --defaults-file=/etc/mysql/debian.cnf -e 'use mysql;UPDATE user SET password=PASSWORD("snippetbucket-technologies") WHERE user="root";FLUSH PRIVILEGES;'


这种方式适用于任何linux服务器,我100%确信Debian和Ubuntu会赢。

它们不需要加密?+1,就是这样@Mike
PASSWORD()
对其进行加密,请查看以了解如何使用源Mike。当您登录时,应用程序的登录部分如何检查您的凭据?为什么这是不安全的?显然,我并不是真的建议使用真正的字符串“yourpassword”。MySQL的密码散列是否保存得不够?没有脚本重置它们unfortunatly@Mike不需要。只需在phpMyAdmin中对每个要重置其密码的用户手动运行该命令。如果不使用重型破解,就无法检索原始密码MD5早就使用生日攻击破解了。你自己看看。MD5
2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19的纯文本密码是
password
@DrDeo well,。那不太对。首先,MySQL使用自己的SHA1和unhex组合方法进行密码哈希。其次,MD5已经被“破解”,您可以从两个不同的输入生成相同的精确哈希(因为MD5的算法设计失败)。这意味着,攻击者可以用自己生成的密码将自己识别为合法密码(因为他计算了冲突哈希),但他永远不知道原始密码是什么。这是不可逆的。另外,您提供的只是一个已知输入和散列的数据库。@chancyWu-使用这个:ALTER USER'root'@'localhost'由'MyNewPass'标识;这里的文档:搞笑:密码似乎是
密码
:)*2470C0C006DEE42FD1618BB99005ADCA2EC9D1E19=不客气!Alvaro和用户1590835-我很惊讶没有其他人知道…我太晚了:))但是得到了很好的解决方案,请查看以下网站以获取Mysql密码()解密器:希望这能帮助其他人…他们在
2470C006DEE42FD1618BB99005ADCA2EC9D1E19
中脸朝下死去。但你是对的,这可能很好,负责的人已经不在了+感谢您提出一些最佳实践!这可能适用于简单/常用密码,如hello、welcome等,但并非所有可能的组合都是其已知列表的一部分。是的,这是正确的,但所有的事情都确保您无法恢复哈希。你不能返回文本。知道password()使用什么样的散列或加密算法吗?这是输入mysql中丢失的所有内容所需的密钥,哈哈,这不是加密算法谢谢@NinoŠkopac的更正,加密在这里更合适。md5不是坏了吗?
mysql> SELECT User,Host,Password FROM mysql.user;
+------------------+-----------+----------------------+
| User             | Host      | Password             |
+------------------+-----------+----------------------+
| root             | localhost | *0123456789ABCDEF... |
| root             | 127.0.0.1 | *0123456789ABCDEF... |
| root             | ::1       | *0123456789ABCDEF... |
| debian-sys-maint | localhost | *ABCDEF0123456789... |
+------------------+-----------+----------------------+
sudo mysql --defaults-file=/etc/mysql/debian.cnf -e 'use mysql;UPDATE user SET password=PASSWORD("snippetbucket-technologies") WHERE user="root";FLUSH PRIVILEGES;'