Was ist der beste Weg, Netzwerkpakete mit Python zu schnüffeln?
Ich habe von mehreren Stellen gehört, dass das beste Modul dafür ein Modul ist, das Scapy genannt wird, leider bringt es python.exe zum Absturz auf meinem System. Ich würde annehmen, dass es nur ein Problem mit meiner Installation ist, außer dass viele andere Leute mir gesagt haben, dass es unter Windows nicht besonders gut funktioniert. (Wenn jemand interessiert ist, verwende ich Windows Vista, was die Dinge beeinflussen könnte).
Kennt jemand eine bessere Lösung?
UPD:
Nachdem ich die Antwort gelesen hatte, dass ich PyPcap installieren soll, habe ich ein bisschen herumgespielt und herausgefunden, dass Scapy, das ich ausprobiert hatte, mir auch PyPcap installieren wollte, außer dass es eine modifizierte Version ist . Es war anscheinend diese modifizierte PyPcap, die das Problem verursachte, anscheinend, da das Beispiel in der Antwort auch ein Hängenbleiben verursachte.
Ich habe die ursprüngliche Version von PyPcap (von der Google-Website) installiert, und Scapy hat gut funktioniert (ich habe nicht viele Dinge probiert, aber zumindest stürzte es nicht ab, sobald ich anfing zu schnüffeln). Ich habe den Scapy-Entwicklern ein neues Defektticket geschickt: Ссылка , hoffe, dass sie damit etwas anfangen können.
>Wie auch immer, dachte nur, ich würde es euch wissen lassen.
Sie können alle IP-Pakete mit einem Raw-Socket schnuppern.
Raw-Socket ist ein Socket, der Daten im Binärformat sendet und empfängt.
Binary in Python wird in einem String dargestellt, der wie folgt aussieht \x00\xff
... jedes \x..
ist ein Byte.
Um ein IP-Paket zu lesen, müssen Sie das empfangene Paket gemäß dem IP-Protokoll in Binärform analysieren.
Dies ist und Bild des Formats des IP-Protokolls mit der Größe in Bits jeder Kopfzeile.
Dieses Tutorial könnte Ihnen helfen, den Prozess des Verstehens eines rohen Pakets zu verstehen und es in Header aufzuteilen: Ссылка
Eine andere Methode, um IP-Pakete sehr leicht zu schnüffeln, ist das scapy-Modul.
%Vor%Dieser Code wird für Sie die Quell-IP und die Ziel-IP für jedes IP-Paket drucken. Sie können viel mehr mit scapy tun, indem Sie die Dokumentation hier lesen: Ссылка
Es kommt auf das Ziel an, das Sie erreichen wollen, aber wenn Sie ein Projekt erstellen müssen, ist das, was es bietet, das Sniffing von IP-Paketen, dann empfehle ich, scapy für stabilere Skripte zu verwenden.
Sie können rohe Sockets mit Ihrer Schnittstellen-IP-Adresse (im Admin-Modus),
verwenden %Vor%