windows下python-nmap运行过程中出现的问题及解决办法

本文介绍了解决Windows环境下使用Python Nmap模块时遇到的路径问题。通过手动指定Nmap执行文件路径解决了找不到Nmap程序的问题,并给出了修改后的完整代码示例及运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)问题描述

  在windows下会抛出以下异常。

Traceback (most recent call last):  
  File "ftplogin_file.py", line 111, in <module>  
    main()  
  File "ftplogin_file.py", line 109, in main  
    ftpLogin(filepath)  
  File "ftplogin_file.py", line 77, in ftpLogin  
    if nmapScan(ip,"21") == True:  
  File "ftplogin_file.py", line 8, in nmapScan  
    nmScan = nmap.PortScanner()  
  File "C:\Python27\lib\site-packages\nmap\nmap.py", line 144, in __init__  
    raise PortScannerError('nmap program was not found in path. PATH is : {0}'.f  
ormat(os.getenv('PATH')))  
nmap.nmap.PortScannerError: 'nmap program was not found in path. PATH is : C:\\W  
INDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\Python27;D:\\WPS Of  
fice\\9.1.0.4468\\office6;C:\\Program Files\\Microsoft Visual Studio\\Common\\To  
ols\\WinNT;C:\\Program Files\\Microsoft Visual Studio\\Common\\MSDev98\\Bin;C:\\  
Program Files\\Microsoft Visual Studio\\Common\\Tools;C:\\Program Files\\Microso  
ft Visual Studio\\VC98\\bin'  

抛出异常的地方

nmScan = nmap.PortScanner()

 

 

2)解决方案

  抛出异常的原因是因为没有指定nmap的执行路径所致,在windows下需要手动指定nmap的执行路径。

修改后

nmScan = nmap.PortScanner(nmap_search_path=('nmap',r"H:\Nmap\nmap.exe"))

 

3)修改后的完整代码

import nmap
import optparse

def nmapScan(tgtHost,tgtPort):
    nmScan = nmap.PortScanner(nmap_search_path=('nmap',r"H:\Nmap\nmap.exe"))
    nmScan.scan(tgtHost,tgtPort)
    state = nmScan[tgtHost]['tcp'][int(tgtPort)]['state']
    print '[*]' + tgtHost + ' tcp/' + tgtPort + ' ' + state

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

if __name__ == '__main__':
    main()

 

4)再次运行,运行结果如下

D:\Python-Nmap>python2 test.py -H 192.168.1.44 -p 21,22,1720
[*]192.168.1.44 tcp/21 closed
[*]192.168.1.44 tcp/22 closed
[*]192.168.1.44 tcp/1720 closed

 

转载于:https://www.cnblogs.com/always9/p/8042816.html

Windows系统下使用Python-nmap可以进行网络扫描和端口扫描。Python-nmap是一个Python库,它封装了Nmap安全扫描工具的功能,可以通过Python代码来调用Nmap进行扫描操作。 要在Windows系统中使用Python-nmap,首先需要确保已经安装了PythonNmap。以下是使用Python-nmap的基本步骤: 1. 安装Python:从Python官方网站下载并安装适合您系统的Python版本。 2. 安装Nmap:从Nmap官方网站下载并安装适合您系统的Nmap版本。 3. 安装Python-nmap库:打开命令提示符或者PowerShell,并执行以下命令来安装Python-nmap库: ``` pip install python-nmap ``` 4. 编写Python代码:创建一个Python脚本文件,例如`scan.py`,并在其中编写扫描代码。以下是一个简单的示例: ```python import nmap nm = nmap.PortScanner() result = nm.scan('127.0.0.1', '22-443') for host in result['scan']: print('Host: %s' % host) for port in result['scan'][host]['tcp']: print('Port: %s\tState: %s' % (port, result['scan'][host]['tcp'][port]['state'])) ``` 上述代码使用了`nmap.PortScanner()`创建了一个扫描器对象,然后使用`scan()`方法对指定IP地址和端口范围进行扫描。扫描结果存储在`result`变量中,可以根据需要进行处理和输出。 5. 运行Python脚本:在命令提示符或者PowerShell中执行以下命令来运行Python脚本: ``` python scan.py ``` 执行后,您将看到扫描结果输出在命令行中。 希望以上介绍对您有帮助!如果您有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值