Python общаться() с NMap

Мой код:

#!/usr/bin/python

## test communicate()

# Import the module
import subprocess

# Ask the user for input
host = raw_input("Enter a host to map: ")   

# Set up the echo command and direct the output to a pipe
p1 = subprocess.Popen(['nmap', '-T0', '-F', host], stdout=subprocess.PIPE)

# Run the command
output = p1.communicate()[0]

print output

Когда я вхожу в хост, он не дает мне никакого вывода, и я вижу несколько экземпляров nmap, работающих с разными PID в процессах, поэтому он фактически выполняет команду.

Когда я Z^, он говорит: [n+1]+ Stopped ./sample.py Таким образом, nmap фактически запускается n+1 раз без вывода каких-либо результатов.

Он отлично работает с ping и traceroute следующим образом:

# Set up the echo command and direct the output to a pipe
p1 = subprocess.Popen(['ping', '-c 2', host], stdout=subprocess.PIPE)
p1 = subprocess.Popen(['traceroute', host], stdout=subprocess.PIPE)

Он также работает без nmap [options], например nmap google.com.

p1 = subprocess.Popen(['nmap', host], stdout=subprocess.PIPE)

Мой вопрос:

Это связано с Python или NMap? Что-то не так с этим кодом или я что-то упустил?


person 0x2    schedule 17.11.2014    source источник


Ответы (1)


Из документации:

Основным эффектом T0 является сериализация сканирования, поэтому за раз сканируется только один порт, и 5-минутное ожидание между отправкой каждого зонда.

Аргумент -F означает "сканировать только 100 портов", но при пятиминутном интервале между проверками это минимум 8 часов 20 минут только для фазы сканирования портов. Это предполагает, что ни один из этих зондов не будет сброшен и повторно передан, и что цель отвечает на все из них.

В подавляющем большинстве случаев -T3 (по умолчанию) вполне подходит. С быстрым соединением и небольшим количеством целей -T4 даже надежен. Если ваша цель активно не обнаруживает и не блокирует сканирование, -T2 будет самым медленным, что вам когда-либо понадобится.

person bonsaiviking    schedule 17.11.2014
comment
T0 отлично работает на той же машине в оболочке. Я также пробовал все варианты от параноидального до безумного от 0 до 5, но ни один из них не работал в python. - person 0x2; 17.11.2014
comment
Сейчас работает нормально. Спасибо за ваш ответ @bonsaiviking, на самом деле он работает со всеми вариантами 0-5. - person 0x2; 28.11.2014