Ich bin auf SVGCaptcha gestoßen und wusste sofort, dass es eine schlechte Idee war.
Ich möchte, dass Sie zeigen, wie schlecht diese Idee ist, indem Sie den Validierungscode aus den von diesem Code erzeugten SVG-Bildern extrahieren.
Ein Beispielbild sieht folgendermaßen aus:
Hier ist die Quelle des Beispielbildes:
<?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>
Die Eingabe ist das SVG-Bild, bei dem es sich um ein Textformat handelt.
Die einzige wirkliche Einschränkung ist, dass Ihr Code die Werte in der richtigen Reihenfolge erzeugen muss .
Die Eingabeelemente <text>
sind in zufälliger Reihenfolge, sodass Sie auf das x
Attribut im <text>
Tag achten müssen
Score ist die Anzahl der Bytes im Code
Da der Code derzeit zwei Transformationen durchführt, die sich gegenseitig aufheben, können Sie diese ignorieren. Wenn Sie sie jedoch berücksichtigen, reduzieren Sie Ihre Punktzahl um 30%.