Laden...

Programmzugriffsrestriktionen setzen

Erstellt von sCineX vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.503 Views
S
sCineX Themenstarter:in
6 Beiträge seit 2013
vor 10 Jahren
Programmzugriffsrestriktionen setzen

Hallo Community,

ich möchte mich an ein vollkommen neues Themengebiet heranwagen und habe, offen gesagt, tierischen Respekt davor:

Netzwerk / Sockets / Protokolle / Zugriffe über Netzwerkschnittstellen. Und um langsam anzufangen, möchte ich ein Programm schreiben, dass mir folgendes ermöglicht: Es gibt ein Spiel. Für dieses Spiel gibt es ein dedicated Server.
Irgendein Scherzvogel hat es geschafft an diesen Server mittels der Übermittlung der Datenpakete einen Fatal Crash zu provozieren. Dafür nutzt er ein externes Programm.

Jetzt habe ich mir überlegt, dass es doch eine Möglichkeit geben müsste, die wie folgt ausschaut:

Ich entwickel ein Programm, was wie ein Filter wirkt. Ich würde gerne Zugriffe auf meinen Rechner / Winserver protokollieren bzw. zuweisen können. Wenn jetzt ein eingehender Verbindungsversuch auf den Spieleserver Prozess zugreifen möchte, wird überprüft ob dieser ausgehend von dem Spieleclient gesendet wird.

Ist dies möglich abzufangen? Das heißt, steht in dem übermittelten Request, die Quelle und wie kann ich sowas auslesen? Welche Tools, Bibliotheken könnt ihr mir da empfehlen.

Freue mich auf Antworten 😃

Fragt mich bitte, sobald was unverständlich ist.

4.221 Beiträge seit 2005
vor 10 Jahren

Mit ungültigen Daten MUSST Du immer rechnen.

Ich würde bei ungültigen Daten einfach nur den Client kicken (dessen TCP-Verbindung schliessen)

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

S
sCineX Themenstarter:in
6 Beiträge seit 2013
vor 10 Jahren

Hey danke erstmal für die Antwort.

Das ist ja auch in Ordnung. Könnte man natürlich machen, aber wie kann ich zwischen ungültigen und gültigen Daten unterscheiden. Welche Möglichkeiten stehen mir denn dort zur Verfügung.

Ist es ein guter Ansatz einen Server laufen zu lassen, ein Programm wie WireShark / Fiddler protokolliert mir die Zugriffe und ich schaue meine Verbindung an, erstelle eine Art whitelist und lasse diese regulären Zugriffe dann durch?

4.221 Beiträge seit 2005
vor 10 Jahren

Fataler Crash heisst ja dass Du einen unbehandelten Fehler hast... irgendwo und das nenne ich ungültig 😃

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

S
sCineX Themenstarter:in
6 Beiträge seit 2013
vor 10 Jahren

Du verstehst meine Problematik augenscheinlich nicht.
Wie kann ich die Daten prüfen, die mir zugesendet werden? - Aus dem Stream?

Hinweis von Abt vor 10 Jahren

Bitte beachte [Hinweis] Wie poste ich richtig? 2.3

16.806 Beiträge seit 2008
vor 10 Jahren

Überleg Dir eine eigene Datenstuktur (was im Prinzip ein Protokoll darstellt). Das kannst Du nachher auch prüfen.

Wenn es keine Kriterien gibt, dann kann man auch nichts prüfen.
Nur Du kennst aber die Kriterien; hier hast Du jedenfalls bisher kein Wort darüber verloren 😉

Man muss aber a) immer bedenken, dass die Daten verfälscht sein können und b) von einem anderen Client kommem.
Variante a) kann man prüfen sofern Kriterien / ein Schema existiert, b) niemals zu 100%.

PS: ich denke schon, dass Programmierhans Dich korrekt verstanden hast, Du aber das Prinzip von gültig / ungültig nicht.
Hast Du kein Regelwerk (wie ein XML Schema) dann kannst Du auch nichts prüfen 😉

S
sCineX Themenstarter:in
6 Beiträge seit 2013
vor 10 Jahren

PS: ich denke schon, dass Programmierhans Dich korrekt verstanden hast, Du aber das Prinzip von gültig / ungültig nicht.
Hast Du kein Regelwerk (wie ein XML Schema) dann kannst Du auch nichts prüfen 😉){gray}

Ich stehe doch noch vor der Struktur. Natürlich kann ich mir eine Struktur anlegen, aber ich muss doch erstmal wissen, welche Daten ich bekomme. Ich weiß doch selbst noch nicht, welche Kriterien gelten müssen. Ich wollte zwei Dinge wissen:

Ist meine Idee realisierbar und sinnvoll? Wie komme ich an die Daten, die meine spätere Struktur bilden?

Danach sprechen wir weiter.

4.931 Beiträge seit 2008
vor 10 Jahren

Hallo zusammen,

so wie ich sCineX verstehe, hat er gar nicht den SourceCode von dem Spiel, sondern betreibt bzw. spielt es nur - und möchte jetzt nur gerne die zum Crash führenden Datenpakete herausfiltern.

16.806 Beiträge seit 2008
vor 10 Jahren

Ach gar nicht nen eigenes Spiel...

Na wenn man nicht weiß, welche Datenpakete ungültig sind, dann kann man das auch nicht zuverlässig Filtern.
Ansonsten Proxy davor schalten (zur Not nen virtuellen) / entwickeln und die Pakete filtern. Inwiefern das realisierbar ist sei mal dahin gestellt; aber um sowas muss sich der Entwicklern kümmern - ich würde mich also an die wenden.

Inwiefern Windows das Umleiten der Pakete zulässt (für einen virtuellen Proxy) weiß ich nicht; könnte aber als bösartige Software erkannt werden, da zB auch der BlasterWorm ja dieses Verhalten hatte.
Wahrscheinlicher ist also Proxy auf Port XY laufen zu lassen, womit sich die Clients unterhalten. Das Proxy-Programm senden dann die Daten gefiltert an LocalHost mit einem anderen Zielport. Dazu muss aber das Programm a) die Kommunikation genau kennen und simulieren und b) muss das Spiel die Ports variabel halten können.

S
sCineX Themenstarter:in
6 Beiträge seit 2013
vor 10 Jahren

Hallo zusammen,

so wie ich sCineX verstehe, hat er gar nicht den SourceCode von dem Spiel, sondern betreibt bzw. spielt es nur - und möchte jetzt nur gerne die zum Crash führenden Datenpakete herausfiltern.

Vielen, vielen Dank. Exakt das meine ich!

Vielleicht ist es nicht klar geworden. Das ist exakt mein Wunsch.

Ansonsten Proxy davor schalten (zur Not nen virtuellen) und die Pakete filtern. Inwiefern das realisierbar ist sei mal dahin gestellt; aber um sowas muss sich der Entwicklern kümmern - ich würde mich also an die wenden.

Das ist meine Idee, die ich gerne in einem eigenen Programm realisieren möchte.

Das Spiel ist 15 Jahre alt und von EA. Das spielen noch 30 Spieler. Da wird nichts passieren. Es soll ja auch ein ein Lernprojekt sein.