TP : Décoder et manipuler des paquets réseaux
Les captures « pcap » fournies correspondent à des traces de différents objets connectés. Ces traces correspondent au premier ensemble de paquets qui ont été échangés entre l’objet et la gateway de la maison. Le nombre de paquets varie d’une capture à une autre.
Partie 1 : Créer un paquet IP
1- Créer un paquet IP nommé « pkt » en fixant la valeur de « ttl = 10 » 2- Afficher l’adresse IP source du paquet
3- Changer l’adresse IP source actuelle à : ‘192.168.1.1’
4- Supprimer la valeur du « ttl ». Puis afficher la valeur par défaut.
5- Ajouter une couche UDP au paquet créé. Puis afficher la valeur du port destination et port source du paquet
Partie 2 : Décoder des paquets UDP
1- Créer une fonction permettant de lire un fichier « pcap » 2- Calculer le nombre de paquets UDP dans la capture
3- Identifier le protocole utilisé au-dessus de UDP en se basant sur le numéro de port destination utilisé
Pour cela, créer un dictionnaire indiquant la correspondance entre le numéro de port connu et le protocole adéquat
4- Calculer le nombre de paquet pour chaque protocole identifié dans la question précédente
5- Pour chaque protocole identifié, calculer la longueur maximum, longueur minimum et la longueur moyenne des paquets
Partie 3 : Décoder des paquets TCP
1- Ecrire une fonction permettant de lire une capture sous format « pcap » et d’afficher tous les champs dans les différentes entêtes d’un paquet TCP.
Utilisez la commande « show() »
2- Calculer le nombre de paquets TCP de la capture fournie 3- Calculer le nombre de handshakes TCP dans la capture
4- Pour chaque paquet TCP [SYN], afficher adresse source, adresse destination, port source et port destination
Partie 4 : Créer et envoyer un paquet ICMP
1- Créer un fichier « ping.py » :
Construire un paquet ICMP en précisant l’adresse destination ‘www.google.com’ au niveau de la couche IP. Ensuite, ajouter la couche ICMP()
Avant cela, regarder les différentes valeurs par défaut fournies par scapy en utilisant la commande « ls () » : « ls(IP) » et « ls(ICMP) »
2- Envoyer le paquet sur le réseau en utilisant la commande « send() » ou « sr1() » qui permet d’envoyer un paquet au niveau 3 et retourne la première réponse seulement 3- Enregistrer la réponse dans une variable afin d’afficher les détails en utilisant la
commande fournie par scapy « summary() »
TCP flags :
FIN = 0x01 SYN = 0x02 RST = 0x04 PSH = 0x08 ACK = 0x10 URG = 0x20 ECE = 0x40 CWR = 0x80
Installation de scapy :
Vérifier que python (2.7 ou 3.3+) est installé avant d’installer « scapy ».
En utilisant « pip » :
1- Installer « pip » d’abord
>>> sudo apt-get install python-pip python-dev build-essential
>>> sudo pip install --upgrade pip
>>> sudo pip install –upgrade virtualenv 2- >>> sudo pip install scapy (v 2.3.3)
3- Afin de verifier la version de scapy: >>> pip list