我想知道用户的密码连接数据库,而无需用户输入他们的密码数据库。 我知道连接数据库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. 加密密钥和加密字符串的解密