Làm cách nào tôi có thể giải mã mật khẩu mysql
Bạn thực sự không thể vì chúng bị băm và không được mã hóa.
Đây là bản chất của hàm $ sudo cat /etc/mysql/debian.conf | grep -i password ... password: QWERTY12345... 1 mà hiện tại MySQL sử dụng. Bạn có thể thực hiện nó từ thiết bị đầu cuối SQL:
mysql> SELECT SHA1(UNHEX(SHA1("password"))); +------------------------------------------+ | SHA1(UNHEX(SHA1("password"))) | +------------------------------------------+ | 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 | +------------------------------------------+ 1 row in set (0.00 sec)Làm thế nào tôi có thể thay đổi hoặc lấy những thứ này?
Nếu bạn gặp khó khăn trong việc đăng nhập vào hệ thống Debian hoặc Ubuntu, trước tiên hãy thử điều này (nhờ Tohuwawohu tại //askubuntu.com/questions/120718/cant-rog-to-nysql):
$ sudo cat /etc/mysql/debian.conf | grep -i password ... password: QWERTY12345...Sau đó, đăng nhập với người dùng bảo trì Debian:
$ mysql -u debian-sys-maint -p password:Cuối cùng, thay đổi mật khẩu của người dùng:
mysql> UPDATE mysql.user SET Password=PASSWORD('new password') WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> quit;Khi tôi nhìn vào phpmyadmin, mật khẩu được mã hóa
Liên quan, nếu bạn cần đổ cơ sở dữ liệu người dùng để biết thông tin liên quan, hãy thử:
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... | +------------------+-----------+----------------------+Và vâng, những mật khẩu đó không được muối. Vì vậy, kẻ tấn công có thể xây dựng các bảng và áp dụng chúng cho tất cả các cài đặt MySQL. Ngoài ra, kẻ thù có thể tìm hiểu người dùng nào có cùng mật khẩu.
Kim để nói, những người ở MySQL không tuân theo các thực tiễn tốt nhất. John Steven đã làm một bài báo tuyệt vời về lưu trữ mật khẩu Thực hành tốt nhất tại bảng gian lận lưu trữ mật khẩu của OWASP. Công bằng với những người MySQL, họ có thể đang làm điều đó vì những điểm đau trong kiến trúc, thiết kế hoặc thực hiện (tôi chỉ đơn giản là không biết).
Nếu bạn sử dụng các lệnh $ sudo cat /etc/mysql/debian.conf | grep -i password ... password: QWERTY12345... 1 và $ sudo cat /etc/mysql/debian.conf | grep -i password ... password: QWERTY12345... 3 và thay đổi không hoạt động, thì hãy xem //dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html. Mặc dù trang được đặt tên là "Đặt lại quyền", nhưng đó thực sự là về cách thay đổi mật khẩu. (Nó phù hợp với quy trình thay đổi mật khẩu MySQL bị hỏng đến mức bạn phải nhảy qua các vòng, nhưng nó là như vậy).
Hàm mysql des_decrypt ()
Cập nhật lần cuối vào ngày 19 tháng 8 năm 2022 21:50:41 (UTC/GMT +8 giờ)Hàm des_decrypt ()
Hàm mysql des_decrypt () giải mã một chuỗi được mã hóa và trả về chuỗi gốc.
Syntax:
DES_DECRYPT(crypt_str, [key_str]);Arguments:
Crypt_str | Một chuỗi được mã hóa. |
key_str | Chuỗi để giải mã crypt_str. |
Sơ đồ cú pháp:
Phiên bản MySQL: 5.6
Example:
Code:
SELECT DES_DECRYPT(DES_ENCRYPT('mytext','mypassward'),'mypassward');Explanation:
Câu lệnh MySQL ở trên giải mã chuỗi được mã hóa 'mytext' như được chỉ định trong đối số và trả về chuỗi gốc.
Đầu ra mẫu:
mysql> SELECT DES_DECRYPT(DES_ENCRYPT('mytext','mypassward'),'mypassward'); +--------------------------------------------------------------+ | DES_DECRYPT(DES_ENCRYPT('mytext','mypassward'),'mypassward') | +--------------------------------------------------------------+ | mytext | +--------------------------------------------------------------+ 1 row in set (0.01 sec)Kịch bản PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "//www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="//www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>example-des_decrypt - php mysql examples | w3resource</title> </head> <body> <?php echo "<h2>Decrypting the encrypt string 'mytext' :</h2>"; echo "<table border='1' style='border-collapse: collapse;border-color: silver;'>"; echo "<tr style='font-weight: bold;'>"; echo "<td width='100' align='center'>DES_DECRYPT(DES_ENCRYPT('mytext','mypassward'),'mypassward')</td>"; echo "</tr>"; include("../dbopen.php"); $result = mysql_query("SELECT DES_DECRYPT(DES_ENCRYPT('mytext','mypassward'),'mypassward')"); while($row=mysql_fetch_array($result)) { echo "<tr>"; echo "<td align='center' width='200'>" . $row["DES_DECRYPT(DES_ENCRYPT('mytext','mypassward'),'mypassward')"] . "</td>"; echo "</tr>"; } echo "</table>"; ?> </body> </html>Xem ví dụ trong trình duyệt
Ví dụ về hàm mysql des_decrypt () bằng cách sử dụng bảng
Bảng mẫu: có thể kiểm tra
Code:
SELECT description,DES_DECRYPT(description,'mydespassw') FROM testtable;Explanation:
Câu lệnh MySQL ở trên lấy dữ liệu được giải mã từ 'mô tả' cột 'từ' testtable '.
Output:
Kịch bản PHP:
$ sudo cat /etc/mysql/debian.conf | grep -i password ... password: QWERTY12345... 0Xem ví dụ trong trình duyệt
Ví dụ về hàm mysql des_decrypt () bằng cách sử dụng bảng DECODE()
Next:
DES_ENCRYPT()