指定されたパス内のファイルからすべての電子メール アドレスを迅速に抽出するプロジェクト
このプロジェクトは、HIBP にロードする前にデータ侵害から電子メール アドレスを抽出するために私が 10 年間の大部分を使用してきた基本コードベースの新しいオープン ソース バージョンを目的としています。ほとんどの侵害は、フォルダー内の単一ファイルまたは複数ファイルの .sql または .csv 形式で行われ、抽出は簡単なプロセスに従います。
私が使用した正規表現は次のとおりです: b[a-zA-Z0-9.-_+]+@[a-zA-Z0-9.-_]+.[a-zA-Z]+b
正規表現による電子メール アドレスの検証は困難ですが、このユースケースでは完璧である必要もありません。誤検知は非常にまれであり、その影響は無視できます。つまり、本物のアドレスではない文字列が HIBP に読み込まれたり、通常とは異なる形式の本物のアドレスが読み込まれたりすることです。ほとんどの場合、この正規表現は「@ 記号の両側にアルファ文字の TLD を詰め込む」と要約できます。
解析ルールを検討する際には、必然的に RFC への準拠と特定の文字の実際の使用についての議論が行われます。ここでは主に次の 2 つの考慮事項があります。
余談ですが、ポイント 1 はポイント 2 に比べて真であることはほとんどありません。仕様に準拠した正規のアドレスを誤って拒否した場合の影響は、最終的に HIBP にならないことです (つまり、影響が低い)。実際には存在しないアドレスを許可すると、ジャンク レコードが HIBP に導入されるという影響があります (これも影響は小さいです)。特に、不明瞭な文字を含むアドレスが実際に使用される可能性 (たとえば、登録フォームに受け入れられ、拒否されないなど) を考慮すると、解析エラーの結果である可能性が高い文字を拒否することが望ましいと考えられます。
現実的には、あいまいなパターンが電子メール アドレスで使用される可能性は低いです。
私は連絡を取り、支援を求めました。1 人か 2 人の主要人物によって物事が開始され、その後、より広範な意見を求める予定です。私は、特にランサムウェアチームによって投棄されるドキュメントの増加に伴い、大規模なデータセットや非テキストベースのファイル全体でサービスを最適化することに特に興味を持っています。構築が必要な部分については課題の作成を開始します。
Red Gate の SQL Data Generator を使用すると、典型的な侵害データの 1,000 万レコードを含むサンプル ファイルを Mega からダウンロードできます。このファイルにより、このアプリの現在のバージョンではちょうど 1,000 万個の電子メール アドレスが抽出されます。注: テスト データ ファイルは現在 V2 ですが、以前のバージョンでは、無効なドメイン名パターンが存在するため、一意のアドレスが 1,000 万未満になります。
構文: AddressExtractor.exe -?
構文: AddressExtractor.exe -v
構文: AddressExtractor.exe <input [[... input]]> [-o output] [-r report]
オプション | 説明 |
---|---|
-? 、 -h 、 --help | コマンドライン構文とオプションを出力します。 |
-v 、 --version | アプリケーションのバージョン番号を出力します |
入力 | 1 つ以上の入力ファイル名またはディレクトリ |
-o 、 --output 出力 | 出力ファイルのパスとファイル名。デフォルトは「addresses_output.txt」 |
-r 、 --report レポート | レポート ファイルのパスとファイル名。デフォルトは「report.txt」 |
--recursive | ディレクトリの再帰モードを有効にして、子ディレクトリを検索します。 |
-y 、 --yes | 質問せずに「続行」のプロンプトを自動的に確認します |
-q 、 --quiet | 冗長性を抑えて実行し、進行状況メッセージは表示されません |
オプション | 説明 |
---|---|
--debug | 微調整されたパフォーマンスチェックのためのデバッグモードを有効にする |
--threads 数 | ファイルからの読み取りにチャネルを持つ複数のスレッドを使用します。デフォルトは4 |
--skip-exceptions | 例外が発生した場合、自動的に CONTINUE を求めるプロンプトが表示されます。 |