Scanner de port de base utilisant Python
Code source cliquez ici
Il s'agit d'un outil de base de scanner de ports qui permet aux utilisateurs d'analyser l'hôte pour trouver les ports ouverts et quel service s'exécute sur le port...
Examinons d'abord le code, puis décomposons-le en morceaux pour l'analyser...
import socket from datetime import datetime import sys import os def usage(): """Prints the usage information for this script.""" usage_info = """ Tool Name: SimplePortScanner Developed by : Bharath Kumar Usage: python3 port_scanner.py [options] Options: -h, --help Show this help message and exit. -t, --target <ip> Specify the target hostname or IP address (required). -p, --port <port> Specify a port (or) range of ports to scan (e.g. -p 80 (or) -p 1-1024). Description: This script performs a port scan on a specified hostname or IP address for a specific port or a range of ports, checking which ports are open. Examples: python3 port_scanner.py -t example.com (or) 192.0.0.1 python3 port_scanner.py -t example.com (or) 192.168.1.1 -p 80 python3 port_scanner.py -t example.com (or) 192.168.1.1 --ports 1-1024 """ print(usage_info) start_time = datetime.now() def scan_port(ip, port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(1) try: result = s.connect_ex((ip, port)) service = socket.getservbyport(int(port)) except: service = "None" if result == 0: print(" Port: {}\t State: Open\t Service: {}".format(port, service)) else: pass s.close() def host(target): try: ip = socket.gethostbyname(target) print('_'*51) print("[#] Resolved {} to {}".format(target,ip)) return ip except: print('_'*51) print("[#] Error: Unable to resolve hostname {}".format(target)) sys.exit(1) def check_host_up(ip): ping = os.system("ping {} -c 1 > /dev/null".format(ip)) if ping == 0: print("[#] {} host is up and running".format(ip)) return True else: print("[#] {} host is down".format(ip)) print("Exiting...") exit() return False if __name__ == "__main__": target_ip = None start_port = 1 end_port = 65535 try: for i, arg in enumerate(sys.argv): if arg in ("-t", "--target"): target_ip = sys.argv[i + 1] elif arg in ("-p", "--ports"): port_range = sys.argv[i + 1] if "-" in port_range: start_port, end_port = map(int, port_range.split('-')) else: start_port = end_port = int(port_range) if target_ip is None: print("[#] Error: Target hostname or IP address is required.") usage() sys.exit(1) if start_port is None or end_port is None: print("[#] Error: Port range is required.") usage() sys.exit(1) target_ip = host(target_ip) if not check_host_up(target_ip): sys.exit(1) print(f"[#] Scanning {target_ip} from port {start_port} to {end_port}...") print("[#] Scanning started at: {}".format(start_time)) print('_'*51) for port in range(start_port, end_port + 1): scan_port(target_ip, port) except (IndexError, ValueError): print("[#] Error: Invalid arguments provided.") usage() sys.exit(1) start_time = start_time.now() - start_time print('_'*51) print("Scanning is completed in ",start_time)
Importer un socket : Un moyen pour deux nœuds (serveur, client) de communiquer entre eux.
from datetime import datetime : Est utilisé le temps de calcul consacré à l'analyse.
Import sys : est l'accès aux paramètres spécifiques au système (argv).
Import os: est utilisé pour exécuter la commande ping.
def_usage() : Imprime les informations d'utilisation pour ce script.
start_time = datetime.now() : est utilisé pour obtenir l'heure et la date actuelles afin de calculer le temps passé à numériser.
def scan_port(ip, port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(1) try: result = s.connect_ex((ip, port)) service = socket.getservbyport(int(port)) except: service = "None" if result == 0: print(" Port: {}\t State: Open\t Service: {}".format(port, service)) else: pass s.close()
Ce bloc de code définit la fonction scan_port(ip, port) qui vérifie si un port spécifique sur une adresse IP donnée est ouvert à l'aide d'un socket.
Création de socket : socket.socket(socket.AF_INET, socket.SOCK_STREAM) Créez un nouveau socket pour IPv4 à l'aide de TCP.
Timeout : s.settimeout(1) définit le temps de socket sur 1 seconde, si la connexion échoue dans ce délai, elle cessera d'essayer.
Test de connexion :s.connect_ex((ip, port))il essaie de connecter l'adresse IP et le port spécifiques. si cela réussit, le résultat sera 0 ; sinon, ce sera une valeur différente.
Détection de services : socket.getservbyport(int(port))essayez de détecter les services exécutés sur le port spécifié, comme HTTP pour le port 80.
Gestion des erreurs : En cas d'erreur (par exemple, aucun service sur le port), le bloc except définit le service sur "Aucun".
Sortie : Si le port est ouvert (résultat == 0), il imprime le numéro de port, l'état (« Ouvert ») et le nom du service.
Fermeture de connexion : s.close() ferme le socket pour libérer des ressources.
def host(target): try: ip = socket.gethostbyname(target) print('_'*51) print("[#] Resolved {} to {}".format(target,ip)) return ip except: print('_'*51) print("[#] Error: Unable to resolve hostname {}".format(target)) sys.exit(1)
Ce bloc de code définit la fonction host(target) qui résout une cible donnée (un nom d'hôte) en son adresse IP correspondante à l'aide de socket.gethostname()
def check_host_up(ip): ping = os.system("ping {} -c 1 > /dev/null".format(ip)) if ping == 0: print("[#] {} host is up and running".format(ip)) return True else: print("[#] {} host is down".format(ip)) print("Exiting...") exit() return False
Cette fonction check_host_up(ip) qui vérifie si un port spécifique sur une adresse IP cible donnée est actif ou inactif en utilisant la méthode ping os.system() pour l'identifier.
if __name__ == "__main__": target_ip = None start_port = 1 end_port = 65535 try: for i, arg in enumerate(sys.argv): if arg in ("-t", "--target"): target_ip = sys.argv[i + 1] elif arg in ("-p", "--ports"): port_range = sys.argv[i + 1] if "-" in port_range: start_port, end_port = map(int, port_range.split('-')) else: start_port = end_port = int(port_range)
Analyse des arguments de ligne de commande
Le tableau sys.argv contient la liste des arguments passés au script. Nous parcourons ces arguments pour vérifier l'adresse IP cible (-t ou --target) et la plage de ports (-p ou --ports).
L'adresse IP/le nom d'hôte cible est stocké dans target_ip.
La plage de ports est analysée et divisée en start_port et end_port. Si aucune plage n'est spécifiée, la valeur par défaut est d'analyser tous les ports de 1 à 65535.
import socket from datetime import datetime import sys import os def usage(): """Prints the usage information for this script.""" usage_info = """ Tool Name: SimplePortScanner Developed by : Bharath Kumar Usage: python3 port_scanner.py [options] Options: -h, --help Show this help message and exit. -t, --target <ip> Specify the target hostname or IP address (required). -p, --port <port> Specify a port (or) range of ports to scan (e.g. -p 80 (or) -p 1-1024). Description: This script performs a port scan on a specified hostname or IP address for a specific port or a range of ports, checking which ports are open. Examples: python3 port_scanner.py -t example.com (or) 192.0.0.1 python3 port_scanner.py -t example.com (or) 192.168.1.1 -p 80 python3 port_scanner.py -t example.com (or) 192.168.1.1 --ports 1-1024 """ print(usage_info) start_time = datetime.now() def scan_port(ip, port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(1) try: result = s.connect_ex((ip, port)) service = socket.getservbyport(int(port)) except: service = "None" if result == 0: print(" Port: {}\t State: Open\t Service: {}".format(port, service)) else: pass s.close() def host(target): try: ip = socket.gethostbyname(target) print('_'*51) print("[#] Resolved {} to {}".format(target,ip)) return ip except: print('_'*51) print("[#] Error: Unable to resolve hostname {}".format(target)) sys.exit(1) def check_host_up(ip): ping = os.system("ping {} -c 1 > /dev/null".format(ip)) if ping == 0: print("[#] {} host is up and running".format(ip)) return True else: print("[#] {} host is down".format(ip)) print("Exiting...") exit() return False if __name__ == "__main__": target_ip = None start_port = 1 end_port = 65535 try: for i, arg in enumerate(sys.argv): if arg in ("-t", "--target"): target_ip = sys.argv[i + 1] elif arg in ("-p", "--ports"): port_range = sys.argv[i + 1] if "-" in port_range: start_port, end_port = map(int, port_range.split('-')) else: start_port = end_port = int(port_range) if target_ip is None: print("[#] Error: Target hostname or IP address is required.") usage() sys.exit(1) if start_port is None or end_port is None: print("[#] Error: Port range is required.") usage() sys.exit(1) target_ip = host(target_ip) if not check_host_up(target_ip): sys.exit(1) print(f"[#] Scanning {target_ip} from port {start_port} to {end_port}...") print("[#] Scanning started at: {}".format(start_time)) print('_'*51) for port in range(start_port, end_port + 1): scan_port(target_ip, port) except (IndexError, ValueError): print("[#] Error: Invalid arguments provided.") usage() sys.exit(1) start_time = start_time.now() - start_time print('_'*51) print("Scanning is completed in ",start_time)
Résolution et accessibilité de l'hôte
Une fois que nous avons une adresse IP valide, nous devons vérifier si l'hôte est joignable. La fonction host(target_ip) résout un nom d'hôte en son adresse IP et check_host_up(target_ip) vérifie si l'hôte est en ligne.
def scan_port(ip, port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(1) try: result = s.connect_ex((ip, port)) service = socket.getservbyport(int(port)) except: service = "None" if result == 0: print(" Port: {}\t State: Open\t Service: {}".format(port, service)) else: pass s.close()
Analyse des ports
Le cœur de la fonctionnalité d'analyse des ports se déroule à l'intérieur de la boucle :
Cette boucle parcourt la plage de ports spécifiée, et pour chaque port, la fonction scan_port(target_ip, port) sonde le port pour vérifier s'il est ouvert ou fermé.
Conclusion
En suivant ce guide, vous avez appris à créer un scanner de port Python simple qui accepte les arguments de ligne de commande, valide les entrées et analyse une plage de ports sur une cible donnée. Bien qu'il s'agisse d'une implémentation de base, elle jette les bases de fonctionnalités plus avancées telles que le threading ou la détection de services.
N'hésitez pas à adapter et développer ce script en fonction de vos besoins spécifiques. Bonne numérisation !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Python convient à la science des données, au développement Web et aux tâches d'automatisation, tandis que C convient à la programmation système, au développement de jeux et aux systèmes intégrés. Python est connu pour sa simplicité et son écosystème puissant, tandis que C est connu pour ses capacités de contrôle élevées et sous-jacentes.

Vous pouvez apprendre les bases de Python dans les deux heures. 1. Apprenez les variables et les types de données, 2. Structures de contrôle maître telles que si les instructions et les boucles, 3. Comprenez la définition et l'utilisation des fonctions. Ceux-ci vous aideront à commencer à écrire des programmes Python simples.

Python excelle dans les jeux et le développement de l'interface graphique. 1) Le développement de jeux utilise Pygame, fournissant des fonctions de dessin, audio et d'autres fonctions, qui conviennent à la création de jeux 2D. 2) Le développement de l'interface graphique peut choisir Tkinter ou Pyqt. Tkinter est simple et facile à utiliser, PYQT a des fonctions riches et convient au développement professionnel.

Vous pouvez apprendre les concepts de programmation de base et les compétences de Python dans les 2 heures. 1. Apprenez les variables et les types de données, 2. Flux de contrôle maître (instructions et boucles conditionnelles), 3. Comprenez la définition et l'utilisation des fonctions, 4. Démarrez rapidement avec la programmation Python via des exemples simples et des extraits de code.

Python est plus facile à apprendre et à utiliser, tandis que C est plus puissant mais complexe. 1. La syntaxe Python est concise et adaptée aux débutants. Le typage dynamique et la gestion automatique de la mémoire le rendent facile à utiliser, mais peuvent entraîner des erreurs d'exécution. 2.C fournit des fonctionnalités de contrôle de bas niveau et avancées, adaptées aux applications haute performance, mais a un seuil d'apprentissage élevé et nécessite une gestion manuelle de la mémoire et de la sécurité.

Pour maximiser l'efficacité de l'apprentissage de Python dans un temps limité, vous pouvez utiliser les modules DateTime, Time et Schedule de Python. 1. Le module DateTime est utilisé pour enregistrer et planifier le temps d'apprentissage. 2. Le module de temps aide à définir l'étude et le temps de repos. 3. Le module de planification organise automatiquement des tâches d'apprentissage hebdomadaires.

Python est largement utilisé dans les domaines du développement Web, de la science des données, de l'apprentissage automatique, de l'automatisation et des scripts. 1) Dans le développement Web, les cadres Django et Flask simplifient le processus de développement. 2) Dans les domaines de la science des données et de l'apprentissage automatique, les bibliothèques Numpy, Pandas, Scikit-Learn et Tensorflow fournissent un fort soutien. 3) En termes d'automatisation et de script, Python convient aux tâches telles que les tests automatisés et la gestion du système.

Python excelle dans l'automatisation, les scripts et la gestion des tâches. 1) Automatisation: La sauvegarde du fichier est réalisée via des bibliothèques standard telles que le système d'exploitation et la fermeture. 2) Écriture de script: utilisez la bibliothèque PSUTIL pour surveiller les ressources système. 3) Gestion des tâches: utilisez la bibliothèque de planification pour planifier les tâches. La facilité d'utilisation de Python et la prise en charge de la bibliothèque riche en font l'outil préféré dans ces domaines.
