Laden...

Kommunikation zwischen Browser und Server belauschen

Erstellt von Robertico vor 13 Jahren Letzter Beitrag vor 13 Jahren 6.845 Views
R
Robertico Themenstarter:in
344 Beiträge seit 2006
vor 13 Jahren
Kommunikation zwischen Browser und Server belauschen

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

B
48 Beiträge seit 2010
vor 13 Jahren

Mit Sockets kannst Du alle IP-Pakete belauschen. Oder ist das zu Low-Level?

R
Robertico Themenstarter:in
344 Beiträge seit 2006
vor 13 Jahren

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

W
955 Beiträge seit 2010
vor 13 Jahren

Hi,

das Teil heißt mittlerweile wireshark. Google mal danach, Du mußt ja schließlich keine antike Version einsetzen.

R
Robertico Themenstarter:in
344 Beiträge seit 2006
vor 13 Jahren

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

X
1.177 Beiträge seit 2006
vor 13 Jahren

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

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

R
Robertico Themenstarter:in
344 Beiträge seit 2006
vor 13 Jahren

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

156 Beiträge seit 2010
vor 13 Jahren

Moin,

Einen zweiten Listener kann ich ja nicht installieren.

das wird Dir in keiner Spraache gelingen ... ein Listener pro Port

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?

R
Robertico Themenstarter:in
344 Beiträge seit 2006
vor 13 Jahren

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="robertico@87.119.203.67/xiff-bosh" type="groupchat" id="m_70" from="global-1@conference.87.119.203.67/rastalix"><body>ui dann beser nicht.... danke vishant ^^</body><bbmsg xmlns="bbmsg" playerid="141023" playername="Rastalix"/></message></body>
156 Beiträge seit 2010
vor 13 Jahren

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

R
Robertico Themenstarter:in
344 Beiträge seit 2006
vor 13 Jahren

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

X
1.177 Beiträge seit 2006
vor 13 Jahren

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!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

B
48 Beiträge seit 2010
vor 13 Jahren

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();
        }

X
1.177 Beiträge seit 2006
vor 13 Jahren

Hier, auf die schnelle etwas zum erweitern und spielen.

oO - ok, wieder was gelernt, danke.

😃

Xynratron

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

R
Robertico Themenstarter:in
344 Beiträge seit 2006
vor 13 Jahren

Danke bSharp,

wenn ich jetzt nicht weiterkomme, bin ich selbst schuld.

Paket rein alles vom Header raus

Gruß Robert

R
Robertico Themenstarter:in
344 Beiträge seit 2006
vor 13 Jahren

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