mac os x(lion)上运行CIntruder
CIntruder是一个开源的验证码识别程序(姑且不讨论效果)。
在mac os上存在这样的问题:
$: python cintruder --crack "inputs/test1.gif" =========================================================================== CIntruder v0.1 - 2012 - (GPLv3.0) -> by psy =========================================================================== Starting to 'crack' from file... =========================================================================== Target: inputs/test1.gif ======= Loading dictionary... ('\nInternal problems cracking: ', 'error') Traceback (most recent call last): File "/Users/liangyu/Downloads/cintruder/core/main.py", line 74, in try_running return func(*args) File "/Users/liangyu/Downloads/cintruder/core/main.py", line 172, in crack self.crack_captcha(captchas) File "/Users/liangyu/Downloads/cintruder/core/main.py", line 179, in crack_captcha w = self.optionCrack.crack(self.options) File "/Users/liangyu/Downloads/cintruder/core/crack.py", line 82, in crack temp.append(self.buildvector(Image.open("iconset/%s/%s"%(letter, img)))) File "/Library/Python/2.7/site-packages/PIL/Image.py", line 1980, in open raise IOError("cannot identify image file") IOError: cannot identify image file
定位到文件“crack.py”中,83行,看到应该是路径问题,所以在83行前面加一行输出:
print "iconset/%s/%s"%(letter, img)
然后可以看到是由于.DS_Store的问题,接下来想办法排除该文件即可。想83行上面看:
74 if img != "Thumbs.db": # win32 check 75 if options.verbose: 76 if last_letter != letter: 77 print "-----------------" 78 print "Word:", letter 79 print "-----------------" 80 print img 81 last_letter = letter
看到实际上该代码对Thumbs.db做了排除,so只需加一点点就可以排除.DS_Store了
if img != "Thumbs.db" and img!=".DS_Store":
现在基本上没啥问题了,可以运行了。。那么接下来就是测试效果和改进识别算法了