差出人: https://github.com/scastiel/protonmail-export
1)ProtonMailアプリを開き、完全にログアウトします。ログイン画面が表示されます。
2)ブラウザーの開発ツール、および[ネットワーク]タブを開いて、すべてのネットワーク呼び出しを確認します。
3)ユーザー名とパスワードを入力し、[ログイン]ボタンをクリックします。先に進む必要はありません。
4)ネットワークコールで、「/ api/auth」に一致するものを見つけます。複数ある可能性があります。「DELETE」ではなく、「POST」リクエストメソッドを使用するものを選択してください(情報は含まれていません)。
5)このネットワークコールで、[応答]タブを開いてサーバーから返された生データを確認し、「PrivateKey」で始まる行を見つけて、残りの行を「----- BEGIN PGP PRIVATE KEY」から最後のコンマなしの「」。
6)開発ツールの[コンソール]タブを開き、console.log(<ここにコピーしたコンテンツを貼り付け>)と入力して、Enterキーを押します。
7)コマンドの結果をコピーし、テキストファイルに書き込みます。つまり、秘密鍵を持っているということです。
しかし、私は「6)」で立ち往生しています。の
console.log("-----BEGIN PGP PRIVATE KEY B........----")
一部は何も出力しません( "...."部分はもちろん検閲されます)。
これで、秘密鍵を手動で秘密鍵のようにフォーマットできるようになりました。「タツノオトシゴ」でインポートすることもできます。私はゲームに勝ったと思ったが...私がしようとすると:
gpg --encrypt --sign --armor -r [email protected] message.txt
GPGキーのパスワードを要求します。私はパスワードマネージャーを使用しているので、使用するメールボックスのパスワードをコピーして貼り付けますが、ここで問題があります。受け入れられません!
質問:何が足りないのですか?
また、メールでscastielに質問し、彼が返信する場合はここに回答を投稿しましたが、おそらく他の誰かも解決策を知っています。
ステップ「5)」では、「KeySalt」という名前の行があることがわかります。おそらくProcastmailは、scastielのハウツーの後に塩を導入しますか?
Protonmailサポートは、秘密鍵のエクスポートには役立ちません。
[〜#〜] update [〜#〜]:「MAILBOX」のパスワードを書いたので、Protonmailを2つのパスワードで使用しています。 、および「復号化」用の1つのメールボックスpw。
秘密鍵のパスワードは、メールボックスパスワード(2つのパスワードを使用している場合)またはログインパスワード(1つのパスワードのみを使用している場合)のハッシュ値になります。また、KeySalt値を取得し、bcryptを使用してハッシュ値を取得する必要があります。
Firefoxを使用して秘密鍵のパスワードをダウンロードするために、ここに記載されている手順に従いました: https://github.com/scastiel/protonmail-export/issues/6
- ProtonMailにログイン
- GPG秘密鍵と同じCookie応答からソルト値を取得します。
- 開発者向けオプションのコンソールタブに切り替えます
- 以下を実行しますが、<LOGIN PASSWORD OR MAILBOX PASSWORD>および<KEYSALT FROM STEP 2>を対応する値に置き換えます。
password = "<LOGIN PASSWORD OR MAILBOX PASSWORD>"; salt ="<KEYSALT FROM STEP 2>"; saltBinary = pmcrypto.binaryStringToArray(pmcrypto.decode_base64(salt)); keySalt = dcodeIO.bcrypt.encodeBase64(saltBinary, 16); bcryptKey = dcodeIO.bcrypt.hashSync(password, '$2y$10$' + keySalt); key = bcryptKey.slice(29); console.log(key);
- コンソール出力は秘密鍵のパスワードです
私はあなたの秘密鍵をエクスポートする方法についてこのチュートリアルを書きました。執筆時点では、ProtonMailには「単一パスワード」認証の機能がありませんでした。アカウントのロックを解除するには最初のパスワード(ProtonMailパスワード)を使用し、次にキーのロックを解除するには秘密キーのパスワードを使用する必要がありました。
単一パスワード認証を有効にした場合、秘密鍵のエクスポートが機能しなくなると思います(新しいアカウントのデフォルトである可能性があります)。このキーは、ProtonMailのパスワードから計算されたものだと思います。それを見つける方法はわかりませんが、方法があるはずです…
2つのパスワードモードを使用している場合でも、これは機能します。
シングルパスワードモードを使用している場合、秘密鍵のパスワードはログインパスワードではありません。必要に応じて、ここでどのように生成されるかを確認できます。 https://github.com/ProtonMail/WebClient/blob/public/src/app/authentication/services/passwords.js#L29
基本的に、ログインパスワードとサーバーから返されるソルトはbcryptを使用してハッシュされます。結果は秘密鍵のパスワードです。
編集:2つのパスワードモードを使用している場合でも、メールボックスのパスワードはシングルパスワードモードと同じようにbcryptでハッシュされます。
MailBoxPasswordとKeySaltに基づいて秘密鍵のパスフレーズを抽出する script を少し書きました。
index.js
ファイルを編集するだけです
ProtonMailは、IMAPアクセスやエクスポートオプションのように、電子メールをエクスポートする方法を(まだ)提供していません。これは、いくつかの用途で非常に便利です。
protonMailのサーバーの近くで大規模な核爆発が発生した場合に備えて、電子メールをバックアップします。 ProtonMailに満足できない場合は、電子メールを別のメールプロバイダーに移動してください。さらに、私は、インターネット上のすべてのサービスは、どんなに素晴らしいものであっても、そして特にあなたがそれに対してお金を払えば、他のサービスに簡単に行くことができると強く信じています。
それはまだ可能ですが、文書化されていないProtonMail APIを使用せざるを得なくなり、レトロエンジニアリングが行われます。この小さなプログラムは、完全に自動化されていませんが、プロセスを非常に簡単にします。
もちろん、ProtonMailがそのようなオプションを提供するので、すぐにこのプログラムが不要になることを願っています:)
特徴
実装:
電子メール(復号化)をローカルEMLファイルにエクスポートし、別のメールクライアントにインポートできます。受信トレイ、送信済み、アーカイブフォルダからメールを取得します。まだ実装されていません:
添付ファイルをエクスポートします。
Installation
パッケージマネージャーnpmを使用して、システムにNode.jsをインストールする必要があります。
プログラムをインストールするには、次のコマンドを実行します。
_npm install -g protonmail-export
_
ProtonMail秘密鍵をダウンロードする方法は?
ProtonMailは、暗号化されたバージョンの秘密鍵をサーバーに保存します。アカウントの設定ペインから公開鍵をダウンロードできます。残念ながら、秘密鍵をダウンロードすることはできません。朗報ですが、ブラウザの開発ツールを使用して簡単に見つけることができます。方法は次のとおりです。
1. ProtonMailアプリを開き、完全にログアウトします。ログイン画面が表示されます。
2.ブラウザーの開発ツールを開き、[ネットワーク]タブをクリックして、すべてのネットワーク呼び出しを確認します。
3.ユーザー名とパスワードを入力し、[ログイン]ボタンをクリックします。先に進む必要はありません。
4.ネットワークコールで、「/ api/auth」に一致するものを見つけます。複数ある可能性があります。「DELETE」ではなく、「POST」リクエストメソッドを使用するものを選択してください(情報は含まれていません)。
5.このネットワークコールで、[応答]タブを開いてサーバーから返された生データを確認し、_"PrivateKey":
_で始まる行を見つけて、_"-----BEGIN PGP PRIVATE KEY
_から最後の "、末尾のコンマなし。
6.開発ツールの[コンソール]タブを開き、console.log(<PASTE THE COPIED CONTENT HERE>)
と入力してEnterキーを押します。
コマンドの結果をコピーし、テキストファイルに入れます。つまり、秘密鍵を持っているということです。
秘密鍵は、ProtonMailのアカウントの秘密のパスフレーズ(ログイン後に入力したもの、2番目のパスワード)で暗号化されることに注意してください。したがって、現在持っている秘密鍵は、誰かがそれを盗んだ場合にメールを解読するには不十分です。ただし、安全な場所に保管してください;)
メールをエクスポートする方法は?
まず、いくつかの要素が必要になります。
.Your ProtonMailのアカウントの秘密鍵(以下の付録を参照)、たとえば、private-key.txtという名前のファイルに入れましょう。
この秘密鍵の暗号化に使用されるパスフレーズ(つまり、サインイン時に入力する2番目のパスワード)。
ProtonMailで開かれたセッションに関するいくつかの技術情報。最後のポイントで言及した情報を取得しましょう。
注:これらの手順はChrome/Chromiumブラウザ向けですが、これは他のブラウザでもそれほど変わらないはずです。
1-最初にProtonMailのアカウントで新しいセッションを開き、ブラウザ開発ツールが開いていることを確認します。ページの読み込み時に開いていなかった場合は、開いてページを再読み込みしてください。
2-開発ツールの[ネットワーク]タブで、/ api/users URLへの呼び出し、より具体的にはこの呼び出しへの[要求ヘッダー]セクションを見つけます。
3-これら2つのヘッダーの値をどこかにコピーして貼り付けます:Cookie(「AUTH-」で始まります)とx-pm-session(32文字の英数字)。これらすべての要素を取得したら、次のコマンドを実行して、最終的にメールをエクスポートできます。
_protonmail-export -i "<session_id>" -c "<cookie>" -p <path_to_private_key_file> <output_directory>
_
たとえば、これは次のようになります(出力ディレクトリが既に存在している必要があることに注意してください)。
_protonmail-export -i "95bc88ea1e94e25357e12a433e9b5ee5" -c "AUTH-95bc88(...); NOTICE-ae3cce(...)=true" -p ~/private-key.txt ~/protonmail-messages
_
秘密鍵を復号化するためのパスフレーズを求められます。次に、メールごとに1つのファイルを出力ディレクトリに取得します。ほとんどのメールクライアントでは、これらのファイルを読み取って既存のメールボックスにインポートすることができます。