Проблема с выходным файлом диапазона сканирования Nmap - PullRequest
0 голосов
/ 12 августа 2011

Хорошо, я хочу, чтобы Nmap сканировал диапазон IP-адресов для компьютеров с определенным открытым портом (в данном случае это 80-й порт) и выводил все найденные IP-адреса в текстовый файл, сохраненный в следующем формате:

192.168.0.1
192.168.0.185
192.168.0.192
192.168.0.195

Итак, чтобы вывести файл, я попытался использовать эту команду:

nmap -sT -p 80 -ttl 40 192.168.0.0-255 -oG - | grep "80/open" > output.txt

Где «output.txt» - выходной файл, содержащий результаты. Так выглядит строка output.txt как это:

Host: 192.168.0.1 ()    Ports: 80/open/tcp//http///

Поэтому я хочу, чтобы он выводил только IP-адрес с открытым портом 80 и ничего больше. Я хочу, чтобы он не выводил строки "Host:" или "()" и "Ports: 80 / open / tcp // http ///". Так есть ли способ, чтобы Nmap не помещал эти вещи в выходной файл? Или сделать это только выводить IP адреса? Я попытался посмотреть на страницу карты, это было мало помощи. И я просмотрел весь Интернет, и это тоже было не очень полезно. Так кто-нибудь знает, как я могу это сделать? Спасибо

Ответы [ 3 ]

1 голос
/ 24 февраля 2012

Awk - ваш друг!

$ nmap -sT -p 80 192.168.0.0/24 -oG - | awk '/ 80\/open/{print $2}' > output.txt

При этом будут обнаружены строки с открытым портом 80 (обратите внимание на пробел до 80, если вы планируете сканировать более одного порта!) И поле печати 2расщепление на пустое пространство.Другой способ сделать это:

$ nmap -sT -p 80 --open 192.168.0.0/24 -oG - | awk '$4=="Ports:"{print $2}' > output.txt

. Этот метод использует аргумент --open для Nmap, чтобы выдавать выходные данные только для хостов с открытыми портами.Команда awk проверяет, что это строка «Порты», а не строка «Состояние» (которая может отображаться только при использовании -v, но я не уверен) перед печатью IP-адреса.

Обратите внимание, что обычно в ваших интересах сохранять результаты сканирования в файл, чтобы избежать необходимости повторять сканирование, если вы решите извлечь какую-либо другую информацию.Если вы решите сделать это, я бы порекомендовал использовать вывод XML (-oX), поскольку существует множество инструментов анализа, для которых уже созданы парсеры.

0 голосов
/ 11 марта 2014

Я нашел скрипт с именем scanreport.sh очень полезным.Хотя это и не обязательно, вы можете просто использовать awk, как предложено, но подумайте, что это может быть интересно.

Это дает возможность красиво выводить результаты nmap по сервисам или портам (с подсветкой).Он использует grep-способный вывод из nmap (-oG) после быстрой уборки из grep -v ^# nmapoutput.txt > report.txt

Пример

nmap -sS 192.168.1.22 -oG /directory/of/choice/results.txt

grep -v ^# results.txt > report.txt

./scanreport.sh -f report.txt

Host: 192.168.1.22 ()
22 open tcp  ssh  OpenSSH 5.3p1 Debian 3ubuntu4 (protocol 2.0)
80 open tcp  http  Apache httpd 2.2.14 ((Ubuntu))

./scanreport.sh -f report.txt -p 80

Host: 192.168.1.22 ()
80 open tcp  http  Apache httpd 2.2.14 ((Ubuntu))  

./scanreport.sh -f report.txt -s ssh

Host: 192.168.1.22 ()
22 open tcp  ssh  OpenSSH 5.3p1 Debian 3ubuntu4 (protocol 2.0)

В Google много об этомно здесь ссылка на одну ссылку.

. / scanreport.sh

0 голосов
/ 12 августа 2011

Имея nmap производить именно то, что вы хотите, было бы действительно хорошо. Но как более общее решение:

$ nmap ... | grep ... | tr '/' ' ' | awk '{ print $2,$5; }
192.168.0.1 80

Или, может быть:

nmap ... | grep ... | tr '/' ' ' | cut -d' ' -f2,8
...