diff --git a/share/font_authimage.png b/share/font_authimage.png new file mode 100644 index 0000000..9416f5f Binary files /dev/null and b/share/font_authimage.png differ diff --git a/src/Makefile.am b/src/Makefile.am index ff8a7ef..4c2aaeb 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -8,6 +8,7 @@ pwntcha_SOURCES = \ image.c \ filters.c \ common.h \ + authimage.c \ linuxfr.c \ phpbb.c \ scode.c \ diff --git a/src/authimage.c b/src/authimage.c new file mode 100644 index 0000000..e5d2250 --- /dev/null +++ b/src/authimage.c @@ -0,0 +1,86 @@ +/* + * authimage.c: decode authimage captchas + * $Id$ + * + * Copyright: (c) 2005 Sam Hocevar + * This program is free software; you can redistribute it and/or + * modify it under the terms of the Do What The Fuck You Want To + * Public License as published by Banlu Kemiyatorn. See + * http://sam.zoy.org/projects/COPYING.WTFPL for more details. + */ + +#include +#include +#include +#include +#include + +#include "config.h" +#include "common.h" + +#define FONTNAME "share/font_authimage.png" +static struct image *font = NULL; + +/* Main function */ +char *decode_authimage(struct image *img) +{ + char *all = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + char *result; + struct image *tmp1, *tmp2, *tmp3; + int x, y, r, g, b, i; + + if(!font) + { + font = image_load(FONTNAME); + if(!font) + { + fprintf(stderr, "cannot load font %s\n", FONTNAME); + exit(-1); + } + } + + /* authimage captchas have 6 characters */ + result = malloc(7 * sizeof(char)); + memset(result, '\0', 7); + + /* half the captchas are inverse video; we set them back to normal */ + tmp1 = filter_scale(img, 2.0); + getpixel(img, 0, 0, &r, &g, &b); + tmp2 = filter_equalize(tmp1, r * 3 / 4); + tmp3 = filter_smooth(tmp2); + + for(i = 0; i < 6; i++) + { + int mindiff = INT_MAX, minch = -1, ch; + for(ch = 0; ch < 36; ch++) + { + int diff = 0; + for(y = 0; y < 7; y++) + { + for(x = 0; x < 5; x++) + { + int newx, newy, r2; + newx = 35.0 + (x + 6 * i) * 218.0 / 34.0 + y * 5.0 / 6.0 + 0.5; + newy = 33.0 - (x + 6 * i) * 18.0 / 34.0 + y * 42.0 / 6.0 + 0.5; + getpixel(tmp3, newx, newy, &r, &g, &b); + getpixel(font, x + 6 * ch, y, &r2, &g, &b); + r = (r < 220) ? 0 : 255; + diff += (r - r2) * (r - r2); + } + } + if(diff < mindiff) + { + mindiff = diff; + minch = ch; + } + } + result[i] = all[minch]; + } + + image_free(tmp3); + image_free(tmp2); + image_free(tmp1); + + return result; +} + diff --git a/src/common.h b/src/common.h index 6bdc0c1..bfcfb07 100644 --- a/src/common.h +++ b/src/common.h @@ -21,6 +21,7 @@ struct image void dprintf(const char *fmt, ...); /* available CAPTCHA decoders */ +char *decode_authimage(struct image *img); char *decode_linuxfr(struct image *img); char *decode_phpbb(struct image *img); char *decode_scode(struct image *img); @@ -42,6 +43,7 @@ int setpixel(struct image *img, int x, int y, int r, int g, int b); void filter_flood_fill(struct image *img, int x, int y, int r, int g, int b); struct image *filter_fill_holes(struct image *img); struct image *filter_dup(struct image *img); +struct image *filter_scale(struct image *img, float ratio); struct image *filter_black_stuff(struct image *img); struct image *filter_detect_lines(struct image *img); struct image *filter_equalize(struct image *img, int threshold); diff --git a/src/filters.c b/src/filters.c index c55960f..cd3a39e 100644 --- a/src/filters.c +++ b/src/filters.c @@ -70,6 +70,27 @@ struct image *filter_dup(struct image *img) return dst; } +struct image *filter_scale(struct image *img, float ratio) +{ + struct image *dst; + int w, h, x, y; + int r, g, b; + + w = ratio * img->width; + h = ratio * img->height; + + dst = image_new(w, h); + + for(y = 0; y < h; y++) + for(x = 0; x < w; x++) + { + getpixel(img, x / ratio, y / ratio, &r, &g, &b); + setpixel(dst, x, y, r, g, b); + } + + return dst; +} + struct image *filter_fill_holes(struct image *img) { struct image *dst; diff --git a/src/linuxfr.c b/src/linuxfr.c index 4307c68..b087726 100644 --- a/src/linuxfr.c +++ b/src/linuxfr.c @@ -29,7 +29,7 @@ char *decode_linuxfr(struct image *img) char *result; struct image *tmp; int x, y, r, g, b, i, j, c; - int stats[40]; + int *stats = malloc(img->height * sizeof(int)); if(!font) { @@ -145,6 +145,7 @@ char *decode_linuxfr(struct image *img) } image_free(tmp); + free(stats); if(strlen(result) != 7) { diff --git a/src/main.c b/src/main.c index 9fec225..48ad093 100644 --- a/src/main.c +++ b/src/main.c @@ -124,6 +124,8 @@ int main(int argc, char *argv[]) if(!strcmp(mode, "test")) result = decode_test(img); + else if(!strcmp(mode, "authimage")) + result = decode_authimage(img); else if(!strcmp(mode, "linuxfr")) result = decode_linuxfr(img); else if(!strcmp(mode, "phpbb")) @@ -136,7 +138,12 @@ int main(int argc, char *argv[]) result = decode_vbulletin(img); else { - if(img->width == 100 && img->height == 40) + if(img->width == 155 && img->height == 50) + { + dprintf("autodetected authimage captcha\n"); + result = decode_authimage(img); + } + else if(img->width == 100 && img->height == 40 && count < 6) { dprintf("autodetected linuxfr captcha\n"); result = decode_linuxfr(img); @@ -146,10 +153,9 @@ int main(int argc, char *argv[]) dprintf("autodetected phpBB captcha\n"); result = decode_phpbb(img); } - else if((img->height == 25 || img->height == 30) - && count < 10) + else if(img->height <= 40 && count < 10) { - dprintf("autodetected scode captcha\n"); + dprintf("autodetected scode/trencaspammers captcha\n"); result = decode_scode(img); } else if(img->height == 69) diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am index 46db670..5d59a29 100644 --- a/testsuite/Makefile.am +++ b/testsuite/Makefile.am @@ -3,6 +3,7 @@ NULL = EXTRA_DIST = \ README \ auditor/auditor00.png auditor/auditor01.png auditor/auditor02.png auditor/auditor03.png auditor/auditor04.png auditor/auditor05.png auditor/auditor06.png auditor/auditor07.png auditor/auditor08.png auditor/auditor09.png auditor/auditor10.png auditor/auditor11.png auditor/auditor12.png auditor/auditor13.png auditor/auditor14.png auditor/auditor15.png auditor/auditor16.png auditor/auditor17.png auditor/auditor18.png auditor/auditor19.png auditor/auditor20.png auditor/auditor21.png auditor/auditor22.png auditor/auditor23.png auditor/auditor24.png auditor/auditor25.png auditor/auditor26.png auditor/auditor27.png auditor/auditor28.png auditor/auditor29.png auditor/auditor30.png auditor/auditor31.png auditor/auditor32.png auditor/auditor33.png auditor/auditor34.png auditor/auditor35.png auditor/auditor36.png auditor/auditor37.png auditor/auditor38.png auditor/auditor39.png auditor/auditor40.png auditor/auditor41.png auditor/auditor42.png auditor/auditor43.png auditor/auditor44.png auditor/auditor45.png auditor/auditor46.png auditor/auditor47.png auditor/auditor48.png auditor/auditor49.png auditor/auditor50.png auditor/auditor51.png auditor/auditor52.png auditor/auditor53.png auditor/auditor54.png auditor/auditor55.png auditor/auditor56.png auditor/auditor57.png auditor/auditor58.png auditor/auditor59.png auditor/auditor60.png auditor/auditor61.png auditor/auditor62.png auditor/auditor63.png auditor/auditor64.png auditor/auditor65.png auditor/auditor66.png auditor/auditor67.png auditor/auditor68.png auditor/auditor69.png auditor/auditor70.png auditor/auditor71.png auditor/auditor72.png auditor/auditor73.png auditor/auditor74.png auditor/auditor75.png auditor/auditor76.png auditor/auditor77.png auditor/auditor78.png auditor/auditor79.png auditor/auditor80.png auditor/auditor81.png auditor/auditor82.png auditor/auditor83.png auditor/auditor84.png auditor/auditor85.png auditor/auditor86.png auditor/auditor87.png auditor/auditor88.png auditor/auditor89.png auditor/auditor90.png auditor/auditor91.png auditor/auditor92.png auditor/auditor93.png auditor/auditor94.png auditor/auditor95.png auditor/auditor96.png auditor/auditor97.png auditor/auditor98.png auditor/auditor99.png auditor/control.txt \ + authimage/authimage00.jpeg authimage/authimage01.jpeg authimage/authimage02.jpeg authimage/authimage03.jpeg authimage/authimage04.jpeg authimage/authimage05.jpeg authimage/authimage06.jpeg authimage/authimage07.jpeg authimage/authimage08.jpeg authimage/authimage09.jpeg authimage/authimage10.jpeg authimage/authimage11.jpeg authimage/authimage12.jpeg authimage/authimage13.jpeg authimage/authimage14.jpeg authimage/authimage15.jpeg authimage/authimage16.jpeg authimage/authimage17.jpeg authimage/authimage18.jpeg authimage/authimage19.jpeg authimage/authimage20.jpeg authimage/authimage21.jpeg authimage/authimage22.jpeg authimage/authimage23.jpeg authimage/authimage24.jpeg authimage/authimage25.jpeg authimage/authimage26.jpeg authimage/authimage27.jpeg authimage/authimage28.jpeg authimage/authimage29.jpeg authimage/authimage30.jpeg authimage/authimage31.jpeg authimage/authimage32.jpeg authimage/authimage33.jpeg authimage/authimage34.jpeg authimage/authimage35.jpeg authimage/authimage36.jpeg authimage/authimage37.jpeg authimage/authimage38.jpeg authimage/authimage39.jpeg authimage/authimage40.jpeg authimage/authimage41.jpeg authimage/authimage42.jpeg authimage/authimage43.jpeg authimage/authimage44.jpeg authimage/authimage45.jpeg authimage/authimage46.jpeg authimage/authimage47.jpeg authimage/authimage48.jpeg authimage/authimage49.jpeg authimage/authimage50.jpeg authimage/authimage51.jpeg authimage/authimage52.jpeg authimage/authimage53.jpeg authimage/authimage54.jpeg authimage/authimage55.jpeg authimage/authimage56.jpeg authimage/authimage57.jpeg authimage/authimage58.jpeg authimage/authimage59.jpeg authimage/authimage60.jpeg authimage/authimage61.jpeg authimage/authimage62.jpeg authimage/authimage63.jpeg authimage/authimage64.jpeg authimage/authimage65.jpeg authimage/authimage66.jpeg authimage/authimage67.jpeg authimage/authimage68.jpeg authimage/authimage69.jpeg authimage/authimage70.jpeg authimage/authimage71.jpeg authimage/authimage72.jpeg authimage/authimage73.jpeg authimage/authimage74.jpeg authimage/authimage75.jpeg authimage/authimage76.jpeg authimage/authimage77.jpeg authimage/authimage78.jpeg authimage/authimage79.jpeg authimage/authimage80.jpeg authimage/authimage81.jpeg authimage/authimage82.jpeg authimage/authimage83.jpeg authimage/authimage84.jpeg authimage/authimage85.jpeg authimage/authimage86.jpeg authimage/authimage87.jpeg authimage/authimage88.jpeg authimage/authimage89.jpeg authimage/authimage90.jpeg authimage/authimage91.jpeg authimage/authimage92.jpeg authimage/authimage93.jpeg authimage/authimage94.jpeg authimage/authimage95.jpeg authimage/authimage96.jpeg authimage/authimage97.jpeg authimage/authimage98.jpeg authimage/authimage99.jpeg authimage/control.txt \ cfxcaptcha/cvxcaptcha00.jpeg cfxcaptcha/cvxcaptcha01.jpeg cfxcaptcha/cvxcaptcha02.jpeg cfxcaptcha/cvxcaptcha03.jpeg cfxcaptcha/cvxcaptcha04.jpeg cfxcaptcha/cvxcaptcha05.jpeg cfxcaptcha/cvxcaptcha06.jpeg cfxcaptcha/cvxcaptcha07.jpeg cfxcaptcha/cvxcaptcha08.jpeg cfxcaptcha/cvxcaptcha09.jpeg cfxcaptcha/cvxcaptcha10.jpeg cfxcaptcha/cvxcaptcha11.jpeg cfxcaptcha/cvxcaptcha12.jpeg cfxcaptcha/cvxcaptcha13.jpeg cfxcaptcha/cvxcaptcha14.jpeg cfxcaptcha/cvxcaptcha15.jpeg cfxcaptcha/cvxcaptcha16.jpeg cfxcaptcha/cvxcaptcha17.jpeg cfxcaptcha/cvxcaptcha18.jpeg cfxcaptcha/cvxcaptcha19.jpeg cfxcaptcha/cvxcaptcha20.jpeg cfxcaptcha/cvxcaptcha21.jpeg cfxcaptcha/cvxcaptcha22.jpeg cfxcaptcha/cvxcaptcha23.jpeg cfxcaptcha/cvxcaptcha24.jpeg cfxcaptcha/cvxcaptcha25.jpeg cfxcaptcha/cvxcaptcha26.jpeg cfxcaptcha/cvxcaptcha27.jpeg cfxcaptcha/cvxcaptcha28.jpeg cfxcaptcha/cvxcaptcha29.jpeg cfxcaptcha/cvxcaptcha30.jpeg cfxcaptcha/cvxcaptcha31.jpeg cfxcaptcha/cvxcaptcha32.jpeg cfxcaptcha/cvxcaptcha33.jpeg cfxcaptcha/cvxcaptcha34.jpeg cfxcaptcha/cvxcaptcha35.jpeg cfxcaptcha/cvxcaptcha36.jpeg cfxcaptcha/cvxcaptcha37.jpeg cfxcaptcha/cvxcaptcha38.jpeg cfxcaptcha/cvxcaptcha39.jpeg cfxcaptcha/cvxcaptcha40.jpeg cfxcaptcha/cvxcaptcha41.jpeg cfxcaptcha/cvxcaptcha42.jpeg cfxcaptcha/cvxcaptcha43.jpeg cfxcaptcha/cvxcaptcha44.jpeg cfxcaptcha/cvxcaptcha45.jpeg cfxcaptcha/cvxcaptcha46.jpeg cfxcaptcha/cvxcaptcha47.jpeg cfxcaptcha/cvxcaptcha48.jpeg cfxcaptcha/cvxcaptcha49.jpeg cfxcaptcha/cvxcaptcha50.jpeg cfxcaptcha/cvxcaptcha51.jpeg cfxcaptcha/cvxcaptcha52.jpeg cfxcaptcha/cvxcaptcha53.jpeg cfxcaptcha/cvxcaptcha54.jpeg cfxcaptcha/cvxcaptcha55.jpeg cfxcaptcha/cvxcaptcha56.jpeg cfxcaptcha/cvxcaptcha57.jpeg cfxcaptcha/cvxcaptcha58.jpeg cfxcaptcha/cvxcaptcha59.jpeg cfxcaptcha/cvxcaptcha60.jpeg cfxcaptcha/cvxcaptcha61.jpeg cfxcaptcha/cvxcaptcha62.jpeg cfxcaptcha/cvxcaptcha63.jpeg cfxcaptcha/cvxcaptcha64.jpeg cfxcaptcha/cvxcaptcha65.jpeg cfxcaptcha/cvxcaptcha66.jpeg cfxcaptcha/cvxcaptcha67.jpeg cfxcaptcha/cvxcaptcha68.jpeg cfxcaptcha/cvxcaptcha69.jpeg cfxcaptcha/cvxcaptcha70.jpeg cfxcaptcha/cvxcaptcha71.jpeg cfxcaptcha/cvxcaptcha72.jpeg cfxcaptcha/cvxcaptcha73.jpeg cfxcaptcha/cvxcaptcha74.jpeg cfxcaptcha/cvxcaptcha75.jpeg cfxcaptcha/cvxcaptcha76.jpeg cfxcaptcha/cvxcaptcha77.jpeg cfxcaptcha/cvxcaptcha78.jpeg cfxcaptcha/cvxcaptcha79.jpeg cfxcaptcha/cvxcaptcha80.jpeg cfxcaptcha/cvxcaptcha81.jpeg cfxcaptcha/cvxcaptcha82.jpeg cfxcaptcha/cvxcaptcha83.jpeg cfxcaptcha/cvxcaptcha84.jpeg cfxcaptcha/cvxcaptcha85.jpeg cfxcaptcha/cvxcaptcha86.jpeg cfxcaptcha/cvxcaptcha87.jpeg cfxcaptcha/cvxcaptcha88.jpeg cfxcaptcha/cvxcaptcha89.jpeg cfxcaptcha/cvxcaptcha90.jpeg cfxcaptcha/cvxcaptcha91.jpeg cfxcaptcha/cvxcaptcha92.jpeg cfxcaptcha/cvxcaptcha93.jpeg cfxcaptcha/cvxcaptcha94.jpeg cfxcaptcha/cvxcaptcha95.jpeg cfxcaptcha/cvxcaptcha96.jpeg cfxcaptcha/cvxcaptcha97.jpeg cfxcaptcha/cvxcaptcha98.jpeg cfxcaptcha/cvxcaptcha99.jpeg \ icq/icq00.jpeg icq/icq01.jpeg icq/icq02.jpeg icq/icq03.jpeg icq/icq04.jpeg icq/icq05.jpeg icq/icq06.jpeg icq/icq07.jpeg icq/icq08.jpeg icq/icq09.jpeg icq/icq10.jpeg icq/icq11.jpeg icq/icq12.jpeg icq/icq13.jpeg icq/icq14.jpeg icq/icq15.jpeg icq/icq16.jpeg icq/icq17.jpeg icq/icq18.jpeg icq/icq19.jpeg icq/icq20.jpeg icq/icq21.jpeg icq/icq22.jpeg icq/icq23.jpeg icq/icq24.jpeg icq/icq25.jpeg icq/icq26.jpeg icq/icq27.jpeg icq/icq28.jpeg icq/icq29.jpeg icq/icq30.jpeg icq/icq31.jpeg icq/icq32.jpeg icq/icq33.jpeg icq/icq34.jpeg icq/icq35.jpeg icq/icq36.jpeg icq/icq37.jpeg icq/icq38.jpeg icq/icq39.jpeg icq/icq40.jpeg icq/icq41.jpeg icq/icq42.jpeg icq/icq43.jpeg icq/icq44.jpeg icq/icq45.jpeg icq/icq46.jpeg icq/icq47.jpeg icq/icq48.jpeg icq/icq49.jpeg icq/icq50.jpeg icq/icq51.jpeg icq/icq52.jpeg icq/icq53.jpeg icq/icq54.jpeg icq/icq55.jpeg icq/icq56.jpeg icq/icq57.jpeg icq/icq58.jpeg icq/icq59.jpeg icq/icq60.jpeg icq/icq61.jpeg icq/icq62.jpeg icq/icq63.jpeg icq/icq64.jpeg icq/icq65.jpeg icq/icq66.jpeg icq/icq67.jpeg icq/icq68.jpeg icq/icq69.jpeg icq/icq70.jpeg icq/icq71.jpeg icq/icq72.jpeg icq/icq73.jpeg icq/icq74.jpeg icq/icq75.jpeg icq/icq76.jpeg icq/icq77.jpeg icq/icq78.jpeg icq/icq79.jpeg icq/icq80.jpeg icq/icq81.jpeg icq/icq82.jpeg icq/icq83.jpeg icq/icq84.jpeg icq/icq85.jpeg icq/icq86.jpeg icq/icq87.jpeg icq/icq88.jpeg icq/icq89.jpeg icq/icq90.jpeg icq/icq91.jpeg icq/icq92.jpeg icq/icq93.jpeg icq/icq94.jpeg icq/icq95.jpeg icq/icq96.jpeg icq/icq97.jpeg icq/icq98.jpeg icq/icq99.jpeg \ linuxfr/linuxfr00.png linuxfr/linuxfr01.png linuxfr/linuxfr02.png linuxfr/linuxfr03.png linuxfr/linuxfr04.png linuxfr/linuxfr05.png linuxfr/linuxfr06.png linuxfr/linuxfr07.png linuxfr/linuxfr08.png linuxfr/linuxfr09.png linuxfr/linuxfr10.png linuxfr/linuxfr11.png linuxfr/linuxfr12.png linuxfr/linuxfr13.png linuxfr/linuxfr14.png linuxfr/linuxfr15.png linuxfr/linuxfr16.png linuxfr/linuxfr17.png linuxfr/linuxfr18.png linuxfr/linuxfr19.png linuxfr/linuxfr20.png linuxfr/linuxfr21.png linuxfr/linuxfr22.png linuxfr/linuxfr23.png linuxfr/linuxfr24.png linuxfr/linuxfr25.png linuxfr/linuxfr26.png linuxfr/linuxfr27.png linuxfr/linuxfr28.png linuxfr/linuxfr29.png linuxfr/linuxfr30.png linuxfr/linuxfr31.png linuxfr/linuxfr32.png linuxfr/linuxfr33.png linuxfr/linuxfr34.png linuxfr/linuxfr35.png linuxfr/linuxfr36.png linuxfr/linuxfr37.png linuxfr/linuxfr38.png linuxfr/linuxfr39.png linuxfr/linuxfr40.png linuxfr/linuxfr41.png linuxfr/linuxfr42.png linuxfr/linuxfr43.png linuxfr/linuxfr44.png linuxfr/linuxfr45.png linuxfr/linuxfr46.png linuxfr/linuxfr47.png linuxfr/linuxfr48.png linuxfr/linuxfr49.png linuxfr/linuxfr50.png linuxfr/linuxfr51.png linuxfr/linuxfr52.png linuxfr/linuxfr53.png linuxfr/linuxfr54.png linuxfr/linuxfr55.png linuxfr/linuxfr56.png linuxfr/linuxfr57.png linuxfr/linuxfr58.png linuxfr/linuxfr59.png linuxfr/linuxfr60.png linuxfr/linuxfr61.png linuxfr/linuxfr62.png linuxfr/linuxfr63.png linuxfr/linuxfr64.png linuxfr/linuxfr65.png linuxfr/linuxfr66.png linuxfr/linuxfr67.png linuxfr/linuxfr68.png linuxfr/linuxfr69.png linuxfr/linuxfr70.png linuxfr/linuxfr71.png linuxfr/linuxfr72.png linuxfr/linuxfr73.png linuxfr/linuxfr74.png linuxfr/linuxfr75.png linuxfr/linuxfr76.png linuxfr/linuxfr77.png linuxfr/linuxfr78.png linuxfr/linuxfr79.png linuxfr/linuxfr80.png linuxfr/linuxfr81.png linuxfr/linuxfr82.png linuxfr/linuxfr83.png linuxfr/linuxfr84.png linuxfr/linuxfr85.png linuxfr/linuxfr86.png linuxfr/linuxfr87.png linuxfr/linuxfr88.png linuxfr/linuxfr89.png linuxfr/linuxfr90.png linuxfr/linuxfr91.png linuxfr/linuxfr92.png linuxfr/linuxfr93.png linuxfr/linuxfr94.png linuxfr/linuxfr95.png linuxfr/linuxfr96.png linuxfr/linuxfr97.png linuxfr/linuxfr98.png linuxfr/linuxfr99.png linuxfr/control.txt \ diff --git a/testsuite/README b/testsuite/README index a57a079..703b934 100644 --- a/testsuite/README +++ b/testsuite/README @@ -3,6 +3,9 @@ Repository of captchas collected on the web. auditor ------- +authimage +--------- + cfxcaptcha ---------- http://www.emerle.net/programming/display.cfm/t/cfx_captcha diff --git a/testsuite/authimage/authimage00.jpeg b/testsuite/authimage/authimage00.jpeg new file mode 100644 index 0000000..91d185e Binary files /dev/null and b/testsuite/authimage/authimage00.jpeg differ diff --git a/testsuite/authimage/authimage01.jpeg b/testsuite/authimage/authimage01.jpeg new file mode 100644 index 0000000..bc542d9 Binary files /dev/null and b/testsuite/authimage/authimage01.jpeg differ diff --git a/testsuite/authimage/authimage02.jpeg b/testsuite/authimage/authimage02.jpeg new file mode 100644 index 0000000..4e70c23 Binary files /dev/null and b/testsuite/authimage/authimage02.jpeg differ diff --git a/testsuite/authimage/authimage03.jpeg b/testsuite/authimage/authimage03.jpeg new file mode 100644 index 0000000..7538c78 Binary files /dev/null and b/testsuite/authimage/authimage03.jpeg differ diff --git a/testsuite/authimage/authimage04.jpeg b/testsuite/authimage/authimage04.jpeg new file mode 100644 index 0000000..7b1856d Binary files /dev/null and b/testsuite/authimage/authimage04.jpeg differ diff --git a/testsuite/authimage/authimage05.jpeg b/testsuite/authimage/authimage05.jpeg new file mode 100644 index 0000000..d2538bb Binary files /dev/null and b/testsuite/authimage/authimage05.jpeg differ diff --git a/testsuite/authimage/authimage06.jpeg b/testsuite/authimage/authimage06.jpeg new file mode 100644 index 0000000..eaa902b Binary files /dev/null and b/testsuite/authimage/authimage06.jpeg differ diff --git a/testsuite/authimage/authimage07.jpeg b/testsuite/authimage/authimage07.jpeg new file mode 100644 index 0000000..12b4c07 Binary files /dev/null and b/testsuite/authimage/authimage07.jpeg differ diff --git a/testsuite/authimage/authimage08.jpeg b/testsuite/authimage/authimage08.jpeg new file mode 100644 index 0000000..b4663be Binary files /dev/null and b/testsuite/authimage/authimage08.jpeg differ diff --git a/testsuite/authimage/authimage09.jpeg b/testsuite/authimage/authimage09.jpeg new file mode 100644 index 0000000..f41ad27 Binary files /dev/null and b/testsuite/authimage/authimage09.jpeg differ diff --git a/testsuite/authimage/authimage10.jpeg b/testsuite/authimage/authimage10.jpeg new file mode 100644 index 0000000..e0db21a Binary files /dev/null and b/testsuite/authimage/authimage10.jpeg differ diff --git a/testsuite/authimage/authimage11.jpeg b/testsuite/authimage/authimage11.jpeg new file mode 100644 index 0000000..d8e10d0 Binary files /dev/null and b/testsuite/authimage/authimage11.jpeg differ diff --git a/testsuite/authimage/authimage12.jpeg b/testsuite/authimage/authimage12.jpeg new file mode 100644 index 0000000..37af6ae Binary files /dev/null and b/testsuite/authimage/authimage12.jpeg differ diff --git a/testsuite/authimage/authimage13.jpeg b/testsuite/authimage/authimage13.jpeg new file mode 100644 index 0000000..526d69e Binary files /dev/null and b/testsuite/authimage/authimage13.jpeg differ diff --git a/testsuite/authimage/authimage14.jpeg b/testsuite/authimage/authimage14.jpeg new file mode 100644 index 0000000..ee3f882 Binary files /dev/null and b/testsuite/authimage/authimage14.jpeg differ diff --git a/testsuite/authimage/authimage15.jpeg b/testsuite/authimage/authimage15.jpeg new file mode 100644 index 0000000..ee86dd3 Binary files /dev/null and b/testsuite/authimage/authimage15.jpeg differ diff --git a/testsuite/authimage/authimage16.jpeg b/testsuite/authimage/authimage16.jpeg new file mode 100644 index 0000000..5701f8a Binary files /dev/null and b/testsuite/authimage/authimage16.jpeg differ diff --git a/testsuite/authimage/authimage17.jpeg b/testsuite/authimage/authimage17.jpeg new file mode 100644 index 0000000..421477e Binary files /dev/null and b/testsuite/authimage/authimage17.jpeg differ diff --git a/testsuite/authimage/authimage18.jpeg b/testsuite/authimage/authimage18.jpeg new file mode 100644 index 0000000..9afed77 Binary files /dev/null and b/testsuite/authimage/authimage18.jpeg differ diff --git a/testsuite/authimage/authimage19.jpeg b/testsuite/authimage/authimage19.jpeg new file mode 100644 index 0000000..9fffae4 Binary files /dev/null and b/testsuite/authimage/authimage19.jpeg differ diff --git a/testsuite/authimage/authimage20.jpeg b/testsuite/authimage/authimage20.jpeg new file mode 100644 index 0000000..415de8e Binary files /dev/null and b/testsuite/authimage/authimage20.jpeg differ diff --git a/testsuite/authimage/authimage21.jpeg b/testsuite/authimage/authimage21.jpeg new file mode 100644 index 0000000..24586dd Binary files /dev/null and b/testsuite/authimage/authimage21.jpeg differ diff --git a/testsuite/authimage/authimage22.jpeg b/testsuite/authimage/authimage22.jpeg new file mode 100644 index 0000000..682c0a9 Binary files /dev/null and b/testsuite/authimage/authimage22.jpeg differ diff --git a/testsuite/authimage/authimage23.jpeg b/testsuite/authimage/authimage23.jpeg new file mode 100644 index 0000000..83d666c Binary files /dev/null and b/testsuite/authimage/authimage23.jpeg differ diff --git a/testsuite/authimage/authimage24.jpeg b/testsuite/authimage/authimage24.jpeg new file mode 100644 index 0000000..e19e88f Binary files /dev/null and b/testsuite/authimage/authimage24.jpeg differ diff --git a/testsuite/authimage/authimage25.jpeg b/testsuite/authimage/authimage25.jpeg new file mode 100644 index 0000000..5df0113 Binary files /dev/null and b/testsuite/authimage/authimage25.jpeg differ diff --git a/testsuite/authimage/authimage26.jpeg b/testsuite/authimage/authimage26.jpeg new file mode 100644 index 0000000..82202d0 Binary files /dev/null and b/testsuite/authimage/authimage26.jpeg differ diff --git a/testsuite/authimage/authimage27.jpeg b/testsuite/authimage/authimage27.jpeg new file mode 100644 index 0000000..60d493c Binary files /dev/null and b/testsuite/authimage/authimage27.jpeg differ diff --git a/testsuite/authimage/authimage28.jpeg b/testsuite/authimage/authimage28.jpeg new file mode 100644 index 0000000..f30e31e Binary files /dev/null and b/testsuite/authimage/authimage28.jpeg differ diff --git a/testsuite/authimage/authimage29.jpeg b/testsuite/authimage/authimage29.jpeg new file mode 100644 index 0000000..780b5e5 Binary files /dev/null and b/testsuite/authimage/authimage29.jpeg differ diff --git a/testsuite/authimage/authimage30.jpeg b/testsuite/authimage/authimage30.jpeg new file mode 100644 index 0000000..dd48519 Binary files /dev/null and b/testsuite/authimage/authimage30.jpeg differ diff --git a/testsuite/authimage/authimage31.jpeg b/testsuite/authimage/authimage31.jpeg new file mode 100644 index 0000000..c3a4a80 Binary files /dev/null and b/testsuite/authimage/authimage31.jpeg differ diff --git a/testsuite/authimage/authimage32.jpeg b/testsuite/authimage/authimage32.jpeg new file mode 100644 index 0000000..e887cf1 Binary files /dev/null and b/testsuite/authimage/authimage32.jpeg differ diff --git a/testsuite/authimage/authimage33.jpeg b/testsuite/authimage/authimage33.jpeg new file mode 100644 index 0000000..66f25bd Binary files /dev/null and b/testsuite/authimage/authimage33.jpeg differ diff --git a/testsuite/authimage/authimage34.jpeg b/testsuite/authimage/authimage34.jpeg new file mode 100644 index 0000000..853e32f Binary files /dev/null and b/testsuite/authimage/authimage34.jpeg differ diff --git a/testsuite/authimage/authimage35.jpeg b/testsuite/authimage/authimage35.jpeg new file mode 100644 index 0000000..90056ce Binary files /dev/null and b/testsuite/authimage/authimage35.jpeg differ diff --git a/testsuite/authimage/authimage36.jpeg b/testsuite/authimage/authimage36.jpeg new file mode 100644 index 0000000..84ce85d Binary files /dev/null and b/testsuite/authimage/authimage36.jpeg differ diff --git a/testsuite/authimage/authimage37.jpeg b/testsuite/authimage/authimage37.jpeg new file mode 100644 index 0000000..2807545 Binary files /dev/null and b/testsuite/authimage/authimage37.jpeg differ diff --git a/testsuite/authimage/authimage38.jpeg b/testsuite/authimage/authimage38.jpeg new file mode 100644 index 0000000..f3f59fa Binary files /dev/null and b/testsuite/authimage/authimage38.jpeg differ diff --git a/testsuite/authimage/authimage39.jpeg b/testsuite/authimage/authimage39.jpeg new file mode 100644 index 0000000..19899c3 Binary files /dev/null and b/testsuite/authimage/authimage39.jpeg differ diff --git a/testsuite/authimage/authimage40.jpeg b/testsuite/authimage/authimage40.jpeg new file mode 100644 index 0000000..bf90b5f Binary files /dev/null and b/testsuite/authimage/authimage40.jpeg differ diff --git a/testsuite/authimage/authimage41.jpeg b/testsuite/authimage/authimage41.jpeg new file mode 100644 index 0000000..89abbe5 Binary files /dev/null and b/testsuite/authimage/authimage41.jpeg differ diff --git a/testsuite/authimage/authimage42.jpeg b/testsuite/authimage/authimage42.jpeg new file mode 100644 index 0000000..60964de Binary files /dev/null and b/testsuite/authimage/authimage42.jpeg differ diff --git a/testsuite/authimage/authimage43.jpeg b/testsuite/authimage/authimage43.jpeg new file mode 100644 index 0000000..bbe4754 Binary files /dev/null and b/testsuite/authimage/authimage43.jpeg differ diff --git a/testsuite/authimage/authimage44.jpeg b/testsuite/authimage/authimage44.jpeg new file mode 100644 index 0000000..b1c5d24 Binary files /dev/null and b/testsuite/authimage/authimage44.jpeg differ diff --git a/testsuite/authimage/authimage45.jpeg b/testsuite/authimage/authimage45.jpeg new file mode 100644 index 0000000..bb4c59c Binary files /dev/null and b/testsuite/authimage/authimage45.jpeg differ diff --git a/testsuite/authimage/authimage46.jpeg b/testsuite/authimage/authimage46.jpeg new file mode 100644 index 0000000..af52370 Binary files /dev/null and b/testsuite/authimage/authimage46.jpeg differ diff --git a/testsuite/authimage/authimage47.jpeg b/testsuite/authimage/authimage47.jpeg new file mode 100644 index 0000000..f0c02cd Binary files /dev/null and b/testsuite/authimage/authimage47.jpeg differ diff --git a/testsuite/authimage/authimage48.jpeg b/testsuite/authimage/authimage48.jpeg new file mode 100644 index 0000000..7b3d050 Binary files /dev/null and b/testsuite/authimage/authimage48.jpeg differ diff --git a/testsuite/authimage/authimage49.jpeg b/testsuite/authimage/authimage49.jpeg new file mode 100644 index 0000000..4ae084f Binary files /dev/null and b/testsuite/authimage/authimage49.jpeg differ diff --git a/testsuite/authimage/authimage50.jpeg b/testsuite/authimage/authimage50.jpeg new file mode 100644 index 0000000..06e18b0 Binary files /dev/null and b/testsuite/authimage/authimage50.jpeg differ diff --git a/testsuite/authimage/authimage51.jpeg b/testsuite/authimage/authimage51.jpeg new file mode 100644 index 0000000..304b0d5 Binary files /dev/null and b/testsuite/authimage/authimage51.jpeg differ diff --git a/testsuite/authimage/authimage52.jpeg b/testsuite/authimage/authimage52.jpeg new file mode 100644 index 0000000..eda477a Binary files /dev/null and b/testsuite/authimage/authimage52.jpeg differ diff --git a/testsuite/authimage/authimage53.jpeg b/testsuite/authimage/authimage53.jpeg new file mode 100644 index 0000000..a28e23a Binary files /dev/null and b/testsuite/authimage/authimage53.jpeg differ diff --git a/testsuite/authimage/authimage54.jpeg b/testsuite/authimage/authimage54.jpeg new file mode 100644 index 0000000..71f1185 Binary files /dev/null and b/testsuite/authimage/authimage54.jpeg differ diff --git a/testsuite/authimage/authimage55.jpeg b/testsuite/authimage/authimage55.jpeg new file mode 100644 index 0000000..3b24752 Binary files /dev/null and b/testsuite/authimage/authimage55.jpeg differ diff --git a/testsuite/authimage/authimage56.jpeg b/testsuite/authimage/authimage56.jpeg new file mode 100644 index 0000000..9cc4a39 Binary files /dev/null and b/testsuite/authimage/authimage56.jpeg differ diff --git a/testsuite/authimage/authimage57.jpeg b/testsuite/authimage/authimage57.jpeg new file mode 100644 index 0000000..595d6ce Binary files /dev/null and b/testsuite/authimage/authimage57.jpeg differ diff --git a/testsuite/authimage/authimage58.jpeg b/testsuite/authimage/authimage58.jpeg new file mode 100644 index 0000000..9fa0c06 Binary files /dev/null and b/testsuite/authimage/authimage58.jpeg differ diff --git a/testsuite/authimage/authimage59.jpeg b/testsuite/authimage/authimage59.jpeg new file mode 100644 index 0000000..d363f32 Binary files /dev/null and b/testsuite/authimage/authimage59.jpeg differ diff --git a/testsuite/authimage/authimage60.jpeg b/testsuite/authimage/authimage60.jpeg new file mode 100644 index 0000000..415b54c Binary files /dev/null and b/testsuite/authimage/authimage60.jpeg differ diff --git a/testsuite/authimage/authimage61.jpeg b/testsuite/authimage/authimage61.jpeg new file mode 100644 index 0000000..24291fb Binary files /dev/null and b/testsuite/authimage/authimage61.jpeg differ diff --git a/testsuite/authimage/authimage62.jpeg b/testsuite/authimage/authimage62.jpeg new file mode 100644 index 0000000..05facf2 Binary files /dev/null and b/testsuite/authimage/authimage62.jpeg differ diff --git a/testsuite/authimage/authimage63.jpeg b/testsuite/authimage/authimage63.jpeg new file mode 100644 index 0000000..ebc6eee Binary files /dev/null and b/testsuite/authimage/authimage63.jpeg differ diff --git a/testsuite/authimage/authimage64.jpeg b/testsuite/authimage/authimage64.jpeg new file mode 100644 index 0000000..d3bf94c Binary files /dev/null and b/testsuite/authimage/authimage64.jpeg differ diff --git a/testsuite/authimage/authimage65.jpeg b/testsuite/authimage/authimage65.jpeg new file mode 100644 index 0000000..07021dd Binary files /dev/null and b/testsuite/authimage/authimage65.jpeg differ diff --git a/testsuite/authimage/authimage66.jpeg b/testsuite/authimage/authimage66.jpeg new file mode 100644 index 0000000..48e7a83 Binary files /dev/null and b/testsuite/authimage/authimage66.jpeg differ diff --git a/testsuite/authimage/authimage67.jpeg b/testsuite/authimage/authimage67.jpeg new file mode 100644 index 0000000..39b9b4d Binary files /dev/null and b/testsuite/authimage/authimage67.jpeg differ diff --git a/testsuite/authimage/authimage68.jpeg b/testsuite/authimage/authimage68.jpeg new file mode 100644 index 0000000..8c77fa7 Binary files /dev/null and b/testsuite/authimage/authimage68.jpeg differ diff --git a/testsuite/authimage/authimage69.jpeg b/testsuite/authimage/authimage69.jpeg new file mode 100644 index 0000000..fdec7ff Binary files /dev/null and b/testsuite/authimage/authimage69.jpeg differ diff --git a/testsuite/authimage/authimage70.jpeg b/testsuite/authimage/authimage70.jpeg new file mode 100644 index 0000000..a65356f Binary files /dev/null and b/testsuite/authimage/authimage70.jpeg differ diff --git a/testsuite/authimage/authimage71.jpeg b/testsuite/authimage/authimage71.jpeg new file mode 100644 index 0000000..38ae809 Binary files /dev/null and b/testsuite/authimage/authimage71.jpeg differ diff --git a/testsuite/authimage/authimage72.jpeg b/testsuite/authimage/authimage72.jpeg new file mode 100644 index 0000000..a5ec8cf Binary files /dev/null and b/testsuite/authimage/authimage72.jpeg differ diff --git a/testsuite/authimage/authimage73.jpeg b/testsuite/authimage/authimage73.jpeg new file mode 100644 index 0000000..f9516ab Binary files /dev/null and b/testsuite/authimage/authimage73.jpeg differ diff --git a/testsuite/authimage/authimage74.jpeg b/testsuite/authimage/authimage74.jpeg new file mode 100644 index 0000000..282bd74 Binary files /dev/null and b/testsuite/authimage/authimage74.jpeg differ diff --git a/testsuite/authimage/authimage75.jpeg b/testsuite/authimage/authimage75.jpeg new file mode 100644 index 0000000..39cdacc Binary files /dev/null and b/testsuite/authimage/authimage75.jpeg differ diff --git a/testsuite/authimage/authimage76.jpeg b/testsuite/authimage/authimage76.jpeg new file mode 100644 index 0000000..742d04d Binary files /dev/null and b/testsuite/authimage/authimage76.jpeg differ diff --git a/testsuite/authimage/authimage77.jpeg b/testsuite/authimage/authimage77.jpeg new file mode 100644 index 0000000..403f2ee Binary files /dev/null and b/testsuite/authimage/authimage77.jpeg differ diff --git a/testsuite/authimage/authimage78.jpeg b/testsuite/authimage/authimage78.jpeg new file mode 100644 index 0000000..906e737 Binary files /dev/null and b/testsuite/authimage/authimage78.jpeg differ diff --git a/testsuite/authimage/authimage79.jpeg b/testsuite/authimage/authimage79.jpeg new file mode 100644 index 0000000..aaf7341 Binary files /dev/null and b/testsuite/authimage/authimage79.jpeg differ diff --git a/testsuite/authimage/authimage80.jpeg b/testsuite/authimage/authimage80.jpeg new file mode 100644 index 0000000..3033558 Binary files /dev/null and b/testsuite/authimage/authimage80.jpeg differ diff --git a/testsuite/authimage/authimage81.jpeg b/testsuite/authimage/authimage81.jpeg new file mode 100644 index 0000000..94357eb Binary files /dev/null and b/testsuite/authimage/authimage81.jpeg differ diff --git a/testsuite/authimage/authimage82.jpeg b/testsuite/authimage/authimage82.jpeg new file mode 100644 index 0000000..32250ae Binary files /dev/null and b/testsuite/authimage/authimage82.jpeg differ diff --git a/testsuite/authimage/authimage83.jpeg b/testsuite/authimage/authimage83.jpeg new file mode 100644 index 0000000..0f5dac7 Binary files /dev/null and b/testsuite/authimage/authimage83.jpeg differ diff --git a/testsuite/authimage/authimage84.jpeg b/testsuite/authimage/authimage84.jpeg new file mode 100644 index 0000000..da4e1d6 Binary files /dev/null and b/testsuite/authimage/authimage84.jpeg differ diff --git a/testsuite/authimage/authimage85.jpeg b/testsuite/authimage/authimage85.jpeg new file mode 100644 index 0000000..3c32434 Binary files /dev/null and b/testsuite/authimage/authimage85.jpeg differ diff --git a/testsuite/authimage/authimage86.jpeg b/testsuite/authimage/authimage86.jpeg new file mode 100644 index 0000000..fae93fa Binary files /dev/null and b/testsuite/authimage/authimage86.jpeg differ diff --git a/testsuite/authimage/authimage87.jpeg b/testsuite/authimage/authimage87.jpeg new file mode 100644 index 0000000..9d3ba81 Binary files /dev/null and b/testsuite/authimage/authimage87.jpeg differ diff --git a/testsuite/authimage/authimage88.jpeg b/testsuite/authimage/authimage88.jpeg new file mode 100644 index 0000000..0e2190b Binary files /dev/null and b/testsuite/authimage/authimage88.jpeg differ diff --git a/testsuite/authimage/authimage89.jpeg b/testsuite/authimage/authimage89.jpeg new file mode 100644 index 0000000..bb1af85 Binary files /dev/null and b/testsuite/authimage/authimage89.jpeg differ diff --git a/testsuite/authimage/authimage90.jpeg b/testsuite/authimage/authimage90.jpeg new file mode 100644 index 0000000..d1d1975 Binary files /dev/null and b/testsuite/authimage/authimage90.jpeg differ diff --git a/testsuite/authimage/authimage91.jpeg b/testsuite/authimage/authimage91.jpeg new file mode 100644 index 0000000..6ff47b6 Binary files /dev/null and b/testsuite/authimage/authimage91.jpeg differ diff --git a/testsuite/authimage/authimage92.jpeg b/testsuite/authimage/authimage92.jpeg new file mode 100644 index 0000000..0d2d5ea Binary files /dev/null and b/testsuite/authimage/authimage92.jpeg differ diff --git a/testsuite/authimage/authimage93.jpeg b/testsuite/authimage/authimage93.jpeg new file mode 100644 index 0000000..ca9c2ca Binary files /dev/null and b/testsuite/authimage/authimage93.jpeg differ diff --git a/testsuite/authimage/authimage94.jpeg b/testsuite/authimage/authimage94.jpeg new file mode 100644 index 0000000..a8a4b66 Binary files /dev/null and b/testsuite/authimage/authimage94.jpeg differ diff --git a/testsuite/authimage/authimage95.jpeg b/testsuite/authimage/authimage95.jpeg new file mode 100644 index 0000000..9bb4380 Binary files /dev/null and b/testsuite/authimage/authimage95.jpeg differ diff --git a/testsuite/authimage/authimage96.jpeg b/testsuite/authimage/authimage96.jpeg new file mode 100644 index 0000000..0ca43b1 Binary files /dev/null and b/testsuite/authimage/authimage96.jpeg differ diff --git a/testsuite/authimage/authimage97.jpeg b/testsuite/authimage/authimage97.jpeg new file mode 100644 index 0000000..f02e44c Binary files /dev/null and b/testsuite/authimage/authimage97.jpeg differ diff --git a/testsuite/authimage/authimage98.jpeg b/testsuite/authimage/authimage98.jpeg new file mode 100644 index 0000000..0c50fbf Binary files /dev/null and b/testsuite/authimage/authimage98.jpeg differ diff --git a/testsuite/authimage/authimage99.jpeg b/testsuite/authimage/authimage99.jpeg new file mode 100644 index 0000000..f261482 Binary files /dev/null and b/testsuite/authimage/authimage99.jpeg differ diff --git a/testsuite/authimage/control.txt b/testsuite/authimage/control.txt new file mode 100644 index 0000000..31fa973 --- /dev/null +++ b/testsuite/authimage/control.txt @@ -0,0 +1,100 @@ +YOQFLE +8X8NUD +OLX1RP +5H8NRX +4JPNBX +OOX5TW +YBOVNT +JNCTLN +5BCIYJ +4R01XH +UR282R +IBUM70 +D0DI8K +2NE6DN +19LLKF +Y9ZAQW +OP4YAS +AJ3QCM +6UVFWY +51M3FR +T9VW3D +TCLIIF +5997T1 +620O95 +YIU7FP +ZSHJ2Z +OMAQMG +60GQ1F +ON70TU +AU6J2A +CYXIVL +CA5W7W +YVUL9V +KLEZKB +S7LLO1 +NTQFKI +9NM1X7 +OP942R +SAOMF1 +NQ27UO +JOFAN1 +L758S7 +1OG3E0 +FOF4U8 +LOR2RT +ELCOL7 +5Z28AF +B220RF +957RV9 +WHVQH5 +GDC0D7 +F3QO8Z +7SLRI4 +H3AA9F +WQJIHD +19NKQK +M6YHDN +ST3MJQ +N4FJ1I +DUNW2U +733DLG +N6EUVG +C9T0QI +QKHETZ +ZXIB19 +GMSN16 +H91WXF +691XN2 +51Y9CJ +HUQSKK +9W4YQC +STJH40 +ACGXMS +OL0FMW +G7O090 +RYFEZG +V2EL64 +NGJ37Z +LW0JNB +L2STCD +MJMHPF +RGRF82 +V1JHKR +Y316Q3 +07INC0 +VV7U2J +M0RY3Q +VQA8GO +XCCZ3L +TS7PSX +S2ZL4P +HHIXAF +OZIK3U +Z2X3F5 +MMLJW1 +XBZPQI +BRC6C1 +U4RCMS +VTFMRJ +3BCUER