Accéder au contenu.
Menu Sympa

technique - Re: [TECH] Programmation socket, AF_INET, bind, udp

Objet : Liste pour les discussions techniques (liste à inscription publique)

Archives de la liste

Re: [TECH] Programmation socket, AF_INET, bind, udp


Chronologique Discussions 
  • From: Benoît Ganne <benoit.ganne AT benou.fr>
  • To: Mathieu Ignacio <mignacio AT april.org>
  • Cc: Liste de diffusion technique <technique AT april.org>
  • Subject: Re: [TECH] Programmation socket, AF_INET, bind, udp
  • Date: Fri, 31 Oct 2008 17:40:04 +0100

> Je connais mal les raw socket, et j'ai peur d'être submergé de données
> ininteressantes et d'assomer les applications avec un traitement des
> trames ethernet par le module python.

Ben normalement tu peux filtrer dans le noyau les paquets qui
t'intéressent via BPF (BSD Packet Filter) dont l'équivalent sous Linux
est LPF (Linux Packet Filter). En fait l'interface Linux est binairement
compatible avec celle de BSD, donc c'est normalement cross-system (BSD
<-> Linux).
L'idée de BPF, c'est que tu as un pseudo-langage qui te permet de faire
une petite state-machine en mode noyau pour filtrer les paquets, et ne
recevoir en userspace que ceux qui t'intéresse - c'est la base de
tcpdump, wireshark (ex-ethereal), etc.
A utiliser, c'est pas ce qui se fait de plus user-friendly, bien que
tcpdump te permette de convertir des règles de filtrage du langage
"tcpdump" vers BPF pour réutiliser dans un code source en C.
Tu peux voir des exemples d'utilisation de BPF/LPF dans le code de pump
par exemple, un client DHCP léger pour UNIX (il l'utilise précisément
pour recevoir les paquets DHCP :), ça peut donc reservir).
Autre possiblité, utiliser libpcap, la librairie de tcpdump et de
wireshark qui masquent un peu (un peu seulement) la complexité de BPF
avec l'avantage de faciliter le portage entre les plateformes. Il existe
des bindings python pour libpcap comme http://code.google.com/p/pypcap/,
http://sourceforge.net/projects/pylibpcap ou
http://oss.coresecurity.com/projects/pcapy.html.
Enfin, as-tu regardé du côté de scapy
(http://www.secdev.org/projects/scapy/) ? C'est une boîte à outil très
puissante d'analyse/filtrage des paquets pour python, je pense que ça te
simplifierait pas mal la tâche.

a+
ben

--
*Benoît GANNE*
/jabber: benoit.ganne AT gmail.com/
/icq: 138217861/
/msn: benoit.ganne AT hotmail.fr/
--
There are 10 types of people in the world: those who understand binary,
and those who don't.
-- Unknown




Archives gérées par MHonArc 2.6.16.

Haut de le page