![]() |
TCP/IP anfrage clonen
Hallo Zusammen,
ich spiele derzeit ein online spiel, dass wenn wenn man es gestartet hat(aber bevor man sich einloggt) automatisch verschiedene Informationen zum Server anzeigt, also Status, Spieleranzahl und Version. Da der Server Mittags oft wegen Patchens "offline" (er lässt sich noch anpingen, ist aber für Spieler nicht zugänglich) ist, möchte ich gern ein Programm schreiben, dass mir periodisch den Status abfragt. Zu diesem Zwecke habe ich den Datenverkehr zwischen Spiel und Server beim Start der Anwendung mitgesnifft. Und so gesehen sind das releativ wenig Daten, die da hin und her geschickt werden. Ich weiß, welches TCP/IP-packet der Client beim "Hallo sagen" an den Server schickt und ich weiß wie das TCP/IP-packet strukturiert ist, in dem die Statusdaten enthalten sind. Nur fehlt mir jetzt noch der Ansatz, wie ich das Wissen über den Packetinhalt in ein Pragramm umsetzte. Ich habe ein wenig mit dem Indy TCP-Client rumprobiert, aber nicht wirklich etwas erreicht. Ich kann mich zwar zum Server verbidnen, aber mehr als ein "%" bekommen ich nicht vom Server zugesannt. Also meine Frage wäre, wie kann ich mich zu einem speziefischen Server+Port verbinden und an ihn ein speziefisches TCP-Packet abschicken, am besten in Form eines BYTE-Arrays. Entschuldigt bitte, wenn ich hier vielleicht totalen Müll geschrieben habe, aber ich bin relativ frisch in Sachen TCP/IP in bezug auf OP bzw. Delphi. Wenn das so gar nicht geht, oder ich es ganz anders angehen sollte, dann bitte ich um einen Hinweiß, ;) vielen Dank, Evian |
Re: TCP/IP anfrage clonen
Gut wäre noch zu wissen, wie das Packet aufgebaut ist (sind es nur ASCII-Zeichen, usw.).
|
Re: TCP/IP anfrage clonen
Liste der Anhänge anzeigen (Anzahl: 4)
Nagut, ich versuch es mal so genau zu beschreiben wie es mir möglich ist:
Wenn ich das Spiel starte kommt follgender Login-Bildschirm, wobei es mir insbesondere um die im Roten Feld liegenden Informationen geht: ![]() ... Jetzt zu den gesnifften Packeten, wobei grau der MAC-Header ist, rot der IP4-Header, grün der TCP-Header und Blau sonstiger Inhalt:
Ich habe das ein paar mal gemacht, und bin mir recht Sicher, dass die entsprechend gekennzeichnetten Bytes den dazu geschriebenen Informationen angehören. Die Restlichen infos bekomme ich sicher auch noch raus, aber da beim Testen sich bis jetzt maximal die Spielerzahl verändert hat, weiß ich halt noch nicht mehr. Aber warum es mir eigentlich geht ist, dass ich das letzt Packet über ein eigenes Programm empfangen will.. nur fehlt mir da jetzt noch der entsprechende Ansatz :) liebe Grüße, Evi PS: Server IP ist 87.237.38.200:26000 und es wird vom Client aus immer der Port 1793 zum senden genutzt. PS2: Hach, das erinnert mich irgendwie voll an die guten alten Zeiten, wo man im Savegame von irgendeinem Spiel per Hex-Editor nach dem Kontostand gesucht hat und nach ein paar veränderungen Milliadär war . *g* |
Re: TCP/IP anfrage clonen
Mh.. habe mich gerade mal per (Indy)IdTCPClient1 zum Server verbunden und das mitgesnifft.. ha und siehe da, der Server sendet mir auch so das Status packet. Jetzt bleibt eigentlich nur eine Frage offen... wie kann ich mir jedes vom Client empfangene Byte ansehen?! .. Hat jemand eine Ahnung?! :) Weil hab mit dem Indy Client noch nie vorher gearbeitet.
|
Re: TCP/IP anfrage clonen
Also ich habe es jetzt mal so probiert...
Delphi-Quellcode:
und es werden mir promt die ersten 22 Byte's(in Hexadezimal) des Statuspackets angezeigt... aber laut dem Sniffer sind es 41 BYTE an Informationen.. in dem Packet. Warum werden die Restlichen Byte nicht mitgelesen?
procedure TForm1.Button1Click(Sender: TObject);
VAR str,hexstr : String; i : Integer; begin with IdTCPClient1 do begin Host := '87.237.38.200'; Port := 26000; Connect; try str := ReadLn; for i := 1 to length(str) DO BEGIN hexstr := hexstr + ' ' + (IntToHex(Word(Str[i]), 2)); END; Listbox1.Items.Append(hexstr); finally Disconnect; end; end; end; |
Re: TCP/IP anfrage clonen
Hai Evian,
hänge die Bilder doch bitte als Anhang an dein Posting. Alles zusammen sind das über 400kByte und nicht jeder hat eine schnelle DSL-Leitung. Ausserdem kansst Du deine Beiträge editieren und musst also nicht ein neues Posting erstellen um zusätzliche Infos anzugeben (pushing). |
Re: TCP/IP anfrage clonen
mh Entschuldige bitte,
ich war gestern so guter Laune, dass ich nicht mehr daran gedacht habe, dass man die vielen Postings als Pushing bewerten könnte. Werde das in Zukunft wieder vermeiden! Und zu den Bildern, hab sie jetzt bis auf das erste ins Attach gepackt.. gehen leider nur 4 in den Anhang... aber werde mich bemühen, bei allzugroßen Bildmengen, sie in Zukunft auch sofort in den Anhang zu legen. Mein Sinn, war es ursprünglich aber eigentlich, die DP zu entlasten, da ich die Bilder auf meinen eigenen Server geladen habe, aber unsere Modem-Freunde habe ich da natürlich wirklich vergessen... sorry! Edit: hat sich erledigt, mit "str := ReadString(41);" bekomme ich alle Bytes, die ich brauche ^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 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