Maison >développement back-end >Tutoriel Python >Présentation de l'utilisation de la boîte à outils d'analyse et de détection de réseau Python-nmap
NMap, également connu sous le nom de Network Mapper, était à l'origine une boîte à outils d'analyse et de reniflage de réseau sous Linux.
nmap est un logiciel d'analyse de connexions réseau, utilisé pour analyser les connexions réseau ouvertes des ordinateurs sur Internet. Déterminez quels services s'exécutent sur quelles connexions et déduisez quel système d'exploitation l'ordinateur exécute (c'est également ce qu'on appelle la prise d'empreintes digitales). C'est l'un des logiciels incontournables pour les administrateurs réseau et est utilisé pour évaluer la sécurité du système réseau.
Comme la plupart des outils utilisés pour la sécurité des réseaux, nmap est également un outil privilégié par de nombreux hackers et hackers (également connus sous le nom de script kiddies). Les administrateurs système peuvent utiliser nmap pour détecter toute utilisation non autorisée de serveurs dans l'environnement de travail, mais les pirates informatiques utiliseront nmap pour collecter les paramètres réseau des ordinateurs cibles afin de planifier des attaques.
Nmap est souvent confondu avec Nessus, un logiciel d'évaluation des vulnérabilités des systèmes. Nmap utilise des méthodes furtives pour éviter la surveillance des systèmes de détection d'intrusion et essayer de ne pas affecter les opérations quotidiennes du système cible.
Nmap, ainsi que la vulnérabilité de contrôle de redondance cyclique 32 bits de SSH1, a été utilisé par Trinity pour envahir le système de gestion de l'énergie de la centrale électrique dans The Matrix.
Il existe trois fonctions de base : la première consiste à détecter si un groupe d'hôtes est en ligne ; la seconde consiste à analyser le port de l'hôte et à détecter celui fourni. les services réseau ; et il peut également déduire le système d’exploitation utilisé par l’hôte. Nmap peut être utilisé pour analyser des réseaux locaux comportant seulement deux nœuds, jusqu'à des réseaux de plus de 500 nœuds. Nmap permet également aux utilisateurs de personnaliser les techniques d'analyse. Habituellement, une simple opération de ping utilisant le protocole ICMP peut répondre aux besoins généraux ; elle peut également détecter en profondeur le port UDP ou TCP, jusqu'au système d'exploitation utilisé par l'hôte, elle peut également enregistrer tous les résultats de détection dans des journaux dans différents formats pour une utilisation ultérieure ; Opérations d’analyse.
Effectuez une analyse ping et imprimez les hôtes qui ont répondu à l'analyse sans autre test (comme l'analyse des ports ou la détection du système d'exploitation) :
nmap -sP 192.168.1.0/24
Liste uniquement les hôtes sur le réseau spécifié Chaque hôte n'envoie aucun paquet à l'hôte cible :
nmap -sL 192.168.1.0/24
Pour détecter les ports ouverts de l'hôte cible, vous pouvez spécifier une liste de ports séparés par des virgules (telle que -PS22, 23, 25, 80) :
nmap -PS 192.168.1.234
Utilisez le ping UDP pour détecter l'hôte :
nmap -PU 192.168.1.0/24
Utilisez l'option d'analyse la plus fréquemment utilisée : l'analyse SYN, également connue sous le nom d'analyse semi-ouverte, qui ne pas ouvrir une connexion TCP complète. L'exécution est très rapide :
nmap -sS 192.168.1.0/24
Cet article prend Linux Ubuntu16.04 comme exemple, et finalement utilise principalement python pour fonctionner
sudo apt-get install nmap
sudo pip install python-nmap
Après l'installation, importez nmap dans python et testez pour vérifier. si cela réussit
com@pythontab:~# python Python 2.7.12 (default, Dec 3 2016, 10:42:27) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import nmap
Créez une instance de PortScanner, puis analysez les ports 20-. 443 de l'IP 114.114.114.114.
import nmap nm = nmap.PortScanner() ret = nm.scan('114.114.114.114','20') print ret
Le format de retour est le suivant :
{ 'nmap': { 'scanstats': {'uphosts': '1', 'timestr': 'Tue Oct 25 11:30:47 2016', 'downhosts': '0', 'totalhosts': '1', 'elapsed': '1.11'}, 'scaninfo': {'tcp': {'services': '20', 'method': 'connect'}}, 'command_line': 'nmap -oX - -p 20 -sV 115.239.210.26' }, 'scan': { '115.239.210.26': { 'status': {'state': 'up', 'reason': 'syn-ack'}, 'hostnames': [{'type': '', 'name': ''}], 'vendor': {}, 'addresses': {'ipv4': '115.239.210.26'}, 'tcp': {20: {'product': '', 'state': 'filtered', 'version': '', 'name': 'ftp-data', 'conf': '3', 'extrainfo': '', 'reason': 'no-response', 'cpe': ''} } } } }
Vous pouvez également imprimer simplement. informations
import nmap nm = nmap.PortScanner() print nm.scaninfo() # {u'tcp': {'services': u'20-443', 'method': u'syn'}} print nm.command_line() # u'nmap -oX - -p 20-443 -sV 114.114.114.114'
Afficher le nombre d'hôtes il y a
print nm.all_hosts()
[u'114.114.114.114']
Afficher les informations détaillées de cet hôte
nm['114.114.114.114']
Voir tous les protocoles inclus dans l'hôte
nm['114.114.114.114'].all_protocols()
Vérifiez quels ports de l'hôte fournissent le protocole TCP
nm['114.114.114.114']['tcp'] nm['114.114.114.114']['tcp'].keys()
Vérifiez si le port fournit le protocole TCP
nm['114.114.114.114'].has_tcp(21)
Vous pouvez également définir les paramètres d'exécution de nmap comme ceci
nm.scan(hosts='192.168.1.0/24', arguments='-n -sP -PE -PA21,23,80,3389')
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!