利用 Python 和 Nmap 构建一个强大的网络扫描器
我们可以使用 Python 的第三方库 python-nmap
来和 Nmap 进行交互,从而构建一个网络扫描器。以下是具体步骤和示例代码:
- 安装
python-nmap
库
可以通过在命令行中运行以下命令来安装:
pip install python-nmap
- 导入必要模块和定义 IP 地址
首先,我们需要导入 nmap
和 socket
模块,并定义需要扫描的 IP 地址:
import nmap import socket # Defining the target IP address or hostname target_host = "pidancode.com"
- 定义一个函数来扫描 IP 地址
我们可以定义一个函数来扫描 IP 地址,并使用 nmap.PortScanner()
对象来配置扫描选项:
def scan(target_host): nm = nmap.PortScanner() nm.scan(hosts=target_host, arguments='-sS -O -F -T4') for host in nm.all_hosts(): print('Host : %s (%s)' % (host, nm[host].hostname())) print('State : %s' % nm[host].state()) for proto in nm[host].all_protocols(): print('----------') print('Protocol : %s' % proto) lport = nm[host][proto].keys() for port in sorted(lport): print('port : %s\tstate : %s' % (port, nm[host][proto][port]['state']))
在上面的代码中,我们使用了以下扫描选项:
-sS
:使用 SYN 扫描,这是一种最常用的扫描技术之一。-O
:进行操作系统探测,这将帮助我们识别目标系统正在运行的操作系统。-F
:进行快速扫描,这将扫描常用端口而不是所有端口。-T4
:设置扫描速度,这将使扫描速度更快而不影响扫描结果。
- 运行扫描函数并输出结果
最后,我们可以运行 scan()
函数,并输出扫描结果:
# Running the scan function if __name__ == '__main__': print('Starting scan on host:', target_host) scan(target_host)
下面是完整的示例代码,你可以将其复制到你的 Python 环境中并运行:
import nmap import socket # Defining the target IP address or hostname target_host = "pidancode.com" def scan(target_host): nm = nmap.PortScanner() nm.scan(hosts=target_host, arguments='-sS -O -F -T4') for host in nm.all_hosts(): print('Host : %s (%s)' % (host, nm[host].hostname())) print('State : %s' % nm[host].state()) for proto in nm[host].all_protocols(): print('----------') print('Protocol : %s' % proto) lport = nm[host][proto].keys() for port in sorted(lport): print('port : %s\tstate : %s' % (port, nm[host][proto][port]['state'])) # Running the scan function if __name__ == '__main__': print('Starting scan on host:', target_host) scan(target_host)
运行结果将如下所示:
Starting scan on host: pidancode.com Host : 47.52.47.125 () State : up ---------- Protocol : tcp port : 22 state : open port : 80 state : open port : 443 state : open
相关文章