Captcha Sommetjes

Door Marvin S, 21 jaar geleden, 7.965x bekeken

(Ik heb hem maar even onder beveiliging gezet)

Vandaag post ik een script die een ander soort
'Captcha' test uitvoert..

voor de mensen die niet weten wat Captcha is
de volgende uitleg:
-----------------------------------------------------
Je bent het zeker weten al eens tegengekomen
(misschien zelfs hier bij het registreren op phphulp.nl)
..Tijdens het aanmelden word gevraagd om een
'tekeningetje' met schots en scheve letters over
te tikken.. dit heet een Captcha test.. de bedoeling
hiervan is om zeker te weten dat een 'mens' zich
aangemeld heeft en niet een script ofzo (een script
kan ten slotte niet de letters van een plaatje intoetsen
in het juiste hokje)

Genoeg hierover voor wie meer wil weten:
WIKIPEDIA

==========================

Deze versie van Captcha geeft een bijzonder
soort plaatje.. het is een rekensom.
Je hoeft dus niet over te tikken maar je moet
er zelfs nog ff bij nadenke op bassischool niveau ;)

hieronder volgt de code:

Voorbeeld: http://www.phphulp.marviins.nl/tellertje/click.php?id=5

Gesponsorde koppelingen

PHP script bestanden

  1. captcha-sommetjes

 

Er zijn 30 reacties op 'Beveiliging'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
GaMer B
GaMer B
21 jaar geleden
 
0 +1 -0 -1
Waar is sommen.php? Of moet je die zelf verzinnen?

Wel grappig scriptje, maar soms moeilijk te lezen :P
Marvin S
Marvin S
21 jaar geleden
 
0 +1 -0 -1
@gamer13
ik had te vroeg op de knop gedrukt;)
nu staan ze erbij
Thijs X
Thijs X
21 jaar geleden
 
0 +1 -0 -1
Leuk scriptje maar zou beter zijn wanneer je echt alles in GD zou maken, als ik naar die plaatjes kijk zou het allemaal wel mogelijk moeten zijn. En ook die sommen gewoon in hetzelfde bestand. Zodat je maar 1 Bestand nodig hebt voor die captcha.
Marvin S
Marvin S
21 jaar geleden
 
0 +1 -0 -1
Quote:
En ook die sommen gewoon in hetzelfde bestand. Zodat je maar 1 Bestand nodig hebt voor die captcha.


ja heb jij daar een oplossing voor? want die sommen zijn niet normaal veel bestanden...

kheb al geprobeerd met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<img src="inc/img.php?<?php echo $randomnummer;?>

dan is de pagina die geladen wordt bijvoorbeeld /img.php?1
dan staat in img.php iets als:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if(isset($_POST['verwerk'] == 1)){ include('img/img_1.jpg');
if(isset($_POST['verwerk'] == 2)){ include('img/img_2.jpg');

maar twerkt niet... hij geeft geen image weer dan
Thijs X
Thijs X
21 jaar geleden
 
0 +1 -0 -1
Nee je kan alles gewoon generen in GD in PHP. Dus dan heb je niet meer die externe beestandjes nodig maar kies je gewoon een random som uit en genereer je het plaatje dmv GD ( PHP ).

Kijk hier maar eens even:

http://www.sitemasters.be/tutorials/4/1/260/PHP/Gd_Library_Deel_1
http://www.sitemasters.be/tutorials/4/1/261/PHP/Gd_Library_Deel_2
Marvin S
Marvin S
21 jaar geleden
 
0 +1 -0 -1
ja maar GD bak ik niet zo veel van.. vandaar dat ik deze manier gebruikt heb
Thijs X
Thijs X
21 jaar geleden
 
0 +1 -0 -1
Daarom die Tut's, zijn goed imo heb het daar zelf ook geleerd. Scheelt heel wat moeite met al die bestanden maken etc.
Brett Rijnders
Brett Rijnders
21 jaar geleden
 
0 +1 -0 -1
Leuk script, maar waarom geeft hij een fout bij "98+3"?
Het antwoord moet 101 zijn, maar ik krijg de volgende pagina te zien:
"Oyoooo jij bent ECHT slecht, FOUT antwoord..terug naar de bassisschool" :p
Marvin S
Marvin S
21 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
case 0: >>>>>> $randomnummer_val='101';break;
was
case 0: >>>>>> $randomnummer_val='111';break;


veranderd.... thnxx Brett


Ps,
Quote:
"Oyoooo IK bent ECHT slecht, FOUT antwoord..terug naar debassisschool"

haha
Leroy Boerefijn
Leroy Boerefijn
21 jaar geleden
 
0 +1 -0 -1
wel leuk gedaan voor de rest ;)
alleen het is soms een beetje onleesbaar ;)
K i p
K i p
21 jaar geleden
 
0 +1 -0 -1
Quote:
alt="Drieendertig+Achteen"
???

Lijkt me niet echt slim, bots kunnen dat kraken.
Marvin S
Marvin S
21 jaar geleden
 
0 +1 -0 -1
ik weet niet of een bot een alt tag kan kraken en
dan ook nog tegelijk om kan zetten naar getallen...

maar het kan inderdaad ook weggelaten worden
Thijs X
Thijs X
21 jaar geleden
 
0 +1 -0 -1
Het is idd veiliger om het weg te laten, als ik straks terug ben van werk dan ga ik wel even bezig met een voorbeeldje hoe je alles in 1 bestand kwijt kan dmv GD
Thijs X
Thijs X
21 jaar geleden
 
0 +1 -0 -1
Hier:

Voorbeeldje: http://php.ferket.net/captchasom.php
(Vergeet niet font te uploaden)
Code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?
session_start();
header("content-type: image/png");

// Afbeelding afmetingen en achtergrond kleur etc.
$breedte = 110;
$hoogte = 30;
$font = "fonts/arial.ttf";
$afbeelding = imagecreate($breedte, $hoogte);
$achtergrond = imagecolorallocate($afbeelding, 255, 255, 255);

// Kleuren
$kleur = imagecolorallocate($afbeelding, 186, 197, 214);
$zwart = imagecolorallocate($afbeelding, 0, 0, 0);
imagerectangle($afbeelding, 0, 0, $breedte-1, $hoogte-1, $kleur);

// Getallen
for ($i = 0; $i < 2; $i++)
{

    $xas = rand(5, 15);
    $yas = rand(19, 24);
    $graden = rand(-25, 25);
    $grootte = rand(12,14);
    $getal = rand(1,15);
    $kleur = imagecolorallocate($afbeelding, rand(0, 100), rand(0, 100), rand(0, 100));
    if($i == 0)
    {

        imagettftext($afbeelding, $grootte, $graden, 5 + $xas, $yas, $kleur, $font, $getal);
        $getal1 = $getal;
    }

    else
    {
        imagettftext($afbeelding, $grootte, $graden, 50 + $xas, $yas, $kleur, $font, $getal);
        $getal2 = $getal;
    }
}


// Uitkomt en Sessie maken
$uitkomst = $getal1 + $getal2;
$_SESSION['code'] = md5($uitkomst);

// + en = Tekens
imagettftext($afbeelding, 15, 0, 40, 22, $zwart, $font, "+");
imagettftext($afbeelding, 15, 0, 90, 22, $zwart, $font, "=");

imagepng($afbeelding);
imagedestroy($afbeelding);
?>
- -
- -
21 jaar geleden
 
0 +1 -0 -1
Dan kun je ook gewoon dit doen als sommen.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

$sommen
= array(
array(1,2),
array(34,13),
array(65,23)
//enz...
);

?>


Zo is het wat overzichtelijker. Verder mooi script! Misschien moet je alleen iets minder hoge getallen nemen ;-) Ik ben geen kei in hoofdrekenen :P
Harmen
Harmen
21 jaar geleden
 
0 +1 -0 -1
eerlijk gezegd:

Forbidden

You don't have permission to access /scripts/captcha/ on this server.

oneerlijk gezegd:

Forbidden

You don't have permission to access /scripts/captcha/ on this server.
Marvin S
Marvin S
21 jaar geleden
 
0 +1 -0 -1
@harmen

sorry is weer gefixed..
was ff bezig met herindelen van me host:P
Rudie dirkx
rudie dirkx
21 jaar geleden
 
0 +1 -0 -1
Het is misschien moeilijk te lezen voor een persoon, maar een bot heeft er in dit geval weinig moeite mee :)
Het idee is wel leuk, maar een plaatje met een + of - is voor een bot al snel een som... Dus de challenge is nog steeds niet echt a la captcha.
Misschien kan je het beter met 'plus' ipv + en 'minus' ipv -, etc doen... Of alles geheel uitschrijven (zie de spam challenge op php.net als je comments post).
Het is iig wel een goed idee!
Maar zo'n beetje alles is tegenwoordig al gekraakt :) Jammer. Lettertjes overtypen werkt niet meer, plaatjes zijn toch wel te lezen. De volgende stap is gewoon een vraag stellen die een bot niet begrijpt. Hoeft geen mooi plaatje te zijn, of moeilijk te lezen.
W W
W W
21 jaar geleden
 
0 +1 -0 -1
chill scriptje! gaat bij mijn favorieten. Ga ik strax gebruiken!
Daniel
daniel
21 jaar geleden
 
0 +1 -0 -1
@cervettie: ik heb vorige week een Captha class gemaakt waar in sommen voluit geschreven worden, zoals dit:

de uitkomst van zeven min drie is:

En het antwoord moet nummeriek ingevuld worden. Ik ga het nog even verbeteren, en dan post ik het hier ook wel :)

Trouwens heb ik er voor gezorgd dat er bij mij geen hogere getallen uit komen dan 9, en dus de uitkomst niet hoger kan zijn dan 18. Ik vind dat je nog al grote getallen gebruikt, sommige mensen vinden dit lastig, en dan versturen ze het formulier niet. Niet iedereen is een hoofdreken wonder ;)

Op www.graz.nl gebruiken ze ook een hele simpele 'Captha':
wat is de vier letterige naam van deze site?
Marvin S
Marvin S
21 jaar geleden
 
0 +1 -0 -1
@daniel

maar als je nou specifiek een bot schrijft 'tegen'
www.graz.nl.. dan is het niet moeilijk meer..
of zijn er verschillende vragen? als het alleen
vragen met antwoord 'graz' zijn is het gebeurd
met de site toch.. als iemand dat zou willen
Kumkwat Trender
Kumkwat Trender
20 jaar geleden
 
0 +1 -0 -1
Deze is ook al gehackt door mij ....

http://phphulp123.freehostia.com/download.php

hihi, best wel een vette bot maar als de cijfer hoger dan 100 is werkt ie niet meer :S

Geef even aan als je een bug vindt...
Mitch
Mitch
20 jaar geleden
 
0 +1 -0 -1
en wat als je niet kan rekenen?
Milo
Milo
19 jaar geleden
 
0 +1 -0 -1
Parse error: syntax error, unexpected $end in /customers/after-party.nl/after-party.nl/httpd.www/chaptcha/sommen.php on line 10

:S:S hoe los ik dit op?? ik heb meerdere dingen geprobeerd di in mijn zaagsel omhoog kwamen drijven maar dit kunnen mijn hout splinters niet oplossen.

greetzz milo
Niek Kasius
Niek Kasius
19 jaar geleden
 
0 +1 -0 -1
goed script! daar niet van.
maar waarom al die kleuren, lijntjes en schotsenscheven letters? ik kan het nog maar net lezen met +3,75 laat staan iemand die nog slechter ziet dan ik of kleurenblind is, of hoop je daar een robot mee te misleiden.

En Mitch! als je niet kan rekenen, dan vraag je het toch aan je oma of ga je het vragen in het dichts bijzijnde 70+soos bij jou in de buurt daar zijn altijd wel mensen die wel kunnen rekenen.

PS.
nog een vraag! hoe verwerk ik dit script in een bestaand contact formulier?
want ik ben bang dat ze dat in die soos nog net niet weten te klaren.
GaMer B
GaMer B
19 jaar geleden
 
0 +1 -0 -1
@milo, je bent ergens een { vergeten af te sluiten met een }
Henry
Henry
18 jaar geleden
 
0 +1 -0 -1
Hallo...
Het som-captcha idee is in feite een heel goed bedacht systeem.
aangezien dat wat ik vreesde , het kraken door een bot , hier ook al vermeld werd heeft bij mij dit idee een lat hoger gelegd.

Wat als je nu een heel ingewikkelde som maakt , die je in feite alleen met een calculator kunt berekenen, en dus naast de som een calculator plaatst op je website.
Dus je rekent het met behulp van de calculator die je aanbied de som uit.
ik weet niet hoe een bot reageert en hoe slim die is.
Daarnaast hoeft die calculator GEEN calculator te zijn die sommen uitrekent , en natuurlijk hoeft de SOM ook geen cijfers te bevatten.
Het is maar een idee....
PHP Newbie
PHP Newbie
18 jaar geleden
 
0 +1 -0 -1
Lijkt me niet zo'n gek strak plan. Voor een mens is het misschien lastig om 9928*231 te doen, maar dat is voor een PC net zo simpel als 1 + 1.

De kracht van deze captcha is dat de bot meer moet doen dan alleen het plaatje lezen. En of dat de som die er staat nou 1 + 1 is of 9928*231, dat maakt niet uit.
Dennis Mertens
Dennis Mertens
18 jaar geleden
 
0 +1 -0 -1
Alles wat in sommen.php staat is onzin.

Je hoeft alleen een array te hebben met als key een integer (standaard zo) en de value de naam in letters.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$aNumbers
Array(1 => 'een', 'twee'...);
?>


Het scriptje doet de rest.


Even snel wat gemaakt om het uit te leggen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
[code]<?php

$aNr
= Array(
    1 => 'een', 'twee', 'drie', 'vier', 'vijf', 'zes', 'zeven', 'acht', 'negen', 'tien',
    'elf', 'twaalf', 'dertien', 'veertien', 'vijftien', 'zestien', 'zeventien', 'achtien', 'negentien', 'twintig');

$aOperators = Array('+', '-');

$aSom = Array(Rand(1, Count($aNr)), Rand(1, Count($aNr)));
$sOperator = Rand(0, Count($aOperators) - 1);

If($sOperator == '+')
{

    echo $aNr[$aSom[0]].' + '.$aNr[$aSom[1]].' = '.($aSom[0] + $aSom[1]);
}

Else
{
    echo $aNr[$aSom[0]].' - '.$aNr[$aSom[1]].' = '.($aSom[0] - $aSom[1]);
}

?>



Voorbeelden zijn:
negen - veertien = -5
twee + twaalf = 14
drie + negentien = 22
een - zes = -5
vijf - acht = -3
twintig - twaalf = 8


Ik heb de operator in een array gegooid, als je maybe een * erbij wilt. En dan is een switch natuurlijk mooier! Maar heb dit even snel gemaakt.

Even bewerkt :)
Ik had gedeeld door ook, alleen krijg je veel achter de komma :p

<?php

$aNr
= Array(
    1 => 'een', 'twee', 'drie', 'vier', 'vijf', 'zes', 'zeven', 'acht', 'negen', 'tien',
    'elf', 'twaalf', 'dertien', 'veertien', 'vijftien', 'zestien', 'zeventien', 'achtien', 'negentien', 'twintig');

$aOperators = Array('addition', 'subtraction', 'multiplication');

$aSom = Array(Rand(1, Count($aNr)), Rand(1, Count($aNr)));
$sOperator = $aOperators[Rand(0, Count($aOperators) - 1)];

Switch($sOperator)
{
    case
'addition':
        echo $aNr[$aSom[0]].' + '.$aNr[$aSom[1]].' = '.($aSom[0] + $aSom[1]);
    break;
    case
'subtraction':
        echo $aNr[$aSom[0]].' - '.$aNr[$aSom[1]].' = '.($aSom[0] - $aSom[1]);
    break;
    case
'multiplication':
        echo $aNr[$aSom[0]].' * '.$aNr[$aSom[1]].' = '.($aSom[0] * $aSom[1]);
    break;
    default:

        echo 'Er is wat fout gegaan.';
}


?>

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Niek Kasius
Niek Kasius
17 jaar geleden
 
0 +1 -0 -1
sorry! dat ik nog reageer naar bijna 3 jaar, maar het lijkt me niet de bedoeling dat je steeds maar door kunt gaan met fouten antwoorden geven.
je zou eigenlijk naar een X aantal keren een ban moeten krijgen zodat je er niet meer in kan voor een bepaalde tijd, Want die bots worden ook steeds slimmer tegenwoordig

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. captcha-sommetjes

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.