Chromeにパスワードを保存する



こんにちは



少し前まで、私はGoogle Chromeのパスワードをバックアップするための独自の個人プログラムを作成することを考えていました。 はい、インターネット上には同様のプログラムがたくさんありますが、妄想の結果(パスワードが「予備の」サーバーに注がれる)と、お気に入りのブラウザがどのように呼吸するかを知りたいという願望がスケールを上回りました。







OS Windows 7に基づいて説明します。



はじめに-パスワードが保存されているファイルはどこにありますか。 このファイルは、フォルダ「 C:\ Users \ SomeUser \ AppData \ Local \ Google \ Chrome \ UserData \ Default \ 」の「 Login Data 」です。





これはSQLiteデータベースです。







14列あります。 関心があるのは、3: origin_url (サイト自体へのリンク)、 username_value (ログイン)、 password_value (パスワード)です。 他の列にも同じことがあります:承認ページ、ログインとパスワードの入力要素の名前、その他。 password_valueフィールドを除き、すべてのデータは暗号化されません(画面に表示されます)。

パスワードフィールドにはバイト配列があります。 次のようになります。







選択した暗号化方式は、開発者にとって非常に便利です。 彼らは、Windowsを使用するData Protection Application Programming Interface( このシステムの仕組みを説明する優れた記事(後に唯一の記事であることが判明しました ))を使用しました。

リンク内の情報が多いほど、この暗号化システムには別のトピックがふさわしくなります。 要するに、このシステムは2つのモードのいずれかで動作すると言います。



  1. マシンキーを使用します。

    キーは現在のシステムに固有です。 ただし、キーを相互に送信することなく、さまざまなプログラムが暗号化されたデータを処理できますが、マシンまたはユーザーの外部へのデータ漏洩は除外されます。
  2. ユーザーキーを使用します。

    コメントはありません。


また、このセキュリティシステムがよく知られているIEバージョン7以前を使用していることにも注意してください。 その中の保護は、Google Chromeの保護よりも桁違いに高くなっています。 エントロピーもそこで使用され、レジストリはストレージとして使用されます。 マイクロソフトの開発者は嬉しく驚きました。



記事の最後に、プログラムのソースコードがあります。 ここで分析する主なポイント。



それでは始めましょう!



パスワードはバイト配列に格納されているため、パスワードでフィールドのバイトを読み取る必要があります。 このために、 System.Data.SQLite Interop Libraryバージョン1.0.65.0 (アーカイブで入手可能)を使用しました。

このプロジェクトでは、インターネットで見つかったDPAPIクラスを使用します。 プロジェクトの作成時には、記事を書くという目標がなかったため、クラスの作者は失われましたが、私は彼に帽子をかぶっています-仕事は真剣に行われました。



必要なオブジェクトと変数を宣言します。







次に、DataTable DBにファイルのデータベースを設定します。







現在は、必要な情報を抽出してファイルに書き込むだけです。 この段階では、ファイルは使用されなくなりました-作業はDataTableオブジェクトでのみ行われます:







その結果、携帯電話に保存したり、印刷して封筒に入れたりすることができるログインパスワードを含むHTMLドキュメントがあります。



ご質問があれば、喜んでお答えします。 ご清聴ありがとうございました!



プログラムソース



PS 64ビットのオペレーティングシステムを使用している場合は、ライブラリファイルをアーカイブのルートフォルダーにあるものに置き換える必要があります。 このプログラムがWindows XPまたは他のOSで動作することを保証しません。 Windows 7でのみテストされているため。






All Articles