Bonjour. C'est Akako. Continuant à partir de la dernière fois, cette fois, je voudrais résumer jusqu'à la transmission de paquets qui a fait Scapy.
Veuillez consulter Article précédent. Encore une fois, il est supposé que vous exécuterez ligne par ligne sur le shell interactif où scapy est lancé directement.
ICMP(PING)
#Créer un paquet ICMP pour un serveur Google
#Image d'ICMP au-dessus du paquet IP
packet = IP(dst='www.google.com')/ICMP()
#Afficher le contenu du paquet
packet.show()
#Envoyer le paquet
#& Affichage des paquets retournés
sr1(packet)
TCP(HTTP)
'''Flux de connexion dans TCP'''
'''Créer un paquet de base'''
#Créer un paquet IP
ip = IP(dst='www.google.com')
# TCP(HTTP)Créer un paquet
# sport,seq est approprié
#dport est un port standard de la 80e édition,le drapeau est'S'
tcp = TCP(sport=50000,dport=80,flags='S',seq=100)
'''3 Implémentation de handshake'''
#Créer un paquet SYN
syn= ip/tcp
#Envoyer un paquet SYN
#& Recevoir SYN ACK
syn_ack = sr1(syn)
'''Créer une requête HTTP(Créer un paquet ACK)'''
#Paramètres de paquet ACK
tcp.seq += 1
tcp.ack = syn_ack.seq + 1
#Le drapeau du paquet ACK est'A'
tcp.flags = 'A'
#Transmission de paquets ACK
ack = ip/tcp
send(ack)
#Peut transporter des paquets HTTP GET
get = 'GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n'
http = ip/tcp/get
#Envoyer une demande
response = sr(http, multi=1, timeout=1)
tcp.seq += len(get)
#Afficher la réponse
response[0][1][1]["Raw"].load
'''Déconnecter'''
#Suite du code ci-dessus
#Envoi de paquets FINACK avec indicateur FA
tcp.flags = 'FA'
fin_ack = sr1(ip/tcp)
tcp.seq += 1
#Renvoie ACK à la fin
tcp.ack = fin_ack.seq + 1
tcp.flags = 'A'
send(ip/tcp)
Recommended Posts