Vous êtes sur la page 1sur 5

Master 1

Travaux Pratiques/Dirigés
Architecture TCP/IP

Dr. Cheikh S. M. CISSE

Scapy est un (fantastique) outil de manipulation de paquet interactif é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, etc. Scapy peut être utilisé via un interpréteur
de commande grâce à la commande scapy ou à travers des scripts python.
Objectifs :
- Installation de scapy
- Construire des paquets IPv4 avec scapy
- Comprendre l’encapsulation
- Analyse des résultats avec Wireshark
Documentation
La documentation officielle de scapy peut être trouvée sur
https://scapy.readthedocs.io/en/latest/
ACTION 1 : INSTALLATION DE SCAPY SUR UBUNTU 20.04 (vous pouvez aussi l’installer sur
d’autres version)

Vous pouvez aussi installer les fonctionnalités avancées de scapy :

Pour lancer scapy, exécuter la commande scapy.


La génération d’un PDU passe par l’innovation d’un constructeur du protocole demandé. Par
exemple : paquet_ip = IP(), génère un paquet IP avec les configurations par défaut
La commande ls() liste l’ensemble des protocoles supportés par scapy
La méthode show() permet d’afficher la configuration actuelle d’un PDU.
paquet_ip=IP()
paquet_ip.ttl=70
paquet_ip.show()
Pour ajouter une adresse source

Pour ajouter une adresse de destination

Pour afficher la taille d’un paquet : utilisation de la fonction len()

Création de trame Ethernet :


1. Ajouter une adresse Mac destination et afficher la trame
2. Utiliser la commande len() pour afficher la taille d’une trame Ethernet
- Pour envoyer une trame (couche 2), on utilise la commande sendp(trame)
- Pour envoyer un paquet (couche 2), on utilise la commande send(paquet)

Le symbole « . » représente un envoi. Cette trame vient d’être envoyé mais elle est vide car elle
ne contient pas de données.
Nous allons créer une trame Ethernet contenant un paquet ICMP (encapsulation)
L'Internet Control Message Protocol (ICMP) est un protocole de la couche réseau utilisé par les
périphériques réseau pour diagnostiquer les problèmes de communication du réseau. L'ICMP
est principalement utilisé pour déterminer si les données atteignent ou non leur destination en
temps voulu. Le protocole ICMP est généralement utilisé sur les périphériques réseau, tels que
les routeurs.
ICMP est utilisé par la commande ping pour :
- Envoyer un paquet ICMP echo-request à un hôte
- Indiquer si un paquet ICMP echo-reply a été envoyé
Création d’un paquet ICMP echo-request

Pour envoyer un paquet ICMP, il faut :


- Encapsuler le paquet ICMP dans un datagramme IP
- Encapsuler à son tour le datagramme IP dans une trame Ethernet
Pour spécifier l’ordre d’encapsulation, nous utilisons la barre oblique / pour les séparer. La
gauche droite encapsule le plus la gauche suivante et ainsi de suite...

Exemple : représentent un paquet où Ethernet


encapsule IP qui encapsule ICMP. L’exemple suivant
1. Exécutez Scapy en tapant la commande suivante
2. Créez un paquet stocké dans une variable myping_pkt dans laquelle Ethernet encapsule
IP qui encapsule ICMP.
3. Afficher les valeurs par défaut dans les champs de chaque en-tête.
a. Quelle est l’adresse MAC source par défaut ? Adresse Mac de destination ?
b. Quelle est l’adresse IP source par défaut ? Adresse IP de destination ? Quelle est la
durée de vie par défaut ?
c. Quel est le type de paquet ICMP ? Combien y a-t-il de champs dans le Paquet ICMP
selon cette sortie ?
d. Quelle est la taille du paquet myping_pkt ? justifier votre réponse.
4. Ajouter les adresses IP source et destination 192.168.1.1 et 192.168.1.2 puis les adresses
MAC source et destination respectivement de la machine ayant pour adresse IP
192.168.1.1 et celle de 192.168.1.2.
5. Donnez l’utilité des commandes suivantes :
a. sendp()
b. send()
c. srp()
d. srp1()

Vous aimerez peut-être aussi