Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Kommunikation zwischen Browser und Server belauschen
Robertico
myCSharp.de - Member



Dabei seit:
Beiträge: 345

Themenstarter:

Kommunikation zwischen Browser und Server belauschen

beantworten | zitieren | melden

Hallo alle,

möchte wärend eines Spiels die Unterhaltung zwischen dem Server und meinem Browser abhören.

Habe einen Listener versucht, aber da geht nur einer.

Hat jemand eine Idee wie ich vorgehen könnte?


Gruß Robert
private Nachricht | Beiträge des Benutzers
bSharp
myCSharp.de - Member



Dabei seit:
Beiträge: 51

beantworten | zitieren | melden

Mit Sockets kannst Du alle IP-Pakete belauschen. Oder ist das zu Low-Level?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von bSharp am .
private Nachricht | Beiträge des Benutzers
Robertico
myCSharp.de - Member



Dabei seit:
Beiträge: 345

Themenstarter:

beantworten | zitieren | melden

Danke,
hat mich schon weiter gebracht.

Mit Freund Google habe ich ein Tool gefunden mit dem ich jetzt erst mal sehen kann, was dort passiert.http://www.ethereal.com/

Gruß Robert
private Nachricht | Beiträge des Benutzers
witte
myCSharp.de - Member



Dabei seit:
Beiträge: 959

beantworten | zitieren | melden

Hi,

das Teil heißt mittlerweile wireshark. Google mal danach, Du mußt ja schließlich keine antike Version einsetzen.
private Nachricht | Beiträge des Benutzers
Robertico
myCSharp.de - Member



Dabei seit:
Beiträge: 345

Themenstarter:

beantworten | zitieren | melden

Danke Witte,

den hab ich. Und bei http://www.codeplanet.eu/tutorials/development/technic/22-was-ist-tcp-ip?.html

kann man auch noch etwas übers Grundsätzliche lesen. Später auch über C#

Gruß Robert
private Nachricht | Beiträge des Benutzers
Xynratron
myCSharp.de - Member



Dabei seit:
Beiträge: 1184

beantworten | zitieren | melden

huhu,

wenn es wirklich "Browser" ist, dann empfehle ich Dir mal Fiddler. Ist ein kleiner feiner http-Proxy, der perfekt zum debuggen von HTTP/HTTPS-Verbindungen ist.

Wireshark halte ich da für etwas zu gross.

:-)

Xynratron
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Xynratron am .
Herr, schmeiss Hirn vom Himmel - Autsch!
Zitat von herbivore
Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.
private Nachricht | Beiträge des Benutzers
Robertico
myCSharp.de - Member



Dabei seit:
Beiträge: 345

Themenstarter:

beantworten | zitieren | melden

Was ich jetzt dazu bräuchte ist eine Richtung, wie ich das in C# realisiere. Einen zweiten Listener kann ich ja nicht installieren.

Außerdem ist dann eine Funktion in Wireshark: Follow TCP-Straem. in der sind die Daten, die ich bräuchte

Gruß Robert
private Nachricht | Beiträge des Benutzers
mogel
myCSharp.de - Member

Avatar #avatar-3347.jpg


Dabei seit:
Beiträge: 158

beantworten | zitieren | melden

Moin,
Zitat von Robertico
Einen zweiten Listener kann ich ja nicht installieren.
das wird Dir in keiner Spraache gelingen ... ein Listener pro Port
Zitat
Außerdem ist dann eine Funktion in Wireshark: Follow TCP-Straem. in der sind die Daten, die ich bräuchte
Follow TCP-Stream bringt für die Fragestellung erstmal nichts ... wenn Du Port 80 - also HTTP - verfolgen willst ... wozu dieser Aufwand ... das Protokoll ist im Internet öffentlich

was also willst Du machen?
private Nachricht | Beiträge des Benutzers
Robertico
myCSharp.de - Member



Dabei seit:
Beiträge: 345

Themenstarter:

beantworten | zitieren | melden

Da kommt z.B so etwas an. Das hätte ich gerne zum verarbeiten
HTTP/1.1 200 OK

Content-Type: text/xml;charset=UTF-8

Content-Length: 329

Server: Jetty(7.0.2-SNAPSHOT)



<body xmlns='http://jabber.org/protocol/httpbind'><message xmlns="jabber:client" to="[email protected]/xiff-bosh" type="groupchat" id="m_70" from="[email protected]/rastalix"><body>ui dann beser nicht.... danke vishant ^^</body><bbmsg xmlns="bbmsg" playerid="141023" playername="Rastalix"/></message></body>
private Nachricht | Beiträge des Benutzers
mogel
myCSharp.de - Member

Avatar #avatar-3347.jpg


Dabei seit:
Beiträge: 158

beantworten | zitieren | melden

Ziehen .............

das Jabber Protokoll schwirrt auch im Internet rum ... mach den Client aus, dann kannst Du auf dem entsprechenden Port einen Listener öffnen und mit dem Server diskutieren

hand, mogel
private Nachricht | Beiträge des Benutzers
Robertico
myCSharp.de - Member



Dabei seit:
Beiträge: 345

Themenstarter:

beantworten | zitieren | melden

Ist ja nicht nur das.

Da wird auch noch anderes drüber geschickt. Außerdem will ich das paralell zum
Spiel machen und dazu muss er on sein.

Will eigendlich nur wissen, wie bekomme ich die IP-Pakete in eine Variable.

Gruß Robert
private Nachricht | Beiträge des Benutzers
Xynratron
myCSharp.de - Member



Dabei seit:
Beiträge: 1184

beantworten | zitieren | melden

huhu,

Langsam wird Deine Anforderung ersichtlich. Du hast genau 2 Möglichkeiten:

a) Wie Wireshark per Treiber den kompletten Netzwerkverkehr mitschneiden.
b) Einen Proxy programmieren und dich zwischen den Browser und Server setzen.


Von der Umsetzung würde ich Möglichkeit b) vorschlagen, ist leichter zu realisieren (kein Treiber ala pcap notwendig und nur der HTTP-Traffic). Hierfür machst du 2 Ports auf, einen mit dem die Client redet, und einen mit dem der Server redet. Dann leitest du den gesamten Datenverkehr von einem Port immer zum anderen. Sprich, du bekommst eine Anfrage vom Client und leitest diese an den Server weiter. der Server antwortet und diese Daten schickst du dann einfach wieder an den Client.

Wenn Du das geschafft hast, dann kannst du anschliessend die Pakete, welche bei Dir intern durchgereicht werden, zusammensetzen und analysieren.

Wie gesagt, schau Dir Fiddler an, der macht genau das was du willst, du musst es nur nachbauen oder findest irgendwo schon ein Grundgerüst. Such einfach mal nach "c# http proxy"

:-)

Xynratron
Herr, schmeiss Hirn vom Himmel - Autsch!
Zitat von herbivore
Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.
private Nachricht | Beiträge des Benutzers
bSharp
myCSharp.de - Member



Dabei seit:
Beiträge: 51

beantworten | zitieren | melden

Zitat von Robertico
Will eigendlich nur wissen, wie bekomme ich die IP-Pakete in eine Variable.


Hier, auf die schnelle etwas zum erweitern und spielen.
Zur Ausführung benötigst Du Admin-Rechte



        static void read_IP_traffic()
        {
            try
            {
                Socket s = new Socket(
                    AddressFamily.InterNetwork,
                    SocketType.Raw,
                    ProtocolType.IP);

		//Die lokale Adresse an der Du lauschen willst
                IPAddress ip = new IPAddress(new byte[] { 192, 168, 1, 95 });
                s.Bind(new IPEndPoint(ip, 0));
                
                s.SetSocketOption(System.Net.Sockets.SocketOptionLevel.IP, System.Net.Sockets.SocketOptionName.HeaderIncluded, 1);
                
                byte[] bout = new byte[4];
                s.IOControl(IOControlCode.ReceiveAll, new byte[] { 1, 0, 0, 0 }, bout);
                
                while (true)
                {
	            //2^15 Byte als Maximalgröße eines IP-Pakets
                    byte[] buffer = new byte[1 << 15];
                    s.Receive(buffer);
                    write(buffer);
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

	//Nur die ersten 20 Bytes ausgeben. Entsprechen dem Header der IP-Pakete.
	//Die restlichen Nutzdaten im Buffer kannst Du entsprechend weiterverarbeiten. Erst den TCP-Header auslesen
	//und die Nutzdaten des TCP-Pakets entsprechen dann der HTTP-Kommunikation.
	//Aber vorsicht: Es schwirren viele Pakete anderer Protokolle herum.
	static void write(byte[] buffer)
        {
            for (int i = 0; i < 20; ++i)
            {
                
                Console.Write("{0} ",buffer[i]);
            }
            Console.WriteLine();
        }
private Nachricht | Beiträge des Benutzers
Xynratron
myCSharp.de - Member



Dabei seit:
Beiträge: 1184

beantworten | zitieren | melden

Zitat von bSharp
Hier, auf die schnelle etwas zum erweitern und spielen.

oO - ok, wieder was gelernt, danke.

:-)

Xynratron
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Xynratron am .
Herr, schmeiss Hirn vom Himmel - Autsch!
Zitat von herbivore
Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.
private Nachricht | Beiträge des Benutzers
Robertico
myCSharp.de - Member



Dabei seit:
Beiträge: 345

Themenstarter:

beantworten | zitieren | melden

Danke bSharp,

wenn ich jetzt nicht weiterkomme, bin ich selbst schuld.

Paket rein alles vom Header raus

Gruß Robert
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Robertico am .
private Nachricht | Beiträge des Benutzers
Robertico
myCSharp.de - Member



Dabei seit:
Beiträge: 345

Themenstarter:

beantworten | zitieren | melden

Obwohl es in Wireshark nur so plätschert kommt in der Console nichts an.

Wiresharkm zeigt auch die IPv6 Adresse an. Siehe Anhang

Bzw. es kommen schon welche an, aber nicht von dem Server, den ich möchte
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Robertico am .
Attachments
private Nachricht | Beiträge des Benutzers