|
You last visited: Today at 14:50
Advertisement
Umleitungs Server mit AutoIt
Discussion on Umleitungs Server mit AutoIt within the AutoIt forum part of the Coders Den category.
08/19/2013, 03:28
|
#1
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Umleitungs Server mit AutoIt
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
|
#2
|
elite*gold: 64
Join Date: May 2011
Posts: 1,229
Received Thanks: 854
|
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
|
#3
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
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
|
#4
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Quote:
Originally Posted by BladeTiger12
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
|
#5
|
elite*gold: 52
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
|
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
|
#6
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
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
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
|
#7
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Wenn du es mir noch etwas genauer erklären würdest 
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
|
#8
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
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
|
#9
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Quote:
|
wird problematisch da der browser die ja auch bekommt
|
Der Browser IST der Client lol.
|
|
|
08/19/2013, 20:22
|
#10
|
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
|
Quote:
Originally Posted by Requi
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
|
#11
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
Quote:
Originally Posted by Shadow992
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
|
#12
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Quote:
Originally Posted by Shadow992
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.
Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$frmMain = GUICreate("Admin Control Panel", 369, 228, 192, 124)
$txtLog = GUICtrlCreateEdit("", 184, 8, 177, 89, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
$Connect = GUICtrlCreateButton("Connect", 0, 32, 171, 25)
$Send = GUICtrlCreateButton("Send", 8, 200, 139, 25)
GUICtrlSetState(-1, $GUI_DISABLE)
$h_Port = GUICtrlCreateInput("8080", 136, 8, 41, 21)
$h_IP = GUICtrlCreateInput("127.0.0.1", 0, 8, 130, 21)
$txtSend = GUICtrlCreateEdit("", 8, 104, 353, 89)
GUICtrlSetState(-1, $GUI_DISABLE)
$Disconnect = GUICtrlCreateButton("Disconnect", 0, 64, 171, 25)
$copyright = GUICtrlCreateLabel("(c) by Requi", 296, 200, 61, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $Connect
TCPStartup()
$MainSocket = TCPConnect(GUICtrlRead($h_IP), GUICtrlRead($h_Port))
GuiCtrlSetData($txtLog, GuiCtrlRead($txtLog) & "Succesfully connected to: " & GUICtrlRead($h_IP) & ":" & GUICtrlRead($h_Port) & @CRLF)
GUICtrlSetState($txtSend, @SW_ENABLE)
GUictrlsetState($send, @SW_ENABLE)
Case $Disconnect
TCPShutDown()
Exit
Case $Send
TCPSend($MainSocket, GUICtrlRead($txtSend))
GUICtrlSetData($txtLog, GUICtrlRead($txtLog) & "Send packet: " & GUICtrlRead($txtSend) & @CRLF)
EndSwitch
WEnd
|
|
|
08/20/2013, 09:23
|
#13
|
elite*gold: 2
Join Date: Jul 2009
Posts: 14,456
Received Thanks: 4,685
|
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
|
#14
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by Lawliet!
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.
|
|
|
All times are GMT +1. The time now is 14:51.
|
|