freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

python-nmap扫描主机存活状态以及端口
2021-12-10 20:30:40
所属地 河南省

python-nmap可以实现的操作:

主机存活状态:根据目标的反应来确定它是否处于开机并联网的状态。
开放的端口扫描:根据目标端口的反应来判断它是否开放。
服务及版本检测:检测它运行服务的服务类型和版本。
操作系统检测: 识别主机的操作系统

python-nmap安装及配置

1.nmap安装:#

这个不用多说了吧,直接官网下载安装包,根据提示安装就行了,我把官网地址给大家:Nmap: the Network Mapper - Free Security Scanner

2.python中安装模块#

安装模块的话,我们安装python-nmap模块。正常使用pycharm的话,会有两个跟nmap相关的,一个是nmap,另一个是python-nmap

我们选择python-nmap模块

我用的是pycharm安装的,如果是命令行模式就(cmd),直接 pip install python-nmap即可
image
NOTES:python使用namp的话,我们需要安装python-nmap模块,而不是nmap模块,安装nmap模块的话会出现下面这种现象

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'nmap' has no attribute 'PortScanner‘

当然,两个模块都下载的话,可能导致运行不了,这个时候咱们需要把他们两个都卸载,再重新安装python-nmap即可

使用:#

在我们介绍nmap模块之前先跟大家说一下这个类:Portscanner()#
PortScanner时python-nmap模块中非常重要的类,实现nmap扫描有三个类,本文主要针对PortScanner讲解

提这个的原因是小编自己找了好久,一直不知道自己的为什么不能运行,直到。。大佬喷我菜鸡,告诉我不行的话就加上nmap的地址。。。汗颜

所以说你们要是碰到这个问题的话,可以这样来:

nm=nmap.PortScanner(nmap_search_path=('nmap', r"D:\Nmap\nmap.exe"))

r后边的路径是你们自己nmap安装的地址奥

接下来开始介绍用法:

拿扫描一个网段的主机存活状态来说:
1.导入库
import nmap
2.使用PortScanner
nm=nmap.PortScanner('nmap',r"D:\Nmap\nmap.exe")
3.调用函数scan
nm.scan('10.0.55.15','10-100')
scan中的参数详解
scan(self,hosts=‘主机地址(也可以写成整个网段)’,ports=’端口号‘,arguments=’扫描方式’,callback=None,sudo=False)
这里面的callback是以(host,scan_data)为参数的函数,也就是整个网段的扫描
看一下一些命令

nm.command_line()            # 获取用于扫描的命令行
nm.scaninfo()                # 获取nmap扫描信息
nm.all_hosts()               # 获取所有已扫描的主机
nm[host].hostname()          # 获取主机名
nm[host].state()             # 获取主机的状态
nm[host].all_protocols()     # 在(ip | tcp | udp | sctp)中获取所有扫描的协议
nm[host][‘tcp’].keys()       # 获取tcp协议的所有端口(未排序)
nm[host].all_tcp()           # 获取tcp协议的所有端口(已排序版本)
nm[host].has_tcp(22)         # 是否有关于主机上端口22/tcp的任何信息。
nm[host][‘tcp’][22][‘state’] # 获取关于主机上tcp中端口22的信息

了解了这些,大概的思路不就出来了么,接下来放代码:

#导入库
import nmap
#前置信息
nm=nmap.PortScanner(nmap_search_path=('nmap', r"D:\Nmap\nmap.exe"))
nm.scan('10.55.0.15/24',)#扫描整个网段得主机的20-100端口
nm.command_line()#本次扫描的命令
nm.all_hosts()#扫描的所有主机
nm.scaninfo()#扫描的信息列出一个结构
nm.csv()#返回值用csv输出
#print(nm.scaninfo())
for  host in nm.all_hosts():
    print('=================')
    print(host)#ip地址
    print('State : %s' % nm[host].state())#主机存活状态

image

这是最基础的主机存活状态扫描,还有端口协议服务,大家可以一起学习探讨!!!
参考:
https://blog.51cto.com/jojy0/1718961#:~:text=python-n,.tar.gz,

# python扫描工具 # Python 网络编程
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录