Mit python in Echtzeit Netzwerktraffik manipulieren

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Würgeschlange
User
Beiträge: 5
Registriert: Donnerstag 6. August 2009, 20:53

Hallo Liebes Forum!
Ich hab hier mal ne harte Nuss für euch:
Ist es möglich ein Pythonscript so in Linux zu integrieren, dass es jedes mal, wenn ein IP-Paket durch den Netzwerkstack läuft, gefragt wird ob das Paket das darf oder ob es abgeändert werden soll?

Quasi eine Deep Pakage Inspektion?

Mit freundlichen Grüßen Würgeschlange
Zuletzt geändert von Würgeschlange am Sonntag 9. August 2009, 12:33, insgesamt 1-mal geändert.
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Da fragst du im falschen Forum. Dein Problem ist nämlich nicht, wie du mit Python bytestreams filterst (was nebenbei gesagt für schnellere Netzwerke nen eher suboptimaler Lösungsansatz wäre) sondern wie du an den bytestream ran kommst.

Für nicht-manipulative Aufgaben (also einfaches Scannen) würde ich subprocess mit pipes und "tcpdump" nehmen. Ich beobachte mit genau diesem Duo bis zu 2GBit/s ohne größere Performance Probleme.

Wenn du auch manipulieren möchtest (was übrigens extrem aufwändig ist, da du auch sämmtliche checksummen der Packete neu berechnen musst) kann dir ein TUN/TAP Device weiter helfen. Das ist eine virtuelle Netzwerkkarte, die ihren kompletten Traffic durch ein Userspace-Programm leitet. Du ließt raus, was sie bekommt und schreibst rein, was sie schicken soll. Die Routing-Tabelle des Kernels sorgt dann für den Rest (Umleitung des Traffics in das TUN/TAP Device).
Bottle: Micro Web Framework + Development Blog
Würgeschlange
User
Beiträge: 5
Registriert: Donnerstag 6. August 2009, 20:53

erst einmal Danke für die Antwort :)
kannst du mir ein link zu einem guten Tutorial über tun/tap devices geben?
Das Meiste, was ich bei google finde bezieht sich auf openvpn
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Da gibts nicht viel zu wissen:

1) Im Kernel "tap/tun" support aktivieren
2) mknod /dev/mytun c 10 200
3) ...
4) profit!

http://www.kernel.org/pub/linux/kernel/ ... tuntap.txt
Bottle: Micro Web Framework + Development Blog
glaslos
User
Beiträge: 23
Registriert: Donnerstag 12. Februar 2009, 18:55
Kontaktdaten:

Evtl. scapy? (ungetestet)
Würgeschlange
User
Beiträge: 5
Registriert: Donnerstag 6. August 2009, 20:53

Danke für die Hilfe!
Ich hab jetzt erst mal Urlaub und dann werd ich mir das ansehen :)
PNS-Richi
User
Beiträge: 68
Registriert: Donnerstag 17. Januar 2008, 01:48

Hallo,

nimm die nfqueue bindings für Python.

Code: Alles auswählen

apt-get install nfqueue-bindings-python
Es gibt auch die älteren queue bindings für Python, jedoch funktionieren die nicht unter 64 Bit bzw. liesen sich diese nur unter 32 Bit kompilieren. Die "nfqueue" sind eine weiterentwicklung.

lg Richi
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Gerade heute habe ich davon auch gelesen. Gibt einen Artikel dazu im aktuellen Linux-Magazin. Das wäre natürlich ideal für diese Aufgabe.
Bottle: Micro Web Framework + Development Blog
Antworten