Gravatar:すべてのユーザーのメールアドレスを復号化する方法は?

多くの人々がグラバターについて聞いたことがあり、それを使う人もいます。 聞いたことがない場合、Gravatarは世界的に認知されているアバターです。画像はメールアドレスに添付され、コメントやプロフィールの記入などに他のサイトで使用できます。



Gravatarサービスは非常に人気があり、一般の人々から要求されていることが判明し、長年にわたって数百万人の視聴者を抱えるミニソーシャルネットワークに変わりました。 ただし、Gravatorsの数(つまり、メールアドレスにアバターを添付したユーザー)の情報は見つかりませんでした。 公式ウェブサイト上でのみ、サービス作成者は誇らしげに「1日に何百万人ものアバターが86億回以上表示されている」と宣言しています。



Gravatarの人気は、Redmine、Wスクリプト、そしてもちろんWordPressなどの多くの人気のあるエンジンによってサポートされているという事実によって証明されています。 Drupal、Joomla、MODX、SMF、phpBBなどのシステムでグローバルに認識されているアバターのサポートを統合できるプラグインと変更があります。



Gravatarはスキームに従って機能します。ユーザーはGravatarサービスにログインし、アバターとメールアドレスをそこに保存します。 これから、彼は自分のグラバターを持っています。 現在、彼がサイトまたはブログにコメントを残したいとき、彼は自分のメールアドレスを示すだけです。 サイトスクリプトはこのメールアドレス暗号化し 、アバター画像が返されるGravatarサーバーに送信します。



Gravatarの写真でソースページを開くと、おおよそ次のアバターのアドレスが表示されます。







このアドレスの32桁の16進数は、電子メールアドレス自体のMD5ハッシュであり、実際には、Gravatarシステムでユーザーを識別する単一のキーです。



Gravatarサービスで使用されるMD5ハッシュアルゴリズムは、主にユーザーのメールアドレスを隠すことを目的としています(プレーンテキストで送信しないでください)。 その機能は「一方向」です。つまり、MD5関数を使用すると、単語のハッシュ(指紋)を取得(暗号化)できますが、元に戻す(復号化)ことはできません。 つまり、ハッシュ「05933ec7a23f6ebd2017490abfbcd3f3」に暗号化した内容を正確に理解することは、数学関数では不可能です。



ただし、辞書検索、レインボーテーブルなど、MD5の「復号化」方法があります。 この場合、Gravatarの電子メールアドレスの安全性に関する疑問が生じます。 ただし、ユーザー自身が電子メールアドレスを公開することはでき、コメントを残しているサイトの管理者にも知られています。 ただし、Gravatarサービスによる脆弱なハッシュアルゴリズム(MD5)の使用効率に戻ります。



すべてのグラバターを解読することは、どれほど安全で現実的ですか?



この質問に答えるために、MD5ハッシュを「クラック」するのではなく(時間がかかるように思えます)、Gravatarデータベースにメールアドレスが存在するかどうかを確認することにしました。 原則は非常に簡単です。グラバターが存在するかどうかメールアドレスをチェックし、グラバターが存在する場合は、データベースにMD5ハッシュを入力します。



試行錯誤のために、これらの目的のために、Gravatarサービスへの最適なリクエストは、パラメータを使用してアドレスで選択されました。

www.gravatar.com/avatar/HASH?d=404


そのようなアドレスに連絡するとき、Gravatarサービスは、ユーザーがグラバターを持っている場合(そのようなユーザーが存在する場合)200応答を返し、ユーザーがグラバターデータベースにない場合は404応答を返します。 この場合、サーバーの応答を確認するスクリプトを作成します。



$email = "@."; $hash = md5(strtolower(trim($email))); $url = 'http://www.gravatar.com/avatar/'.$hash.'?d=404'; $check_url = get_headers($url); if (strpos($check_url[0],'200')){ //  200 -   ,   MD5-   }
      
      





そこで、電子メールアドレスでグラバターの存在を確認する方法を学びました。 原材料として、インターネットから最初に利用可能な電子メールアドレスのデータベース(通常のスパムデータベース、およびクリアテキストで検索結果に含まれる電子メールアドレス)を10,000,000を超える量でダウンロードしました(重複から削除、有効性のチェックなど)。 ) 通常のローカルサーバー(Denver)を通常のコンピューターにインストールし、上記のスクリプトをマルチスレッド化しました(1日あたり約200万アドレスのスキャン速度を達成しました)。 驚いたことに、Gravatarサービスへの巨大なリクエストにもかかわらず、後者はスクリプトをブロックせず、実験の全段階で定期的にデータを返しました。



1週間の間に、1000万件の住所すべてがチェックされ、作業の結果が次の構造を持つデータベースに記録されました。





Gravatarユーザーのログインは、サービス内のユーザーのプロファイルへのリンクを取得するために必要であり、そこからユーザーに関する追加情報を取得できます。 このようなURLの構造は次のとおりです。

www.gravatar.com/LOGIN


フォームのインポートファイルにアクセスすると、ログインを取得できます。

www.gravatar.com/HASH.php


preferredUsernameと呼ばれる 、必要な変数を見つけるスクリプトを作成します。



 $email = "@."; $hash = md5(strtolower(trim($email))); $str = file_get_contents('http://www.gravatar.com/'.$hash.'.php'); $profile = unserialize($str); if (is_array( $profile) && isset( $profile['entry'] )) $login = $profile['entry'][0]['preferredUsername'];
      
      





変数が受信され( $ email、$ hashおよび$ login )、後で検索するためにデータベースに入力されました。 それだけですか? 実際、はい。 簡潔さは才能の姉妹です。 データベースに検索を固定すると、できあがり: サービスの準備ができました 。 これで、検索バーにMD5ハッシュを入力すると、ユーザーがコメントを残した任意のサイトで取得でき、メールアドレスを取得できます。 便宜上、ドラッグアンドドロップテクノロジ(ドラッグアンドドロップ)を実装しました。グラバターの画像を任意のサイトから検索ボックスにドラッグアンドドロップし、[検索]をクリックするだけです。



説明 :実験とサービスは、悪意のある目的(スパムなど)のために作成されたものではありません。 また、Gravatarの電子メールアドレスの安全性について誰も責任を負うことはできません。ユーザーは、コメントが残されているサイトの管理者に自分が表示されていることを認識しています。 個人データの安全性を考慮して、検索結果を制限し、データが検索インデックスに入らないようにしました。 このサービスは、実験の結果として即座に行われたものであり、参照および連絡の目的で人々のために作成されました。 また、検討のための情報として、Gravatarサービスの所有者のために。



結果 :1週間で、通常のコンピューターは1000万のメールアドレス(オープンソースから取得)を確認しました。 わずか3%(認識されている約300,000のMD5ハッシュ)が、独自のGravatarを持っていることが判明しました(多くはありません)。 ただし、理論的には、すべてのインターネットユーザーのすべての電子メールアドレスを、説明されている方法を使用した後続の検証のために単一のデータベースに収集できます。 また、理論的には、GravatarサービスのすべてのMD5ハッシュを計算できます。 すべてが10%をはるかに超えています 。これは、 MD5ハッシュを列挙することで取得できます 。 Gravatarの電子メールアドレスの暗号化アルゴリズムは脆弱であるため、このサービスを使用するには、これを考慮する必要があります。



All Articles