Scapy (initialement pour Scanner Python), un programme écrit en Python simplifiant la manipulation de paquets réseau, a 21 ans cette année. À travers cet article, et à l'occasion de l’anniversaire du premier commit effectué par Philippe Biondi le mercredi 26 mars 2003, nous voulons partager les moments forts de ce petit logiciel libre qui a bien grandi et dont la communauté continue d’évoluer et de nous étonner.
1. L'avant
Avant Scapy (https://github.com/secdev/scapy), manipuler finement des paquets réseau sous Linux n'était pas simple et nécessitait d'écrire un programme en C d'une bonne centaine de lignes utilisant une socket de type AF_PACKET pour injecter et lire des paquets. Pour les autres environnements, les bibliothèques dnet (http://libdnet.sourceforge.net/) et pcap (https://www.tcpdump.org) permettaient d'écrire des programmes portables. Entre autres limitations, certaines valeurs ne peuvent pas être utilisées (comme la valeur nulle pour le checksum qui indique au noyau qu'il a la charge de son calcul), et la résolution des adresses IP en adresses MAC doit être effectuée manuellement lorsque l’on injecte des trames.
La commande hping (http://www.hping.org/) fournissait quant à elle une alternative en ligne de commandes permettant de forger des paquets en spécifiant certains paramètres, mais ne permettait pas de manipuler simplement les réponses...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première