Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Site Web > PHP > [Galerie] Réalisation de CAPTCHAs > Lecture du sujet

[Galerie] Réalisation de CAPTCHAs

On veut les votres

Vous devez être inscrit pour pouvoir poster des messages

Page : Précédente  1  2  3  ...  32  33  34  35  36  37  38  39  40  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2  3  ...  32  33  34  35  36  37  38  39  40  Suivante
Hors ligne Walee # Posté le 28/08/2008 à 13:32:38
xHTML | CSS | PHP
Avatar
Groupe : Membres
Reprise du dernier message de la page précédente :
arf --" et pk ya pas de bot dans SDZ par exemple dans le livre d'or ?
leur captcha est super efficace ?

Recrutement pour mon projet
JeuEnLigneMassivementMultiJoueur [OPEN]
A quoi peut bien servir Internet Explorer fourni avec windows XP ?
Secret (cliquez pour afficher)
Tout simplement à aller sur http://www.mozilla.org/products/firefox/ pour récupérer Firefox.
 
Hors ligne robocop # Posté le 28/08/2008 à 13:40:16
Avatar
Groupe : Membres
Oui, il est pas mal.
Pis bon, pour qu'un hacker s'attaque spécialement à votre site, faut quand même qu'il soit très connu !
Le sdz a du peut être être victime d'une tentative ou deux, mais ceux qui sont vraiment visé, c'est par exemple facebook, google, microsoft, wikipédia etc...
Édité le 28/08/2008 à 13:41:39 par robocop
 
Hors ligne Walee # Posté le 28/08/2008 à 13:44:01
xHTML | CSS | PHP
Avatar
Groupe : Membres
ah ok --" c'est bon alors ^^
merci !

Recrutement pour mon projet
JeuEnLigneMassivementMultiJoueur [OPEN]
A quoi peut bien servir Internet Explorer fourni avec windows XP ?
Secret (cliquez pour afficher)
Tout simplement à aller sur http://www.mozilla.org/products/firefox/ pour récupérer Firefox.
 
Hors ligne Yloy # Posté le 28/08/2008 à 18:01:21
Avatar
Groupe : Membres
Citation : Aυrélien
Citation : Yloy
qu'est-ce que je pourrais faire pour que ce soit lisible mais en restant dur à trouver pour le bot ?

Mettre des lignes fixes, assez épaisses.
Je croyais que les lignes fixes n'étaient pas très gênantes pour les bots ? Et sinon, j'en mets où ? Car c'est déjà pas super lisible, alors avec des trucs par-dessus...

Quenelles Querelles intestines ?
 
Hors ligne sbeex # Posté le 30/08/2008 à 10:16:07
Avatar
Groupe : Membres
Bonjour,
si je comprend bien d'après vous les sites qui sont visiter des millions de fois par jour tel que gmail ou microsoft ont des captchas pas sécurisés ? parce que le codeur de bot peut très bien déduire le code captcha à écrire suite a l'analyse de l'aide audio non ?

Dans ce cas pourquoi mettent-ils cette aide audio ? Parce qu'on en a besoin tellement leur captcha sont moche parfois. Mais alors dans ce cas c'est quoi qui est bien ?
 
Hors ligne Droup # Posté le 30/08/2008 à 12:10:18
Groupe : Membres
Le captcha audio est fait pour les aveugles non-voyants.
Car les non-voyants utilisent un lecteur de site (pas sûr du non), hors les captchas en image sont fait pour ne pas être lu par des ordinateur, donc comment font les non-voyants pour s'inscrire à un site ? Ils n'ont pas le droit ?

Donc pour permettre à ces non-voyants de s'inscrire, google, microsoft et d'autres utilisent un captchas audio pour leur permettre l'accès à leurs services.

Maintenant certains sont tellement mal fait que beaucoup utilisent l'aide audio pour s'inscrire.


Une question : un captcha audio est plus facile ou plus dur à décrypter qu'une image ?
Hors ligne Jeremie78 # Posté le 30/08/2008 à 12:29:59
Powered by GNU/Linux
Groupe : Membres
Il est moins commun ça c'est sûr :)

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne sbeex # Posté le 30/08/2008 à 12:42:33
Avatar
Groupe : Membres
Citation : Droup
Le captcha audio est fait pour les aveugles non-voyants.
Car les non-voyants utilisent un lecteur de site (pas sûr du non), hors les captchas en image sont fait pour ne pas être lu par des ordinateur, donc comment font les non-voyants pour s'inscrire à un site ? Ils n'ont pas le droit ?

Donc pour permettre à ces non-voyants de s'inscrire, google, microsoft et d'autres utilisent un captchas audio pour leur permettre l'accès à leurs services.

Maintenant certains sont tellement mal fait que beaucoup utilisent l'aide audio pour s'inscrire.


Une question : un captcha audio est plus facile ou plus dur à décrypter qu'une image ?


Justement un codeur de bot il a qu'à employé le fichier audio généré et le décortiquer c'est pas bien compliqué. Conclusion : il faut arrêter vos histoires. Un captcha sera toujours décryptable ou alors illisible qu'il soit audio ou visuel.

En bref si quelqu'un veut a tout prix vous spammer il le pourra. La seule chose à faire est de limité les actions (laisser un interval de 20 sec entre chaque actions par exemple), éventuellement interdire certaines adresses url qu'il aurait pu employé dans un message, bannir l'ip (déconseillé à cause des ordis zombis)

La seule solution contre le spam est comme l'a déjà dit un autre membre du sdz : ne pas mettre de formulaire ! Ou alors, vous pouvez juste "tenter" de limiter mais pas éradiquer le problème.

La meilleure solution reste la validation manuelle ou le controle humain sur les données.
 
Hors ligne trobert94 # Posté le 30/08/2008 à 14:03:56
Avatar
Groupe : Membres
Ce topic, c'est aussi un jeu, parce que la plupart des gens ne risquent pas de se faire spammer, même sans captcha...
Édité le 30/08/2008 à 14:11:34 par trobert94
Hors ligne Droup # Posté le 30/08/2008 à 14:06:03
Groupe : Membres
Citation : sbeex
Justement un codeur de bot il a qu'à employé le fichier audio généré et le décortiquer c'est pas bien compliqué.
Je suis pas sûr que se soit si facile, à moins d'en faire un simple.

Maintenant écoute celui de google, je suis pas sûr qu'il soit aussi facile à décrypter.

Citation : trobert94
Parce que la plupart des gens ne risquent pas de se faire spammer, même sans captcha...
Tu es sûr ?
Édité le 30/08/2008 à 14:07:53 par Droup
Hors ligne Jeremie78 # Posté le 30/08/2008 à 14:11:19
Powered by GNU/Linux
Groupe : Membres
Je plussoie trobert :)

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne Clems # Posté le 30/08/2008 à 14:21:28
Sbrouf
Avatar
Groupe : Membres
Hors ligne Yuresen # Posté le 30/08/2008 à 14:56:31
Mohamet djihad !
Avatar
Groupe : Membres
Jouez sur la chromatique, la luminance n'aillant aucun impact particulier sur la vision humaine un bot peut facilement s'affranchir des problèmes d'éclaircissement des lettres en passant sur un système colorimétrique YUV par exemple.
Si une lettre à deux couleurs se sera d'autant plus dur pour le robot de savoir qu'il ne faut pas détecter les bords entre les deux zones de cette même lettre. Dans ce cas on peut aussi envisagé une zone sombre et une autre claire pour renforcer le contraste auprès des bots les plus basiques.
Enfin à mon avis ça devrait éliminer une partie des risque, même si certains programmes bien conçus seront toujours capable de passer.

PS: idem c'est en partie un jeu.
Hors ligne Caim # Posté le 30/08/2008 à 16:08:40
Groupe : Membres
Vous croyez que ce serait efficace qqchose comme ça (et lissible surtout :s)
http://img205.imageshack.us/img205/8848/captchans3.png

Il a été fait avec un logiciel de dessins pas de script, mais je pense que ça c'est fesable

Faudrai plus reflechire sur le choix des couleurs peut être

m'enfin c'est une idée que j'ai eu sur un coup de tête, je sais pas ce que vous en pensez
Hors ligne Clems # Posté le 30/08/2008 à 16:28:34
Sbrouf
Avatar
Groupe : Membres
Sur l'idée, ça me parait en effet pas mal. Cependant je pense qu'il faut revoir le fond, parceque la, il suffit de trouver les "petite" zones de couleurs pour savoir où sont les lettres. Donc faire des zones plus petites pour le fond. Par contre, on risque de franchement perdre en lisibilité. Affaire à suivre ;)
 
Hors ligne Neoterranos # Posté le 30/08/2008 à 17:49:38
Oh my god, they killed Kenny !
Avatar
Groupe : Membres
Mon premier essai.

J'ai fait ça :

Code : PHP
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<?php
header ("Content-type: image/png");
$image = imagecreate(400, 100);

$noir = imagecolorallocate($image, 0, 0, 0);
$jaune = imagecolorallocate($image, 255, 255, 0);
$blanc = imagecolorallocate($image, 255, 255, 255);
$rouge = imagecolorallocate($image, 200, 39, 45);
$vert = imagecolorallocate($image, 45, 200, 39);
$cyan = imagecolorallocate($image, 0, 255, 255);
$magenta = imagecolorallocate($image, 255, 0, 255);
$orange = imagecolorallocate($image, 255, 128, 0);
$bleu = imagecolorallocate($image, 39, 45, 200);
$bleuclair = imagecolorallocate($image, 156, 227, 254);

$Anoir = imagecolorallocatealpha($image, 0, 0, 0, 80);
$Ajaune = imagecolorallocatealpha($image, 255, 255, 0, 80);
$Ablanc = imagecolorallocatealpha($image, 255, 255, 255, 80);
$Arouge = imagecolorallocatealpha($image, 200, 39, 45, 80);
$Avert = imagecolorallocatealpha($image, 45, 200, 39, 80);
$Acyan = imagecolorallocatealpha($image, 0, 255, 255, 80);
$Amagenta = imagecolorallocatealpha($image, 255, 0, 255, 80);
$Aorange = imagecolorallocatealpha($image, 255, 128, 0, 80);
$Ableu = imagecolorallocatealpha($image, 39, 45, 200, 80);
$Ableuclair = imagecolorallocatealpha($image, 156, 227, 254, 80);

$A2noir = imagecolorallocatealpha($image, 0, 0, 0, 25);
$A2jaune = imagecolorallocatealpha($image, 255, 255, 0, 25);
$A2blanc = imagecolorallocatealpha($image, 255, 255, 255, 25);
$A2rouge = imagecolorallocatealpha($image, 200, 39, 45, 25);
$A2vert = imagecolorallocatealpha($image, 45, 200, 39, 25);
$A2cyan = imagecolorallocatealpha($image, 0, 255, 255, 25);
$A2magenta = imagecolorallocatealpha($image, 255, 0, 255, 25);
$A2orange = imagecolorallocatealpha($image, 255, 128, 0, 25);
$A2bleu = imagecolorallocatealpha($image, 39, 45, 200, 25);
$A2bleuclair = imagecolorallocatealpha($image, 156, 227, 254, 25);

$colors = Array($vert, $noir, $jaune, $blanc, $rouge, $cyan, $magenta, $orange, $bleu, $bleuclair);
$Tcolors = count($colors);
$colors2 = Array($Avert, $Anoir, $Ajaune, $Ablanc, $Arouge, $Acyan, $Amagenta, $Aorange, $Ableu, $Ableuclair);
$Tcolors2 = count($colors2);
$colors3 = Array($A2vert, $A2noir, $A2jaune, $A2blanc, $A2rouge, $A2cyan, $A2magenta, $A2orange, $A2bleu, $A2bleuclair);
$Tcolors3 = count($colors3);

$motif_fond = Array($colors2[mt_rand(0,$Tcolors2-1)], $colors2[mt_rand(0,$Tcolors2-1)], $colors2[mt_rand(0,$Tcolors2-1)], $colors2[mt_rand(0,$Tcolors2-1)], $colors2[mt_rand(0,$Tcolors2-1)], $colors2[mt_rand(0,$Tcolors2-1)], $colors2[mt_rand(0,$Tcolors2-1)], $colors2[mt_rand(0,$Tcolors2-1)], $colors2[mt_rand(0,$Tcolors2-1)]);
imagesetstyle($image, $motif_fond);
imagefill($image, 150, 50, IMG_COLOR_STYLED);

$Tmotif_fond = count($motif_fond);
unset($motif_fond[$Tmotif_fond-1]);
unset($motif_fond[$Tmotif_fond-2]);

/*$motif_fond2 = Array($colors3[mt_rand(0,$Tcolors3-1)], $colors3[mt_rand(0,$Tcolors3-1)], $colors3[mt_rand(0,$Tcolors3-1)], $colors3[mt_rand(0,$Tcolors3-1)], $colors3[mt_rand(0,$Tcolors3-1)], $colors3[mt_rand(0,$Tcolors3-1)], $colors3[mt_rand(0,$Tcolors3-1)]);*/
imagesetstyle($image, $motif_fond);

$k = 20;
while($k<=400)
{
	imagefilledrectangle($image, $k, 0, $k+40, 100, IMG_COLOR_STYLED);
	$k+=80;
}

$couleur = Array();
$couleur2 = Array();
$i = 0;
while($i<$Tcolors)
{
	if(!in_array($colors2[$i], $motif_fond))
	{
		$couleur2[] = $colors[$i];
	}
	
	else
	{
		$couleur[] = $colors[$i];
	}
	
	$i++;
}
$Tcouleur = count($couleur);
$Tcouleur2 = count($couleur2);

$polices = Array('polices/arial.ttf', 'polices/comic.ttf', 'polices/ariblk.ttf');
$Tpolices = count($polices);

$carac = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$Tcarac = strlen($carac);

$ecart = 400/8;

$i = 0;

while($i<=7)
{
	$lettre = mt_rand(0, $Tcarac-1);
	$angle = mt_rand(-20,20);
	$Ccouleur1 = mt_rand(0, $Tcouleur-1);
	$Ccouleur2 = mt_rand(0, $Tcouleur2-1);
	$taille = mt_rand(30,40);
	$police = mt_rand(0, $Tpolices-1);
	$decalage1 = mt_rand(-3,3);
	$decalage2 = mt_rand(-3,3);
		
	$j = 0;
	while($j<2)
	{	
		$x1 = mt_rand(0,400);
		$x2 = 200;
		$y1 = mt_rand(0,100);
		$y2 = 50;
		
		ImageLine($image, $x1, $y1, $x2, $y2, $couleur[$Ccouleur1]);
		$j++;
	}
	
	$j = 0;
	while($j<2)
	{	
		$x1 = mt_rand(0,400);
		$x2 = 200;
		$y1 = mt_rand(0,100);
		$y2 = 50;
		
		ImageLine($image, $x1, $y1, $x2, $y2, $couleur2[$Ccouleur2]);
		$j++;
	}
	
	imagettftext($image, $taille, $angle, $ecart*$i+10, 75, $couleur[$Ccouleur1], $polices[$police], $carac[$lettre]);
	imagettftext($image, $taille, $angle, $ecart*$i+10+$decalage1, 75+$decalage2, $couleur2[$Ccouleur2], $polices[$police], $carac[$lettre]);
	
	$i++;
}

$j = 0;
while($j<2)
{	
	$Ccouleur1 = mt_rand(0, $Tcouleur-1);
	$x1 = mt_rand(0,400);
	$x2 = 200;
	$y1 = mt_rand(0,100);
	$y2 = 50;
	
	ImageLine($image, $x1, $y1, $x2, $y2, $couleur[$Ccouleur1]);
	$j++;
}

$j = 0;
while($j<2)
{
	$Ccouleur2 = mt_rand(0, $Tcouleur2-1);
	$x1 = mt_rand(0,400);
	$x2 = 200;
	$y1 = mt_rand(0,100);
	$y2 = 50;
	
	ImageLine($image, $x1, $y1, $x2, $y2, $couleur2[$Ccouleur2]);
	$j++;
}

imagepng($image);
?>


Suffisant pour bloquer un bot ?
Édité le 30/08/2008 à 19:33:05 par Neoterranos

Image utilisateur
Perdu sur le SdZ ? Clique ici ! Perdu sur CCDS ? Clique ici !
 
Hors ligne Jeremie78 # Posté le 30/08/2008 à 17:57:20
Powered by GNU/Linux
Groupe : Membres
Ton captcha est assez faible :

- faible inclinaison
- police constante
- brouillage très marginal

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne Neoterranos # Posté le 30/08/2008 à 18:05:58
Oh my god, they killed Kenny !
Avatar
Groupe : Membres
Citation : Jeremie78
Ton captcha est assez faible :

- faible inclinaison

On peut passer à 45 degrés si tu veux, mais niveau lisibilité pour humains... :)

Citation : Jeremie78
- police constante

Savoir lire n'est pas interdit.
Code : PHP
82
83
84
<?php
$polices = Array('polices/arial.ttf', 'polices/comic.ttf', 'polices/ariblk.ttf');
?>


Citation : Jeremie78
- brouillage très marginal

Et tu rajouterais quoi ?

Image utilisateur
Perdu sur le SdZ ? Clique ici ! Perdu sur CCDS ? Clique ici !
 
Hors ligne bubuche # Posté le 30/08/2008 à 18:29:44
KIM, et tout deviens possible.
Avatar
Groupe : Membres
alors, tout d'abord : beaucoup de personnes, pour faire joli, font des captcha avec des lettres de couleurs différentes. C'est compltêment idiot ^^, parce que cela "casse" toute la difficulté du captcha. Et je ne vous dit pas pour ceux qui utilise des police à la arial.

Petite explication (niveau demandé : léger, ayant déjà manipulé les pixels).
le captcha (réalisé par moi, à la main :-° ) : http://i51.servimg.com/u/f51/09/01/50/74/captch10.png

je vais juste vous décrire les étapes, pas vous donner de code. Le but n'est pas de faire de vous un hackeur mais d'essayer que vous arretiez de donner des clés aux pirates ;)

1ere étape : parcours de l'image, et récupération de la palette de couleur qui la compose.
2eme étape : création d'une image par couleur, et stockage dans l'image de tous les pixels présent dans le captcha de cette couleur.
3eme etape : analyse des images : si elle est très large (le bruit du captcha quoi) on considère que ce n'est pas une lettre. Sinon, on fait une recherche par point etc.
4eme etape : reconstitution du message.

garder à l'esprit que : les programmes de cassages de captcha sont généralement paramétrables. Là, j'ai récuperé les pixel d'une couleur, mais j'aurai pu le faire pour une gamme de couleur. De plus, quelque soit la police que vous utilisez, le pirate pourra essayer de la trouver, et alors le logiciel n'aura plus qu'a établir une probabilité en fonction du nombre de point en commun avec votre caractères et celui de la table.

Le but des logiciels pour casser les captcha est bien sur d'avoir un traitement automatique. Mais il est évident qu'avant de le lancer, le pirate va d'abord analyser votre image lui même, avec son cerveau. C'est donc cette combinaison qui rend les vrais captcha très dur à faire. Parce que les concepteurs de logiciels ont parfois fait des études mathématiques très poussées, et savent opérer sur les images des transformations pour les rendres plus lisible. Et les truc des images où il faut loucher, quelque manipulation d'image peuvent parfois casser très simplement le code (je n'arrive pas à les voir, alors quand je dois le faire j'ai des outils que je me suis fait ;) ).

Donc : ne colorez pas vos lettres différemments du reste. Si vous voulez mettres des couleurs, mettez en ensuite, de façon aléatoire (par exemple en rajoutant par zone de rond X a chaque composante ;) ). Mais par pitié, plus de ces lettres en couleurs recouvertes par quelques barres dans tous les sens (c'est trop facile, ça gâche le plaisir :-° )

Un tuto : ce n'est pas la dernière boite à la mode, ni du code à copié coller : c'est une méthode pour apprendre ! :colere2:
"Il ne faut pas confondre rêver sa vie et vivre ses rèves."
KIM, just all you need ... and so much more !
 
Hors ligne Neoterranos # Posté le 30/08/2008 à 19:32:26
Oh my god, they killed Kenny !
Avatar
Groupe : Membres
Et ça alors ? ^^

Code : PHP
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?php
session_start();
header ("Content-type: image/png");

$Arrayinscription = Array('gris', 'jaune', 'blanc', 'rouge', 'vert', 'cyan', 'magenta', 'orange', 'bleuclair');
$TAI = count($Arrayinscription);
$_SESSION['couleur'] = $Arrayinscription[mt_rand(0,$TAI-1)];

$image = imagecreate(320, 100);

$noir = imagecolorallocate($image, 0, 0, 0);
$gris = imagecolorallocate($image, 200,200,200);
$jaune = imagecolorallocate($image, 255, 255, 0);
$blanc = imagecolorallocate($image, 255, 255, 255);
$rouge = imagecolorallocate($image, 200, 39, 45);
$vert = imagecolorallocate($image, 45, 255, 39);
$cyan = imagecolorallocate($image, 0, 255, 255);
$magenta = imagecolorallocate($image, 255, 0, 255);
$orange = imagecolorallocate($image, 255, 160, 0);
$bleu = imagecolorallocate($image, 60, 75, 200);
$bleuclair = imagecolorallocate($image, 156, 227, 254);

$Anoir = imagecolorallocatealpha($image, 0, 0, 0, 80);
$Ajaune = imagecolorallocatealpha($image, 255, 255, 0, 80);
$Ablanc = imagecolorallocatealpha($image, 255, 255, 255, 80);
$Arouge = imagecolorallocatealpha($image, 200, 39, 45, 80);
$Avert = imagecolorallocatealpha($image, 45, 200, 39, 80);
$Acyan = imagecolorallocatealpha($image, 0, 255, 255, 80);
$Amagenta = imagecolorallocatealpha($image, 255, 0, 255, 80);
$Aorange = imagecolorallocatealpha($image, 255, 128, 0, 80);
$Ableu = imagecolorallocatealpha($image, 39, 45, 200, 80);
$Ableuclair = imagecolorallocatealpha($image, 156, 227, 254, 80);

$A2noir = imagecolorallocatealpha($image, 0, 0, 0, 25);
$A2jaune = imagecolorallocatealpha($image, 255, 255, 0, 25);
$A2blanc = imagecolorallocatealpha($image, 255, 255, 255, 25);
$A2rouge = imagecolorallocatealpha($image, 200, 39, 45, 25);
$A2vert = imagecolorallocatealpha($image, 45, 200, 39, 25);
$A2cyan = imagecolorallocatealpha($image, 0, 255, 255, 25);
$A2magenta = imagecolorallocatealpha($image, 255, 0, 255, 25);
$A2orange = imagecolorallocatealpha($image, 255, 128, 0, 25);
$A2bleu = imagecolorallocatealpha($image, 39, 45, 200, 25);
$A2bleuclair = imagecolorallocatealpha($image, 156, 227, 254, 25);

$colors = Array($vert, $noir, $jaune, $blanc, $rouge, $cyan, $magenta, $orange, $bleu, $bleuclair, $gris);
$Tcolors = count($colors);
$colors2 = Array($Avert, $Anoir, $Ajaune, $Ablanc, $Arouge, $Acyan, $Amagenta, $Aorange, $Ableu, $Ableuclair);
$Tcolors2 = count($colors2);
$colors3 = Array($A2vert, $A2noir, $A2jaune, $A2blanc, $A2rouge, $A2cyan, $A2magenta, $A2orange, $A2bleu, $A2bleuclair);
$Tcolors3 = count($colors3);


$polices = Array('polices/arial.ttf', 'polices/comic.ttf', 'polices/ariblk.ttf', 'polices/lucon.ttf', 'polices/verdana.ttf', 'polices/verdanab.ttf');
$Tpolices = count($polices);

$carac = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
$Tcarac = strlen($carac);

$nb_lignes = mt_rand(5,10);

$i=1;
while($i<=$nb_lignes)
{
	ImageLine($image, mt_rand(0,40), mt_rand(0,100), mt_rand(280,320), mt_rand(0,100), $blanc);
	$i++;
}

$nb_lignes = mt_rand(5,10);

$i = 1;
while($i<=$nb_lignes)
{
	ImageLine($image, mt_rand(0,40), mt_rand(0,100), mt_rand(280, 320), mt_rand(0,100), $noir);
	$i++;
}

$nb_ellipses = mt_rand(1,10);

$i = 0;
while($i<= $nb_ellipses)
{
	ImageEllipse($image, mt_rand(0,320), mt_rand(0,100), 25+mt_rand(0,15), 25+mt_rand(0,15), $colors[mt_rand(0,$Tcolors-1)]);
	$i++;
}

$nb_pixels = mt_rand(7500,15000);

$i = 0;
while($i <= $nb_pixels)
{
	ImageSetPixel($image, mt_rand(0,320), mt_rand(0,100), $colors[mt_rand(0,$Tcolors-1)]);
	$i++;
}

$nb_triangles = mt_rand(1,10);

$i = 0;
while($i<=$nb_triangles)
{
	$array = Array(mt_rand(0,300), mt_rand(0,100), mt_rand(0,300), mt_rand(0,100), mt_rand(0,300), mt_rand(0,100));
	ImagePolygon($image, $array, 3, $colors[mt_rand(0,$Tcolors-1)]);
	$i++;
}

$aupifcolor = ${$_SESSION['couleur']};

$couleur = Array();
$i = 0;
while(isset($colors[$i]))
{
	if($aupifcolor != $colors[$i])
	{
		$couleur[] = $colors[$i];
	}
	$i++;
}

$Tcouleur = count($couleur);

$i = 0;
$fakeletters = mt_rand(10,25);
while($i<$fakeletters)
{
	$lettre = $carac[mt_rand(0, $Tcarac-1)];
	$taille = mt_rand(20,30);
	$angle = mt_rand(-40,40);
	$y = mt_rand(35,70);
	$police = $polices[mt_rand(0, $Tpolices-1)];
	
	imagettftext($image, $taille, $angle, mt_rand(0,300), mt_rand(0,100), $couleur[mt_rand(0,$Tcouleur-1)], $police, $lettre);
	$i++;
}

$ecart = 300/8;

$i = 0;
while($i <= 7)
{
	$lettre = $carac[mt_rand(0, $Tcarac-1)];
	$taille = mt_rand(25,35);
	$angle = mt_rand(-40,40);
	$y = mt_rand(35,70);
	$police = $polices[mt_rand(0, $Tpolices-1)];
	
	imagettftext($image, $taille, $angle, $ecart*$i+15, $y, $aupifcolor, $police, $lettre);
	$i++;
}

imagepng($image);
?>


Image utilisateur
Édité le 31/08/2008 à 00:21:38 par Neoterranos

Image utilisateur
Perdu sur le SdZ ? Clique ici ! Perdu sur CCDS ? Clique ici !
 
Hors ligne Jeremie78 # Posté le 30/08/2008 à 19:48:13
Powered by GNU/Linux
Groupe : Membres
Citation : Neoterranos
Citation : Jeremie78
Ton captcha est assez faible :

- faible inclinaison

On peut passer à 45 degrés si tu veux, mais niveau lisibilité pour humains... :)

Citation : Jeremie78
- police constante

Savoir lire n'est pas interdit.
Code : PHP
82
83
84
<?php
$polices = Array('polices/arial.ttf', 'polices/comic.ttf', 'polices/ariblk.ttf');
?>


Citation : Jeremie78
- brouillage très marginal

Et tu rajouterais quoi ?


La police est la meme pour tous les caractères elle est donc constante dans l'image. Quand au nombre de polices utilisé, il est trop faible.
Pour le brouillage, je vais pas de faire en lignes l'équivalent de pages de discutions :)
Mais à tout hasard on peut citer : les lettres en arrière plan, les déformations (vagues et autres), les arrières plans trompeurs, ...



Le second est pas plus difficile pour un bot, on flou permet de supprimer tous les points, les lignes sont faciles à détecter et à supprimer. Seul le rapprochement des lettres et leur inclinaison à augmenté un peu la difficulté.

En fait, ton brouillage n'est pas assez gros, il se supprime (beaucoup) trop facilement ...
Édité le 30/08/2008 à 19:50:40 par Jeremie78

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne Neoterranos # Posté le 30/08/2008 à 19:53:18
Oh my god, they killed Kenny !
Avatar
Groupe : Membres
Citation : Jeremie78

La police est la meme pour tous les caractères elle est donc constante dans l'image. Quand au nombre de polices utilisé, il est trop faible.

Non, c'est pas la même, je la change avec mt_rand à chaque lettre :)

Pour le reste j'ai compris, je vais essayer :)

J'ai mis à jour, seulement comment l'utilisateur va savoir quelles sont les bonnes lettres ?
Édité le 30/08/2008 à 20:24:32 par Neoterranos

Image utilisateur
Perdu sur le SdZ ? Clique ici ! Perdu sur CCDS ? Clique ici !
 
Hors ligne robocop # Posté le 30/08/2008 à 20:43:23
Avatar
Groupe : Membres
Neoterranos, je me suis amusé à faire sauté toutes les bruits et barres de ton image :

Image utilisateur

Image utilisateur
Cela nous montre que le bruit et les barres sont inutiles, par contre, coller les lettres est interessant.
Voici mon code :
Code : C++
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <opencv/cv.h>
#include <opencv/highgui.h>


using namespace std;

int main()
{
    IplImage *img=cvLoadImage("/home/quentin/captcha.php.png");
    IplImage *img_nvg=cvCreateImage(cvGetSize(img), img->depth, 1); 
    IplConvKernel *noyau = cvCreateStructuringElementEx(2, 2, 1, 1, CV_SHAPE_ELLIPSE);
    IplConvKernel *noyau2 = cvCreateStructuringElementEx(5, 5, 2, 2, CV_SHAPE_RECT); 
    cvConvertImage(img, img_nvg);
    IplImage *img_bin= cvCloneImage(img_nvg);    
    int seuil=127;
    int inverser=0;
    
    
    cvThreshold(img_nvg, img_bin, seuil, 255, CV_THRESH_BINARY);
    cvErode(img_bin, img_bin, noyau, 3);
    cvDilate(img_bin, img_bin, noyau2, 1);
    

    cvNamedWindow("Test", CV_WINDOW_AUTOSIZE);
    cvShowImage("Test", img_bin);
    cvWaitKey(0); 
    cvDestroyWindow("Test");
    cvReleaseImage(&img);
    return 0;
}

Je pense qu'une personne compétante qui a du temps devant elle peut faire beaucoup mieux.
A+
Édité le 30/08/2008 à 20:52:23 par robocop
 
Hors ligne croky # Posté le 30/08/2008 à 20:57:06
Graor!
Groupe : Membres
Robocop, on peut simplement vérifier si les points de l'image sont blancs ou pas.
Hors ligne Neoterranos # Posté le 30/08/2008 à 21:08:19
Oh my god, they killed Kenny !
Avatar
Groupe : Membres
J'ai changé le captcha, mais comment l'utilisateur sait quelles lettres il doit recopier ? :)

Image utilisateur
Perdu sur le SdZ ? Clique ici ! Perdu sur CCDS ? Clique ici !
 
Hors ligne croky # Posté le