2011-07-06 11 views
1

ユーザのパスワードデータベースを入力せずにデータベースに接続するには、そのユーザのパスワードを知りたい。 接続データベースのパスワードを知っています。postgresqlはpg_authに保存されています。しかし、私はキーなしでそれを解読する方法を知らない。文書によると解読の鍵pg_auth Postgresql

答えて

1

45.8. pg_authid

パスワード(おそらく暗号化されました)。 がない場合はnull。パスワードが暗号化されている場合、 この列には文字列 md5が含まれ、その後に32文字の 16進数のMD5ハッシュが続きます。 MD5ハッシュ は(ユーザjoeがパスワード XYZZYを持っている場合 例えば、PostgreSQLはxyzzyjoeのMD5ハッシュ を格納します)ユーザー名に連結し、ユーザーのパスワード のものであろう。言い換えれば

は、おそらくこのパスワードはMD5暗号化(これは、PostgreSQLのデフォルトbahaviourである)であり、それはどこにも保存されていないので、あなたは、プレーンテキストを取得することはできません。

SELECT rolpassword FROM pg_authid WHERE rolname LIKE 'postgres'; 
      rolpassword    
------------------------------------- 
md5738d021d4bc194576641fa9936656836 
(1 row) 

MD5一方向ハッシュ関数であるので、それはその引数(ただし、あなたがJohn the Ripperやレインボーテーブルを使用して試すことができます)を復元するために些細ではありません:

をたとえばのは、私が 12345パスワードと postgres役割をしているとしましょう
echo -n "12345postgres" | md5sum 
738d021d4bc194576641fa9936656836 - 

もう1つ(もっと簡単に)方法は、認証方法を非パスワード(たとえばident)に変更することです。

EDIT:

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 

あなたが書くことができ、PostgreSQLのmd5($pass.$salt)モードとHashCatツール(それを使用する前に、EULAを読む)(もちろん、それが唯一のCPUブルートフォース例を簡略化しています)付き

関連する問題