我有一个简单的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的新手,我无法理解和解决这个问题。在
x
(的实例nmap.PortScanner)不包含这些键。为了能够迭代扫描结果,可以执行以下操作:最好是查看pythonnmap的文档或源代码,看看还有哪些有用的信息可用,例如侦听该端口的服务名称和版本。在
更多信息:https://bitbucket.org/xael/python-nmap/src/f368486a2cf12ce2bf3d5978614586e89c49c417/nmap/nmap.py?at=default&fileviewer=file-view-default#nmap.py-381
在扫描结果中,主机不作为构成扫描数据抛出的数据一部分的字典的“键”存在。在我看来,这可能就是错误的原因。谢谢
相关问题 更多 >
编程相关推荐