Seite 1 von 1

Mit python in Echtzeit Netzwerktraffik manipulieren

Verfasst: Donnerstag 6. August 2009, 20:59
von Würgeschlange
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

Verfasst: Samstag 8. August 2009, 16:59
von Defnull
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).

Verfasst: Samstag 8. August 2009, 20:50
von Würgeschlange
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

Verfasst: Samstag 8. August 2009, 23:53
von Defnull
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

Verfasst: Sonntag 9. August 2009, 09:09
von glaslos
Evtl. scapy? (ungetestet)

Verfasst: Sonntag 9. August 2009, 12:30
von Würgeschlange
Danke für die Hilfe!
Ich hab jetzt erst mal Urlaub und dann werd ich mir das ansehen :)

Verfasst: Sonntag 9. August 2009, 21:56
von PNS-Richi
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

Verfasst: Montag 10. August 2009, 16:07
von Defnull
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.