Ben rastladım SVGCaptcha ve hemen bunun kötü bir fikir olduğunu biliyordum.
Doğrulama kodunu, kodun ürettiği SVG görüntülerinden çıkararak bunun ne kadar kötü bir fikir olduğunu göstermenizi isterim.
Örnek bir resim şöyle görünür:
Örnek resmin kaynağı:

<?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>
Giriş, metin formatı olan SVG görüntüsüdür.
Tek gerçek kısıtlama, kodunuzun değerleri doğru sırada üretmesi gerektiğidir .
Giriş <text>öğeleri rasgele sıradadır, bu nedenle etiketindeki xözelliğe dikkat etmeniz gerekir.<text>
Puan, koddaki bayt sayısıdır
Kod şu anda birbirini iptal eden iki dönüşüm yaptığı için bunları yok sayabilirsiniz, ancak bunları göz önünde bulundurursanız, devam edin ve puanınızdan% 30 indirim alın.

Yürütme yönünü sağdan sola çevirin ve ana döngüyü başlatmak için etrafına sarın.
Stdin'den bir karakter okuyun ve dosya sonu değerini test edin.
Dosya sonu değilse, a olup olmadığını kontrol edin
A değilse
Değilse , çiftin en eski değerini bırakmak ve bir sonraki karakter için yer açmak için 126 ile çarpın ve 126 2 ile mod yapın .
Bir
A
Son olarak, o zaman dosya sonuna ulaşıldığında, dizide kaydedilen 7 değerin üzerinde yineleyin ve bunları birer birer çıktılayın. Bu, tüm captcha harflerini doğru sırayla vermeli.