C#.NET - Packetlogger

08/20/2007 20:14 Coksnuss#1
Moin,

Bin grade dabei auf C# umzusteigen - mal als 'richtige' Programmiersprache.
Ich habe bisher in PHP, MySQL, VBA und so Zeugs programmiert.

Momentan bin ich also quasi ein Neuling. Was ich suche bzw. selber erstellen will ist ein Packetlogger (TCP/IP-Protokoll).
Und zwar sollte es möglich sein, den Datenstrom für ein bestimmtes Programm bzw. einen bestimmten Prozess 'abfangen' zu können.

Habe schon verschiedene Seiten über Google gefunden, aber entweder habe ich Programme gefunden die nicht 100% OpenSource waren oder nicht mit Visual C# 2005 Express zu kompilieren waren.

Im Grunde genommen will ich genau soetwas machen:
[Only registered and activated users can see links. Click Here To Register...]

Ich habe chocman schon vor EWIGKEITEN mal nach dem SourceCode gebeten, weil das Programm schon seit einer noch größeren Ewigkeit nicht mehr geht aber er war leider dagegen.

Also falls jmd. eine gute Quelle kennt oder sich selbst damit auskennt, der poste bitte ;)

MfG
08/21/2007 04:21 psych0o#2
Vielleicht hilft dir das ja weiter: [Only registered and activated users can see links. Click Here To Register...]
08/21/2007 09:19 Coksnuss#3
Hmm seltsam, hab ich wohl übersehen...
Aber sieht interessant aus, danke ;)
09/18/2007 18:51 wiz#4
Und ich bin Newbie-Spieleprogrammierer und mag Quake5 programmieren, hat wer Links? Ich habe den Quake3-Source geladen aber es hat nicht vollständig kompiliert!

So ungefähr klingt das. Packet Sniffing ist nichts was man nach einem Hello-World in einer Programmiersprache lernt. Wenn man sowas schreiben will, sollte die Programmiersprache Werkzeug sein, nicht eine Hürde.
Immerhin willst du "nur" von einem Zielprozess sniffen, das geht mit API Hooking, frag mal codeproject.net nach einem Artikel namens "API Hooking Revealed". Ich bleibe trotzdem dabei: Lern du erstmal Programmieren. Ach und C# ist für solche Gebiete ebenso nicht erste Wahl.
Wenn du mal eine "richtige" Programmiersprache lernen willst, lern C/C++, weil man damit was anfangen kann. C# ist noch immer wie VB, man programmiert wie in Watte eingepackt, das ist hier mehr hinderlich als nützlich sobald es systemnah wird.
10/14/2007 18:55 ingam0r#5
Naja... so hart würde ich das nicht formulieren. Du kannst in C# jederzeit auf Resourcen ausserhalb der Runtime zugreifen. Vielleicht solltest Du mal "Marshalling" und "Unsafe Code" googlen. Damit verzichtest Du natürlich auf viele nützliche Dinge, wie z.B. den Garbage Collector.

Von Deinem Vorhaben würde ich Dir allerdings abraten. Einen Packet-Sniffer zu schreiben ist keine einfache Aufgabe. Fang erstmal klein an und sammle Erfahrung. Bleib bescheiden :D

Viele Grüße
ingam0r
11/06/2007 13:06 verT!c4L#6
Moinsen!
Also erstmal an Coksnuss:

Gute Projektidee, ich bastel an sowas ähnlichen unter Perl.
Aber bin auch schwer intressiert an C# lernen, ich nutzt Mono z.B. (wegen Ubuntu/Linux).
Bin zwar noch skeptisch weil es angeblich so portabel sein soll wie java, aber nun gut.

Und das Kommentar von ingam0r ist auch nicht ganz verkehrt, vlt erstmal ein client-programm schreiben oder so.

Und wiz scheint aus Erfahrung zu sprechen, nur halt ich C/C++ zwar auch für ne richtige Programmiersprache.. aber sobald man Sprachen wie Perl/Python kennt, kann man sich ne Heidenarbeit sparen und die "systemnahen" Techtel-Mechtel Sachen in C/C++ oder gar Assembler machen! xD

Sers!
12/04/2007 15:11 Coksnuss#7
Quote:
Originally Posted by wiz View Post
Und ich bin Newbie-Spieleprogrammierer und mag Quake5 programmieren, hat wer Links? Ich habe den Quake3-Source geladen aber es hat nicht vollständig kompiliert!

So ungefähr klingt das. Packet Sniffing ist nichts was man nach einem Hello-World in einer Programmiersprache lernt. Wenn man sowas schreiben will, sollte die Programmiersprache Werkzeug sein, nicht eine Hürde.
Immerhin willst du "nur" von einem Zielprozess sniffen, das geht mit API Hooking, frag mal codeproject.net nach einem Artikel namens "API Hooking Revealed". Ich bleibe trotzdem dabei: Lern du erstmal Programmieren. Ach und C# ist für solche Gebiete ebenso nicht erste Wahl.
Wenn du mal eine "richtige" Programmiersprache lernen willst, lern C/C++, weil man damit was anfangen kann. C# ist noch immer wie VB, man programmiert wie in Watte eingepackt, das ist hier mehr hinderlich als nützlich sobald es systemnah wird.
Sorry wenn ich das jetzt so sage aber was du da redest isn Haufen Scheisse.. Zumindest ist es mir keine Hilfe...

Lern du erstmal lesen... Ich habe im 1. Post erwähnt das ich vorher in PHP / MySQL entwickelt habe.. (Und jetzt erzähl mir nicht dass das keine Programmiersprache ist).

An alle anderen: Danke ^^
(Habe übrigens das erreicht was ich haben wollte... Wobei ich jetzt eher auf C# Networking mit Sockets umgestiegen bin)
12/04/2007 16:51 mr.rattlz#8
Quote:
Originally Posted by wiz View Post
Immerhin willst du "nur" von einem Zielprozess sniffen, das geht mit API Hooking, frag mal codeproject.net nach einem Artikel namens "API Hooking Revealed". Ich bleibe trotzdem dabei: Lern du erstmal Programmieren. Ach und C# ist für solche Gebiete ebenso nicht erste Wahl.
Du übertreibst schon ein wenig, mitunter genügt es bereits irgendeine Einstellung des betrefflichen Programms zu ändern und schon verbindet es sich mit dem Server den du gerne hättest, in diesem Falle möglicherweise ein kleiner Proxy, den man sehr wohl problemlos mit C# schreiben kann ;)
Es gibt viele Wege zum Glück, nicht alle führen direkt über API Hooking, manche führen auch über C# ;)