Scapy

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Scapy
Image illustrative de l'article Scapy

Développé par Philippe Biondi (original).

Pierre Lalet & Guillaume Valadon (actifs)

Dernière version 2.3.3 ()[1]Voir et modifier les données sur Wikidata
Version avancée scapy 2.4rc2 (10/01/2018)
État du projet En développement actif
Écrit en Python 2 et Python 3
Environnement Multiplate-forme
Type Manipulation de paquets réseau
Politique de distribution Gratuit
Licence GNU GPL
Site web www.secdev.org/projects/scapy/

Scapy est un logiciel libre de manipulation de paquets réseau écrit en python.

Il est capable, entre autres, d'intercepter le trafic sur un segment réseau, de générer des paquets dans un nombre important de protocoles, de réaliser une prise d'empreinte de la pile TCP/IP, de faire un traceroute, d'analyser le réseau informatique

Avantages de scapy[modifier | modifier le code]

Scapy n'est pas un outil clé en main (comme Nmap ou autre) mais un Framework basé sur Python fournissant un ensemble de fonctions pour interagir avec le réseau. Il a donc les avantages suivants :

  • Une grande liberté d'action car chaque paramètre peut être modifié
  • Il décode mais n'interprète pas les paquets reçus

Exemple d'utilisation de scapy[modifier | modifier le code]

Pour obtenir des exemples développés, ou utiliser les fonctions avancées de Scapy, se référer à la Documentation Officielle

Création interactive de paquets[modifier | modifier le code]

>>> a=IP(ttl=10)
>>> a
< IP ttl=10 |>
>>> a.src
127.0.0.1
>>> a.dst="192.168.1.1"
>>> a
< IP ttl=10 dst=192.168.1.1 |>
>>> a.src
192.168.8.14
>>> del(a.ttl)
>>> a
< IP dst=192.168.1.1 |>

Envoi de paquets[modifier | modifier le code]

Scapy peut être utilisé pour envoyer des packets. La fonction « send » permet d'envoyer le packet au layer 3, c'est-à-dire que le layer Ethernet est géré automatiquement.

a = IP(dst="192.168.1.1") / TCP(flags="SR") / "Hello world !"
send(a)

Fuzzing[modifier | modifier le code]

Scapy peut être utilisé pour fuzz des packets. En utilisant la commande « fuzz », Scapy modifie aléatoirement les différents champs du groupe de sous-packets.

pkt = IP(dst="target")/fuzz( UDP()/NTP(version=4))
send(pkt)

Lecture de paquets sur l'interface réseau[modifier | modifier le code]

pkts = sniff(count=5, filter="tcp")

Ici, spécifier le paramêtre « count » permet à la fonction sniff de retourner la liste de packets une fois 5 packets lus. Le paramêtre « filter » permet de restreindre la capture aux packets TCP. Le format des filtres suit la norme BPF.

Notes et références[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Article connexe[modifier | modifier le code]

Liens externes[modifier | modifier le code]