我的代码:
#!/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有关吗?这段代码有什么问题,或者我错过了什么?
答案 0 :(得分:1)
T0
的主要影响是序列化扫描,因此一次只扫描一个端口,并在发送每个探针之间等待五分钟。
-F
参数表示"仅扫描100个端口,"但在探测器之间的五分钟时间内, 8小时20分钟,仅适用于端口扫描阶段。假设这些探测都没有丢弃并重新传输,并且目标响应所有探测器。
在绝大多数情况下,-T3
(默认值)都没问题。通过快速连接而不是大量目标,-T4
甚至可靠。除非你的目标主动检测并阻止扫描,否则-T2
是你需要去的最慢的。