
.NET 4.0 CLR プロジェクトで、Chromium データ(クッキー、履歴、保存されたログイン情報など)を取得します。
SharpChromiumは、Google Chrome、Microsoft Edge、Microsoft Edge Betaからデータを取得するための.NET 4.0+ CLRプロジェクトです。現在、以下の情報を抽出できます。
注意: 返されるすべてのCookieはJSON形式です。Cookie Editor拡張機能がインストールされている場合は、このブラウザアドオンの「インポート」セクションにコピー&ペーストするだけで、抽出したセッションを利用できます。
このリライトには、以前の実装に比べていくつかの利点があります。
Usage:
.\SharpChromium.exe arg0 [arg1 arg2 ...]
Arguments:
all - Retrieve all Chromium Cookies, History and Logins.
full - The same as 'all'
logins - Retrieve all saved credentials that have non-empty passwords.
history - Retrieve user's history with a count of each time the URL was
visited, along with cookies matching those items.
cookies [domain1.com domain2.com] - Retrieve the user's cookies in JSON format.
If domains are passed, then return only
cookies matching those domains. Otherwise,
all cookies are saved into a temp file of
the format ""%TEMP%\$browser-cookies.json""
Google DocsとGithubに関連するCookieを取得する
.\SharpChromium.exe cookies docs.google.com github.com

履歴アイテムとそれに関連するCookieを取得する
.\SharpChromium.exe history

保存されたログイン情報を取得する(注:空でないパスワードを持つもののみ表示されます)
.\SharpChromium.exe logins

SQLiteデータベースパーサーには若干のバグがあります。これは、パーサーがデータBLOBをSystem.Byte[]型として正しく検出するものの、System.Byte[]型のカラムを正しく検出しないことに起因します。その結果、バイト配列が文字列リテラル"System.Byte[]"にキャストされてしまい、誤った結果になります。この原因の根本はまだ解明できていませんが、簡易的な回避策として、すべてのBLOB値をBase64文字列としてエンコードしました。したがって、通常のデータ値がバイト配列となるカラムから値を取得する場合は、まずBase64デコードする必要があります。
リフレクションによるDLL読み込みを行わずにSQLiteファイルをネイティブ解析可能にしたC#-SQLiteプロジェクトについて、@plainprogrammerに多大なる感謝を捧げます。彼の作業がなければ、このプロジェクトはこれほどクリーンにはならなかったでしょう。そのプロジェクトはこちらにあります:https://github.com/plainprogrammer/csharp-sqlite
v80+の復号スキーマのリライトを導いてくれたMimikatzの作業について、@gentlekiwiに感謝します。
必要なPInvoke BCryptコードを切り出してくれた@harmj0yに感謝します。これにより、このプロジェクトから追加の依存関係を取り除き、再び軽量にすることができました。