在Python程序中使用nmap库

2024-06-07 16:21:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的Python程序,它使用nmap库进行端口扫描。在

from optparse import OptionParser
import nmap  
from threading import * 

screenLock=Semaphore(value=1)

def nmapScan(thost,tport):
    x=nmap.PortScanner()
    x.scan(thost,tport)
    state=x[thost]['tcp'][int(tport)]['state']
    print "[*]" + thost + "tcp/"+tport+" "+state


def main():
    parser=OptionParser('usage %prog -H <target host> -p <target port>')
    parser.add_option('-H',dest='thost',type='string',help='specify target host')
    parser.add_option('-p',dest='tports',type='string',help='specify target port[s] seperated by comma')
    (options,args)=parser.parse_args()
    thost=options.thost
    tports=options.tports
    tports=tports.split(',')
    if (thost==None)|(tports==None):
        print parser.usage
        exit(0)
    for i in tports:
        nmapScan(thost,i)

main()

当我运行程序时,我得到以下错误。在

^{pr2}$

我尝试在命令行中使用url而不是ip。但我也犯了同样的错误。作为Python的新手,我无法理解和解决这个问题。在


Tags: fromimport程序parsertargetdefnmaptcp
2条回答

x(的实例nmap.PortScanner)不包含这些键。为了能够迭代扫描结果,可以执行以下操作:

for host, result in x._scan_result['scan'].items():
    print "[*]" + thost + "tcp/" + tport + " " + result['status']['state']

最好是查看pythonnmap的文档或源代码,看看还有哪些有用的信息可用,例如侦听该端口的服务名称和版本。在

更多信息:https://bitbucket.org/xael/python-nmap/src/f368486a2cf12ce2bf3d5978614586e89c49c417/nmap/nmap.py?at=default&fileviewer=file-view-default#nmap.py-381

在扫描结果中,主机不作为构成扫描数据抛出的数据一部分的字典的“键”存在。在我看来,这可能就是错误的原因。谢谢

相关问题 更多 >

    热门问题