电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 801 人浏览分享

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

[复制链接]
801 0
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即可

QQ截图20220108144541.png

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())#主机存活状态

136.png

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

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.