Browse Source

* clubic captchas support.

git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/pwntcha/trunk@426 92316355-f0b4-4df1-b90c-862c8a59935f
master
sam 20 years ago
parent
commit
a10f5e0752
100 changed files with 188 additions and 0 deletions
  1. BIN
      share/font_clubic.png
  2. +1
    -0
      src/Makefile.am
  3. +178
    -0
      src/clubic.c
  4. +1
    -0
      src/common.h
  5. +7
    -0
      src/main.c
  6. +1
    -0
      testsuite/Makefile.am
  7. BIN
      testsuite/clubic/clubic00.png
  8. BIN
      testsuite/clubic/clubic01.png
  9. BIN
      testsuite/clubic/clubic02.png
  10. BIN
      testsuite/clubic/clubic03.png
  11. BIN
      testsuite/clubic/clubic04.png
  12. BIN
      testsuite/clubic/clubic05.png
  13. BIN
      testsuite/clubic/clubic06.png
  14. BIN
      testsuite/clubic/clubic07.png
  15. BIN
      testsuite/clubic/clubic08.png
  16. BIN
      testsuite/clubic/clubic09.png
  17. BIN
      testsuite/clubic/clubic10.png
  18. BIN
      testsuite/clubic/clubic11.png
  19. BIN
      testsuite/clubic/clubic12.png
  20. BIN
      testsuite/clubic/clubic13.png
  21. BIN
      testsuite/clubic/clubic14.png
  22. BIN
      testsuite/clubic/clubic15.png
  23. BIN
      testsuite/clubic/clubic16.png
  24. BIN
      testsuite/clubic/clubic17.png
  25. BIN
      testsuite/clubic/clubic18.png
  26. BIN
      testsuite/clubic/clubic19.png
  27. BIN
      testsuite/clubic/clubic20.png
  28. BIN
      testsuite/clubic/clubic21.png
  29. BIN
      testsuite/clubic/clubic22.png
  30. BIN
      testsuite/clubic/clubic23.png
  31. BIN
      testsuite/clubic/clubic24.png
  32. BIN
      testsuite/clubic/clubic25.png
  33. BIN
      testsuite/clubic/clubic26.png
  34. BIN
      testsuite/clubic/clubic27.png
  35. BIN
      testsuite/clubic/clubic28.png
  36. BIN
      testsuite/clubic/clubic29.png
  37. BIN
      testsuite/clubic/clubic30.png
  38. BIN
      testsuite/clubic/clubic31.png
  39. BIN
      testsuite/clubic/clubic32.png
  40. BIN
      testsuite/clubic/clubic33.png
  41. BIN
      testsuite/clubic/clubic34.png
  42. BIN
      testsuite/clubic/clubic35.png
  43. BIN
      testsuite/clubic/clubic36.png
  44. BIN
      testsuite/clubic/clubic37.png
  45. BIN
      testsuite/clubic/clubic38.png
  46. BIN
      testsuite/clubic/clubic39.png
  47. BIN
      testsuite/clubic/clubic40.png
  48. BIN
      testsuite/clubic/clubic41.png
  49. BIN
      testsuite/clubic/clubic42.png
  50. BIN
      testsuite/clubic/clubic43.png
  51. BIN
      testsuite/clubic/clubic44.png
  52. BIN
      testsuite/clubic/clubic45.png
  53. BIN
      testsuite/clubic/clubic46.png
  54. BIN
      testsuite/clubic/clubic47.png
  55. BIN
      testsuite/clubic/clubic48.png
  56. BIN
      testsuite/clubic/clubic49.png
  57. BIN
      testsuite/clubic/clubic50.png
  58. BIN
      testsuite/clubic/clubic51.png
  59. BIN
      testsuite/clubic/clubic52.png
  60. BIN
      testsuite/clubic/clubic53.png
  61. BIN
      testsuite/clubic/clubic54.png
  62. BIN
      testsuite/clubic/clubic55.png
  63. BIN
      testsuite/clubic/clubic56.png
  64. BIN
      testsuite/clubic/clubic57.png
  65. BIN
      testsuite/clubic/clubic58.png
  66. BIN
      testsuite/clubic/clubic59.png
  67. BIN
      testsuite/clubic/clubic60.png
  68. BIN
      testsuite/clubic/clubic61.png
  69. BIN
      testsuite/clubic/clubic62.png
  70. BIN
      testsuite/clubic/clubic63.png
  71. BIN
      testsuite/clubic/clubic64.png
  72. BIN
      testsuite/clubic/clubic65.png
  73. BIN
      testsuite/clubic/clubic66.png
  74. BIN
      testsuite/clubic/clubic67.png
  75. BIN
      testsuite/clubic/clubic68.png
  76. BIN
      testsuite/clubic/clubic69.png
  77. BIN
      testsuite/clubic/clubic70.png
  78. BIN
      testsuite/clubic/clubic71.png
  79. BIN
      testsuite/clubic/clubic72.png
  80. BIN
      testsuite/clubic/clubic73.png
  81. BIN
      testsuite/clubic/clubic74.png
  82. BIN
      testsuite/clubic/clubic75.png
  83. BIN
      testsuite/clubic/clubic76.png
  84. BIN
      testsuite/clubic/clubic77.png
  85. BIN
      testsuite/clubic/clubic78.png
  86. BIN
      testsuite/clubic/clubic79.png
  87. BIN
      testsuite/clubic/clubic80.png
  88. BIN
      testsuite/clubic/clubic81.png
  89. BIN
      testsuite/clubic/clubic82.png
  90. BIN
      testsuite/clubic/clubic83.png
  91. BIN
      testsuite/clubic/clubic84.png
  92. BIN
      testsuite/clubic/clubic85.png
  93. BIN
      testsuite/clubic/clubic86.png
  94. BIN
      testsuite/clubic/clubic87.png
  95. BIN
      testsuite/clubic/clubic88.png
  96. BIN
      testsuite/clubic/clubic89.png
  97. BIN
      testsuite/clubic/clubic90.png
  98. BIN
      testsuite/clubic/clubic91.png
  99. BIN
      testsuite/clubic/clubic92.png
  100. BIN
      testsuite/clubic/clubic93.png

BIN
share/font_clubic.png View File

Before After
Width: 129  |  Height: 21  |  Size: 500 B

+ 1
- 0
src/Makefile.am View File

@@ -9,6 +9,7 @@ pwntcha_SOURCES = \
filters.c \
common.h \
authimage.c \
clubic.c \
linuxfr.c \
phpbb.c \
scode.c \


+ 178
- 0
src/clubic.c View File

@@ -0,0 +1,178 @@
/*
* clubic.c: decode clubic captchas
* $Id$
*
* Copyright: (c) 2005 Sam Hocevar <sam@zoy.org>
* 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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>

#include "config.h"
#include "common.h"

static struct image *find_glyphs(struct image *img);

/* Our macros */
#define FONTNAME "share/font_clubic.png"
static struct image *font = NULL;
char *result;

/* Main function */
char *decode_clubic(struct image *img)
{
struct image *tmp1, *tmp2;

if(!font)
{
font = image_load(FONTNAME);
if(!font)
{
fprintf(stderr, "cannot load font %s\n", FONTNAME);
exit(-1);
}
}

/* clubic captchas have 6 characters */
result = malloc(7 * sizeof(char));
strcpy(result, " ");

tmp1 = filter_equalize(img, 200);
tmp2 = find_glyphs(tmp1);

image_free(tmp1);
image_free(tmp2);

return result;
}

static struct image *find_glyphs(struct image *img)
{
char all[] = "0123456789";
struct
{
int xmin, xmax, ymin, ymax;
int count;
}
glyphs[10];
struct image *dst;
int x, y, i = 0;
int r, g, b;
int xmin, xmax, ymin, ymax, incell = 0, count = 0, startx = 0, cur = 0;
int distmin, distx, disty, distch;

dst = image_new(img->width, img->height);

for(y = 0; y < img->height; y++)
for(x = 0; x < img->width; x++)
{
getpixel(img, x, y, &r, &g, &b);
setpixel(dst, x, y, 255, g, 255);
}

for(x = 0; x < font->width; x++)
{
int found = 0;
for(y = 0; y < font->height; y++)
{
getpixel(font, x, y, &r, &g, &b);
if(r < 128)
{
found = 1;
count += (255 - r);
}
}
if(found && !incell)
{
incell = 1;
xmin = x;
}
else if(!found && incell)
{
incell = 0;
xmax = x;
ymin = 0;
ymax = font->height;
glyphs[i].xmin = xmin;
glyphs[i].xmax = xmax;
glyphs[i].ymin = ymin;
glyphs[i].ymax = ymax;
glyphs[i].count = count;
count = 0;
i++;
}
}

if(i != 10)
{
printf("error: could not find 10 glyphs in font\n");
exit(-1);
}

while(cur < 6)
{
/* Try to find 1st letter */
distmin = INT_MAX;
for(i = 0; i < 10; i++)
{
int localmin = INT_MAX, localx, localy;
xmin = glyphs[i].xmin;
ymin = glyphs[i].ymin;
xmax = glyphs[i].xmax;
ymax = glyphs[i].ymax;
for(y = -4; y < 4; y++)
for(x = startx; x < startx + 4; x++)
{
int z, t, dist;
dist = 0;
for(t = 0; t < ymax - ymin; t++)
for(z = 0; z < xmax - xmin; z++)
{
int r2;
getgray(font, xmin + z, ymin + t, &r);
getgray(img, x + z, y + t, &r2);
dist += abs(r - r2);
}
dist = dist * 128 / glyphs[i].count;
if(dist < localmin)
{
localmin = dist;
localx = x;
localy = y;
}
}
if(localmin < distmin)
{
distmin = localmin;
distx = localx;
disty = localy;
distch = i;
}
}

/* Print min glyph */
xmin = glyphs[distch].xmin;
ymin = glyphs[distch].ymin;
xmax = glyphs[distch].xmax;
ymax = glyphs[distch].ymax;
for(y = 0; y < ymax - ymin; y++)
for(x = 0; x < xmax - xmin; x++)
{
getpixel(font, xmin + x, ymin + y, &r, &g, &b);
if(r > 128) continue;
setpixel(dst, distx + x, disty + y, r, g, b);
}

startx = distx + xmax - xmin;
result[cur++] = all[distch];
}

return dst;
}


+ 1
- 0
src/common.h View File

@@ -22,6 +22,7 @@ void dprintf(const char *fmt, ...);

/* available CAPTCHA decoders */
char *decode_authimage(struct image *img);
char *decode_clubic(struct image *img);
char *decode_linuxfr(struct image *img);
char *decode_phpbb(struct image *img);
char *decode_scode(struct image *img);


+ 7
- 0
src/main.c View File

@@ -126,6 +126,8 @@ int main(int argc, char *argv[])
result = decode_test(img);
else if(!strcmp(mode, "authimage"))
result = decode_authimage(img);
else if(!strcmp(mode, "clubic"))
result = decode_clubic(img);
else if(!strcmp(mode, "linuxfr"))
result = decode_linuxfr(img);
else if(!strcmp(mode, "phpbb"))
@@ -158,6 +160,11 @@ int main(int argc, char *argv[])
dprintf("autodetected scode/trencaspammers captcha\n");
result = decode_scode(img);
}
else if(img->height <= 30 && count < 100)
{
dprintf("autodetected clubic captcha\n");
result = decode_clubic(img);
}
else if(img->height == 69)
{
dprintf("autodetected slashdot captcha\n");


+ 1
- 0
testsuite/Makefile.am View File

@@ -5,6 +5,7 @@ EXTRA_DIST = \
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 \
clubic/clubic00.png clubic/clubic01.png clubic/clubic02.png clubic/clubic03.png clubic/clubic04.png clubic/clubic05.png clubic/clubic06.png clubic/clubic07.png clubic/clubic08.png clubic/clubic09.png clubic/clubic10.png clubic/clubic11.png clubic/clubic12.png clubic/clubic13.png clubic/clubic14.png clubic/clubic15.png clubic/clubic16.png clubic/clubic17.png clubic/clubic18.png clubic/clubic19.png clubic/clubic20.png clubic/clubic21.png clubic/clubic22.png clubic/clubic23.png clubic/clubic24.png clubic/clubic25.png clubic/clubic26.png clubic/clubic27.png clubic/clubic28.png clubic/clubic29.png clubic/clubic30.png clubic/clubic31.png clubic/clubic32.png clubic/clubic33.png clubic/clubic34.png clubic/clubic35.png clubic/clubic36.png clubic/clubic37.png clubic/clubic38.png clubic/clubic39.png clubic/clubic40.png clubic/clubic41.png clubic/clubic42.png clubic/clubic43.png clubic/clubic44.png clubic/clubic45.png clubic/clubic46.png clubic/clubic47.png clubic/clubic48.png clubic/clubic49.png clubic/clubic50.png clubic/clubic51.png clubic/clubic52.png clubic/clubic53.png clubic/clubic54.png clubic/clubic55.png clubic/clubic56.png clubic/clubic57.png clubic/clubic58.png clubic/clubic59.png clubic/clubic60.png clubic/clubic61.png clubic/clubic62.png clubic/clubic63.png clubic/clubic64.png clubic/clubic65.png clubic/clubic66.png clubic/clubic67.png clubic/clubic68.png clubic/clubic69.png clubic/clubic70.png clubic/clubic71.png clubic/clubic72.png clubic/clubic73.png clubic/clubic74.png clubic/clubic75.png clubic/clubic76.png clubic/clubic77.png clubic/clubic78.png clubic/clubic79.png clubic/clubic80.png clubic/clubic81.png clubic/clubic82.png clubic/clubic83.png clubic/clubic84.png clubic/clubic85.png clubic/clubic86.png clubic/clubic87.png clubic/clubic88.png clubic/clubic89.png clubic/clubic90.png clubic/clubic91.png clubic/clubic92.png clubic/clubic93.png clubic/clubic94.png clubic/clubic95.png clubic/clubic96.png clubic/clubic97.png clubic/clubic98.png clubic/clubic99.png clubic/control.txt \
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 \
livejournal/livejournal00.png livejournal/livejournal01.png livejournal/livejournal02.png livejournal/livejournal03.png livejournal/livejournal04.png livejournal/livejournal05.png livejournal/livejournal06.png livejournal/livejournal07.png livejournal/livejournal08.png livejournal/livejournal09.png livejournal/livejournal10.png livejournal/livejournal11.png livejournal/livejournal12.png livejournal/livejournal13.png livejournal/livejournal14.png livejournal/livejournal15.png livejournal/livejournal16.png livejournal/livejournal17.png livejournal/livejournal18.png livejournal/livejournal19.png livejournal/livejournal20.png livejournal/livejournal21.png livejournal/livejournal22.png livejournal/livejournal23.png livejournal/livejournal24.png livejournal/livejournal25.png livejournal/livejournal26.png livejournal/livejournal27.png livejournal/livejournal28.png livejournal/livejournal29.png livejournal/livejournal30.png livejournal/livejournal31.png livejournal/livejournal32.png livejournal/livejournal33.png livejournal/livejournal34.png livejournal/livejournal35.png livejournal/livejournal36.png livejournal/livejournal37.png livejournal/livejournal38.png livejournal/livejournal39.png livejournal/livejournal40.png livejournal/livejournal41.png livejournal/livejournal42.png livejournal/livejournal43.png livejournal/livejournal44.png livejournal/livejournal45.png livejournal/livejournal46.png livejournal/livejournal47.png livejournal/livejournal48.png livejournal/livejournal49.png livejournal/livejournal50.png livejournal/livejournal51.png livejournal/livejournal52.png livejournal/livejournal53.png livejournal/livejournal54.png livejournal/livejournal55.png livejournal/livejournal56.png livejournal/livejournal57.png livejournal/livejournal58.png livejournal/livejournal59.png livejournal/livejournal60.png livejournal/livejournal61.png livejournal/livejournal62.png livejournal/livejournal63.png livejournal/livejournal64.png livejournal/livejournal65.png livejournal/livejournal66.png livejournal/livejournal67.png livejournal/livejournal68.png livejournal/livejournal69.png livejournal/livejournal70.png livejournal/livejournal71.png livejournal/livejournal72.png livejournal/livejournal73.png livejournal/livejournal74.png livejournal/livejournal75.png livejournal/livejournal76.png livejournal/livejournal77.png livejournal/livejournal78.png livejournal/livejournal79.png livejournal/livejournal80.png livejournal/livejournal81.png livejournal/livejournal82.png livejournal/livejournal83.png livejournal/livejournal84.png livejournal/livejournal85.png livejournal/livejournal86.png livejournal/livejournal87.png livejournal/livejournal88.png livejournal/livejournal89.png livejournal/livejournal90.png livejournal/livejournal91.png livejournal/livejournal92.png livejournal/livejournal93.png livejournal/livejournal94.png livejournal/livejournal95.png livejournal/livejournal96.png livejournal/livejournal97.png livejournal/livejournal98.png livejournal/livejournal99.png \


BIN
testsuite/clubic/clubic00.png View File

Before After
Width: 79  |  Height: 21  |  Size: 833 B

BIN
testsuite/clubic/clubic01.png View File

Before After
Width: 77  |  Height: 20  |  Size: 807 B

BIN
testsuite/clubic/clubic02.png View File

Before After
Width: 75  |  Height: 22  |  Size: 833 B

BIN
testsuite/clubic/clubic03.png View File

Before After
Width: 78  |  Height: 18  |  Size: 757 B

BIN
testsuite/clubic/clubic04.png View File

Before After
Width: 77  |  Height: 20  |  Size: 872 B

BIN
testsuite/clubic/clubic05.png View File

Before After
Width: 78  |  Height: 20  |  Size: 764 B

BIN
testsuite/clubic/clubic06.png View File

Before After
Width: 77  |  Height: 21  |  Size: 811 B

BIN
testsuite/clubic/clubic07.png View File

Before After
Width: 76  |  Height: 20  |  Size: 854 B

BIN
testsuite/clubic/clubic08.png View File

Before After
Width: 81  |  Height: 20  |  Size: 840 B

BIN
testsuite/clubic/clubic09.png View File

Before After
Width: 70  |  Height: 21  |  Size: 734 B

BIN
testsuite/clubic/clubic10.png View File

Before After
Width: 70  |  Height: 21  |  Size: 791 B

BIN
testsuite/clubic/clubic11.png View File

Before After
Width: 81  |  Height: 22  |  Size: 885 B

BIN
testsuite/clubic/clubic12.png View File

Before After
Width: 78  |  Height: 20  |  Size: 754 B

BIN
testsuite/clubic/clubic13.png View File

Before After
Width: 72  |  Height: 20  |  Size: 715 B

BIN
testsuite/clubic/clubic14.png View File

Before After
Width: 81  |  Height: 19  |  Size: 819 B

BIN
testsuite/clubic/clubic15.png View File

Before After
Width: 75  |  Height: 20  |  Size: 795 B

BIN
testsuite/clubic/clubic16.png View File

Before After
Width: 76  |  Height: 20  |  Size: 753 B

BIN
testsuite/clubic/clubic17.png View File

Before After
Width: 76  |  Height: 19  |  Size: 813 B

BIN
testsuite/clubic/clubic18.png View File

Before After
Width: 74  |  Height: 20  |  Size: 770 B

BIN
testsuite/clubic/clubic19.png View File

Before After
Width: 65  |  Height: 20  |  Size: 718 B

BIN
testsuite/clubic/clubic20.png View File

Before After
Width: 76  |  Height: 22  |  Size: 859 B

BIN
testsuite/clubic/clubic21.png View File

Before After
Width: 62  |  Height: 21  |  Size: 716 B

BIN
testsuite/clubic/clubic22.png View File

Before After
Width: 77  |  Height: 20  |  Size: 832 B

BIN
testsuite/clubic/clubic23.png View File

Before After
Width: 68  |  Height: 22  |  Size: 775 B

BIN
testsuite/clubic/clubic24.png View File

Before After
Width: 62  |  Height: 21  |  Size: 676 B

BIN
testsuite/clubic/clubic25.png View File

Before After
Width: 67  |  Height: 21  |  Size: 786 B

BIN
testsuite/clubic/clubic26.png View File

Before After
Width: 62  |  Height: 21  |  Size: 712 B

BIN
testsuite/clubic/clubic27.png View File

Before After
Width: 57  |  Height: 22  |  Size: 670 B

BIN
testsuite/clubic/clubic28.png View File

Before After
Width: 64  |  Height: 21  |  Size: 717 B

BIN
testsuite/clubic/clubic29.png View File

Before After
Width: 70  |  Height: 21  |  Size: 710 B

BIN
testsuite/clubic/clubic30.png View File

Before After
Width: 69  |  Height: 22  |  Size: 755 B

BIN
testsuite/clubic/clubic31.png View File

Before After
Width: 78  |  Height: 20  |  Size: 845 B

BIN
testsuite/clubic/clubic32.png View File

Before After
Width: 74  |  Height: 21  |  Size: 806 B

BIN
testsuite/clubic/clubic33.png View File

Before After
Width: 71  |  Height: 22  |  Size: 743 B

BIN
testsuite/clubic/clubic34.png View File

Before After
Width: 78  |  Height: 20  |  Size: 755 B

BIN
testsuite/clubic/clubic35.png View File

Before After
Width: 75  |  Height: 21  |  Size: 795 B

BIN
testsuite/clubic/clubic36.png View File

Before After
Width: 80  |  Height: 20  |  Size: 776 B

BIN
testsuite/clubic/clubic37.png View File

Before After
Width: 72  |  Height: 21  |  Size: 807 B

BIN
testsuite/clubic/clubic38.png View File

Before After
Width: 73  |  Height: 21  |  Size: 793 B

BIN
testsuite/clubic/clubic39.png View File

Before After
Width: 78  |  Height: 21  |  Size: 789 B

BIN
testsuite/clubic/clubic40.png View File

Before After
Width: 74  |  Height: 20  |  Size: 808 B

BIN
testsuite/clubic/clubic41.png View File

Before After
Width: 85  |  Height: 21  |  Size: 817 B

BIN
testsuite/clubic/clubic42.png View File

Before After
Width: 76  |  Height: 19  |  Size: 779 B

BIN
testsuite/clubic/clubic43.png View File

Before After
Width: 78  |  Height: 22  |  Size: 850 B

BIN
testsuite/clubic/clubic44.png View File

Before After
Width: 67  |  Height: 20  |  Size: 757 B

BIN
testsuite/clubic/clubic45.png View File

Before After
Width: 77  |  Height: 19  |  Size: 790 B

BIN
testsuite/clubic/clubic46.png View File

Before After
Width: 82  |  Height: 21  |  Size: 845 B

BIN
testsuite/clubic/clubic47.png View File

Before After
Width: 75  |  Height: 20  |  Size: 817 B

BIN
testsuite/clubic/clubic48.png View File

Before After
Width: 82  |  Height: 19  |  Size: 792 B

BIN
testsuite/clubic/clubic49.png View File

Before After
Width: 72  |  Height: 21  |  Size: 777 B

BIN
testsuite/clubic/clubic50.png View File

Before After
Width: 75  |  Height: 19  |  Size: 795 B

BIN
testsuite/clubic/clubic51.png View File

Before After
Width: 75  |  Height: 20  |  Size: 772 B

BIN
testsuite/clubic/clubic52.png View File

Before After
Width: 73  |  Height: 22  |  Size: 787 B

BIN
testsuite/clubic/clubic53.png View File

Before After
Width: 74  |  Height: 22  |  Size: 819 B

BIN
testsuite/clubic/clubic54.png View File

Before After
Width: 66  |  Height: 21  |  Size: 682 B

BIN
testsuite/clubic/clubic55.png View File

Before After
Width: 62  |  Height: 20  |  Size: 657 B

BIN
testsuite/clubic/clubic56.png View File

Before After
Width: 78  |  Height: 20  |  Size: 805 B

BIN
testsuite/clubic/clubic57.png View File

Before After
Width: 80  |  Height: 20  |  Size: 771 B

BIN
testsuite/clubic/clubic58.png View File

Before After
Width: 71  |  Height: 20  |  Size: 704 B

BIN
testsuite/clubic/clubic59.png View File

Before After
Width: 67  |  Height: 22  |  Size: 764 B

BIN
testsuite/clubic/clubic60.png View File

Before After
Width: 76  |  Height: 22  |  Size: 851 B

BIN
testsuite/clubic/clubic61.png View File

Before After
Width: 73  |  Height: 20  |  Size: 683 B

BIN
testsuite/clubic/clubic62.png View File

Before After
Width: 66  |  Height: 22  |  Size: 676 B

BIN
testsuite/clubic/clubic63.png View File

Before After
Width: 68  |  Height: 21  |  Size: 785 B

BIN
testsuite/clubic/clubic64.png View File

Before After
Width: 70  |  Height: 22  |  Size: 819 B

BIN
testsuite/clubic/clubic65.png View File

Before After
Width: 61  |  Height: 21  |  Size: 717 B

BIN
testsuite/clubic/clubic66.png View File

Before After
Width: 72  |  Height: 21  |  Size: 818 B

BIN
testsuite/clubic/clubic67.png View File

Before After
Width: 72  |  Height: 21  |  Size: 794 B

BIN
testsuite/clubic/clubic68.png View File

Before After
Width: 73  |  Height: 20  |  Size: 727 B

BIN
testsuite/clubic/clubic69.png View File

Before After
Width: 65  |  Height: 21  |  Size: 676 B

BIN
testsuite/clubic/clubic70.png View File

Before After
Width: 76  |  Height: 20  |  Size: 806 B

BIN
testsuite/clubic/clubic71.png View File

Before After
Width: 76  |  Height: 20  |  Size: 806 B

BIN
testsuite/clubic/clubic72.png View File

Before After
Width: 77  |  Height: 20  |  Size: 710 B

BIN
testsuite/clubic/clubic73.png View File

Before After
Width: 72  |  Height: 21  |  Size: 707 B

BIN
testsuite/clubic/clubic74.png View File

Before After
Width: 74  |  Height: 18  |  Size: 791 B

BIN
testsuite/clubic/clubic75.png View File

Before After
Width: 62  |  Height: 22  |  Size: 732 B

BIN
testsuite/clubic/clubic76.png View File

Before After
Width: 73  |  Height: 19  |  Size: 818 B

BIN
testsuite/clubic/clubic77.png View File

Before After
Width: 61  |  Height: 21  |  Size: 665 B

BIN
testsuite/clubic/clubic78.png View File

Before After
Width: 73  |  Height: 22  |  Size: 805 B

BIN
testsuite/clubic/clubic79.png View File

Before After
Width: 62  |  Height: 20  |  Size: 687 B

BIN
testsuite/clubic/clubic80.png View File

Before After
Width: 75  |  Height: 22  |  Size: 777 B

BIN
testsuite/clubic/clubic81.png View File

Before After
Width: 79  |  Height: 19  |  Size: 723 B

BIN
testsuite/clubic/clubic82.png View File

Before After
Width: 77  |  Height: 22  |  Size: 814 B

BIN
testsuite/clubic/clubic83.png View File

Before After
Width: 79  |  Height: 20  |  Size: 753 B

BIN
testsuite/clubic/clubic84.png View File

Before After
Width: 71  |  Height: 22  |  Size: 805 B

BIN
testsuite/clubic/clubic85.png View File

Before After
Width: 79  |  Height: 19  |  Size: 803 B

BIN
testsuite/clubic/clubic86.png View File

Before After
Width: 62  |  Height: 22  |  Size: 680 B

BIN
testsuite/clubic/clubic87.png View File

Before After
Width: 74  |  Height: 20  |  Size: 789 B

BIN
testsuite/clubic/clubic88.png View File

Before After
Width: 75  |  Height: 19  |  Size: 826 B

BIN
testsuite/clubic/clubic89.png View File

Before After
Width: 70  |  Height: 22  |  Size: 744 B

BIN
testsuite/clubic/clubic90.png View File

Before After
Width: 78  |  Height: 21  |  Size: 836 B

BIN
testsuite/clubic/clubic91.png View File

Before After
Width: 67  |  Height: 21  |  Size: 711 B

BIN
testsuite/clubic/clubic92.png View File

Before After
Width: 63  |  Height: 21  |  Size: 699 B

BIN
testsuite/clubic/clubic93.png View File

Before After
Width: 69  |  Height: 20  |  Size: 678 B

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save