Nach einigen Tutorials habe ich mit Auto It einen simplen Pixel Bot geschrieben der sich einloggt.
Der PixelBot ist mir aber zu trivial und mit zu vielen Nachteilen behaftet.
Da es ein Flash Browsergame ist kann ich mir auch nicht per Auto It die Eingabefelder und Buttons krallen und benutzen.
Außerdem scheint es nahezu unmöglich die MemoryPointer zu finden.
Damit bleibt nur ein PaketBot als elegante Lösung, sehe ich das richtig?
Also habe ich weitere Tutorials gelesen und angefangen.
Diesmal aber nicht mit Auto It sondern mit Java, da ich mehrmals gelesen habe das Auto It recht langsam ist und ich mich mit Java schon enigermaßen auskenne.
Mit Live HTTP Headers habe ich die Pakete abgefangen die gesendet werden wenn ich mich bei dem Spiel einlogge.
Wichtig scheint dieses zu sein:
Code:
http://gamona.sfgame.de/request.php?req=00000000000000000000000000000000002 [B]USERNAME[/B] %3B [B]PASSWORT IN MD5[/B] %3Bv1.60&rnd=1273818731 GET /request.php?req=00000000000000000000000000000000002 [B]USERNAME[/B] %3B [B]PASSWORT IN MD5[/B] %3Bv1.60&rnd=1273818731 HTTP/1.1 Host: gamona.sfgame.de User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive Cookie: POPUPCHECK=1306178663925
Dann habe ich mich an mein Java Prgramm gesetzt:
Code:
import java.net.*; import java.io.*; public class Login { public static void main(String[] a) { String name = "UserName"; String pw = "PasswortInMD5"; try { URL gameUrl = new URL("http://gamona.sfgame.de/"); Socket server = new Socket(gameUrl.getHost(), 80); //Muss ich das alles senden... schreibeNachricht(server,"GET /request.php?req=00000000000000000000000000000000002" + name + "%3B" + pw + "%3Bv1.60&rnd=8564654657 HTTP/1.1\n" + "Host: gamona.sfgame.de\n" + "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1\n" + "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\n" + "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\n" + "Accept-Encoding: gzip, deflate\n" + "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\n" + "Keep-Alive: 115\n" + "Connection: keep-alive\n" + "Cookie: POPUPCHECK=1306178663925"); //...oder nur das? schreibeNachricht(server,"gamona.sfgame.de/request.php?req=00000000000000000000000000000000002"+name+"%3B"+pw+"%3Bv1.60&rnd=111111113"); System.out.println(leseNachricht(server)); } catch (MalformedURLException e) { System.err.println("Server nicht gefunden"); } catch (IOException e) { System.err.println("I/O Fehler"); } } private static void schreibeNachricht(java.net.Socket socket, String nachricht) throws IOException { PrintWriter printWriter = new PrintWriter( new OutputStreamWriter( socket.getOutputStream())); printWriter.print(nachricht); printWriter.flush(); } private static String leseNachricht(java.net.Socket socket) throws IOException { BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(socket.getInputStream())); char[] buffer = new char[1000]; int anzahlZeichen = bufferedReader.read(buffer, 0, 1000); String nachricht = new String(buffer, 0, anzahlZeichen); return nachricht; } }
Dabei bekomme ich aber keine Rückmeldung vom Server
Wenn ich nur die eine Zeile sende bekomme ich folgende Meldung:
PHP Code:
HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Mon, 23 May 2011 20:46:12 GMT
Connection: close
Content-Length: 326
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request - Invalid Verb</h2>
<hr><p>HTTP Error 400. The request verb is invalid.</p>
</BODY></HTML>
Und weiter weiß ich nicht...
Ist mein Ansatz richtig?
Warum bekomme ich keine Rückmeldung, wenn ich das Paket versende?
Ist das was in dem Paket steht richtig?
Wenn jemand von euch davon Ahnung hat und mir Tipps geben kann würd ich
mich echt freuen.
Danke schonmal fürs Lesen