Hi,
Hab mit jetzt ne Doku über das TCP/IP Protokoll reingezogen und weiss jetzt:
-Die Daten werden in Pakete verpackt...
-Diese werden mit Ziel IP (und Port?) an (wenn kein Router/Switch sondern Hub)alle PCs verschickt.
-Der Empfänger prüft das Packet und sendet entweder ein OK, oder Nochmal zurück.
- Die Daten werden zusammen gesetzt.
Frage: Wie kann ich das selber machen (API???). Ich will möglicherweise auch Packete abhören, die nicht für mich bestimmt sind...usw....
TCP/IP&UDP Pakete selber packen und entpacken?
TCP/IP&UDP Pakete selber packen und entpacken?
Ich hänge zu oft und zu lange vor dem PC! Ich muss dringend was an meinem Lebenswandel verändern!.......
Nur heute geht's grad nicht.
Nur heute geht's grad nicht.
Hm das ja mal ne gute Frage. PCs die an einem HUB(Repeater) angeschlossen sind werden natürlich auch mit TCP/IP Packeten befeuert die sie eigentlich garnix angeht. Nun weiß ich allerdings nicht auf welchem Layer diese Packete gefiltert werden.
Im Ethernet wird die Ziel & Empfangs-MAC Adresse mitgeliefert. Es kann also daher sein das dieses Packet schon auf Hardware-Ebene durch die Ethernet-Karte im Rechner gefiltert wird. Bei einem Switched-Network sollten eigentlich keine fremden Packete ankommen, es sei denn die MAC Adresse des Zielnetzwerkes ist dem Router nicht bekannt.
Ansonsten ist die WinSock32.dll für den Windows Socket zuständig. Allen Traffic der über das lokale System geht muss über diese DLL. Denke hier sollte man ansetzen. Andere möglichkeit wäre vielleicht noch ein Low-Level Treiber für Windows um an noch mehr Informationen zu gelangen aber da bin ich absolut Low-Brained.
Soweit meine Gedanken zu diesem Thema.
Im Ethernet wird die Ziel & Empfangs-MAC Adresse mitgeliefert. Es kann also daher sein das dieses Packet schon auf Hardware-Ebene durch die Ethernet-Karte im Rechner gefiltert wird. Bei einem Switched-Network sollten eigentlich keine fremden Packete ankommen, es sei denn die MAC Adresse des Zielnetzwerkes ist dem Router nicht bekannt.
Ansonsten ist die WinSock32.dll für den Windows Socket zuständig. Allen Traffic der über das lokale System geht muss über diese DLL. Denke hier sollte man ansetzen. Andere möglichkeit wäre vielleicht noch ein Low-Level Treiber für Windows um an noch mehr Informationen zu gelangen aber da bin ich absolut Low-Brained.
Soweit meine Gedanken zu diesem Thema.
Also ich dachte eher daran, Pakete, die zwar für meinen PC, aber nicht für mein Programm sind abzufangen (z.B. für Firewall oder nur um zu gucken, was meine Programme so für Infos versenden).
Hab inzwischen herausgefunden, wie das geht. Nämlich mit WinAPI Stichwort: RAW-Sockets. Leider sind die Beispielcodes immer in C++ und da komm ich mit den Berechnungen und Variablentypen nicht klar. Ich kann zwar ein RAW-Socket öffnen, aber weiter komm ich nicht.
Wenn jemand gut C++ kann, könnte er ja vielleicht mal ein Beispiel posten, oder sogar ne LIB schreiben.
Danke im Vorraus
Hab inzwischen herausgefunden, wie das geht. Nämlich mit WinAPI Stichwort: RAW-Sockets. Leider sind die Beispielcodes immer in C++ und da komm ich mit den Berechnungen und Variablentypen nicht klar. Ich kann zwar ein RAW-Socket öffnen, aber weiter komm ich nicht.
Wenn jemand gut C++ kann, könnte er ja vielleicht mal ein Beispiel posten, oder sogar ne LIB schreiben.
Danke im Vorraus
Ich hänge zu oft und zu lange vor dem PC! Ich muss dringend was an meinem Lebenswandel verändern!.......
Nur heute geht's grad nicht.
Nur heute geht's grad nicht.
Ich hab mal ein Programm geschrieben, das einen (ebenfalls von mir geschriebenen) Messenger mitliest. Für den Quellcode guckst Du auf http://www.cornycountry.de>Downloads. Allerdings ist das Programm in C geschrieben. Versuch Dich trotzdem mal dran, es ist zumindest kein C++.
Das Programm horcht auf UPD-Port 30000 auf Pakete, um Nachrichten, die nicht für mich bestimmt sind, zu belauschen. Ich hätte auch einfach den Messenger modifizieren können, aber das brachte keinen Spaß.
Interessant in diesem Fall (und für Dich) ist tatsächlich das Vorgehen:
1. Raw-Socket erstellen,
2. Socket an das Interface binden und
3. mittels WSAIoctl dem Socket das Flag SIO_RCVALL (für receive all) mitgeben.
Du solltest natürlich wissen, dass er dann alle Nachrichten auf dem Interface liest. Ohne Filterung bekommst Du dann allen möglichen Kram mit.

Das Programm horcht auf UPD-Port 30000 auf Pakete, um Nachrichten, die nicht für mich bestimmt sind, zu belauschen. Ich hätte auch einfach den Messenger modifizieren können, aber das brachte keinen Spaß.
Interessant in diesem Fall (und für Dich) ist tatsächlich das Vorgehen:
1. Raw-Socket erstellen,
2. Socket an das Interface binden und
3. mittels WSAIoctl dem Socket das Flag SIO_RCVALL (für receive all) mitgeben.
Du solltest natürlich wissen, dass er dann alle Nachrichten auf dem Interface liest. Ohne Filterung bekommst Du dann allen möglichen Kram mit.