PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C#] Port Abgreifen / Lesen: wie vorgehen?!


DraconiX
2011-12-16, 10:06:14
Ich möchte mir von einem Spiel (F1 2011, Codemaster allgemein) Telemetriedaten abgreifen. Das Spiel sendet mir auf (z.b.) Port 20777 sämtliche Daten als 64Bit String aus.

Wie gehe ich am besten vor, um diese Daten via C# "abzugreifen"? Oder allgemein: Wie lausche ich den Netzwerktraffic an bestimmten Ports ab?!

Gibt es ein kleines Programm (?!?) mit welchen ich mir den Traffic auf bestimmten Ports anzeigen lassen kann, um meine Daten zu verifizieren?!

Vielen Dank für eure Hilfe!

Nagelbrett
2011-12-16, 10:47:18
Versteh ich es richtig, dass du eine kleine Server-Anwendung schreiben willst, zu welcher das Spiel sich dann verbindet und die Daten schickt?
Oder werden die Daten an eine andere Anwendung geschickt und du möchtest quasi nur den Traffic mitschneiden ("ablauschen")?

Für ersteres brauchst du Sockets. Du solltest aber noch wissen, ob da TCP oder UDP verwendet wird.
Für letzteres musst du mal schauen, ob es C# Bindings für winpcap gibt. Das ist eine Bibliothek, mit welcher man sämtlichen Netzwerk Traffic analysieren und mitschneiden kann.


Ein eigenes Programm zum Traffic-Mitschneiden und Anzeigen wäre z. B. wireshark (http://www.wireshark.org/).

DraconiX
2011-12-16, 11:02:01
Ich denke, bin mir nicht ganz sicher... das ich ich eine Serveranwendung schreiben muß. Sprich das es über Sockets geht.

Habe hier ein kleines Programm welches die Telemetriedaten ausließt und in eine Datei schreibt. Das funktioniert (F1_2010DataLogger)... Also senden tut das Spiel schonmal.

Wireshark hab ich gerade probiert. Im Filter habe ich "port 20777" eingestellt, leider ließt er darauf nicht, ich kann dort auch nicht localhost, bzw. 127.0.0.1 zu lauschen einstellen, sondern wirklich nur die physisch Vorhanden NICs zu lauschen aussuchen. Aber schonmal nen guter Ansatz.

Er ließt übrigens auch nichts mit, wenn der DataLogger aktiviert ist. Und es auf jeden Fall zwischen den beiden Programmen Daten hin und her gehen.

Um die Art des Ports (TCP,UDP) muß ich mich nochmal schlau machen.

Mr_Karlo
2011-12-16, 11:43:47
Wireshark hab ich gerade probiert. Im Filter habe ich "port 20777" eingestellt, leider ließt er darauf nicht, ich kann dort auch nicht localhost, bzw. 127.0.0.1 zu lauschen einstellen, sondern wirklich nur die physisch Vorhanden NICs zu lauschen aussuchen.



Imo funktioniert das mit Wireshark unter Windows nicht. Man kann zwar einen Loopback Adapter installieren und diesen mit Wireshark ansprechen, allerdings nicht unter Windows. Vielleicht hilft dir das weiter: http://www.netresec.com/?page=RawCap

DraconiX
2011-12-16, 15:58:10
Ja danke erstmal :D

RawCap hat was angezeigt, auch die anderen Logger funktionieren - So halb bekomme ich auch nun Daten rein :D

Dank euch!


using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

public class UDPListener
{
private const int listenPort = 20777;

private static void StartListener()
{
bool done = false;

UdpClient listener = new UdpClient(listenPort);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);

try
{
Console.WriteLine("Waiting for broadcast");
while (!done)
{
byte[] bytes = listener.Receive(ref groupEP);

Console.WriteLine("Rec:{0}",
Encoding.ASCII.GetString(bytes, 0, bytes.Length));
}

}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
listener.Close();
}
}

public static int Main()
{
StartListener();
return 0;
}
}

DraconiX
2011-12-18, 12:48:13
Sooo fertig:

http://www.abload.de/thumb/cockpithur36.jpg (http://www.abload.de/image.php?img=cockpithur36.jpg)

=Floi=
2011-12-26, 06:51:55
das ganze projekt willst wohl nicht online stellen?!

DraconiX
2011-12-28, 22:43:53
das ganze projekt willst wohl nicht online stellen?!

Oh doch klar, kann ich gerne machen... suche mal noch die Daten zusammen und stelle es morgen rein. :wink:

Gast91
2014-03-23, 05:32:46
Ich suche auch so ein Project File.
Ich möchte gerne gewisse Informationen die ich bereits über Wireshark über ein Game gefunden habe, in C# visualisieren.

bitte um HILFE, auch wenn der Thread schon sehr alt ist.

danke.