Umleitungs Server mit AutoIt

08/19/2013 03:28 Requi#1
Guten Morgen Community,

ich habe mich jetzt zum ersten Mal mit TCP auseinander gesetzt und habe schon nette Sachen für Privat Server geschrieben.

Nun ist meine Frage ob dies mit AutoIt möglich ist:

Ein Privat Server Emulator ist am laufen.
Ein Client connected sich. //Noch normal
AutoIt Server wurde vorher gestartet, der eine Art Umleitung ist.

Durch diesen wird alles was vom Client kommt geschickt, verarbeitet und weiter an den normalen Emulator geschickt oder macht seine eigenen Sachen, falls das Packet so und so aufgebaut ist.

Und alles was vom Server kommt fängt der AutoIt Server ab und schaut, ob es was ändern kann oder nicht.

Aber der AutoIt Server muss als die eingeloggte UserID authentifiziert sein.
Bis jetzt konnte ich mich nur zum Server verbinden ohne ein User zu sein, da ich keine Login Packets geschickt habe etc.

Jetzt möchte ich das Programm aber als Beistand haben. Eine 2. Server der meinen Account "unterstützt".


Ich hoffe ihr habt verstanden was ich meine.

MfG
Requi
08/19/2013 05:45 BladeTiger12#2
Naja, da hast du wohl mehrere möglichkeiten.
Erstmal zu den Accounts.

1. Du kannst die Daten in einer Datei abspeichern(Server)
2. Du kannst alles per FTP-Server abfragen(.php)
3. Du kannst Xampp runterladen dir eine Locale Datenbank machen.
4. Mehr fällt mir nicht ein.

Aber brauchst dann auch eine MySQL Udf(Google suchen)
(Wenn du Datenbank benutzt)

Dann kannst du ja am ende ein Packet vom Client zum Server senden mit dem Inhalt ID und PW.
Der Server frägt das ganze per deine Methode ab und schickt ein Packet zurück z.B True/False.

Ich hoffe ich habe es so richtig verstanden.
08/19/2013 12:33 alpines#3
Wenn du den Server als "Proxy" nehmen willst, dann akzeptier alles was der Client an dich sendet - filter es - und dann send es an den eigentlichen Server.
08/19/2013 13:25 Requi#4
Quote:
Originally Posted by BladeTiger12 View Post
Naja, da hast du wohl mehrere möglichkeiten.
Erstmal zu den Accounts.

1. Du kannst die Daten in einer Datei abspeichern(Server)
2. Du kannst alles per FTP-Server abfragen(.php)
3. Du kannst Xampp runterladen dir eine Locale Datenbank machen.
4. Mehr fällt mir nicht ein.

Aber brauchst dann auch eine MySQL Udf(Google suchen)
(Wenn du Datenbank benutzt)

Dann kannst du ja am ende ein Packet vom Client zum Server senden mit dem Inhalt ID und PW.
Der Server frägt das ganze per deine Methode ab und schickt ein Packet zurück z.B True/False.

Ich hoffe ich habe es so richtig verstanden.
Ich verstehe das Client-Server Prinzip. Aber wie alpines gesagt hat ist es richtig.
Es soll wie ein Proxy sein. Bzw es soll ein Proxy sein.

Ich gehe auf andere Server und will mit meinem kleinen Server, Packets vom Client abfangen und auch welche an ihn senden.

Aber es darf kein eigenständiger sein. Nur eine Art Unterstützung.
08/19/2013 13:44 BlackHybrid#5
Zu deiner Frage: Ja klar ist es möglich.
Allerdings würde ich mich an deiner Stelle fragen, ob es wirklich sinnvoll ist dafür AutoIt zu verwenden, weil es erstens sehr lahm ist und wahrscheinlich zu merkbaren verzögerungen kommen würde und 2. komplizierter ist umzusetzen vorallem, wenn mehrere Benutzer auf den Server zugreifen wollen (Gerade was die "Handhabung" von Threads in AutoIt angeht).
08/19/2013 13:44 YatoDev#6
Ich hab dir doch schon gesagt das das geht und mal grob erklärt am handy xD
Kommt drauf an was die unterstützung machen soll ^^
Wenn du beim user damit irgendwelche werte oder ähnliches übertragen willst vergess das lieber .
Als unterstützung wie merkava / kerkava / openstealth kannst du das doch locker machen . du hast ja den server und weist was du schickst und antworten musst.

Quote:
Originally Posted by BlackHybrid View Post
Zu deiner Frage: Ja klar ist es möglich.
Allerdings würde ich mich an deiner Stelle fragen, ob es wirklich sinnvoll ist dafür AutoIt zu verwenden, weil es erstens sehr lahm ist und wahrscheinlich zu merkbaren verzögerungen kommen würde und 2. komplizierter ist umzusetzen vorallem, wenn mehrere Benutzer auf den Server zugreifen wollen (Gerade was die "Handhabung" von Threads in AutoIt angeht).
er möchte es beim user ausführen und auch anwenden = keine probleme
08/19/2013 15:01 Requi#7
Wenn du es mir noch etwas genauer erklären würdest :D
OS/KOS benutz(t)en privoxy. Genauso wie SH-IT. Wie soll ich damit was anfangen. Was genau muss ich machen, dass es als Beistand da ist und nicht als weiterer nicht existierender User.
08/19/2013 15:10 YatoDev#8
privoxy hat eine documentation zum benutzen ^^
oder
Die IP vom server auf 127.0.0.1 umleiten
packets gehen dann zu dir und werden dann von deinem programm erkannt (Port 80 ??)
Das empfangene packet schickst du dann wieder zum server oder zum client (wird problematisch da der browser die ja auch bekommt )
Zum verändern musst du dir halt die ganzen packets mal einzeln ausgeben lassen und schauen wie die aussehen.

Wie das ganze genau ist weis ich auch nicht ^^

Privoxy ist eigentlich perfekt da es packete die nicht verändertwerden sollen einfach weiterschickt . Wie genau das ist weis ich auch nicht hab da nur so ein bisschen vorwissen xD
08/19/2013 15:18 Requi#9
Quote:
wird problematisch da der browser die ja auch bekommt
Der Browser IST der Client lol.
08/19/2013 20:22 Shadow992#10
Quote:
Originally Posted by Requi View Post
Der Browser IST der Client lol.
Wenn die Packets unverschlüsselt sind reicht ein Hook auf Recv/Send.
Alternativ ist ein Umleiten auf 127.0.0.1 mit nem außergewöhnlichen Port das sinnvollste, das habe ich selbst auch schon einmal in C/C++ gemacht. Hier musst du aber unbedingt beachten, dass die meisten Browser viele Threads erzeugen um Sende, Empfangen, parsen, usw. gleichzeitig zu machen. Ich hatte meinen C/C++ Proxy nur in einem Thread laufen lassen und deswegen waren die Ergebnisse nie vollständig. In AutoIt also eher ein Ding der Unmöglichkeit. Hooking/Detouring wäre hier das sinnvollste.
08/19/2013 20:24 YatoDev#11
Quote:
Originally Posted by Shadow992 View Post
Wenn die Packets unverschlüsselt sind reicht ein Hook auf Recv/Send.
Die server software und den source hat er ja selbst gecoded . Es ist ein emulator für ein online game er weis also genau was gesendet wird .

Kannst du mal vom prinzip erklären wie man die packets durchlässt / löscht oder sowas ?
08/19/2013 20:49 Requi#12
Quote:
Originally Posted by Shadow992 View Post
Wenn die Packets unverschlüsselt sind reicht ein Hook auf Recv/Send.
Alternativ ist ein Umleiten auf 127.0.0.1 mit nem außergewöhnlichen Port das sinnvollste, das habe ich selbst auch schon einmal in C/C++ gemacht. Hier musst du aber unbedingt beachten, dass die meisten Browser viele Threads erzeugen um Sende, Empfangen, parsen, usw. gleichzeitig zu machen. Ich hatte meinen C/C++ Proxy nur in einem Thread laufen lassen und deswegen waren die Ergebnisse nie vollständig. In AutoIt also eher ein Ding der Unmöglichkeit. Hooking/Detouring wäre hier das sinnvollste.
Das Script unten reicht schon zum senden von Packets, da es ja unverschlüsselt ist. PServer halt.
Das Problem ist halt, das ist kein User. Ich hab jetzt das LOGIN Packet halb nachgebaut und war in meinem Emulator als mich identifiziert. War zwar nicht ganz drin, aber ich wurde schon als User erkannt.
Was ich sende bekommt der Emulator auch, was ich will.

Aber das ist nun ein eigener Client. Der sollte eigentlich meinem User auf der Map beistehen.

08/20/2013 09:23 Lawliet#13
Das Prinzip:
Leite deinen Clienten auf localhost:xxxxx um.
Lass dein Script auf Port xxxxx lauschen und nimm eine Anfrage an, wenn sie dann kommt.
Sende eine Verbindungsanfrage an den eigentlichen Server.
Wenn du mit beiden Verbunden bist, musst du nurnoch in einer Schleife abwechselnd auf beiden Verbindungen auf Pakete lauschen und ggf. an den gegenüber Senden.
Will dir eine Seite etwas senden, dann empfängst du, kannst den String beliebig verändern und weiterleiten oder einfach ins leere laufen lassen.
08/20/2013 21:08 lolkop#14
Quote:
Originally Posted by Lawliet! View Post
Das Prinzip:
Leite deinen Clienten auf localhost:xxxxx um.
Lass dein Script auf Port xxxxx lauschen und nimm eine Anfrage an, wenn sie dann kommt.
Sende eine Verbindungsanfrage an den eigentlichen Server.
Wenn du mit beiden Verbunden bist, musst du nurnoch in einer Schleife abwechselnd auf beiden Verbindungen auf Pakete lauschen und ggf. an den gegenüber Senden.
Will dir eine Seite etwas senden, dann empfängst du, kannst den String beliebig verändern und weiterleiten oder einfach ins leere laufen lassen.
das ist die einfache beschreibung eines proxys :P größter vorteil bei dem ganzen ist, das man scheinbar unsichtbar agiert, ohne den gesamten clienten emulieren zu müssen.