Außen eine separate Buchse an jeder Schnittstelle der Öffnung als Glomek vorgeschlagen, der einzige Weg, ich weiß, dass dies definitiv tun auf Windows eine Raw-Socket verwenden, zum Beispiel
SOCKET s = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
Jede dieser Buchse empfangen wird Sei ein IP packet, der sowohl die Quell- als auch die Zieladresse enthält. Das Programm, an dem ich arbeite, verlangt, dass ich den Socket mit der Option SIO_RCVALL im Promiscuous-Modus setze. Auf diese Weise bekomme ich jedes IP-Paket, das die Schnittstelle im Netzwerk "sieht". Um Pakete, die ausdrücklich für meine Anwendung bestimmt sind, zu extrahieren, muss ich die Daten mithilfe der Adressen und Ports in den IP- und TCP/UDP-Headern filtern. Offensichtlich ist das wahrscheinlich mehr Aufwand, als Sie interessiert sind. Ich erwähne es nur, um das zu sagen - ich habe noch nie einen rohen Sockel benutzt, ohne ihn in den Promiscuous-Modus zu setzen. Ich bin mir also nicht sicher, ob Sie es an INADDR_ANY binden können und es einfach als normalen Socket von diesem Punkt an weiterleiten oder nicht. Es scheint mir, dass du es kannst; Ich habe es einfach noch nie probiert.
EDIT: Lesen Sie diese article für Einschränkungen in Bezug auf Raw-Sockets unter Windows. Die größte Hürde, die ich bei meinem Projekt hatte, war, dass man Mitglied der Administratorengruppe sein musste, um einen Raw-Socket unter Windows 2000 und höher zu öffnen.
Danke, das ist, was ich gesucht habe. Zu schade, dass es vom Python-Socket-Modul noch nicht unterstützt wird - obwohl ich in dieser Frage libc angegeben habe. :) – Readonly