Skip to main content
 首页 » 编程设计

python之使用 python nmap 模块扫描先前扫描生成的主机

2024年10月25日32xxx_UU

我一直在直接从 python 命令行玩这个模块,试图弄清楚它是如何工作的,并开始拼凑我想要编写的脚本需要如何工作。我想做的是先进行简单的主机发现扫描,例如 -n -sP -PE,然后使用 all_hosts() 函数为实际端口扫描生成主机列表。所以如果我这样做...

import nmap 
nm = nmap.PortScanner() 
 
nm.scan(hosts='XXX.XXX.XXX.X/24', arguments='-n -sP -PE') 

然后 nm.all_hosts() 准确地给出了我正在寻找的东西,即扫描发现的所有事件主机的简短列表。现在,我遇到的问题是将其传递到下一次扫描中。如果你只是做类似的事情

hostlist = nm.all_hosts() 
nm.scan(hosts=hostlist etc) 

然后它提示无法为主机参数使用列表。好的,有道理。所以我试着让它以逗号分隔,这样它们就会显示为 aaa.aaa.aaa.aaa、bbb.bbb.bbb.bbb 等,方法是...

hostlist = "" 
for item in nm.all_hosts(): 
    hostlist = item + ", " + hostlist 

然后,只是转储主机列表,它看起来就像我想要的那样,但是如果您尝试将其插入主机参数,它会显示“无法解析“alltheipslisted”警告:未指定目标,因此 0已扫描主机。

有没有人对如何着手有任何好的想法?也许转储 IP 然后从文件中提取它们?如果字符串不起作用,我似乎会遇到同样的问题......

请您参考如下方法:

如果您删除逗号,它将起作用。列出多个主机,它们之间只有一个空格。

使用示例:

import nmap 
nm = nmap.PortScanner() 
 
hostlist = ' '.join(nm.all_hosts()) 
nm.scan(hosts=hostlist, arguments='-n -sP -PE')