浏览代码

* bugfixes in the linuxfr captcha decoder, and new control.txt

git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/pwntcha/trunk@420 92316355-f0b4-4df1-b90c-862c8a59935f
master
sam 20 年前
父节点
当前提交
60c710a115
共有 2 个文件被更改,包括 77 次插入78 次删除
  1. +21
    -22
      src/linuxfr.c
  2. +56
    -56
      testsuite/linuxfr/control.txt

+ 21
- 22
src/linuxfr.c 查看文件

@@ -76,8 +76,8 @@ char *decode_linuxfr(struct image *img)
* each line; they're base column candidates */ * each line; they're base column candidates */
for(x = 0; x < img->width - 9 * 7 + 1; x++) for(x = 0; x < img->width - 9 * 7 + 1; x++)
{ {
int xcan = 1; int goodx = 1;
for(c = 0; c < 7; c++, xcan) for(c = 0; c < 7 && goodx; c++)
{ {
for(j = 3; j < 10; j++) for(j = 3; j < 10; j++)
{ {
@@ -94,50 +94,49 @@ char *decode_linuxfr(struct image *img)
} }
if(count < 2) if(count < 2)
{ {
xcan = 0; goodx = 0;
break; break;
} }
} }
} }
if(!xcan) if(!goodx)
continue; continue;


/* Now we have an (x,y) candidate - try to fit 7 characters */ /* Now we have an (x,y) candidate - try to fit 7 characters */
for(c = 0; c < 7; c++, xcan) for(c = 0; c < 7 && goodx; c++)
{ {
int r2, g2, b2, test, tcan; int r2, g2, b2, ch;
for(test = 0; test < 62; test++) int minerror = INT_MAX;
for(ch = 0; ch < 62; ch++)
{ {
tcan = 1; int error = 0, goodch = 1;
for(j = 0; j < 12; j++, tcan) for(j = 0; j < 12 && goodch; j++)
for(i = 0; i < 8; i++) for(i = 0; i < 8; i++)
{ {
getpixel(tmp, x + c * 9 + i, y + j, &r, &g, &b); getpixel(tmp, x + c * 9 + i, y + j, &r, &g, &b);
getpixel(font, test * 9 + i, j, &r2, &g2, &b2); getpixel(font, ch * 9 + i, j, &r2, &g2, &b2);
/* Only die if font is black and image is white */ /* Only die if font is black and image is white */
if(r > r2) if(r > r2)
{ {
tcan = 0; goodch = 0;
break; break;
} }
else if(r < r2)
error++;
} }
if(tcan) if(goodch && error < minerror)
{ {
result[c] = all[test]; minerror = error;
result[c] = all[ch];
result[c+1] = '\0'; result[c+1] = '\0';
break;
} }
} }
if(!tcan) if(minerror == INT_MAX)
{ goodx = 0;
xcan = 0;
break;
}
} }
if(xcan) /* Wow, that was a good guess! Exit this loop */
{ if(goodx)
break; break;
}
} }
} }




+ 56
- 56
testsuite/linuxfr/control.txt 查看文件

@@ -3,98 +3,98 @@ egcXvmd
PjFvqau PjFvqau
KUhuaDs KUhuaDs
DmwLiUH DmwLiUH
DuLcaHf DyLcaWf
CSaNFLl CSaNFLl
vGwzWNE vGwzWNE
zoCucuh zoCucuh
WjikOBC WjikOBC
BbEOaSs BbEQaSs
wSeAkuu wSeAkyu
hjbHvin hjbNvin
xOmBzlq xQmBzIq
McCUroO McCUroO
TFdmmiK TFdmmiK
gkHaGEK gkHaGEK
XzfqbuS XzfqbyS
BFlOzwq BRTOzwq
NFDBmfm NFDBmfm
qzzDilT qzzDiIT
ZdusZnh ZdusZnh
PmhzZPL PmhzZRL
AOeCsPD AOeGsRD
btZGKnl btZGKnl
wpfVpai wpfVpai
rtDPugJ rtDRygJ
PvspMJO RvspMJO
PKFrJTX RKHrJTX
EVbKlUM EVbKIUM
TOXOzuY TQXQzuY
pFbSBTD pHbSBTD
ZkFVWhk ZkFVWhk
CBlSCkh CBISCkh
MpjaaDq MpjaaDq
vouZvvk vouZvvk
GOucaYn GQycaYn
phPtpdq phRtpdq
VmGnfZC VmGnfZC
JSEVPZH JSEVPZN
BtqpOUC BtqpQUC
ZlLWZWu ZTLWZWy
DXYndfL DXYndfN
fqqhGYL fqqhGYL
GEnJVJH GEnJVJH
xfHJsBV xfHJsBV
XuOuFjt XuQyFjt
HLqjlza HLqjlza
MhwutaO MhwytaO
JugmBlc JugmBIc
FcmLZFu FcmLZFy
JuaocqJ JuaocqJ
VvFfSdT VvFfSdT
muAASFU myAASPU
jmvPflE jmvPfIE
lnusBSe lnysBSe
uVTTaOl yVTTaQl
BiNlSNW BiNlSNW
lcqzuPc lcqzuPc
dnZNenC dnZNenC
EXWwPES EXWwPES
izCHLXu izGHLXu
eOrxuva eQrxwva
OWXHAmm QWXHAmm
pYlDnDf pYlDnDf
FPqWdcf FRqWdcf
EAaVzLD EAaVzND
sOvdOEL sOvdORN
WExmjHL WExmjNL
xODiwFF xQDiwFF
ANSnOpb ANSnQpb
kcBgrjc kcBgrjc
HHmCNFx HHmCNFx
tUFqNlc tUFqNlc
LdCzCOw LdCzGQw
FjEElxG FjHRIxG
FCAhWZp FCAhWZp
ZSEokTi ZSEokTi
qqZZGdH qqZZGdH
almMBzB almMBzB
DdMhhwK DdMHHwK
uobBZWp uobBZWp
YCxsUHr YCWsUNr
oraVSFP oraVSFP
xuzzhvh xuzzHvH
Yifbkzq Yifbkzq
ebttbkj ebttbkj
EzJjsHE RzJjsHE
dEOnsXL dEQnAXM
wcjSPea wcjSRea
jMGDfYO jMGDfYQ
CgGkduT CgGkdyT
JBJMMpY JBJMMpY
oPvDKkz oRvDKkz
uAuKTOS yAyKTOS
XjPrioj XjRrioj
unuJumu upMJNWU
NiVdvTh NiVdvTh
avhDElE avHDElE
ZoNuvOO ZoNuvQO

||||||
x
 
000:0
正在加载...
取消
保存