Согласно документации, 45,8. pg_authid
Пароль (возможно, зашифрованный); ноль, если
никто. Если пароль зашифрован,
этот столбец будет содержать строку
md5, за которым следует 32 символа
шестнадцатеричный хеш MD5. MD5 хеш
будет из пароля пользователя
соединены с их именем пользователя (для
пример, если у пользователя joe есть пароль
xyzzy, PostgreSQL будет хранить md5
хэш xyzzyjoe).
Другими словами, наиболее вероятно, что этот пароль зашифрован 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
).
EDIT:
С помощью инструмента HashCat (прочитайте лицензионное соглашение перед его использованием) с режимом PostgreSQL md5($pass.$salt)
, который вы можете написать (конечно, это только упрощенный пример использования центрального процессора):
echo 738d021d4bc194576641fa9936656836:postgres > hash.txt
time ./hashcat-cli64.bin --hash-mode 1 --attack-mode 3 --bf-cs-buf 0123456789 \
--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