Autor Beitrag
glotzer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Mo 21.11.11 19:46 
Hallo alle zusammen,
ich hab hier ein bischen ein schwierigeres Problem:
Ich bin gerade am planen um ein Programm für ein Multiplayerspiel zu schreiben,
welches die Chat-logs des Spieles aufzeichnet und gewisse Statistiken erstellt.
(ja, ich habe mit dem Betreiber darüber gesprochen und es ist nicht gegen die AGBs)

Das Problem ist nur an die Daten zu kommen: dazu muss ich den Netzwerktraffic zwischen Client und Server abfangen,
und dann das Protokoll parsen.
Letzteres ist nich weiter schwierig da local mittels Proxy bereits erfolgreich getestet.

Einziger Haken: nicht jeder der späteren Anwender wird Lust haben sich einen 2. PC hinzustellen und ihn als Proxy zu verwenden, nur um an die Statistik zu kommen. Mal abgesehen davon das ich Probleme hab den Spiel- und den "normalen"-Traffic auseinander zu halten.
Also muss ich irgendwie an die Daten kommen bevor sie gesendet werden. Da der Client (leider) in 4 verschiedenen Versionen (windows 32 bit native, windows flash, linux 32bit native, linux flash) existiert denke ich mal das das nicht sooo einfach wird.
Linuxsupport ist nur 2.-rangig, erstmal geht es mir algemein um eine Idee wie man sowas am besten macht.

Meine Ideen bisher:

1. Die Send und Recive funktion der Sockets hooken:
Will ich nicht umbedingt, da dies wohl ziemlich schwer ist, abgesehen davon das ich darüber im www so gut wie keine Informationen gefunden habe.
Außerdem denke ich das das spätestens beim Flashplayer probleme macht rauszufinden was vom Spiel und was von z.B. Youtube ist.

2. Einen Proxy auf dem System hosten und die Serveradresse im Client-RAM auf localhost umbiegen, dann eben weiterleiten
Hier hab ich das Problem das ich keine Ahnung hab wie ich bei Flash etwas im RAM ändern könnte, da es ja in einer VM läuft.

Jetzt frag ich mich ob ich wirklich eine der beiden Ideen umsetzen sollte, wo ich aber das Problem hätte ob es
wenigstens irgend ein halbwegs aktuelles Beispiel wie man (Sicher, ohne Abstürtze/Bluescreens und Treiberinstalation) die Sockets hookt, bzw den Flash-RAM ändert gibt.

Oder hat wer eine viel Bessere Idee?


Danke für die Gedult so viel Text überhaupt zu lesen,
hoffentlich kann mir wer helfen :D

Crosspost: Delphi Praxis

_________________
ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht


Zuletzt bearbeitet von glotzer am Do 24.11.11 17:20, insgesamt 1-mal bearbeitet
glotzer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Di 22.11.11 20:31 
keiner eine Idee?

_________________
ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
glotzer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Mi 23.11.11 20:35 
wirklich niemand? ;(

_________________
ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 27.11.11 14:10 
Kannst Du den Traffic anhand der Zieladresse/Ports halbwegs eindeutig identifizieren? Wenn ja, schau Dir mal die libpcap an. Dann noch nen NetFilter drauf setzen, dann bekommst Du nur Traffic für die jeweilige Verbindung. NAchteil ist, dass Du dann selber Teile von TCP selber "nach-implementieren" musst.

Schau Dir aber vorher einfach erstmal den Drahthai an, ob Du damit deine gewünschten Daten erhältst. Wenn ja, ist es von Dort bis zu libpcap nicht mehr SOOOOO weit ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
glotzer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: So 27.11.11 22:46 
Danke für die Andwort, bin allerdings in der Delphi-Praxis schon fündig geworden und versuch mich grad an WinPCAP mit fallback auf Raw Sockets.
Wenn ich dann mal so weit bin das ganze für linux zum laufen zu bringen, werd ich mich wohl nochmal auf die suche machen müssen :p
Trotzdem danke :D

_________________
ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht


Zuletzt bearbeitet von glotzer am Mo 28.11.11 18:07, insgesamt 1-mal bearbeitet
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 28.11.11 00:26 
WinPCap ist die Windows-Portierung der libpcap ... im Wesentlichen. Raw Sockets gibt's unter Linux ja auch, da hab ich auch Source bei Interesse.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.