Texte graphique sans gdi

Soyez le premier à donner votre avis sur cette source.

Vue 5 320 fois - Téléchargée 239 fois

Description

Afin de securiser l'envoi de formulaire, on demande souvent de réecrire un texte dans une image. Générer cette image demandais l'utilisation des bibliothèques GDI integrée à PHP.

Ma source permet très simple de refaire la même chose sans GDI
- Par un appel de fonction (version sequenctiel)
- Par l'instanciation d'un objet et appel de methode (version objet)

Source / Exemple :


Tout est dans le zip ;p

Conclusion :


La source contient 2 fichier php, etant chacun une version differente du même code (sequencielle ou objet)

La source n'est pas achevée, car, chaque caractère est enregistré sous un flux binaire, normalement sauvegardé en base de donnée. Ici pour simplifier la comprehension du code, les flux binaires sont ecrit en dur. Bien entendu une version finale pourra integrer une base de données SQLite pour sauvegarder les 'image caractères' sous forme de flux contenu dans un vecteur.

Le code doit être encore optimiser, mais je préfère deposer cette source plutôt pour que chacun puisse comprendre comment j'ai fait, et non simplement copier sans comprendre ;p

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
si tu me trouves un algo qui fait apparaitre un truc sans le stoquer en dur des le depart... bah t'auras un catpcha "animation" fiable

perso, je reflechissais a comment faire ca avec des interpolations par exemple, mais l'algo stoque les points...
Messages postés
276
Date d'inscription
dimanche 22 juillet 2001
Statut
Modérateur
Dernière intervention
5 décembre 2013

D'accord sur le principe, changer de support. Parser les pixels d'une image, effectivement c facile. Parser le XHTML actuel l'est tout autant - mais surement avec du javascript derrière l'encryptage peut être un peu plus fort et surement la taille plus optimisée.

Je me pose juste une question : pourquoi passer par du xhtml & css au lieu de le faire en SVG ?

Faire une anim de morphing partant d'un trait vers le résultat final, comme ça les moteurs de rendu GECKO ou autre n'y vérront pas grand chose.

Et puis, vu que le CAPTCHA neccessite une intervention humaine, pourquoi ne pas en faire un ticket à gratter vite fait. Je trouve que le XHTML / CSS / JavaScript devient un peu limité à ce moment.

Au pire le faire en flash mais c'est plus difficile de générer le flux dynamiquement.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
pour avoir eclate differents captcahas :) http://www.javafr.com/codes/LECTURE-CAPTCHA_45965.aspx (pour les derniers) je peux te dire que ce captcha en l'etat n'est pas vraiment efficace, mais est TRES interessant, car parser une image ou un texte xhtml, c'est pas DU TOUT la meme chose...

ok certains spammeurs utilisent des moteurs de rendus comme gecko ou autre moteurs libres (mais ceux la on y peut pas grand chose)
mais pour les autres spammeurs, c'est tres difficile de lire du xhtml. Il existe plusieurs centaines de facons de cacher son code Xhtml, ou de faire en sorte que l'attaque soit longue... (ne pas fermer toutes les balises, mettre minuscule et majuscule, faire en sorte que certains pixels ne soient pas affiches, soit par javascript, soit par style CSS, jouer un peu sur les couleurs, par exemple, faire un javascript qui les modifie, et faire en sorte que ca soit javascript qui affiche l'image...)

Les possibilites sont tres nombreuses... En resume, ce code en l'etat est relativement simple, mais a mon avis, on peut le faire evoluer vers un truc TRES fort, et ce, beaucoup plus facilement qu'avec une image...
Messages postés
276
Date d'inscription
dimanche 22 juillet 2001
Statut
Modérateur
Dernière intervention
5 décembre 2013

Sympa le code, le principe est bien également, parcontre c'est très peu optimisé ressources et affichage : pour 50x150 tu aura 7500 tags pixel, bonjour la bande passante et les ressources mémoire (regardes la RAM quand tu ouvre ta page)

De plus tu pixelise le background, ce n'est pas la peine. Mets un div avec le background de la taille de ton image, puis pixelise que seulement les points des caractères - ca diminuera la taille de ton fichier.

Maintenant, concernant le niveau de sécurité du captcha (sans être un expert spammeur) il n'est pas efficace.

Tu sérialise les pixels dans l'ordre, donc n'importe quel newbie va facilement reconstituer le tableau de bits initial et le comparer avec le dictionnaire que tu proposes. Déjà ce serais plus judicieux de ne pas envoyer les bits dans l'ordre.

Rien que le fait de ne pas envoyer les 0 va compliquer un peu la tâche. Mais bon, c'est toujours facilement piratable, on peut à partir des TOP et LEFT indiqués retrouver les coordonées de chaque point et tes fonts vont facilement être reconnus par un OCR. Une solution serais de les parasiter puis faire des tests.

Sinon, juste une question :
Pourquoi ne pas passer en SVG puisque c'est plus fait pour du dessin que le HTML.

Bonne continuation sur ton projet,
Akh
Messages postés
39
Date d'inscription
mercredi 19 mars 2008
Statut
Membre
Dernière intervention
25 août 2009

Si la taille du carré gris ne s'adapte pas au texte saisie (exemple un texte plus long que codetest1) mais bon c'est juste une adaptation à faire!
Sinon une chaine plus courte marche nikel

TheWeasel47
Afficher les 19 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.