Introduction à Scapy ② (transmission ICMP, HTTP (TCP) avec Scapy)

Introduction à Scapy (transmission ICMP, HTTP (TCP) avec Scapy)

introduction

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.

Explication de l'environnement / Scapy, etc.

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.

De la création des paquets à la transmission

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)

De la connexion à la transmission

'''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

'''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

Introduction à Scapy ② (transmission ICMP, HTTP (TCP) avec Scapy)
Introduction à discord.py (3) Utilisation de la voix
Introduction à la simulation d'événements discrets à l'aide de Python # 1
[PyTorch] Introduction à la classification de documents à l'aide de BERT
Introduction à la simulation d'événements discrets à l'aide de Python # 2
Introduction à Scapy ① (De l'installation à l'exécution de Scapy)
Introduction à Tornado (3): Développement à l'aide de modèles [Pratique]
[PyTorch] Introduction à la classification des documents japonais à l'aide de BERT
Essayez de créer un serveur HTTP en utilisant Node.js
Introduction à Tornado (2): Introduction au développement à l'aide de modèles - Génération de pages dynamiques -
Introduction à MQTT (Introduction)
Introduction à Scrapy (1)
Premiers pas avec Supervisor
Introduction à Tkinter 1: Introduction
Introduction à PyQt
Introduction à Scrapy (2)
Introduction à Scrapy (4)
Introduction à discord.py (2)
[Introduction à cx_Oracle] (13e) Connexion utilisant le pool de connexions (côté client)
[Introduction à Python] Comment écrire des instructions répétitives à l'aide d'instructions for
[Livre technique] Introduction à l'analyse de données avec Python -1 Chapitre Introduction-