人とコンピュータのどちらが賢いのか、それは永遠の命題と言えます。将棋やチェスで人とコンピュータが争う中、もっとシンプルに見えるCaptchaは未だに人とコンピュータを区別する手段として有効に使われています。 コンピュータには解読できず、人には十分に可読できるCaptchaをコンピュータで自動的に読み込ませようとするプロジェクトがCIntruderです。

CIntruderの使い方

例えばこんなCaptchaがあります。シンプルですね。正解はP36Wです。

それを実際にコマンドで実行します。

$ python cintruder --crack=inputs/test1.gif  --mod easy
===========================================================================

CIntruder v0.2 - 2012 - (GPLv3.0) -> by psy

===========================================================================
Starting to 'crack'
===========================================================================
Target:  inputs/test1.gif
=======
Loading module: easy
===============
Loading dictionary... 
----------------------------

Image position   : 1
Broken Percent   : 100 % [+]
------------------
Word suggested   : p
----------------------------

Image position   : 2
Broken Percent   : 100 % [+]
------------------
Word suggested   : 3
----------------------------

Image position   : 3
Broken Percent   : 100 % [+]
------------------
Word suggested   : 6
----------------------------

Image position   : 4
Broken Percent   : 100 % [+]
------------------
Word suggested   : w

==================
Possible Solution:  [ p36w ]
==================

ずばり正解がでました!その他にも幾つかサンプルがあるのですが、他はうまくいきませんでした。OCRの性能や関連ライブラリ、辞書の問題かも知れません。なお解析エンジンは指定できるので、そこが磨かれる事によって解析精度は大きく変わるはずです。

$ python cintruder --crack "http://host.com/path/captcha.gif" --proxy="http://127.0.0.1:8118" -v

こんな感じにプロキシを通す事もできます。究極的にはブラウザに表示されたCaptchaを自動的に解析するようになるでしょう。CIntruderが進化し、Captchaが自由自在に解読できるようになれば、もっと他の方法でコンピュータを区別するようになるでしょう。Captchaは正直人であっても分かりづらいことがあるので代替技術ができてくれると嬉しいですね。

CIntruderはPython製、GPL v3のオープンソース・ソフトウェアです。

epsylon/cintruder CIntruder: pentesting tool to bypass captchas