Ignore:
Timestamp:
Jan 5, 2005, 12:38:10 AM (18 years ago)
Author:
Sam Hocevar
Message:
  • bugfixes in the linuxfr captcha decoder, and new control.txt
File:
1 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    }
Note: See TracChangeset for help on using the changeset viewer.