1

我的 python 脚本中有一个我的 ip 列表,我正在尝试对它们中的每一个运行 nmap 扫描以查找打开的端口。我不断收到此错误:

Traceback (most recent call last):
  File "rscan.py", line 33, in <module>
    main()
  File "rscan.py", line 30, in main
    vulnscan(nm, L)
  File "rscan.py", line 6, in vulnscan
    for port in nm[item].all_tcp():
  File "build/bdist.linux-x86_64/egg/nmap/nmap.py", line 567, in __getitem__
KeyError: u'IP ADDRESS HERE'

(不过,“IP ADDRESS HERE”部分中有一个实际的 IP 地址。)

我尝试的代码的扫描部分是:

for item in L:
        for port in nm[item].all_tcp():
            state= nm[item]['tcp'][port]['state']
            if state== 'open':
                print state

'L' 是包含我的 IP 地址的列表。

使用 nmap 扫描一小部分 IP 地址以查找开放端口的正确方法是什么?

4

1 回答 1

0

像这样,根据您的代码:

for item in L:
    if item in nm.all_hosts():
        for port in nm[item].all_tcp():
            state = nm[item]['tcp'][port]['state']
            if state == 'open':
                print state

检查指定ip的地址是否在nm.all_hosts()(返回列表ips)允许您nm[item]事后安全地查询。

请注意,您可以通过简单地将 L 列表与 nm.all_hosts() 返回的 IP 地址列表相交来使此代码更简洁:

items = list(set(L) & set(nm.all_hosts()))

for item in items:
    for port in nm[item].all_tcp():
        state = nm[item]['tcp'][port]['state']
        if state == 'open':
            print state
于 2014-12-29T20:20:02.647 回答