0%

nmap模块

摘要

  • python中的nmap模块

windows下python使用nmap库

在 Windows 下使用 Python 的 nmap 库,需要完成以下步骤:


步骤 1:安装 Nmap 工具

  1. 下载 Nmap
  2. 安装 Nmap
    • 按照提示完成安装。
    • 确保 nmap.exe 的路径已添加到环境变量 PATH,否则需要手动配置。

步骤 2:安装 python-nmap

python-nmap 是 Python 的第三方库,用于与 Nmap 交互。

使用 pip 安装:

1
pip install python-nmap

步骤 3:验证安装

运行以下代码以验证 Nmap 是否正确安装,并通过 Python 可以调用:

1
2
3
4
5
import nmap

# 检查 Nmap 版本
nm = nmap.PortScanner()
print("Nmap version:", nm.nmap_version())

可能的输出

如果安装正确,会输出类似以下内容:

1
Nmap version: (7, 93)

如果 nmap.exe 未正确配置,可能会出现以下错误:

1
nmap executable was not found. Please install Nmap and add it to your PATH.

在这种情况下,确保 Nmap 的安装路径已添加到 PATH 环境变量中,例如:

1
C:\Program Files (x86)\Nmap

步骤 4:使用示例代码

简单端口扫描

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import nmap

# 创建 Nmap 扫描器
nm = nmap.PortScanner()

# 扫描本地主机的指定端口
nm.scan('127.0.0.1', '22-443')

# 输出扫描结果
for host in nm.all_hosts():
print(f"Host: {host} ({nm[host].hostname()})")
print(f"State: {nm[host].state()}")
for proto in nm[host].all_protocols():
print(f"Protocol: {proto}")
ports = nm[host][proto].keys()
for port in ports:
print(f"Port: {port}\tState: {nm[host][proto][port]['state']}")

检测局域网中的存活主机

1
2
3
4
5
6
7
8
9
10
11
import nmap

# 创建 Nmap 扫描器
nm = nmap.PortScanner()

# 执行 ping 扫描
nm.scan(hosts='192.168.1.0/24', arguments='-sn')

# 输出存活主机列表
for host in nm.all_hosts():
print(f"Host: {host} is {nm[host].state()}")

执行自定义扫描

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import nmap

# 创建 Nmap 扫描器
nm = nmap.PortScanner()

# 自定义扫描命令
nm.scan(hosts='127.0.0.1', arguments='-sS -p 80')

# 输出结果
for host in nm.all_hosts():
print(f"Host: {host} ({nm[host].hostname()})")
print(f"State: {nm[host].state()}")
for proto in nm[host].all_protocols():
print(f"Protocol: {proto}")
ports = nm[host][proto].keys()
for port in ports:
print(f"Port: {port}\tState: {nm[host][proto][port]['state']}")

注意事项

  1. Nmap 必须安装并可通过命令行调用

    • 确保 Nmap 的安装路径(例如 C:\Program Files (x86)\Nmap)添加到 PATH 环境变量中。
    • 可以在命令行运行以下命令测试:
      1
      nmap --version
  2. 管理员权限

    • 在某些情况下,Nmap 的某些扫描模式(如 -sS)需要管理员权限运行。
  3. 合法性

    • 使用 Nmap 进行扫描时,请确保已获得目标网络的授权,避免造成不必要的法律问题。

常见问题

  1. nmap executable was not found

    • 检查是否正确安装了 Nmap,并确保其路径已添加到 PATH 环境变量中。
  2. Access Denied

    • 某些扫描模式需要管理员权限运行,请以管理员身份运行脚本。
  3. Nmap 执行效率较低

    • 复杂的扫描可能需要时间,可以优化参数(如限制端口范围)。

如果遇到其他问题或需要进一步的帮助,请告诉我!

python nmap工具

在 Python 中,可以使用 nmap 工具进行网络扫描任务。借助第三方库 **python-nmap**(一个用于与 Nmap 交互的封装),可以方便地通过 Python 脚本调用 Nmap 的功能。


安装 python-nmap

使用 pip 安装库:

1
pip install python-nmap

基本使用

以下是使用 python-nmap 执行网络扫描的示例代码:

1. 执行简单的端口扫描

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import nmap

# 创建 Nmap 扫描器
nm = nmap.PortScanner()

# 扫描指定主机的端口
nm.scan('127.0.0.1', '22-80')

# 输出扫描结果
for host in nm.all_hosts():
print(f"Host: {host} ({nm[host].hostname()})")
print(f"State: {nm[host].state()}")
for proto in nm[host].all_protocols():
print(f"Protocol: {proto}")
ports = nm[host][proto].keys()
for port in ports:
print(f"Port: {port}\tState: {nm[host][proto][port]['state']}")

2. 检测主机存活

1
2
3
4
5
6
7
8
9
10
11
import nmap

# 创建 Nmap 扫描器
nm = nmap.PortScanner()

# 使用 Nmap 的 ping 扫描功能
nm.scan(hosts='192.168.1.0/24', arguments='-sn')

# 输出存活主机列表
for host in nm.all_hosts():
print(f"Host: {host}, State: {nm[host].state()}")

3. 执行自定义扫描

可以通过 arguments 参数传递 Nmap 命令行选项。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import nmap

# 创建 Nmap 扫描器
nm = nmap.PortScanner()

# 自定义 Nmap 参数进行扫描
nm.scan(hosts='127.0.0.1', arguments='-sS -p 22-80')

# 输出扫描结果
for host in nm.all_hosts():
print(f"Host: {host} ({nm[host].hostname()})")
print(f"State: {nm[host].state()}")
for proto in nm[host].all_protocols():
print(f"Protocol: {proto}")
ports = nm[host][proto].keys()
for port in ports:
print(f"Port: {port}\tState: {nm[host][proto][port]['state']}")

4. 获取 Nmap 版本信息

1
2
3
4
5
6
import nmap

nm = nmap.PortScanner()

# 检查 Nmap 版本
print(nm.nmap_version())

主要方法

  • scan(hosts, ports, arguments):执行扫描。

    • **hosts**:目标主机,支持单个 IP 或子网范围(如 192.168.1.0/24)。
    • **ports**:扫描的端口范围(如 22-80)。
    • **arguments**:Nmap 命令行参数(如 -sS 表示 TCP SYN 扫描)。
  • all_hosts():获取所有扫描到的主机列表。

  • has_host(host):检查某个主机是否在扫描结果中。

  • nmap_version():获取当前使用的 Nmap 版本。

  • command_line():获取扫描的完整 Nmap 命令行。


依赖环境

  • 需要本地安装 Nmap 工具(python-nmap 是对 Nmap 的封装)。
  • 确保 Nmap 命令可通过命令行访问。

安装 Nmap 工具的命令示例:


注意事项

  1. 执行扫描时可能需要管理员权限,特别是在使用特定扫描模式(如 -sS)时。
  2. 使用网络扫描工具时,请确保合法合规,避免未经授权对他人网络进行扫描。
  3. 如果需要更复杂的扫描(如漏洞检测),可以结合其他工具(如 nmap 的 NSE 脚本功能)。

如果你有其他需求(如结合 Python 进行自动化扫描分析),可以告诉我!

感谢老板支持!敬礼(^^ゞ