Digg.comを例として使用したサウンドCAPTCHAのハッキング

はじめに



ニュースサイトの所有者の多くは、たとえばDigg.com(最大のニュースアグリゲーターの1つ)などの人気のあるサービスで記事へのバックリンクを投稿する必要に直面しています。 しかし問題は、毎回手動でサイトにアクセスしてリンクを追加するか、このプロセスを訪問者の肩に移す必要があることです。 当然、このプロセスを自動化したかったのです。



Digg.comは、コメント、ニュースへの投票、検索など、多くのことを実行できるかなり強力なAPIを提供します。しかし、それは主なものを許可しません-ニュースを公開します。 原則として、ソースからニュースを自動的に追加するスクリプトを書くことを制限するものはありません。 唯一の障害はCaptshaであり、これに対処します。





キャプチャ構造



そして、ここで停止します... python、OCR、およびニューラルネットワークを使用して写真の文字を認識する方法は、すでにhubrを介して実行されています。 このトピックは尊敬されているIndalo による記事で最も完全にカバーされています 。 しかし、この方法では100%の認識確率が得られず、実装が比較的困難です。 問題を解決する別の方法が常にあることを知って、私は誤って興味深いフレーズを見ました。「テキストを読めませんか? 聞いて。」



聞いた後、すべての文字が1人のスピーカーによって発声され、常に同じで、干渉や無関係な音が聞こえないことに気付きました。 確かに、スコアリングは、すべての文字を作成できず、正しい文字を入力できない人々を支援することを目的としています。 そのような方法が人間の知覚にとってより簡単である場合、それに応じてボットにとってより簡単になるはずです。



フォームに記入するとき、サイトはこの種の画像を提供します(注意が必要ですCookie!):

http://digg.com/captcha/2c7ea3845d5ddfc5a7461c5429b6a7e5.jpg







サウンドファイルは次のようになります(注意が必要なのはCookieです!)。

http://digg.com/captcha/2c7ea3845d5ddfc5a7461c5429b6a7e5.mp3







実験の後、各文字の断片が〜2000バイトであることがわかりました。 バックグラウンドにはノイズがありますが、それらはランダムに生成されるわけではなく、異なるキャプチャ上の同じ文字はまったく同じです。 したがって、mp3ファイルは、このようなフラグメントを検索するための単純な文字の配列と見なす必要があります。





文字認識



以下は認識プロセスです。 この作業ではpythonを使用しましたが、プロジェクトを他の言語に転送することを妨げるものは何もありません。

  1. 既製のキャプチャ(約100個)でデータベースを手動で作成します。
  2. 各キャラクターに対して、1回だけ発生するサウンドキャプチャのペア。他のすべてのキャラクターは一意です。 異なるキャプチャでは繰り返されません。 たとえば、数字-2の場合、AS2DE、2ZTKJを使用します。
  3. 選択されたキャプチャでは、通常の列挙により、同じ最大一致シーケンスを探します。 出力は約2000文字になります。
  4. 「一時停止」の断片を取得しないように制御します。
  5. 結果をデータベースに追加します。


2つのキャプチャの単純な列挙の例:

  1. def compare letter、filename1、filename2
  2. tfile1 = filename1 + '.mp3'
  3. tfile2 = filename2 + '.mp3'
  4. f = オープン tfile1、 "r"
  5. test1 = f。 読む
  6. f2 = オープン tfile2、 "r"
  7. test2 = f2。 読む
  8. cnt = i = j = -1
  9. k = 3000
  10. test1 [ :-k ]のアイテムの場合:
  11. i = i + 1
  12. j = i + k
  13. cnt = test2 検索 test1 [ i:j ]
  14. cnt > 0の 場合
  15. res = test2 [ cnt:cnt + k ]
  16. f3 = オープン 'sources /' +文字、 'w'
  17. f3。 書き込み res
  18. 帰る
  19. 帰る


それだけです。認識結果は100%です。 ロボットがdigg.comにニュースを送信すると、ページ上のCaptchaの画像アドレスを見つけ、mp3に置き換え、Cookieを使用して音声演技を要求し、求められている6文字を見つけ、それを独自のデータベースと比較し、結果を送信します。 サイトからのすべてのニュースは、すぐにdigg.comに公開されます。





サイトに音声キャプチャがある場合、それらを破棄するか、次の推奨事項で保護することをお勧めします。



より安全なCatchaサウンドをハッキングするために、mp3ファイルのチャンクを比較する簡単な方法では肯定的な結果が得られない場合があります。 この場合、特別なフィルターを使用してオーディオトラックを処理し、ノイズを除去することをお勧めします。 次に、オプションとして、シーケンス分析にニューラルネットワークを使用できます。 もちろん、結果は100%未満になりますが、このレベルのままです。 さらに、音声認識サービスを試すことができます。 私が出会った中で最高ののはGoogle Voiceです。mp3からボイスメールを送信し、しばらくして文字起こしを取得するだけです(結果を見るのは面白いでしょう)。





結論



インターネット上の多くのサイトは、ボットからの保護が複雑なために持ち去られ、その結果、実際のユーザーからしか移動しません。 そして、彼らとの接触を確立しようとして、彼ら自身が誰かが間違いなく利用する弱点を作成します。 この脆弱性の影響を受ける特に大きなWebサイトの中で、ドメインをチェックするときにwhoisサービスでまったく同じCaptchaオーディオであるGoDaddy.comに言及できます。



すべてのスクリプトはPython言語を使用して作成されており、 ここから入手できます



Upd:ブログの情報セキュリティに移動しました。




All Articles