web-dev-qa-db-ja.com

MacOS Xキーチェーンの内容をダンプする迅速で簡単な方法はありますか?

OS Xキーチェーンの内容をファイルにダンプ(エクスポート)する方法を探しています。このファイルは、タブ区切りのプレーンテキストなどの簡単な場所で簡単に処理できます。

キーチェーンアクセスアプリはそのような機能を提供していません。キーのデータを取得するには、それぞれを順番に開き、キーチェーンのパスワードを入力して、キーとともに保存されているパスワードを毎回確認する必要があります。

少し掘り下げた後、AppleScriptとキーチェーンスクリプトアプリを使用してキーチェーンにアクセスすることで誰かの解決策を見つけました(個々の投稿にリンクすることはできません。ページの最後まで約3分の2スクロールしてください)。

http://discussions.Apple.com/thread.jspa?threadID=1398759

キーチェーンスクリプトを使用すると、プレーンテキストのパスワードを含め、すべてのキーのすべてのデータフィールドにアクセスできます。 –そして、このデータをテキストファイルなどにダンプするのはかなり簡単です。私はそれをテストしましたが、うまく機能します。

ただし、このソリューションでは、ダイアログで[OK]をクリックして各キーへのアクセスを確認する必要があります。これは、キーチェーンのパスワードを毎回入力する必要があるよりもはるかに優れていますが、それでもいらいらします。さらに、キーごとに2回アクセスを確認する必要があります。 1つはスクリプトエディター(またはアプリとして実行されている場合はスクリプト自体)用で、もう1つはキーチェーンスクリプト用です。したがって、100個のキーを持つキーチェーンを処理している場合は、200個のダイアログで[OK]を手動でクリックする必要があります。

私はこれを回避するための解決策を探しています。キーチェーンの目的は機密データを保護し、私がやろうとしていることを正確に防止することであるため、そのようなソリューションにはおそらく何らかのハッキングが含まれることを理解しています。

あなたのアイデアにとても興味があります!

35

よし、バカだ。これだけを行うsecurityと呼ばれるコマンドラインツールがあります(キーチェーンの他の多くのアクション)。

使用例:

security dump-keychain -d login.keychain

これにより、login.keychain(ユーザーのデフォルトのキーチェーン)内のすべてのデータが、パスワードを含むプレーンテキストとしてダンプされます。 まだアクセスを確認する必要がありますが、キーごとに1回だけで、AppleScriptを使用するよりもはるかに高速です(特定のフィールドにアクセスしようとしたときに奇妙なエラーをスローしません)。そして、それはハックではありません。

-dオプションを指定しないと、パスワードを除くすべてのフィールドがダンプされます。

キーのダンプデータは次のようになります(インターネットキーの場合、プログラムキーと証明書には他のフィールドがありますが、形式は同じです)。

keychain: "/Users/<username>/Library/Keychains/login.keychain"
class: "inet"
attributes:
    0x00000007 <blob>="tech.slashdot.org (<username for this web login>)"
    0x00000008 <blob>=<NULL>
    "acct"<blob>="<username for this web login>"
    "atyp"<blob>="form"
    "cdat"<timedate>=0x32303038303432333038323730355A00  "20080423082705Z\000"
    "crtr"<uint32>=<NULL>
    "cusi"<sint32>=<NULL>
    "desc"<blob>="Kennwort des Web-Formulars"
    "icmt"<blob>="default"
    "invi"<sint32>=<NULL>
    "mdat"<timedate>=0x32303038303432333038323730355A00  "20080423082705Z\000"
    "nega"<sint32>=<NULL>
    "path"<blob>=<NULL>
    "port"<uint32>=0x00000000 
    "prot"<blob>=<NULL>
    "ptcl"<uint32>="http"
    "scrp"<sint32>=<NULL>
    "sdmn"<blob>=<NULL>
    "srvr"<blob>="tech.slashdot.org"
    "type"<uint32>=<NULL>
data:
"<the plaintext password for this key>"
34

これをお読みください:https://Gist.github.com/rmondello/b933231b1fcc83a7db0b

無視:-----

各キーの[常に許可]ダイアログに解決策が見つかりました。

前のコマンドをSudoで実行するだけです。

Sudo security dump-keychain -d login.keychain

この方法では、パスワードを2回入力するだけで済みます。 1つはターミナルでSudoに、もう1つはキーチェーンのロックを解除します! ;)

ごきげんよう!

14
TCB13

更新、これをうまく行うツールがあります:

Keychaindumpは、OS Xキーチェーンのパスワードをrootとして読み取るための概念実証ツールです。セキュリティで保護されたプロセスのメモリ空間にあるロック解除されたキーチェーンマスターキーを探し、それらを使用してキーチェーンファイルを復号化します。

ソース: https://github.com/juuso/keychaindump

0
Brian Heese

実際、私は同じものを探していました。誰かが投稿したgithubからの変更されたapplescript。 ScriptEditorで実行するには、Preferences&Securityで許可する必要があります。

set keychainPassword to "yourpasswordgoeshere"

tell application "System Events"
    repeat while exists (processes where name is "SecurityAgent")
        tell process "SecurityAgent"
            delay 0.1
            try
                set value of text field 1 of window 1 to keychainPassword
                click button "Allow" of window 1
            end try
        end tell
    end repeat
end tell

ウィンドウをアクティブにするには、各ウィンドウを別々にクリックする必要があります。そのために、私は何年も前にrunescapeから知っていた "murgaa auto clicker"ツールを使用しました( http://www.murgaa.com/auto-clicker-mac/ はまだアクティブのようです)。オートクリックのショートカット(例:Command + R)を設定し、タイマーを10msに設定するだけで、チャームのように機能します。

0
wutter