Netzwerkprogrammierung mit Python Scapy

Memorandum zur Netzwerkprogrammierung in Python.

Python Scapy installieren

Installieren Sie auf der folgenden Website. Die Umgebung ist MAC OS X 10.11.6. http://nigaky.hatenablog.com/entry/20110716/1310813250

Selbst wenn Sie nur scapy installieren, können Sie es nicht verwenden. Daher müssen Sie auch pcapy installieren. Laden Sie von der folgenden Site die Quelle herunter und installieren Sie sie. https://pypi.python.org/pypi/pcapy

Weitere Informationen zu Scapy finden Sie weiter unten. http://scapy.readthedocs.io/

Generieren und senden Sie ARP-Pakete

Code zum Senden einer ARP-Anforderungsnachricht zum Abrufen der MAC-Adresse einer bestimmten IP-Adresse.

ARP.py


from scapy.all import *
target_ip="192.168.1.1"
frame = Ether(dst="ff:ff:ff:ff:ff:ff") / ARP(op=1, pdst=target_ip)
sendp(frame)

Generieren und senden Sie ICMP-Pakete

Der Code zum Senden eines ICMP-Pakets an eine bestimmte IP-Adresse.

ICMP.py


from scapy.all import *
target_ip="192.168.1.1"
frame = Ether() / IP(dst=target_ip) / ICMP()
sendp(frame)

Generieren und senden Sie TCP-SYN-Pakete

Code, der ein TCP-SYN-Paket an eine bestimmte IP, einen bestimmten Port, sendet.

ICMP.py


from scapy.all import *
target_ip="192.168.1.1"
dst_port = 5001
src_port = 5002
frame = IP(dst=target_ip)/TCP(flags = 'S',sport=src_port,dport=dst_port)
send(frame)

Sniff empfing Pakete in paralleler Verarbeitung

SniffRecPkt.py


import threading
from scapy.all import *

class SniffRecPkt(threading.Thread):
    def __init__(self,target_ip):
        super(RecPingScan, self).__init__()
        self.target_ip = target_ip
        self.stop_event = threading.Event() #Flagge zum Stoppen
        self.thread = threading.Thread(target = self.run)
        self.thread.start()

    def run(self):
        while not self.stop_event.is_set():
            sniff(filter="tcp and ip src host " + self.target_ip,prn=packet_show, count=1)

    def stop(self):
        """Stoppen Sie den Thread"""
        self.stop_event.set()
        self.thread.join()    #Warten Sie, bis der Thread gestoppt ist


def packet_show(packet):
    if packet[TCP].flags==18: #SYN/Nur wenn es ein ACK-Paket war
        print "IP : " + str(packet[IP].src) + " | TCP PORT : " + str(packet[TCP].sport)

if __name__ == '__main__':
    target_ip = "192.168.1.1"
    Rec_thread=SniffRecPkt(target_ip)

    target_ip="192.168.1.1"
    dst_port = 5001
    src_port = 5002
    frame = IP(dst=target_ip)/TCP(flags = 'S',sport=src_port,dport=dst_port)
    send(frame)

    Rec_thread.stop()

Port-SCAN-Programmierung

python:port_scan_v1.0.py


# encoding: utf-8
from scapy.all import *
import netifaces
import threading
import time
import sys
import random

class RecPingScan(threading.Thread):
    def __init__(self,target_ip):
        super(RecPingScan, self).__init__()
        self.target_ip = target_ip
        self.stop_event = threading.Event() #Flagge zum Stoppen
        self.thread = threading.Thread(target = self.run)
        self.thread.start()

    def run(self):
        while not self.stop_event.is_set():
            sniff(filter="tcp and ip src host " + self.target_ip,prn=packet_show, count=1)

    def stop(self):
        """Stoppen Sie den Thread"""
        self.stop_event.set()
        self.thread.join()    #Warten Sie, bis der Thread gestoppt ist


def packet_show(packet):
    if packet[TCP].flags==18:
        print "IP : " + str(packet[IP].src) + " | TCP PORT : " + str(packet[TCP].sport)


def send_tcpsyn(target_ip):
    sport = random.randint(50000,51000)
    for i in range(0,65535):
        frame = IP(dst=target_ip)/TCP(flags = 'S',sport=sport,dport=i)
        send(frame)
        send(frame)

if __name__ == '__main__':
    target_ip = "192.168.1.1"

    Rec_thread=RecPingScan(target_ip)
    send_tcpsyn(target_ip)
    time.sleep(2)
    Rec_thread.stop()
    sys.exit()

Recommended Posts

Netzwerkprogrammierung mit Python Scapy
3. 3. KI-Programmierung mit Python
Wettbewerbsfähige Programmierung mit Python
Programmieren mit Python Flask
Programmieren mit Python und Tkinter
Neuronales Netzwerk mit Python (Scikit-Learn)
Einwegverzögerungsmessung des Netzwerks mit Python
[Python] Mit Pokemon erlernte objektorientierte Programmierung
Einfache Python + OpenCV-Programmierung mit Canopy
Netzwerkprogrammierung (grundlegend)
Python-Programmierhinweis
Statistik mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
3. Verarbeitung natürlicher Sprache durch Python 2-1. Netzwerk für das gleichzeitige Auftreten
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
3. Verarbeitung natürlicher Sprache durch Python 2-2. Koexistenznetzwerk [mecab-ipadic-NEologd]
Wie man Spaß am Programmieren mit Minecraft hat (Ruby, Python)
Generierung der Vorlagen-Netzwerkkonfiguration mit Python und Jinja2
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Asynchrone Programmierung mit libev # 2
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Serielle Kommunikation mit Python
Python lernen mit ChemTHEATER 05-1
Lerne Python mit ChemTHEATER
Führen Sie prepDE.py mit python3 aus
1.1 Erste Schritte mit Python
Tweets mit Python sammeln
Binarisierung mit OpenCV / Python
Kernel-Methode mit Python
Nicht blockierend mit Python + uWSGI
Scraping mit Python + PhantomJS
Tweets mit Python posten
Fahren Sie WebDriver mit Python
Verwenden Sie Mecab mit Python 3
[Python] Mit CGIHTTPServer umleiten
Sprachanalyse mit Python
Denken Sie an Yaml mit Python