ホームページ  >  記事  >  バックエンド開発  >  検証コードを区別するための小さなプログラムを PHP で書きました - 誰でもトラブルシューティングを歓迎します

検証コードを区別するための小さなプログラムを PHP で書きました - 誰でもトラブルシューティングを歓迎します

WBOY
WBOYオリジナル
2016-06-13 13:01:381450ブラウズ

検証コードを認識するための PHP 用の小さなプログラムを書きました。どなたでもご協力ください。
最近、認証コードの突破に関する知識を調べて記録しました。これは、私自身の理解を助けるために過去数日間に学んだ知識の要約である一方で、この側面を勉強している技術系の学生にとっても役立つことを願っています。ウェブサイト管理者の注意を引き、確認コードを提供する際にさらに考慮してもらいたいと考えています。この側面の知識に触れたばかりなので、私の理解は比較的単純なので、間違いは避けられません。
検証コードの役割: ハッカーが特定のプログラムを使用してブルート フォースで特定の登録ユーザーに継続的にログインを試行することを効果的に防止します。実際、最新の検証コードは一般に、マシンがバッチで登録したり、マシンがバッチで応答を投稿したりすることを防ぎます。現在、多くの Web サイトでは検証コード技術を使用して、ユーザーがロボットを使用して自動的に登録、ログイン、スパムを送信することを防止しています。
いわゆる認証コードは、ランダムに生成された数字または記号の文字列から画像を生成するもので、ユーザーは (OCR を防ぐために) 認証コード情報を肉眼で識別できます。フォームを作成し、検証のために Web サイトに送信すると、機能を使用できるようになります。
最も一般的な確認コード
1. 4 桁、ランダムな 1 桁の文字列、最も原始的な認証コードであり、認証効果はほぼゼロです。
2. ランダムなデジタル画像検証コード。写真上の文字は非常に規則的で、ランダムなインターフェロンが追加されているものや、文字の色がランダムなものもあるため、検証効果は以前のものより優れています。グラフィックや画像の基礎知識のない人には突破できません。
3. さまざまな画像形式の乱数 + ランダムな大文字英文字 + ランダムな干渉ピクセル + ランダムな位置。
4. 漢字は登録用の最新の認証コードであり、ランダムに生成されるため、入力が難しくなり、ユーザー エクスペリエンスに影響を与えるため、一般に使用される頻度は低くなります。
わかりやすくするために、今回は 2 番目のタイプの確認コードを主に説明します。まず、インターネット上でよく見られるこの種の確認コードの写真をいくつか見てみましょう。 これら 3 つのスタイルは、基本的に 2 で説明した検証コードの種類を表すことができます。最初は、最初の図が最も解読しやすく、2 番目が 2 番目、3 番目がより困難、4 番目が最も困難であるように見えます。
本当の状況はどうなっているのでしょうか?実際、これら 3 種類の画像の解読は同様に困難です。
最初の画像が最も簡単です。画像の背景と数字は同じ色を使用し、文字は規則的で、文字の位置は同じです。
2枚目の絵は簡単そうに見えないかもしれませんが、実は、背景の色やインターフェロンがどのように変化しても、文字は規則正しく同じ色であることが確認できます。文字以外の色素がすべて除去される限り、インターフェロンは簡単に除去できます。
3枚目は上記のように背景色やインターフェロンが変化するほか、検証文字の色も変化し、それぞれの文字の色も異なるようです。この確認コードを突破することは不可能と思われます。この記事では、学生が自分で作成できるこのタイプの確認コードを例に挙げます。
4 番目の図では、3 番目の図で説明した機能に加えて、干渉率の 2 本の直線がテキストに追加されています。これは難しそうに見えますが、実際には簡単に削除できます。
認証コードの識別は通常、次の手順に分かれています:
1.フォントを取り出します
2.二値化
3. 特徴量を計算する 4. 対照サンプル
1: フォントを取り出します
結局のところ、検証コードを識別することは専門的な OCR 認識ではなく、Web サイトごとに検証コードが異なるため、最も一般的な方法は、この検証コードの特徴コード ライブラリを確立することです。フォントを削除する場合は、すべての文字がこれらの画像に含まれるように、さらにいくつかの画像をダウンロードする必要があるため、ここにある文字には画像しか含まれていないため、0 ~ 9 を含む画像のみを収集する必要があります。
2:二値化
2値化とは、写真上の検証番号の各ピクセルを1、それ以外の部分を0として数値で表現することです。このようにして、各デジタル フォントを計算、記録し、キーとして使用することができます。
3: 特徴量の計算
識別対象画像を二値化して画像特徴を取得します。
4: コントロールサンプル
手順 3 の画像特徴コードと検証コードのフォント パターンを比較して、検証画像上の数字を取得します。
現在の方法では、認証コードの認識率は基本的に 100% になります。
上記の手順を経ても、インターフェロンを除去する方法がまだわかっていないと言うかもしれません。実際、インターフェロンを除去する方法は非常に簡単です。インターフェロンの重要な特徴は、インターフェロンが検証コードの表示効果に影響を及ぼさないことです。そのため、インターフェロンを作成する際、その RGB は、次のように特定の値よりも低い場合もあれば、高い場合もあります。私が挙げた例では、インターフェロンのRGB値は125を超えないため、インターフェロンを簡単に除去できます。

------解決策---------
確認コードを考えつきました まず文字列のセットを生成します...少し変更を加えます...これは一般的に使用されるメソッドです

次に、干渉に対して特別な処理を行います
乱数を使用したビットマップ...すべての色はランダムです
2枚の写真を混ぜます

レリーフや碑文に似た画像を生成します
色は相対的で混沌としています ~ 曖昧な境界方向のみが存在します
つまり二値化できません
人間の脳のあいまいな補完だけを使用できます~

しかし、〜を実装する時間がなく、効率が低い

-----解決策---------
確認コードには漢字の大文字で数字が表示されます。確認にはアラビア数字を入力してください
-----解決策------ ---
応援してください!
悪くない
------解決策---------
芸術的な観点から見ると、そうすべきですあまり複雑にしないでください。そうしないと見苦しくなります。美しい背景にいくつかの美しい数字 (数色の数字を使用することもできます) を加えれば問題ありません。同時に、占有するスペースは小さくする必要があり、高さが大きすぎると見苦しくなります。

オーナーさん、もっとポイントをあげてください、今の貧乏人にはポイントが少なすぎます。毎回数万枚もらえるので、不足することはありません。
-----解決策---------
これはポイント付与ですか?
------解決策-------
いいね!
-- -- --解決策---------
!
------解決策--- ---- --------------
勉強してください..
-----解決策---------- ---- ------
学習
-----解決策------ --
http://blog.csdn.net/luojxun/archive/2008/09/27/2979694.aspx
元の投稿者の方法で生成されたランダム コードを特定することはできません。はは
------解決策---------------------------
はは、ちょっと考えてみましょう時間があるときに外国人の再キャプチャを見てください、ドンドン、それは才能と呼ばれます
-----解決策----------
は、もしonclick によってトリガーされるレイヤーは ID を書き換えるので、役に立たなくなります。認証コードがシリアルパスワードカード型で書かれている場合は絵柄は一切なく、二次元配列に従って記入されているだけです。それも認識不能です。
------解決策---------
元の投稿者が何を書いたのか分かりませんもし私だったら、気にしないなら寝ていたほうがいいでしょうか...
------解決策------ ------
フォローしてください
-----解決策----------- --------
学習
-----解決策---------

引用:
二値化の難易度は上がりますが、理論的に言えば、人間の脳はファジー補完を完了できます、
機械でもできますが、それほど効果的ではないかもしれません。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。