我想知道用戶的密碼連接數據庫,而無需用戶輸入他們的密碼數據庫。 我知道連接數據庫postgresql的密碼保存在pg_auth中。但我不知道如何解密它沒有密鑰。解密密鑰pg_auth Postgresql
1
A
回答
1
據文檔,45.8. pg_authid:
密碼(可能被加密);如果 無null。如果密碼已加密,則此列將包含字符串 md5,後跟32個字符的 十六進制MD5哈希。 MD5散列 將用戶密碼 連接到他們的用戶名(例如, 例如,如果用戶joe有密碼 xyzzy,PostgreSQL將存儲xyzzyjoe的md5 散列)。
換句話說,這個密碼很可能是md5加密的(這是PostgreSQL的默認值),並且你不能得到純文本,因爲它沒有存儲在任何地方。例如,讓我們說,我有postgres
作用與12345
密碼:
SELECT rolpassword FROM pg_authid WHERE rolname LIKE 'postgres';
rolpassword
-------------------------------------
md5738d021d4bc194576641fa9936656836
(1 row)
MD5是單向散列函數,所以它不是小事,以恢復它的參數(但是你可以用John the Ripper嘗試或使用彩虹表):
echo -n "12345postgres" | md5sum
738d021d4bc194576641fa9936656836 -
另一個(更簡單的)方法是將pg_hba.conf驗證方法更改爲非密碼(例如ident
)。
編輯:
隨着HashCat工具(使用前閱讀EULA)與PostgreSQL的md5($pass.$salt)
模式,你可以寫(當然,這只是簡化CPU蠻力爲例):
echo 738d021d4bc194576641fa9936656836:postgres > hash.txt
time ./hashcat-cli64.bin --hash-mode 1 --attack-mode 3 --bf-cs-buf\
--bf-pw-min 1 --bf-pw-max 5 hash.txt
...
738d021d4bc194576641fa9936656836:postgres:12345
All hashes have been recovered
real 0m0.010s
user 0m0.012s
sys 0m0.004s
相關問題
- 1. postgresql加密/解密
- 2. Postgresql JSON有密鑰
- 3. 使用解密密鑰解密數據
- 4. 解密OpenPGP會話密鑰
- 5. 如何來解密密鑰
- 6. 從密鑰代碼解析密鑰
- 7. 爲什麼解密的密鑰與加密密鑰不一樣?
- 8. 多個密鑰的加密/解密
- 9. RSA密鑰加密/解密問題
- 10. 使用解密密鑰加密文件
- 11. 無法解密RSA加密密鑰
- 12. 用密鑰加密和解密數據
- 13. 如何從Windows密鑰庫中解密RSA密鑰?
- 14. WSO2使用公鑰私鑰加密/解密密碼(字符串)
- 15. 在PostgreSQL中解密Feistel密碼
- 16. 在PHP中使用密鑰加密和解密使用密鑰的PHP文件
- 17. 解密密鑰值不匹配
- 18. 解密scytale不知道密鑰
- 19. 使用XML專用密鑰解密RSA
- 20. gpg:解密失敗:沒有密鑰
- 21. 解密需要私鑰和密碼
- 22. 解密JSON字典並獲取密鑰
- 23. 使用自定義密鑰解密SecureString
- 24. Windows註冊表解密(CryptUnprotectData)WPA密鑰
- 25. 獲取密鑰流 - Java解密
- 26. 加密密鑰交換了解
- 27. 解密存儲Java密鑰存儲
- 28. 密鑰庫密鑰和私有密鑰...講解深入淺出,請
- 29. 解密JSON Web加密中的內容加密密鑰
- 30. 加密密鑰和加密字符串的解密