ずっと書こうと思っていたのですが、久しぶりに興味が出たので簡単に記録してみました。
認証コード
Completely Automated Public Turing Test to Tell Computers and Humans Apart (CAPTCHA) (一般に検証コードとして知られています) は、コンピューターと人間を区別する公開の全自動プログラムです。 CAPTCHA テストでは、サーバーとしてのコンピューターが、ユーザーが回答するための質問を自動的に生成します。この質問はコンピュータによって生成および判断できますが、答えることができるのは人間だけです。コンピュータは CAPTCHA の質問に答えることができないため、質問に答えるユーザーは人間であると考えられます。
百科事典の紹介
簡単に言うと、ランダムに生成された文字が画像上に出力されます [他の形式のドラッグ アンド ドロップ/SMS 認証コードなどはここでは考慮されません]。
一般的なタイプ
感想
この記事はデモンストレーションのみを目的としており、最初の写真の確認コードは例として取り上げられています。
画像上のすべてのポイントには RGB 値があり、カラーピッカーを通じて取得できます。画像の検証コードが純粋なデジタル単色の背景であることが肉眼でわかります。
カラーピッカーを通して確認コードの背景色のRGB値が(212,214,204)であることがわかります
達成しました
PHP の 関数を使用して、画像内のすべてのポイントの RGB 値を取得しましょう: imagecolorsforindex
リーリー
これは何に使うのですか? データの表示方法を変更して背景色として出力してみましょう
、もう一度見てみましょう:
リーリー
□
,验证码区域输出■
効果:
もうはっきりしましたか?
しかし、まだ疑問があるかもしれませんが、それがどれくらいかを知るにはどうすればよいですか?
以下で分析してみましょう:
各確認コードは直接 4 つのスペース、左右に 6/10 スペース、上下に 16/10 スペースが配置されています。
より明確に見るために、これらの干渉ポイントを削除しましょう:
これだけ話しても、どうやって写真の数字がわかるのかと疑問に思う人もいるかもしれません。
それでは、私のアイデアをお話しします。先ほどの
を 0 と 1 に置き換えます。これらの数字の形は固定されているので、各単語の 8*10 の各領域を取得できます。 0 と 1 があります。1 が構成されています、
□
和■
8 セグメントごとに再度実行し、4 マス分のスペースを削除し、ループして 0-9 の 01 の組み合わせ値を取得しましょう:
リーリー これら 10 個を取得した後、画像の RGB が解析されるたびに配列に結合され、対応する配列値に置き換えられ、検証コード値が取得されます。以下でデモをしてみましょう:
最後に、正確さを期すために、100 個のループを見てみましょう:
はは、精度は 100% です
最後に書きました
この記事の目的は、WEB 開発者が検証コードを生成する際に安全性に注意し、違法な目的で使用しないようにすることです。
コードはgithubにあります:
興味がありそうな記事: 検証コード識別技術
http://www.bkjia.com/PHPjc/1096150.html