python-nmap扫描主机存活状态以及端口

admin 2022年1月9日04:05:43安全开发评论26 views1992字阅读6分38秒阅读模式

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即可


python-nmap扫描主机存活状态以及端口


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:Nmapnmap.exe"))

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


接下来开始介绍用法:


拿扫描一个网段的主机存活状态来说:
1.导入库
import nmap
2.使用PortScanner
nm=nmap.PortScanner('nmap',r"D:Nmapnmap.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:Nmapnmap.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())#主机存活状态

python-nmap扫描主机存活状态以及端口


这是最基础的主机存活状态扫描,还有端口协议服务,大家可以一起学习探讨!!!

python-nmap扫描主机存活状态以及端口

原文始发于微信公众号(疯猫网络):python-nmap扫描主机存活状态以及端口

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月9日04:05:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  python-nmap扫描主机存活状态以及端口 http://cn-sec.com/archives/728317.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: