Changeset 420 for pwntcha


Ignore:
Timestamp:
Jan 5, 2005, 12:38:10 AM (15 years ago)
Author:
Sam Hocevar
Message:
  • bugfixes in the linuxfr captcha decoder, and new control.txt
Location:
pwntcha/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • pwntcha/trunk/src/linuxfr.c

    r419 r420  
    7777        for(x = 0; x < img->width - 9 * 7 + 1; x++)
    7878        {
    79             int xcan = 1;
    80             for(c = 0; c < 7; c++, xcan)
     79            int goodx = 1;
     80            for(c = 0; c < 7 && goodx; c++)
    8181            {
    8282                for(j = 3; j < 10; j++)
     
    9595                    if(count < 2)
    9696                    {
    97                         xcan = 0;
     97                        goodx = 0;
    9898                        break;
    9999                    }
    100100                }
    101101            }
    102             if(!xcan)
     102            if(!goodx)
    103103                continue;
    104104
    105105            /* Now we have an (x,y) candidate - try to fit 7 characters */
    106             for(c = 0; c < 7; c++, xcan)
     106            for(c = 0; c < 7 && goodx; c++)
    107107            {
    108                 int r2, g2, b2, test, tcan;
    109                 for(test = 0; test < 62; test++)
     108                int r2, g2, b2, ch;
     109                int minerror = INT_MAX;
     110                for(ch = 0; ch < 62; ch++)
    110111                {
    111                     tcan = 1;
    112                     for(j = 0; j < 12; j++, tcan)
     112                    int error = 0, goodch = 1;
     113                    for(j = 0; j < 12 && goodch; j++)
    113114                        for(i = 0; i < 8; i++)
    114115                        {
    115116                            getpixel(tmp, x + c * 9 + i, y + j, &r, &g, &b);
    116                             getpixel(font, test * 9 + i, j, &r2, &g2, &b2);
     117                            getpixel(font, ch * 9 + i, j, &r2, &g2, &b2);
    117118                            /* Only die if font is black and image is white */
    118119                            if(r > r2)
    119120                            {
    120                                 tcan = 0;
     121                                goodch = 0;
    121122                                break;
    122123                            }
     124                            else if(r < r2)
     125                                error++;
    123126                        }
    124                     if(tcan)
     127                    if(goodch && error < minerror)
    125128                    {
    126                         result[c] = all[test];
     129                        minerror = error;
     130                        result[c] = all[ch];
    127131                        result[c+1] = '\0';
    128                         break;
    129132                    }
    130133                }
    131                 if(!tcan)
    132                 {
    133                     xcan = 0;
    134                     break;
    135                 }
     134                if(minerror == INT_MAX)
     135                    goodx = 0;
    136136            }
    137             if(xcan)
    138             {
     137            /* Wow, that was a good guess! Exit this loop */
     138            if(goodx)
    139139                break;
    140             }
    141140        }
    142141    }
  • pwntcha/trunk/testsuite/linuxfr/control.txt

    r419 r420  
    44KUhuaDs
    55DmwLiUH
    6 DuLcaHf
     6DyLcaWf
    77CSaNFLl
    88vGwzWNE
    99zoCucuh
    1010WjikOBC
    11 BbEOaSs
    12 wSeAkuu
    13 hjbHvin
    14 xOmBzlq
     11BbEQaSs
     12wSeAkyu
     13hjbNvin
     14xQmBzIq
    1515McCUroO
    1616TFdmmiK
    1717gkHaGEK
    18 XzfqbuS
    19 BFlOzwq
     18XzfqbyS
     19BRTOzwq
    2020NFDBmfm
    21 qzzDilT
     21qzzDiIT
    2222ZdusZnh
    23 PmhzZPL
    24 AOeCsPD
     23PmhzZRL
     24AOeGsRD
    2525btZGKnl
    2626wpfVpai
    27 rtDPugJ
    28 PvspMJO
    29 PKFrJTX
    30 EVbKlUM
    31 TOXOzuY
    32 pFbSBTD
     27rtDRygJ
     28RvspMJO
     29RKHrJTX
     30EVbKIUM
     31TQXQzuY
     32pHbSBTD
    3333ZkFVWhk
    34 CBlSCkh
     34CBISCkh
    3535MpjaaDq
    3636vouZvvk
    37 GOucaYn
    38 phPtpdq
     37GQycaYn
     38phRtpdq
    3939VmGnfZC
    40 JSEVPZH
    41 BtqpOUC
    42 ZlLWZWu
    43 DXYndfL
     40JSEVPZN
     41BtqpQUC
     42ZTLWZWy
     43DXYndfN
    4444fqqhGYL
    4545GEnJVJH
    4646xfHJsBV
    47 XuOuFjt
     47XuQyFjt
    4848HLqjlza
    49 MhwutaO
    50 JugmBlc
    51 FcmLZFu
     49MhwytaO
     50JugmBIc
     51FcmLZFy
    5252JuaocqJ
    5353VvFfSdT
    54 muAASFU
    55 jmvPflE
    56 lnusBSe
    57 uVTTaOl
     54myAASPU
     55jmvPfIE
     56lnysBSe
     57yVTTaQl
    5858BiNlSNW
    5959lcqzuPc
    6060dnZNenC
    6161EXWwPES
    62 izCHLXu
    63 eOrxuva
    64 OWXHAmm
     62izGHLXu
     63eQrxwva
     64QWXHAmm
    6565pYlDnDf
    66 FPqWdcf
    67 EAaVzLD
    68 sOvdOEL
    69 WExmjHL
    70 xODiwFF
    71 ANSnOpb
     66FRqWdcf
     67EAaVzND
     68sOvdORN
     69WExmjNL
     70xQDiwFF
     71ANSnQpb
    7272kcBgrjc
    7373HHmCNFx
    7474tUFqNlc
    75 LdCzCOw
    76 FjEElxG
     75LdCzGQw
     76FjHRIxG
    7777FCAhWZp
    7878ZSEokTi
    7979qqZZGdH
    8080almMBzB
    81 DdMhhwK
     81DdMHHwK
    8282uobBZWp
    83 YCxsUHr
     83YCWsUNr
    8484oraVSFP
    85 xuzzhvh
     85xuzzHvH
    8686Yifbkzq
    8787ebttbkj
    88 EzJjsHE
    89 dEOnsXL
    90 wcjSPea
    91 jMGDfYO
    92 CgGkduT
     88RzJjsHE
     89dEQnAXM
     90wcjSRea
     91jMGDfYQ
     92CgGkdyT
    9393JBJMMpY
    94 oPvDKkz
    95 uAuKTOS
    96 XjPrioj
    97 unuJumu
     94oRvDKkz
     95yAyKTOS
     96XjRrioj
     97upMJNWU
    9898NiVdvTh
    99 avhDElE
    100 ZoNuvOO
     99avHDElE
     100ZoNuvQO
Note: See TracChangeset for help on using the changeset viewer.