Python与NMap通信()

时间:2014-11-17 03:45:51

标签: python linux subprocess 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] +已停止./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 google.com

这样的nmap [选项]的情况下使用
p1 = subprocess.Popen(['nmap', host], stdout=subprocess.PIPE)

我的问题:

它与Python或NMap有关吗?这段代码有什么问题,或者我错过了什么?

1 个答案:

答案 0 :(得分:1)

来自the documentation

  

T0的主要影响是序列化扫描,因此一次只扫描一个端口,并在发送每个探针之间等待五分钟。

-F参数表示"仅扫描100个端口,"但在探测器之间的五分钟时间内, 8小时20分钟,仅适用于端口扫描阶段。假设这些探测都没有丢弃并重新传输,并且目标响应所有探测器。

在绝大多数情况下,-T3(默认值)都没问题。通过快速连接而不是大量目标,-T4甚至可靠。除非你的目标主动检测并阻止扫描,否则-T2是你需要去的最慢的。