Scan de port avec python

introduction

J'ai appris dans un livre de la CTF que l'analyse des ports peut être effectuée avec python Commencez par la curiosité de "Quoi? Python peut-il faire ça?" Au cours du processus, j'ai appris que le multi-threading est beaucoup plus rapide que d'exécuter un seul Comme c'est un gros problème, je laisse les deux pour comparaison.

Faites attention

Parce qu'il est mal de faire une analyse de port vers un site externe Dans l'expérience, démarrez un serveur virtuel à l'aide de Virtualbox sur votre propre PC J'ai fait une analyse de port dessus. C'est pourquoi "10.0.0.2" écrit dans le code source de ↓↓ est l'adresse IP de votre propre serveur virtuel.

1. 1. Balayage simple des ports

Référence: https://qiita.com/najayama/items/728682bcae824c902046

Le code que j'ai le plus appris est celui-ci. Il n'y a pas de gaspillage. Au lieu de cela, c'est lent. Au contraire, parce que c'était lent, je pouvais ressentir "l'efficacité du multi-threading".

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_Tentative de connexion au port de numéro de port de l'hôte
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    return_code = sock.connect_ex((target_host, port))
    sock.close()

    #socket.connect_ex renvoie 0 en cas de succès
    if return_code == 0:
        print("Port %d open!" % (port))

print("Complete!")

2. Analyse des ports multi-threads

Référence: https://www.valuestar.work/news/archives/20

Ce n’est pas moins un gaspillage qu’il ne l’est. J'utilise bien le fil, donc c'est assez rapide pour mourir. 1. 1. Ensuite, il a fallu environ 1 seconde par port Il a fallu un certain temps pour faire les ports 1 à 1024, mais avec ce programme, le processus s'est terminé en environ 3 secondes. le fil est mauvais.

Cette fois, je l'ai utilisé comme référence dans la précipitation, donc ce n'est pas une copie du code, donc ce n'est pas sous une forme comparable. J'aimerais pouvoir le façonner afin de pouvoir le comparer plus tard ...

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]);

en conclusion

Je l'ai vérifié pour étudier le scan des ports Le pouvoir destructeur du fil m'a laissé une impression plus que je ne m'y attendais. Regardons lentement le code source et organisons-le plus tard

~ Fin ~

Recommended Posts

Scan de port avec python
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Grattage avec Python
Python avec Go
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
[Python] Python et sécurité-② Outil d'analyse de port réalisé avec Python
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Exécutez Python avec VBA
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
[Python] Utiliser JSON avec Python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER
Exécutez prepDE.py avec python3
1.1 Premiers pas avec Python
Collecter des tweets avec Python
Binarisation avec OpenCV / Python
3. 3. Programmation IA avec Python
Non bloquant avec Python + uWSGI
Grattage avec Python + PhantomJS
Publier des tweets avec python
Conduisez WebDriver avec python
Utiliser mecab avec Python 3
[Python] Redirection avec CGIHTTPServer
Analyse vocale par python
Pensez à yaml avec python
Utiliser Kinesis avec Python
Premiers pas avec Python
Utiliser DynamoDB avec Python
Gérez Excel avec python
Loi d'Ohm avec Python
Jugement des nombres premiers avec python
Exécutez Blender avec python
Résoudre des maths avec Python
Python à partir de Windows 7
Carte thermique par Python + matplotlib
Multi-processus de manière asynchrone avec python