Hallo
Ich habe mich mal an diesen Captchas versucht und wollte mal gucken wie die funktionieren und wie man die sozusagen umgehen kann.
Als Beispiel diese Seite, da kann man das am leichtesten testen weil man nur 2 Sachen eingeben muss.
https://www.vodafone.de/proxy42/portal/registration.po
Also das Script umgeht den Captcha nicht, sondern blendet nur den Captcha ein und das Formularfeld, der Rest der Formulardaten ist egal.
Problem an meinem Script ist aber irgendwie das ich nicht wirklich wieder erkannt werde und die Prüfung nach dem Code irgendwie nicht stattfindet.
Naja, vielleicht kann ja mal jemand einen Blick drauf werfen und sieht wo der Fehler ist, ich tippe aufs Cookie, aber habe keine Ahnung wie ich das anders machen sollte.
Ich habe mich mal an diesen Captchas versucht und wollte mal gucken wie die funktionieren und wie man die sozusagen umgehen kann.
Als Beispiel diese Seite, da kann man das am leichtesten testen weil man nur 2 Sachen eingeben muss.
https://www.vodafone.de/proxy42/portal/registration.po
Also das Script umgeht den Captcha nicht, sondern blendet nur den Captcha ein und das Formularfeld, der Rest der Formulardaten ist egal.
Problem an meinem Script ist aber irgendwie das ich nicht wirklich wieder erkannt werde und die Prüfung nach dem Code irgendwie nicht stattfindet.
Naja, vielleicht kann ja mal jemand einen Blick drauf werfen und sieht wo der Fehler ist, ich tippe aufs Cookie, aber habe keine Ahnung wie ich das anders machen sollte.
PHP:
<?php
function getSite ($host,$url,$data_to_send,$referer,$cookie) {
$res = "";
$fp = fsockopen($host, 80);
fputs($fp, "POST /$url HTTP/1.0\n");
fputs($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QXW03411; i-NavFourF)\n");
fputs($fp, "Host: $host\n");
fputs($fp, "Accept: text/html, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\n");
fputs($fp, "Accept-Language: de\n");
fputs($fp, "Accept-Charset: windows-1252, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1\n");
fputs($fp, "Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0\n");
fputs($fp, "Connection: Keep-Alive, TE\n");
fputs($fp, "TE: deflate, gzip, chunked, identity, trailers\n");
if ($referer != '')
fputs($fp, "Referer: $referer/rn");
fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
if ($data_to_send != '') {
fputs($fp, "Content-length: ". strlen($data_to_send)+1 ."rn"); // +1 weil der Server sonst meckert
fputs($fp, $data_to_send);
}
if ($cookie != '')
fputs($fp, "Cookie: ".$cookie."\r\n\r\n");
fputs($fp, "Connection: close\n\n");
while(!feof($fp)) {
$res .= fgets($fp, 128);
}
fclose($fp);
return $res;
}
if (!isset($_GET[ code ])) {
$host = "www.vodafone.de";
$url = "/proxy42/portal/registration.po";
$res = getSite($host,$url,"","","");
// Cookie auslesen
if(strpos($res, 'Set-Cookie: ')!== false) {
$cookie = substr($res, strpos($res, 'Set-Cookie: ')+strlen('Set-Cookie: '), strpos($res, "; path") - strpos($res, 'Set-Cookie: ') - strlen('Set-Cookie: '));
}
// TOKEN auslesen
$buffer = strstr ($res, "org.apache.struts.taglib.html.TOKEN");
$end_buffer = strstr ($buffer,"\"></div>");
$buffer = str_replace ($end_buffer,"",$buffer);
$buffer = substr($buffer,44);
// Bild holen
$image = getSite ("www.vodafone.de","/proxy42/securityCode.jpg","","https://www.vodafone.de/proxy42/portal/registration.po",$cookie);
$image = substr($image,strpos($image,'image/jpeg')+14);
$filename = "temp.jpg";
$fp = fopen($filename,"w");
fwrite($fp,$image);
fclose($fp);
// Formular anzeigen
echo "<img src=http://localhost/rebo/$filename>";
echo "<hr>";
echo "<FORM ACTION=$_SERVER[PHP_SELF] METHOD=get>";
echo "<INPUT TYPE=text NAME=code SIZE=10>";
echo "<INPUT TYPE=hidden NAME=token VALUE=$buffer>";
echo "<INPUT TYPE=hidden NAME=cookie VALUE=$cookie>";
echo "<BR><BR>";
echo "<INPUT TYPE=submit NAME=SUBMIT VALUE=Abschicken>";
} else { // wenn Code eingeben wurde
$host = "www.vodafone.de";
$url = "/proxy42/portal/registration.po";
$data_to_send = "customer=true&name=015204277653&securitycode=".$_GET[ code ]."®ister.x=Weiter%A0";
$data_to_send .= "&org.apache.struts.taglib.html.TOKEN=".$_GET[token];
$referer = "https://www.vodafone.de/proxy42/portal/registration.po";
$cookie = $_GET[cookie];
$res = getSite($host,$url,$data_to_send,$referer,$cookie);
if (strstr($res,"Der eingegebene Sicherheitscode ist nicht korrekt"))
echo "Falscher Code";
elseif (strstr($res,"Bitte legen Sie einen Benutzernamen fest"))
echo "Code OK";
else {echo $cookie."<hr>"; echo $res; }
}
?>