PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Bot Session wird nicht übertragen



zpesnaz
19.12.2008, 11:45
Ich bin dabei einen PHP Bot zu bauen der mich ganz simpel bei einer Seite einloggt mit den Daten den ich ihm gebe und dann was ausliest und mir das zurückgibt.

Dabei gibt es nur ein Problem wenn ich mich mit der Funktion:


function POST2HOST($host, $path, $ref, $data) {
$fp = fsockopen($host, 80);
fputs($fp, "POST $path HTTP/1.0\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Referer: $ref\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ". strlen($data) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data);
while(!feof($fp)) {
$res .= fgets($fp, 128);
}
fclose($fp);

return $res;
}

loggt er mich ein... Das weiß ich ganz sicher weil ich den rückgabe wert der Funktion in eine Datei speichere. Wenn ich nun aber eine andere seite aufrufe von der seite wo das steht was ich haben will dann hat die Seite wieder eine neue Sessionid bekommen und so bin ich wieder ausgeloggt und ich kann den inhalt nicht lesen.

Deswegen wollte ich fragen kann ich die Sessionid übergeben welche er verwenden soll denn er fängt immer wieder eine neue an.

und wenn ja wie geht das?

MFG
Zpe$naZ

GregorSamsa
19.12.2008, 12:00
Du brauchst die SessionID, und die wird in einem Cookie übertragen.

Am einfachsten, nach dem einloggen alle Cookies auslesen und danach wieder zurückschicken.

zpesnaz
19.12.2008, 12:15
Danke schonmal dafür aber wie stelle ich das an...

Also meine PHP kenntnisse sind eig ganz gut nur hab vorher nichts mit header übertragung und "sockets" gemacht deswegen habe ich da auch probleme mit.

GregorSamsa
19.12.2008, 12:32
Also:

Die Antwort vom Server enthält irgendwo: Set-Cookie: NAME=Content;Domain=domain;Path=/;Expires=Mon, 17-Dec-2018 12:35:49 GMT

Damit wird ein Cookie gesetzt, mit dem namen NAME und dem Inhalt Content.

Du brauchst dann einfach nur bei allen deinen folgenden POST's einfahc:
Cookiename=Cookiewert;Cookiename2=Cookiewert2;usw. ..
Dranhängen

zpesnaz
19.12.2008, 13:02
Set-Cookie: PHPSESSID=f39f9dda7b1067d3d6a0cac9c5775b47; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT

Das kommt raus in der Zeile...

ich lese per script die f39f9dda7b1067d3d6a0cac9c5775b47 aus (nur ein beispiel) und füge die ausgelesene id in entweder POST oder GEt ein beides klappt nicht was mache ich falsch

blackapple
19.12.2008, 13:25
so hab dir mal kurz was gebastelt ;)
http://nopaste.info/32e0886337.html
das müsste eig funktionieren...
session_start(); nicht vergessen^^

GregorSamsa
19.12.2008, 15:05
zpesnaz: In deinem Beispiel schickst du bei jeder Antwort folgenden header mit:
Cookie: PHPSESSID=f39f9dda7b1067d3d6a0cac9c5775b47;

zpesnaz
19.12.2008, 17:34
hey danke es klappt endlich...

ihr habt mir beide echt geholfen!!

Added after 4 hours 27 minutes:

mein browsergamebot ist fertig doch ich habe noch eine frage ich will in dem bot auf eine seite auf dem ein captcha code ist wie kann ich den auslesen wärend ich den Post abschicke...

blackapple
19.12.2008, 22:53
um welches captcha geht es denn bzw welche seite^^
eig müsstest du mal in den quelltext gucken wie das captcha eigebunden wird.. dann die adresse vom bild mit preg_match filtern und das bild in eine datei speichern oder hab ich dich falsch verstanden?

edit: mir fällt grad auf das ich bei meinem codeschnipsel den host falsch angegeben hab xD
hatte das grad aus ner alten version von meinem bot zusammengebastelt^^
musst halt da mal änderen wenn dus noch nicht gemahct hast

zpesnaz
19.12.2008, 23:08
die datei ist so eingebunden

captcha.php

es wird nichts übergeben an die datei und ich vermute das das ergebnis sehr sehr wahrscheinlich in ner session ist.

Nur meine frage ist:
Wie kann ich das Bild auslesen wärend ich den Post durchführe. Denn wenn ich das Bild z.B mit file_get_contents auslese dann ist im Post wieder ein anderes verwendet worden.

es geht noch garnicht um die entschlüsselung, denn die habe ich schon.

(Der Captcha besteht ganz simple aus zwei einstelligen zahlen die zusammen gerechnet werden. Also zb 1 +1 = EINGABE, ich habe einfach die bilder genommen und zu jedem bild einen md5 code gespeicht vom binär code und in eine datenbank gespeicht wenn ich nun das bild aus dem post hätte könnte ich dies auch ganz einfach md5 verschlüsseln und mit den anderen vergleichen und bei dem treffer dann das ergebnis herausbekommen...)

MFG
Zpe$naZ

blackapple
20.12.2008, 13:02
also du solltest dir dann eine weiter funktion schreiben mit einem GET request, am besten schreibst du meine funktion um, und dir damit dann das captcha holen einfach bei pfad den pfad zum captcha eintragen dann müsstest du wenn du das richtig gemacht hast den quellcode von dem captcha haben und dann davon den md5 hash berechnen, aber vorher das ergebniss mit trim bearbeen um evt vorhandene leerzeichen am anfang und ende zu entfernen ( also md5(trim($str)); )
btw ich arbeite zufällig auch grade an einem bot ;)