Port-Scan mit Python

Einführung

Ich habe aus einem CTF-Buch gelernt, dass das Scannen von Ports mit Python durchgeführt werden kann Beginnen Sie mit der Neugier von "Was? Kann Python das?" Dabei habe ich gelernt, dass Multithreading viel schneller ist als Single Da es eine große Sache ist, lasse ich beide zum Vergleich.

Achtung

Weil es NG ist, einen Port-Scan zu einer externen Site durchzuführen Starten Sie im Experiment einen virtuellen Server mit Virtualbox auf Ihrem eigenen PC Ich habe einen Port-Scan durchgeführt. Aus diesem Grund ist "10.0.0.2" im Quellcode von ↓↓ die IP Ihres eigenen virtuellen Servers.

1. 1. Einfacher Port-Scan

Referenz: https://qiita.com/najayama/items/728682bcae824c902046

Der Code, den ich am meisten gelernt habe, ist dieser. Es gibt keinen Abfall. Stattdessen ist es langsam. Im Gegenteil, weil es langsam war, konnte ich die "Wirksamkeit von Multithreading" spüren.

simple-port-scanner.py


import socket

max_port = 6000
min_port = 1

target_host = input("Input target host name or address: ")

for port in range(min_port, max_port):
    #target_Versuchen Sie, eine Verbindung zum Portnummernport des Hosts herzustellen
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    return_code = sock.connect_ex((target_host, port))
    sock.close()

    #socket.connect_ex gibt bei Erfolg 0 zurück
    if return_code == 0:
        print("Port %d open!" % (port))

print("Complete!")

2. Multithread-Port-Scan

Referenz: https://www.valuestar.work/news/archives/20

Dies ist nicht weniger verschwenderisch als es ist. Ich benutze Thread gut, so dass es schnell genug ist, um zu sterben. 1. 1. Dann dauerte es ungefähr 1 Sekunde pro Port Es dauerte eine Weile, bis die Ports 1 bis 1024 ausgeführt wurden, aber mit diesem Programm war der Vorgang in etwa 3 Sekunden abgeschlossen. Thread ist schlecht.

Dieses Mal habe ich es als Referenz in der Eile verwendet, es ist also keine Kopie des Codes, also nicht in vergleichbarer Form. Ich wünschte, ich könnte es so gestalten, dass ich es später vergleichen könnte ...

multi-port-scanner.py


import socket
import threading

scan_range = [1, 10000];

host = "10.0.0.2";

threads = [];
ports = [];
isopen = [];

def Run(port, i):
    con = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    return_code = con.connect_ex((host, port))
    con.close()

    if return_code == 0:
        isopen[i] = 1;
    
    
count = 0;
for port in range(scan_range[0], scan_range[1]):
    ports.append(port);
    isopen.append(0);
    thread = threading.Thread(target=Run, args=(port, count));
    thread.start();
    threads.append(thread);
    count = count + 1;

for i in range(len(threads)):
    threads[i].join();
    if isopen[i] == 1:
        print("%d open" % ports[i]);

abschließend

Ich habe es überprüft, um den Port-Scan zu studieren Die zerstörerische Kraft des Fadens hat mich mehr beeindruckt als ich erwartet hatte. Schauen wir uns den Quellcode langsam an und organisieren ihn später

~ Ende ~

Recommended Posts

Port-Scan mit Python
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
[Python] Python und Sicherheit - Port-Scan-Tool mit Python
Versuchen Sie es mit Python.
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
Löse AtCoder 167 mit Python
[Python] Verwenden Sie JSON 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
3. 3. KI-Programmierung 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
Kinesis mit Python betreiben
Erste Schritte mit Python
Verwenden Sie DynamoDB mit Python
Behandle Excel mit Python
Ohmsches Gesetz mit Python
Primzahlbeurteilung mit Python
Führen Sie Blender mit Python aus
Löse Mathe mit Python
Python ab Windows 7
Heatmap von Python + matplotlib
Asynchron mit Python verarbeiten