python:scapy:accueil

Ceci est une ancienne révision du document !


Scapy

Cloner le dépôt GitHub pour avoir la dernière version.

Installer les paquets ipython et tcpdump.

Lancer en root:

sudo ./run_scapy
Voir la table de routage
conf.route.route('<adresse>')

Cette table de routage est construite en copiant celle du système au démarrage de Scapy.

pkt = Ether(dst="<adresse mac>") / IP(dst="<adresse ip>") / UDP(dport=53) / DNS()

Décrire un paquet:

ls(IP())

Envoi d'un paquet de niveau 3:

send(IP())

Envoi d'un paquet de niveau 2:

sendp(Ether() / IP(), iface='eth0')

Si attente d'une réponse: sr1() ou srp1()

srp1(Ether(dst=ETHER_BROADCAST, ARP(op="who-has", pdst="172.21.123.45")))

Envoi de paquets à une plage IP:

ans, unans = srp(Ether(dst=ETHER_BROADCAST, ARP(pdst="192.168.0.0/24")), timeout=2, retry=-2)
ans.show() #: formate tous les paquets reçus de façon sympa

ans contient des couples (paquet_envoyé, paquet_reçu), unans contient les paquets envoyés sans réponses.

Connaître l'adresse MAC qui répond à une IP:

ans, unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(op="who-has", pdst="172.21.254.1"),timeout=2)
 
results = []
for i in range(1,5):
    ans, unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(op="who-has", pdst="172.21.254." + str(i)),timeout=2)
    results.append(ans[0][1].psrc + " " + ans[0][1].hwsrc)
for x in results: print(x)
Dot1Q()
pkts = sniff(filter="host A and tcp", prn=lambda p: p.summary)

ou pour mettre en forme l'affichage:

pkts = sniff(filter="host A and tcp", prn=lambda p: p.summary + p.sprintf("seq: %TCP.seq% ack: %TCP.ack%"))

Aléatoire (pour changer le port à chaque requête par exemple):

RandShort()

S'assurer que le paquet a les flags SYN et ACK activés:

[TCP].flags & 18
  • python/scapy/accueil.1617548516.txt.gz
  • Dernière modification : 2021/04/04 17:01
  • de 127.0.0.1