Hallo. Das ist Akako. Dieses Mal möchte ich vom letzten Mal an die Paketübertragung zusammenfassen, die Scapy gemacht hat.
Siehe Vorheriger Artikel. Auch hier wird davon ausgegangen, dass Sie Zeile für Zeile in der interaktiven Shell ausgeführt werden, in der scapy direkt gestartet wird.
ICMP(PING)
#Erstellen eines ICMP-Pakets für einen Google-Server
#Bild von ICMP auf IP-Paket
packet = IP(dst='www.google.com')/ICMP()
#Zeigen Sie den Inhalt des Pakets an
packet.show()
#Paket senden
#& Anzeige der zurückgegebenen Pakete
sr1(packet)
TCP(HTTP)
'''Verbindungsfluss in TCP'''
'''Erstellen eines Basispakets'''
#Erstellen eines IP-Pakets
ip = IP(dst='www.google.com')
# TCP(HTTP)Ein Paket erstellen
# sport,seq ist angemessen
#dport ist ein Standardport der 80. Ausgabe,Flagge ist'S'
tcp = TCP(sport=50000,dport=80,flags='S',seq=100)
'''3 Implementierung von Handshake'''
#Erstellen eines SYN-Pakets
syn= ip/tcp
#SYN-Paket senden
#& SYN ACK empfangen
syn_ack = sr1(syn)
'''Erstellen einer HTTP-Anfrage(Erstellen eines ACK-Pakets)'''
#ACK-Paketeinstellungen
tcp.seq += 1
tcp.ack = syn_ack.seq + 1
#Das Flag des ACK-Pakets ist'A'
tcp.flags = 'A'
#ACK-Paketübertragung
ack = ip/tcp
send(ack)
#Kann HTTP-GET-Pakete übertragen
get = 'GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n'
http = ip/tcp/get
#Anfrage senden
response = sr(http, multi=1, timeout=1)
tcp.seq += len(get)
#Anzeige der Antwort
response[0][1][1]["Raw"].load
'''Trennen'''
#Fortsetzung des obigen Codes
#Senden von FINACK-Paketen mit FA-Flag
tcp.flags = 'FA'
fin_ack = sr1(ip/tcp)
tcp.seq += 1
#Gibt am Ende ACK zurück
tcp.ack = fin_ack.seq + 1
tcp.flags = 'A'
send(ip/tcp)
Recommended Posts