JS破解乌云验证码

p.z (谈钞票伤感情 谈感情又伤钞票又伤感情) | 2015-01-17 15:35

以后盲打乌云后台有验证码也不怕啦

(function(){
    function decaptcha(image){
        var canvas = document.createElement("canvas").getContext('2d');
        var result = '';
        var letter = [[],[],[],[]];
        var letterArea = {
            '0': {'x1':14, 'x2':21, 'y1': 4, 'y2': 13},
            '1': {'x1':23, 'x2':30, 'y1': 4, 'y2': 13},
            '2': {'x1':32, 'x2':39, 'y1': 4, 'y2': 13},
            '3': {'x1':41, 'x2':50, 'y1': 4, 'y2': 13},
        }
        var captchaData = {
            '2':[[0,0,1,1,1,1,0,0],[0,1,1,0,0,1,1,0],[1,1,0,1,0,0,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,1,1,0],[0,0,0,0,1,1,0,0],[0,1,0,1,1,0,0,0],[0,0,1,1,0,0,0,0],[0,1,1,0,0,0,0,0],[1,1,1,1,1,1,1,1]],
             '3':[[0,1,1,1,1,1,0,0],[1,1,0,0,0,1,1,0],[0,0,0,0,0,0,1,1],[0,0,0,0,0,1,1,0],[0,0,0,1,1,1,0,0],[0,0,0,0,0,1,1,0],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,1,1],[1,1,0,0,0,1,1,0],[0,1,1,1,1,1,0,0]],
             '4': [[0,0,0,0,0,1,1,0],[0,0,0,0,1,1,1,0],[0,0,0,1,1,1,1,0],[0,0,1,1,0,1,1,0],[0,1,1,0,0,1,1,0],[1,1,0,0,0,1,1,0],[1,1,1,1,1,1,1,1],[0,0,0,0,0,1,1,0],[0,0,0,0,0,1,1,0],[0,0,0,0,0,1,1,0]],
             '5': [[1,1,1,1,1,1,1,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,1],[1,1,1,1,1,1,0,0],[1,1,1,0,0,1,1,0],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[0,1,1,0,0,1,1,0],[0,0,1,1,1,1,0,0]],
             '6': [[0,0,1,1,1,1,0,0],[0,1,1,0,0,1,1,0],[1,1,0,0,0,0,1,0],[1,1,0,1,0,0,0,0],[1,1,0,1,1,1,0,0],[1,1,1,0,0,1,1,0],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[0,1,1,0,0,1,1,0],[0,0,1,1,1,1,0,0]],
             '7': [[1,1,1,1,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,1,1,0],[0,0,0,0,1,1,0,0],[0,0,0,1,1,0,0,0],[0,0,1,1,0,0,0,0],[0,1,1,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0]],
             '8': [[0,0,1,1,1,1,0,0],[0,1,1,0,0,1,1,0],[1,1,0,0,0,0,1,1],[0,1,1,0,0,1,1,0],[0,0,1,1,1,1,0,0],[0,1,1,0,0,1,1,0],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[0,1,1,0,0,1,1,0],[0,0,1,1,1,1,0,0]],
             '9': [[0,0,1,1,1,1,0,0],[0,1,1,0,0,1,1,0],[1,1,0,0,0,0,1,1],[1,1,0,1,0,0,1,1],[0,1,1,0,0,1,1,1],[0,0,1,1,1,0,1,1],[0,0,0,0,0,0,1,1],[0,1,0,0,0,0,1,1],[0,1,1,0,0,1,1,0],[0,0,1,1,1,1,0,0]],
             'a': [[0,0,0,1,1,0,0,0],[0,0,1,1,1,1,0,0],[0,1,1,0,0,1,1,0],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,1,1,1,1,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1]],
             'b': [[1,1,1,1,1,1,0,0],[1,1,0,0,0,1,1,0],[1,1,0,0,0,0,1,1],[1,1,0,0,0,1,1,0],[1,1,1,1,1,1,0,0],[1,1,0,0,0,1,1,0],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,1,1,0],[1,1,1,1,1,1,0,0]],
             'c': [[0,0,1,1,1,1,1,0],[0,1,1,0,0,0,1,1],[1,1,1,0,0,0,0,1],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,1],[0,1,1,0,0,0,1,1],[0,0,1,1,1,1,1,0]],
             'd': [[1,1,1,1,1,1,0,0],[1,1,0,0,0,1,1,0],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,1,0,1,1],[1,1,0,0,0,1,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,1,1,0],[1,1,1,1,1,1,0,0]],
             'e': [[1,1,1,1,1,1,1,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,1,0],[1,1,0,0,0,0,0,0],[1,1,1,1,1,1,0,1],[1,1,0,1,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,1,1,1,1,1,0]],
             'f': [[1,1,1,1,1,1,1,1],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,1,1,1,1,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0]],
             'g': [[0,0,1,1,1,1,1,0],[0,1,1,0,0,1,1,1],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,1,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[0,1,1,0,0,0,1,1],[0,0,1,1,1,1,1,0]],
             'h': [[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,1,1,1,1,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1]],
             'j': [[0,0,0,1,1,1,1,0],[0,0,0,0,0,1,1,0],[0,0,0,0,1,1,1,0],[1,0,0,0,0,1,1,0],[0,0,0,0,0,1,1,0],[0,1,0,0,0,1,1,0],[0,0,0,0,0,1,1,0],[0,1,0,0,0,1,1,0],[0,1,1,0,1,1,0,0],[0,0,1,1,1,0,0,0]],
             'k': [[1,1,0,0,0,0,1,1],[1,1,0,0,0,1,1,0],[1,1,0,0,1,1,0,0],[1,1,0,1,1,0,0,0],[1,1,1,1,0,0,0,0],[1,1,1,1,0,0,0,0],[1,1,0,1,1,0,0,0],[1,1,0,0,1,1,0,0],[1,1,0,0,0,1,1,0],[1,1,0,0,0,0,1,1]],
             'l': [[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,1,1,1,1,1,0]],
             'm': [[1,1,0,0,0,0,1,1],[1,1,1,0,0,1,1,1],[1,1,1,1,1,1,1,1],[1,1,0,1,1,0,1,1],[1,1,0,1,1,0,1,1],[1,1,0,1,1,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1]],
             'n': [[1,1,0,0,0,0,1,1],[1,1,1,0,0,0,1,1],[1,1,1,1,0,0,1,1],[1,1,1,1,0,0,1,1],[1,1,0,1,1,0,1,1],[1,1,0,1,1,0,1,1],[1,1,0,0,1,1,1,1],[1,1,0,0,0,1,1,1],[1,1,0,0,0,1,1,1],[1,1,0,0,1,0,1,1]],
             'p': [[1,1,1,1,1,1,1,0],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,1,1,1,1,1,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0]],
             'q': [[0,0,1,1,1,1,0,0],[0,1,1,0,0,1,1,0],[1,1,0,1,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,1,1,0,1,1],[1,1,0,0,1,1,1,1],[0,1,1,0,0,1,1,0],[0,0,1,1,1,1,0,1]],
             'r': [[1,1,1,1,1,1,1,0],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,1,1,1,1,1,0],[1,1,1,1,1,0,0,0],[1,1,1,0,1,1,0,0],[1,1,0,0,0,1,1,0],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1]],
             's': [[0,1,1,1,1,1,1,0],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[0,1,1,1,1,1,1,0],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[0,1,1,1,1,1,1,0]],
             't': [[1,1,1,1,1,1,1,1],[0,0,0,1,1,0,0,0],[0,0,0,1,1,0,0,0],[0,0,0,1,1,0,0,0],[0,0,0,1,1,0,0,0],[0,0,0,1,1,0,0,0],[0,0,0,1,1,0,0,0],[0,0,0,1,1,0,0,0],[0,0,0,1,1,0,0,0],[0,0,0,1,1,0,0,0]],
             'u': [[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[0,1,1,0,0,1,1,0],[0,0,1,1,1,1,0,0]],
             'v': [[1,1,0,0,0,0,1,1],[1,1,1,0,0,1,1,1],[1,1,0,0,0,0,1,1],[0,1,1,0,0,1,1,0],[0,1,1,0,0,1,1,0],[0,1,1,0,0,1,1,0],[0,0,1,1,1,1,0,0],[0,0,1,1,1,1,0,0],[0,0,0,1,1,0,0,0],[0,0,0,1,1,0,0,0]],
             'w': [[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[1,1,0,1,1,0,1,1],[1,1,0,1,1,0,1,1],[1,1,0,1,1,0,1,1],[1,1,1,1,1,1,1,1],[1,1,1,0,0,1,1,1],[1,1,0,0,0,0,1,1]],
             'x': [[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[0,1,1,0,0,1,1,0],[0,0,1,1,1,1,0,0],[0,0,0,1,1,0,0,0],[0,0,0,1,1,0,0,0],[0,0,1,1,1,1,0,0],[0,1,1,0,0,1,1,0],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1]],
             'y': [[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,1],[0,1,1,0,0,1,1,0],[0,0,1,1,1,1,0,0],[0,0,0,1,1,0,0,0],[0,0,0,1,1,0,0,0],[0,0,0,1,1,0,0,0],[0,0,0,1,1,0,0,0],[0,0,0,1,1,0,0,0],[0,0,0,1,1,0,0,0]],
             'z': [[1,1,1,1,1,1,1,0],[0,0,0,0,0,1,1,0],[0,0,0,0,0,1,1,0],[0,0,0,0,1,1,0,0],[0,0,0,1,1,0,0,0],[0,0,1,1,0,0,0,0],[0,1,1,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,0,0,0,0,0,0],[1,1,1,1,1,1,1,0]],
         }

        var imageWidth = image.width;
        var imageHeight = image.height;

        canvas.drawImage(image, 0, 0)
        var imageData = canvas.getImageData(0, 0, imageWidth, imageHeight);
        var pixels = imageData.data;

        var isLetter = function(pixeldata){
            var sum = pixeldata[0] + pixeldata[1] + pixeldata[2];
            if (sum<6*3 || sum>250*3){
                return 1;
            }else{
                return 0;
            }
        }

        for(var _h=0; _h<imageHeight; _h++){
            for(var _w=0; _w<imageWidth; _w++){
                var i = 4*(_w + _h*imageWidth);
                for(var _offset in letterArea){
                    var areaData = letterArea[_offset]
                    if((_w>=areaData['x1']&&_w<=areaData['x2']) && (_h>=areaData['y1']&&_h<=areaData['y2'])){
                         var _x = _w - areaData['x1'];
                        var _y = _h - areaData['y1'];
                        if(letter[_offset][_y] == undefined){
                            letter[_offset][_y] = [];
                        }
                        letter[_offset][_y][_x] = isLetter([].slice.call(pixels, i,i+4));
                     }
                }
            }
        }
        for(var i=0;i<letter.length;i++){
            var maxError = 1000;
            var bestResult = ' ';
            for(var _letter in captchaData){
                var _error = 0;
                for(var _i=0; _i<letter[i].length; _i++){
                    for(var _j=0; _j<letter[i][_i].length; _j++){
                        if(letter[i][_i][_j] != captchaData[_letter][_i][_j]){
                            _error += 1;
                        }
                    }
                }
                if(_error < maxError){
                    maxError = _error;
                    bestResult = _letter;
                }
            }
            result += bestResult;
        }

        return result
    }

    function main(target){
        if(!self.$) return;
        target.forEach(function(item){
            var cpt = $(item['cpt']);
            var ipt = $(item['ipt']);
            if(cpt.length && ipt.length){
                ipt.val(decaptcha(cpt[0]));
            }
        })
    }

    var target = [
        //评论/提交
        {'cpt': 'img[id^=captcha]','ipt':'input#captcha'},
        //集市
        {'cpt': 'img#captchabuy_img','ipt':'input#captchabuy'},
        //控制面板/登陆
        {'cpt': 'img[src^=http://www.wooyun.org/captcha.php]','ipt':'input[name=captcha]'}
     ];
    main(target);
})();

[原文地址]

各种吐槽:

1#

Sogili (.) 长短短 (.) | 2015-01-17 15:36

2#

好基友一辈子 | 2015-01-17 15:38

3#

小马达 | 2015-01-17 15:38

火钳刘明

4#

园长 (但愿你是狗,牵你一起走。@z7y @小胖子 噢,最怕你是狗喔,我最怕你不走。@saline @Anonymous 从前 @z7y 有个表弟 @VIP 后来死了。) | 2015-01-17 15:44

围观

5#

刘海哥 (www.liuhg.com) | 2015-01-17 15:47

屌个不停!

6#

泳少 (此号被射!by U神) | 2015-01-17 15:53

一直觉得乌云验证码就是个问题。

7#

whale (棱镜信息安全http://9720.org,招版主) | 2015-01-17 15:53

怎么用。。。

8#

猪猪侠 (A) | 2015-01-17 15:58

厉害

9#

July | 2015-01-17 16:03

膜拜

10#

ljhj (但愿低调,好好学习。) | 2015-01-17 16:05

已经无力吐槽了好么,大乌云的验证码居然连干扰都没有。

11#

B1uH4ck | 2015-01-17 16:32

怎么用看起来diao

12#

M4ster (knownsec & WSL) | 2015-01-17 17:01

厉害

13#

xiaoxin (己所不欲,勿施于人) | 2015-01-17 17:04

今天说吊的人,改天估计会说,我擦我的wb

14#

风情万种 (JJ好痒) | 2015-01-17 19:04

牛哇

15#

蓝哆 | 2015-01-17 20:26

厉害

16#

sky (z7y首席收银员) | 2015-01-17 21:19

。。真叼。。

17#

zeracker (他就是301,多乌云、多机会!我只关注真实!) | 2015-01-17 21:52

贱人就是矫情... 过来我保证不打死你。

18#

PING | 2015-01-17 22:14

猴犀利!

19#

动后河 (类的继承) | 2015-01-17 22:48

这是要先安装node嘛

20#

Me_Fortune | 2015-01-17 23:39

好厉害 = =

21#

0x12 (帽子掉了|多逛,少说话。|小学生) | 2015-01-18 01:49

6

22#

我了个去 (看啥,头像不是我) | 2015-01-18 01:52

点lz名字,直接把我重定向到 http://zone.wooyun.org/login ,完了,lz把我号给盗了。。。

23#

我了个去 (看啥,头像不是我) | 2015-01-18 01:55

我擦,是我网络问题

http://xxx.xxx.xxx.8:83/1Q2W3E4R5T6Y7U8I9O0P1Z2X3C4V5B/zone.wooyun.org/user/p.z

铁通的网络,代理把它当作一个文件下载了。。。

24#

我了个去 (看啥,头像不是我) | 2015-01-18 01:58

用大天朝的网络,真是一点都不省心啊。lz屌爆了,已顶。

25#

xsser (十根阳具有长短!!) | 2015-01-18 08:04

屌丝何必为难屌丝

26#

cat73 | 2015-01-18 09:03

@xsser - -要花时间改验证码了么

27#

cat73 | 2015-01-18 09:05

@xsser http://cat73.coding.io/phps/verify.html

以前写的东东- -

28#

cat73 | 2015-01-18 09:06

数学渣 实在是做不来模糊算法- -

29#

coms | 2015-01-18 09:48

@我了个去 这是我们公司的产品,您告诉我具体设备IP,我上去把乌云整站放行掉

30#

溯雪 | 2015-01-18 10:03

好屌 这个要顶

31#

RainShine (I'm your angel of music.) | 2015-01-18 10:13

叼啊!JS破解乌云验证码……火钳刘明

32#

我了个去 (看啥,头像不是我) | 2015-01-18 11:18

@coms 。。。

33#

cat73 | 2015-01-18 12:00

//仿造大牛的做了个EMS验证码识别
//http://www.ems.com.cn/mailtracking/you_jian_cha_xun.html

function decaptcha(image){
    var letterArea = {
        '0': {'x1': 7, 'x2': 15, 'y1': 3, 'y2': 15},
        '1': {'x1': 20, 'x2': 28, 'y1': 3, 'y2': 15},
        '2': {'x1': 33, 'x2': 41, 'y1': 3, 'y2': 15},
        '3': {'x1': 46, 'x2': 54, 'y1': 3, 'y2': 15},
        '4': {'x1': 59, 'x2': 67, 'y1': 3, 'y2': 15},
        '5': {'x1': 72, 'x2': 80, 'y1': 3, 'y2': 15}
    };

    var captchaData = {
        '0': [
            [0, 0, 0, 1, 1, 1, 0, 0, 0],
            [0, 1, 1, 1, 1, 1, 1, 1, 0],
            [0, 1, 1, 0, 0, 0, 1, 1, 0],
            [1, 1, 0, 0, 0, 0, 0, 1, 1],
            [1, 1, 0, 0, 0, 0, 0, 1, 1],
            [1, 1, 0, 0, 0, 0, 0, 1, 1],
            [1, 1, 0, 0, 0, 0, 0, 1, 1],
            [1, 1, 0, 0, 0, 0, 0, 1, 1],
            [1, 1, 0, 0, 0, 0, 0, 1, 1],
            [1, 1, 0, 0, 0, 0, 0, 1, 1],
            [0, 1, 1, 0, 0, 0, 1, 1, 0],
            [0, 1, 1, 1, 1, 1, 1, 1, 0],
            [0, 0, 0, 1, 1, 1, 0, 0, 0]
        ],

        '1': [
            [0, 0, 1, 1, 1, 0, 0, 0, 2],
            [1, 1, 1, 1, 1, 0, 0, 0, 2],
            [1, 1, 1, 1, 1, 0, 0, 0, 2],
            [0, 0, 0, 1, 1, 0, 0, 0, 2],
            [0, 0, 0, 1, 1, 0, 0, 0, 2],
            [0, 0, 0, 1, 1, 0, 0, 0, 2],
            [0, 0, 0, 1, 1, 0, 0, 0, 2],
            [0, 0, 0, 1, 1, 0, 0, 0, 2],
            [0, 0, 0, 1, 1, 0, 0, 0, 2],
            [0, 0, 0, 1, 1, 0, 0, 0, 2],
            [0, 0, 0, 1, 1, 0, 0, 0, 2],
            [1, 1, 1, 1, 1, 1, 1, 1, 2],
            [1, 1, 1, 1, 1, 1, 1, 1, 2]
        ],

        '2': [
            [0, 1, 1, 1, 1, 1, 0, 0, 2],
            [1, 1, 1, 1, 1, 1, 1, 0, 2],
            [1, 0, 0, 0, 0, 0, 1, 1, 2],
            [0, 0, 0, 0, 0, 0, 1, 1, 2],
            [0, 0, 0, 0, 0, 0, 1, 1, 2],
            [0, 0, 0, 0, 0, 1, 1, 0, 2],
            [0, 0, 0, 0, 1, 1, 0, 0, 2],
            [0, 0, 0, 1, 1, 0, 0, 0, 2],
            [0, 0, 1, 1, 0, 0, 0, 0, 2],
            [0, 1, 1, 0, 0, 0, 0, 0, 2],
            [1, 1, 0, 0, 0, 0, 0, 0, 2],
            [1, 1, 1, 1, 1, 1, 1, 1, 2],
            [1, 1, 1, 1, 1, 1, 1, 1, 2]
        ],

        '3': [
            [0, 1, 1, 1, 1, 1, 0, 0, 2],
            [1, 1, 1, 1, 1, 1, 1, 1, 2],
            [1, 0, 0, 0, 0, 0, 1, 1, 2],
            [0, 0, 0, 0, 0, 0, 1, 1, 2],
            [0, 0, 0, 0, 0, 0, 1, 1, 2],
            [0, 1, 1, 1, 1, 1, 1, 0, 2],
            [0, 1, 1, 1, 1, 1, 1, 1, 2],
            [0, 0, 0, 0, 0, 1, 1, 1, 2],
            [0, 0, 0, 0, 0, 0, 1, 1, 2],
            [0, 0, 0, 0, 0, 0, 1, 1, 2],
            [1, 0, 0, 0, 0, 1, 1, 1, 2],
            [1, 1, 1, 1, 1, 1, 1, 0, 2],
            [0, 1, 1, 1, 1, 1, 0, 0, 2]
        ],

        '4': [
            [0, 0, 0, 0, 0, 1, 1, 0, 0],
            [0, 0, 0, 0, 1, 1, 1, 0, 0],
            [0, 0, 0, 0, 1, 1, 1, 0, 0],
            [0, 0, 0, 1, 1, 1, 1, 0, 0],
            [0, 0, 1, 1, 0, 1, 1, 0, 0],
            [0, 0, 1, 1, 0, 1, 1, 0, 0],
            [0, 1, 1, 0, 0, 1, 1, 0, 0],
            [0, 1, 1, 0, 0, 1, 1, 0, 0],
            [1, 1, 1, 1, 1, 1, 1, 1, 1],
            [1, 1, 1, 1, 1, 1, 1, 1, 1],
            [0, 0, 0, 0, 0, 1, 1, 0, 0],
            [0, 0, 0, 0, 0, 1, 1, 0, 0],
            [0, 0, 0, 0, 0, 1, 1, 0, 0]
        ],

        '5': [
            [1, 1, 1, 1, 1, 1, 1, 1, 2],
            [1, 1, 1, 1, 1, 1, 1, 1, 2],
            [1, 1, 0, 0, 0, 0, 0, 0, 2],
            [1, 1, 0, 0, 0, 0, 0, 0, 2],
            [1, 1, 0, 0, 0, 0, 0, 0, 2],
            [1, 1, 1, 1, 1, 0, 0, 0, 2],
            [1, 1, 1, 1, 1, 1, 1, 0, 2],
            [0, 0, 0, 0, 0, 1, 1, 1, 2],
            [0, 0, 0, 0, 0, 0, 1, 1, 2],
            [0, 0, 0, 0, 0, 0, 1, 1, 2],
            [1, 0, 0, 0, 0, 1, 1, 1, 2],
            [1, 1, 1, 1, 1, 1, 1, 0, 2],
            [0, 1, 1, 1, 1, 1, 0, 0, 2]
        ],

        '6': [
            [0, 0, 0, 1, 1, 1, 1, 0, 0],
            [0, 0, 1, 1, 1, 1, 1, 1, 0],
            [0, 1, 1, 0, 0, 0, 0, 1, 0],
            [0, 1, 1, 0, 0, 0, 0, 0, 0],
            [1, 1, 0, 0, 0, 0, 0, 0, 0],
            [1, 1, 0, 1, 1, 1, 1, 0, 0],
            [1, 1, 1, 1, 1, 1, 1, 1, 0],
            [1, 1, 1, 0, 0, 0, 1, 1, 1],
            [1, 1, 0, 0, 0, 0, 0, 1, 1],
            [1, 1, 0, 0, 0, 0, 0, 1, 1],
            [0, 1, 1, 0, 0, 0, 1, 1, 1],
            [0, 1, 1, 1, 1, 1, 1, 1, 0],
            [0, 0, 0, 1, 1, 1, 1, 0, 0]
        ],

        '7': [
            [1, 1, 1, 1, 1, 1, 1, 1, 2],
            [1, 1, 1, 1, 1, 1, 1, 1, 2],
            [0, 0, 0, 0, 0, 0, 1, 1, 2],
            [0, 0, 0, 0, 0, 0, 1, 0, 2],
            [0, 0, 0, 0, 0, 1, 1, 0, 2],
            [0, 0, 0, 0, 1, 1, 0, 0, 2],
            [0, 0, 0, 0, 1, 0, 0, 0, 2],
            [0, 0, 0, 1, 1, 0, 0, 0, 2],
            [0, 0, 0, 1, 0, 0, 0, 0, 2],
            [0, 0, 1, 1, 0, 0, 0, 0, 2],
            [0, 0, 1, 1, 0, 0, 0, 0, 2],
            [0, 1, 1, 0, 0, 0, 0, 0, 2],
            [0, 1, 1, 0, 0, 0, 0, 0, 2]
        ],

        '8': [
            [0, 0, 1, 1, 1, 1, 1, 0, 0],
            [0, 1, 1, 1, 1, 1, 1, 1, 0],
            [0, 1, 1, 0, 0, 0, 1, 1, 0],
            [0, 1, 1, 0, 0, 0, 1, 1, 0],
            [0, 1, 1, 1, 0, 0, 1, 0, 0],
            [0, 0, 1, 1, 1, 1, 1, 0, 0],
            [0, 0, 1, 1, 1, 1, 1, 0, 0],
            [0, 1, 1, 0, 0, 1, 1, 1, 0],
            [1, 1, 0, 0, 0, 0, 0, 1, 1],
            [1, 1, 0, 0, 0, 0, 0, 1, 1],
            [1, 1, 1, 0, 0, 0, 1, 1, 1],
            [0, 1, 1, 1, 1, 1, 1, 1, 0],
            [0, 0, 1, 1, 1, 1, 1, 0, 0]
        ],

        '9': [
            [0, 0, 1, 1, 1, 1, 0, 0, 0],
            [0, 1, 1, 1, 1, 1, 1, 1, 0],
            [1, 1, 1, 0, 0, 0, 1, 1, 0],
            [1, 1, 0, 0, 0, 0, 0, 1, 1],
            [1, 1, 0, 0, 0, 0, 0, 1, 1],
            [1, 1, 1, 0, 0, 0, 1, 1, 1],
            [0, 1, 1, 1, 1, 1, 1, 1, 1],
            [0, 0, 1, 1, 1, 1, 0, 1, 1],
            [0, 0, 0, 0, 0, 0, 0, 1, 1],
            [0, 0, 0, 0, 0, 0, 1, 1, 0],
            [0, 1, 0, 0, 0, 0, 1, 1, 0],
            [0, 1, 1, 1, 1, 1, 1, 0, 0],
            [0, 0, 1, 1, 1, 1, 0, 0, 0]
        ]
    };

    var canvas = document.createElement("canvas").getContext('2d');
    canvas.drawImage(image, 0, 0);

    var isLetter = function(pixeldata) {
        var sum = pixeldata[0] + pixeldata[1] + pixeldata[2];
        if (sum < 150 * 3) {
            return 1;
        } else {
            return 0;
        }
    }

    var letter = [[], [], [], [], [], []];
    for(var id in letterArea) {
        var charWidth = letterArea[id].x2 - letterArea[id].x1;
        var charHeight = letterArea[id].y2 - letterArea[id].y1;
        var imageData = canvas.getImageData(letterArea[id].x1, letterArea[id].y1, charWidth, charHeight).data;


        for(var h = 0; h <= charHeight; h++) {
            letter[id][h] = [];
            for(var w = 0; w <= charWidth; w++) {
                var i = 4 * (w + h * charWidth);
                letter[id][h][w] = isLetter([].slice.call(imageData, i, i + 4));
            }
        }
    }

    var result = '';
    for(var i = 0; i < letter.length; i++){
        var maxError = 1000;
        var bestResult = ' ';
        for(var id in captchaData){
            var error = 0;
            for(var y = 0; y < letter[i].length; y++){
                for(var x = 0; x < letter[i][y].length; x++){
                    if(captchaData[id][y][x] != 2 && letter[i][y][x] != captchaData[id][y][x]){
                        error += 1;
                    }
                }
            }

            console.log("[" + i + ", " + id + "] " + error);

            if(error < maxError){
                maxError = error;
                bestResult = id;
            }
        }
        result += bestResult;
    }

    return result;
}

function main(target) {
    for(var id in target) {
        if(target[id]['img'] != undefined && target[id]['img'] != null && target[id]['input'] != undefined && target[id]['input'] != null) {
            target[id]['input'].value = decaptcha(target[id]['img']);
        }
    }
}

main([
    //速递查询
    {'img': document.getElementById("checkCode"), 'input':document.getElementsByName("checkCode")[0]}
]);

34#

铜锣湾 | 2015-01-18 19:22

碉堡,还可以这样玩

35#

香草 | 2015-01-18 20:15

js无所不能啊

36#

KamiSama | 2015-01-19 00:16

测试一下

37#

NaiBa | 2015-01-19 11:15

niu

38#

Tank (梦想创造奇迹!) | 2015-01-19 11:20

39#

Neeke | 2015-01-19 11:50

牛逼啊

40#

风花雪月 (多喜欢我自己!) | 2015-01-19 12:33

@cat73 敢不敢不要这么蛋疼!

41#

肉肉 (我我我我我我是乌云头号美男子) | 2015-01-19 12:35

pz姐姐好厉害

42#

by灰客 (要种子先评分) | 2015-01-19 12:55

@cat73 你的验证码也能秒识别。。。

取出颜色大于 你验证码字的

直接就无干扰了

然后建字摸

43#

金属狂人 (你狂我不狂,谁为狂人?) | 2015-01-19 13:05

PZ无敌,混脸熟。

44#

Fireweed | 2015-01-19 20:22

niubi

45#

浮生若梦 | 2015-01-22 09:21

一个验证码识别而已。。。

46#

Ivan (Null.) | 2015-01-22 10:02

屌炸天