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