使用python调用Nmap并处理返回结果
2021-07-26赵子凯王宇岳雪婷
计算机与网络 2021年10期
赵子凯 王宇 岳雪婷
Nmap 是一款网络扫描和主机侦测的工具,不仅可以用来信息收集和枚举,也可以作为一个漏洞探测器或安全扫描器使用。Nmap 适用于Windows,Linux,Macintosh 等主流操作系統,功能强大,然而在处理返回结果时,由于不同参数的返回结果不同,导致需要使用程序来对返回结果进行处理,让Nmap 扫描的结果能够更加直观。
处理方法
使用python 对Nmap 进行调用,通过处理参数,对返回结果进行解析,让使用者只需要调用函数即可获取所需结果。编写的程序包括对于Nmap 的调用以及结果处理两部分,方便使用者获取Nmap 的返回信息
1. 调用Nmap
首先枚举Nmap 所在位置,通过Nmap V来判断Nmap是否存在以及获取版本,判断逻辑如图所示:
对用户输入参数进行处理,通过subprocess 启动一个新进程来使用Namp 并且获取返回结果。
2. 对返回结果进行处理
通过communicate 获取返回结果与报错,对报错进行处理,对于Nmap 的扫描结果,首先处理编码,保证后续处理不会因为编码报错,如下图所示:
之后对于返回的结果如端口状态、IP 和Mac 地址等逐个进行正则匹配,获取对应参数,并且保存到字典中,如图所示。
通过调用对应方法来获取对应值,例如all_hosts(),封装常用参数调用函数,方便调用,如图所示。
结果测试
通过导入类,指定Nmap 参数,获取参数等来实现结果处理,首先进行扫描,获取扫描参数,如图所示。