Peut nmap
répertorier tous les hôtes du réseau local qui ont à la fois SSH et HTTP ouverts? Pour ce faire, je peux exécuter quelque chose comme:
nmap 192.168.1.1-254 -p22,80 --open
Cependant, cela répertorie les hôtes qui ont des ports de liste ouverts, alors que je voudrais que les hôtes aient TOUS les ports ouverts. De plus, la sortie est assez verbeuse:
# nmap 192.168.1.1-254 -p22,80 --open
Starting Nmap 6.47 ( http://nmap.org ) at 2015-12-31 10:14 EST
Nmap scan report for Wireless_Broadband_Router.home (192.168.1.1)
Host is up (0.0016s latency).
Not shown: 1 closed port
PORT STATE SERVICE
80/tcp open http
Nmap scan report for new-host-2.home (192.168.1.16)
Host is up (0.013s latency).
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 254 IP addresses (7 hosts up) scanned in 3.78 seconds
Ce que je recherche, c'est simplement une sortie comme:
192.168.1.16
car l'hôte ci-dessus est le seul avec TOUS les ports ouverts.
Je peux certainement post-traiter la sortie, mais je ne veux pas me fier au format de sortie de nmap, je préfère que nmap le fasse, s'il y a un moyen.
Réponses:
Il n'y a aucun moyen de le faire dans Nmap, mais votre commentaire sur le fait de ne pas vouloir "s'appuyer sur le format de sortie de nmap" me permet de souligner que Nmap a deux formats de sortie stables pour une analyse lisible par machine. Le plus ancien est Grepable output (
-oG
) , qui fonctionne bien pour le traitement avec perl, awk et grep, mais il manque certaines des sorties les plus avancées (comme la sortie du script NSE, les raisons du port, traceroute, etc.). Le format le plus complet est la sortie XML (-oX
) , mais il peut être excessif pour vos besoins.Vous pouvez enregistrer ces sorties vers des fichiers avec
-oG
,-oX
ou-oA
( les deux formats ainsi que la sortie de texte « normal »), ou vous pouvez envoyer directement l'un à stdout:nmap 192.168.1.1-254-p22,80 --open -oG - | awk '/22\/open.*80\/open/{print $2}'
la source
-oG -
)Pensez aussi à ce
awk
one-liner:Il vous imprimera tous les hôtes avec tous les ports ouverts spécifiés comme ceci:
la source
Essayez la commande suivante:
Cela recherchera vos ports dans votre plage et dirigera la sortie au format greppable à la recherche de ports ouverts, puis imprimera les adresses IP qui correspondent à l'un de ces critères.
la source