Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TCP Proxy (https://www.delphipraxis.net/76841-tcp-proxy.html)

Snoke 10. Sep 2006 23:54


TCP Proxy
 
hi,

zur zeit versuche ich mich an einem tcp proxy für einen gameserver (ja tcp :)). der proxy soll sich vor den server stellen, daten abfangen/bearbeiten und dann an den server weiterleiten. theoretisch bis zum bearbeiten kein problem, allerdings das weiterleiten von proxy zu server wird wohl evtl nicht klappen wenn ich sockets richtig verstanden habe. wenn ich nun vom proxy die daten mit nem tcp client an den server leite, habe ich ja nur 1x ne verbindung, allerdings hat jeder client ohne den proxy ja eine eigene ip, also könnte der server es ja nichtmehr unterscheiden da der proxy ja immer die eine ip hat und nicht wie im normalfall jeder client ne eigene? ist das so korrekt oder verstehe ich was falsch? freue mich über jede hilfe!

mfg

Sharky 11. Sep 2006 06:46

Re: TCP Proxy
 
Hai Snoke,

es kommt jetzt darauf an wie der Server arbeitet. Bei einem Router (der ja auch nur eine IP nach aussen hat aber viele Clients mit anderen IPs hinter sich) wird das ganze über (Port)-NAT gemacht.

Am Beispiel einer HTTP-Abfrage sieht das so aus:

Code:

/                          -----------Router---------
/Client-A : Port x        I merkt sich IP und Port I      Router-IP : Port a    
/Client-B : Port y  <->  I merkt sich IP und Port I <-> Router-IP : Port b    <-> Server
/Client-C : Port z        I merkt sich IP und Port I      Router-IP : Port c
                           --------------------------
Der Router speichert also die IP und den Port von dem er eine Anfrage bekommt. Jetzt sendet er unter seiner IP und einem zufälligen anderen Port an den Server. Der Server sendet seine Antwort jetzt an die IP des Router und den Port den der Router angegeben hat. Wenn der Router nun auf diesem Port eine Antwort vom Server erhalten hat schaut er in der Tabelle nach zu welchem Client der von ihm gewähle Port gehört und sendet das Packet jetzt an die IP und den Port des Client.

Eventuell hilft Dir das ja weiter.

Snoke 11. Sep 2006 11:08

Re: TCP Proxy
 
was ne antwort, danke das hilft wirklich gut, direkt probieren, danke! :-D

Snoke 11. Sep 2006 15:34

Re: TCP Proxy
 
nach längerem versuchen komme ich nicht ganz weiter, folgenden programm aufbau habe ich:

Code:

      [Client PC]                     [Proxy]
.----------------------.      .----------------------.
| TCPClient-Port: 1337 | ----> | TCPServer-Port: 1337 |            [gameserver]
'----------------------'      |----------------------|       .----------------------.
                               | TCPClient-Port: 1338 | ----> | TCPServer-Port: 1338 |
                               '----------------------'      ' ---------------------'
problem ist von von [TCPClient-Port: 1338] nach [TCPServer-Port: 1338]. hier setzt meine logik aus, da ich von tcp sockets (allgemein sockets) nicht wirklich viele gelesen habe. zur erinnerung [TCPServer-Port: 1338] ist der gameserver der die daten vom proxy erhalten soll. würde ich jetzt einfach alles weiterleiten wüsste der gameserver ja nicht was von wem ist, da ich ja nur 1x mit dem proxy ne connection aufbaue zum server, normalerweise würde der gameserver ja mehere connections bekommen und dementsprechend einfach zuweisen.

mfg
der ratlose Snoke :-(

inherited 11. Sep 2006 19:01

Re: TCP Proxy
 
Warum nehmen alle Leute den Port 1337? Das ist doch albern...

Du könntest es ca. folgendermaßen aufbauen:
Proxy managed die Connections, sowie Login, registration, logout... und sendet das wichtige an den Server
[int length(username)][str username][int PlayerAngle][int Speed][int InventoryCount]... was immer du brauchst.
Sonst habe ich dich falsch verstanden. In diesem Falle definiere deine Frage bitte genauer ;)

vlees91 11. Sep 2006 19:30

Re: TCP Proxy
 
soweit wie ich es verstehe, will er einen proxy zu einem bestehenden spiel haben (also spiel ist nicht selbstgemacht)

Snoke 11. Sep 2006 20:17

Re: TCP Proxy
 
Zitat:

Zitat von vlees91
soweit wie ich es verstehe, will er einen proxy zu einem bestehenden spiel haben (also spiel ist nicht selbstgemacht)

exakt der gameserver ist nicht von mir geschrieben, genau das ist das riesen problem mit dem weiterleiten vom proxy aus :-/

inherited 12. Sep 2006 15:05

Re: TCP Proxy
 
Das heisst, du weist nicht was der Server hören will?
Um welches Spiel handelt es sich?

Snoke 14. Sep 2006 11:31

Re: TCP Proxy
 
[quote="inherited"]Das heisst, du weist nicht was der Server hören will?
Um welches Spiel handelt es sich?[/quote

World of Warcraft, der dafuer soll fuer LANs sein, näheres ist noch geheim.

inherited 14. Sep 2006 11:56

Re: TCP Proxy
 
Knifflig. Frag doch den Server einfach alles mögliche und lies die Antwort aus, dann weist du ob es den Befehl gibt. Im Internet gibt es dazu leider nichts...

vlees91 14. Sep 2006 14:33

Re: TCP Proxy
 
nicht etwa cheaten^^
mir eigentlich egal
aber ist WoW auf TCP???
und wenn es eine Antwort gibt: lasst es mich wissen, denn ich suche etwas ähnliches

Meflin 14. Sep 2006 14:41

Re: TCP Proxy
 
Zitat:

Zitat von vlees91
aber ist WoW auf TCP???

worauf denn sosnt? UDP vielleicht :lol: das würde doch sehr verwundern...


vlees91 14. Sep 2006 14:57

Re: TCP Proxy
 
Zitat:

Zitat von Meflin
das würde doch sehr verwundern...

ja, wieso denn?

Meflin 14. Sep 2006 15:14

Re: TCP Proxy
 
Zitat:

Zitat von vlees91
ja, wieso denn?

Zitat:

UDP stellt einen verbindungslosen, nicht-zuverlässigen Übertragungsdienst bereit. Das bedeutet, dass es keine Garantie gibt, dass ein einmal gesendetes Paket auch ankommt oder dass Pakete in der gleichen Reihenfolge ankommen, in der sie gesendet wurden. Eine Anwendung, die UDP nutzt, muss daher gegenüber verloren gegangenen und umsortierten Paketen unempfindlich sein oder selbst entsprechende Korrekturmaßnahmen beinhalten.
Zitat:

Im Gegensatz zum verbindungslosen UDP implementiert TCP einen bidirektionalen, byte-orientierten, zuverlässigen Datenstrom zwischen zwei Endpunkten. Das darunterliegende Protokoll (IP) ist paketorientiert, wobei Datenpakete verlorengehen können, in verkehrter Reihenfolge ankommen dürfen und sogar doppelt empfangen werden können. TCP wurde entwickelt, um mit der Unsicherheit der darunterliegenden Schichten umzugehen. Es prüft daher die Integrität der Daten mittels der Prüfsumme im Paketkopf und stellt die Reihenfolge durch Sequenznummern sicher. Der Sender wiederholt das Senden von Paketen, falls keine Bestätigung innerhalb einer bestimmten Zeitspanne (Timeout) eintrifft. Die Daten der Pakete werden beim Empfänger in einem Puffer in der richtigen Reihenfolge zu einem Datenstrom zusammengefügt und doppelte Pakete verworfen.
welches ist dann wohl besser geeignet :gruebel:


vlees91 14. Sep 2006 15:18

Re: TCP Proxy
 
das schnelle UDP?

Meflin 14. Sep 2006 15:24

Re: TCP Proxy
 
Zitat:

Zitat von vlees91
das schnelle UDP?

Zitat:

World of Warcraft uses the TCP protocol on port 3724.
http://www.blizzard.com/support/wow/?id=aww0790p

:roll:


inherited 14. Sep 2006 16:03

Re: TCP Proxy
 
Ich würde die Position der Spieler und deren bewegungen, vektoren, what ever mit UDP und handeln, Chatten, o.ä. mit TCP, aber mich fragt ja keiner...

vlees91 18. Sep 2006 18:56

Re: TCP Proxy
 
Eine Frage: Wie schaffe ich es eigentlich, dass mein Programm die Daten bekommt?

(Ich versuche momentan etwas ähnliches zu programmieren)

Meflin 18. Sep 2006 19:20

Re: TCP Proxy
 
Zitat:

Zitat von vlees91
Eine Frage: Wie schaffe ich es eigentlich, dass mein Programm die Daten bekommt?

DIE Daten. Präzisiere mal bitte deine Frage :roll:


vlees91 18. Sep 2006 19:31

Re: TCP Proxy
 
alo alles von einem bestimmten port

die Daten-Pakete

Meflin 18. Sep 2006 19:46

Re: TCP Proxy
 
Zitat:

Zitat von vlees91
alo alles von einem bestimmten port die Daten-Pakete

ähm ja. man nehme einen IdTCP/UDP/wasimmer-server und fertig. wo ist das Problem? Oder wenns ein Proxy sein soll gleich die Proxy-Kompo der Indys.


vlees91 18. Sep 2006 20:11

Re: TCP Proxy
 
ja, aber dazu muss das programm ja explizit die daten an mich schicken...

inherited 18. Sep 2006 20:14

Re: TCP Proxy
 
Dann ist deine Frage unverstaendlich. Wenn du einen TCP-Server auf irgendeinem Port benutzt, kommt da alles an was an deine IP und an den Port gesendet wird

vlees91 19. Sep 2006 06:54

Re: TCP Proxy
 
aber ich kann dem programm imho nicht dazu bringen, die daten erst an mich zu senden

Meflin 26. Sep 2006 18:24

Re: TCP Proxy
 
Zitat:

Zitat von vlees91
aber ich kann dem programm imho nicht dazu bringen, die daten erst an mich zu senden

:wall: ich verstehe nach wie vor nicht WAS du eigentlich willst :roll:

vielleicht versuchst du es nochmal mit einer KOMPLETTEN und VERSTÄNDLICHEN Erklärung, dann kann ich dir vielleicht auch helfen :roll:


inherited 27. Sep 2006 15:30

Re: TCP Proxy
 
Er möchte IMHO von einem Programm auf seinem PC, das irgendwohin connected, die Daten, die es sendet, abfangen.

vlees91 27. Sep 2006 15:35

Re: TCP Proxy
 
dazu dieser thread:
http://www.delphipraxis.net/internal...ct.php?t=92756

aber weil es nicht so klappt wie ich will, habe ich gescuth und gesucht und gesucht und per zufall auf "WPE Pro" gekommen.
das ist fast genau was ich suche, obwohl der manche programme (leider auch das betreffende nicht findet, also nicht in der liste anzeigt)

und mittlerweile bekomme ich die daten mit meinem eigenen programm auch

DGL-luke 27. Sep 2006 15:39

Re: TCP Proxy
 
Du willst Netzwerktraffic sniffen. Das geht per Netzwerk-Spürhund (:zwinker:), zwischengeschaltete Hardware, oder einen Monitoring-Treiber, z.B. Bei Google suchenWinPCap. Den benutzt zum Beispiel der bekannte Software-Sniffer Bei Google suchenEthereal. Allerdings muss die Netzwerkkarte damit einverstanden sein. Das ist aber ein eher formales Hindernis, die heutigen können das alle.

EDIT: Ich sehe gerade, du willst die Daten auch manipulieren. Das geht meines Wissens nicht. Dazu brauchst du wirklich eine Hardware-Lösung bzw. so etwas wie eine VM, die eine Netzwerkkarte simulieren kann. Dann kannst du die Verbindung dort abfangen und entsprechend weiterleiten.

vlees91 27. Sep 2006 15:55

Re: TCP Proxy
 
Ja, das mit Ethereal ist heutzutage Wireshark (grund kannst du dir bei wiki anzeigen lassen)

Ja und manipulieren geht eigentlich mit diesem WPE Pro (http://plynt.com/blog/2005/07/the-wo...acket-editors/), aber da gibts probleme (irgendwas mal von PermEdit gelesen, womit das gehen sollte, klappt aber auch nicht)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz