Je suis tombé sur SVGCaptcha et j'ai tout de suite compris que c'était une mauvaise idée.
J'aimerais que vous montriez à quel point l'idée est mauvaise en extrayant le code de validation des images SVG que le code produit.
Un exemple d'image ressemble à ceci:
Voici la source de l'exemple d'image:

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
width="200" height="40"
> <rect x="0" y="0" width="200" height="40"
style="stroke: none; fill: none;" >
</rect> <text style="fill: #4d9363;" x="5" y="34" font-size="20" transform="translate(5, 34) rotate(-17) translate(-5, -34)">8</text>
<text style="fill: #be8b33;" x="125" y="29" font-size="21" transform="translate(125, 29) rotate(17) translate(-125, -29)">f</text>
<text style="fill: #d561ff;" x="45" y="35" font-size="20" transform="translate(45, 35) rotate(-2) translate(-45, -35)">4</text>
<text style="fill: #3de754;" x="85" y="31" font-size="21" transform="translate(85, 31) rotate(-9) translate(-85, -31)">8</text>
<text style="fill: #5ed4bf;" x="25" y="33" font-size="22" transform="translate(25, 33) rotate(16) translate(-25, -33)">u</text>
<text style="fill: #894aee;" x="105" y="28" font-size="25" transform="translate(105, 28) rotate(9) translate(-105, -28)">1</text>
<text style="fill: #e4c437;" x="65" y="32" font-size="20" transform="translate(65, 32) rotate(17) translate(-65, -32)">x</text>
</svg>
L'entrée est l'image SVG, qui est un format textuel.
La seule restriction réelle est que votre code doit générer les valeurs dans le bon ordre .
Les <text>éléments d' entrée sont dans un ordre aléatoire, vous devez donc faire attention à l' xattribut dans la <text>balise
Score est le nombre d'octets dans le code
Étant donné que le code effectue actuellement deux transformations qui s’annulent, vous pouvez les ignorer, mais si vous les prenez en considération, continuez et utilisez une réduction de 30% de votre score.

Définissez la direction d'exécution de droite à gauche et tournez-vous pour lancer la boucle principale.
Lire un caractère à partir de stdin et tester la valeur de fin de fichier.
Si ce n'est pas la fin du fichier, vérifiez si c'est un
Si ce n'est pas un
Sinon, multipliez par 126 et modifiez par 126 2 pour supprimer la valeur la plus ancienne de la paire et faire de la place pour le caractère suivant.
Lorsqu'une
Lorsqu’un
Enfin, lorsque la fin de fichier est atteinte, parcourez les 7 valeurs enregistrées dans le tableau et exportez-les une par une. Cela devrait vous donner toutes les lettres captcha dans le bon ordre.