当前位置: 首页 > news >正文

python-nmap库使用教程(Nmap网络扫描器的Python接口)(功能:主机发现、端口扫描、操作系统识别等)

文章目录

  • Python-nmap库使用教程
    • 前置条件
    • 引入python-nmap
    • 创建Nmap扫描实例
    • 执行简单的主机发现(`nmap -sn`)
      • 示例,我有一台主机配置为不响应 ICMP 请求,但使用`nmap -sn`,仍然能够探测到设备:
    • 端口扫描
      • 扫描特定端口
      • 扫描多个端口和主机
    • 获取扫描结果
    • 解析高级扫描信息
    • 错误处理和异常
    • 使用Python-nmap进行OS指纹识别(猜测目标主机操作系统类型)
    • 总结

Python-nmap库使用教程

Python-nmap是一个Python库,用于帮助进行网络扫描。它是Nmap网络扫描器的Python接口,允许开发者从Python脚本中直接调用Nmap的功能。这篇文章将详细介绍如何使用python-nmap库来执行各种网络扫描任务。

前置条件

在开始之前,需要确保安装了Nmap和python-nmap库。可以通过以下命令安装Nmap:

sudo apt-get install nmap

对于python-nmap库,可以使用pip进行安装:

pip install python-nmap

引入python-nmap

要在Python代码中使用nmap,首先需要导入库:

import nmap

创建Nmap扫描实例

创建一个Nmap扫描实例是使用python-nmap进行扫描的第一步。下面的代码演示了如何创建一个Nmap扫描器对象:

nm = nmap.PortScanner()

执行简单的主机发现(nmap -sn

扫描一个或多个IP地址,以检查它们是否在线:

nm.scan(hosts='192.168.1.0/24', arguments='-sn')

上面的命令使用了-sn参数,这是Nmap的ping扫描选项,用于执行主机发现而不是端口扫描。-sn选项除了发送ICMP回显请求(即ping请求),还会发送TCP和/或UDP包到特定的端口。

示例,我有一台主机配置为不响应 ICMP 请求,但使用nmap -sn,仍然能够探测到设备:

用Advanced IP Scanner工具查看192.168.1.118设备是在线的:

在这里插入图片描述

配置了不响应ICMP请求:
在这里插入图片描述

nmap -sn 192.168.1.118

在这里插入图片描述

nmap -PR也可以,但耗时较长:

nmap -PR 192.168.1.118

在这里插入图片描述

端口扫描

扫描特定端口

可以指定扫描单个主机上的特定端口:

nm.scan('127.0.0.1', '22-443')

这将扫描本地主机(127.0.0.1)上从22到443之间的所有端口。

扫描多个端口和主机

也可以同时扫描多个端口和主机:

nm.scan('192.168.1.0/24 10.0.0.0/24', '22,80,443')

此命令会扫描两个子网内的主机,只检查端口22、80和443。

获取扫描结果

完成扫描后,可以获取关于发现的每个主机的信息:

for host in nm.all_hosts():print('Host : %s (%s)' % (host, nm[host].hostname()))print('State : %s' % nm[host].state())

上述代码将打印出所有已扫描主机的IP地址、主机名和状态(例如,‘up’或’down’)。

解析高级扫描信息

除了基础信息外,还可以获取更多细节,如开放端口和相应的服务信息:

for host in nm.all_hosts():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']))

此段代码会列出每个主机的所有开放端口及其状态。

错误处理和异常

使用python-nmap时,需要考虑到异常情况,比如扫描权限不足、网络问题等。可以通过try-except块来捕获和处理这些异常:

try:nm.scan(hosts='192.168.1.0/24', arguments='-sS')
except nmap.PortScannerError as e:print("Scan error: " + str(e))
except Exception as e:print("Unexpected error: " + str(e))

在上面的代码中,PortScannerError捕获了与Nmap扫描相关的错误,而其他类型的异常则被通用的Exception捕获。

使用Python-nmap进行OS指纹识别(猜测目标主机操作系统类型)

Python-nmap可以使用Nmap的操作系统指纹识别功能来猜测目标主机上运行的操作系统类型。以下是如何实现的示例代码:

nm.scan(hosts='192.168.1.100', arguments='-O')
if 'osclass' in nm['192.168.1.100']:for osclass in nm['192.168.1.100']['osclass']:print('OSClass.type : {0}'.format(osclass['type']))print('OSClass.vendor : {0}'.format(osclass['vendor']))print('OSClass.osfamily : {0}'.format(osclass['osfamily']))print('OSClass.osgen : {0}'.format(osclass['osgen']))print('OSClass.accuracy : {0}'.format(osclass['accuracy']))print('')

这段代码尝试对IP为192.168.1.100的主机进行操作系统检测,并打印出可能的操作系统类别、供应商、家族和生成等信息。

总结

Python-nmap是一个功能强大的工具,可以用来增强网络扫描和主机发现过程。通过以上介绍和代码示例,应该能够开始使用python-nmap库来执行各种网络扫描任务。当然,进行网络扫描时,始终需要遵守相关法律法规,确保扫描活动是合法且有授权的。

相关文章:

python-nmap库使用教程(Nmap网络扫描器的Python接口)(功能:主机发现、端口扫描、操作系统识别等)

文章目录 Python-nmap库使用教程前置条件引入python-nmap创建Nmap扫描实例执行简单的主机发现(nmap -sn)示例,我有一台主机配置为不响应 ICMP 请求,但使用nmap -sn,仍然能够探测到设备: 端口扫描扫描特定端…...

什么是智慧工地?

一、什么是智慧工地? 工地本身不拥有智慧,工地的运作是依赖于人的智慧。工地信息化技术,能够减少对人的依赖,使工地拥有智慧。 智慧工地,就是立足于“智慧城市”和“互联网”,采用云计算、大数据和物联网等…...

【古月居《ros入门21讲》学习笔记】08_发布者Publisher的编程实现

目录 说明: 1. 话题模型 图示 说明 2. 实现过程(C) 创建功能包 创建发布者代码(C) 配置发布者代码编译规则 编译并运行 编译 运行 3. 实现过程(Python) 创建发布者代码(…...

沿着马可·波罗的足迹,看数字云南

刚入行的时候,有位前辈跟我说过一句话:去现场“要像外国人一样去看”,重新审视那些自己可能早已“熟视无睹”的事物。 前不久,我跟随“看见数字云南——云南数字经济媒体探营活动”,奔赴昆明、大理、西双版纳等地&…...

记录问题-使用@Validated报错Validation failed for argument [0]

类字段 NotNull(message "双坐标不能为空", groups {Insert.class, Update.class})private Integer yAxisType;接口 /*** 添加** return*/RequestMapping(value "/add", method RequestMethod.POST)public Result add(Validated(Insert.class) Request…...

three.js--立方体

作者:baekpcyyy🐟 使用three.js渲染出可以调节大小的立方体 1.搭建开发环境 1.首先新建文件夹用vsc打开项目终端 2.执行npm init -y 创建配置文件夹 3.执行npm i three0.152 安装three.js依赖 4.执行npm I vite -D 安装 Vite 作为开发依赖 5.根…...

App的测试,和传统软件测试有哪些区别?应该增加哪些方面的测试用例?

从上图可知,测试人员所测项目占比中,App测试占比是最高的。 这就意味着学习期间,我们要花最多的精力去学App的各类测试。也意味着我们找工作前,就得知道,App的测试点是什么,App功能我们得会测试&#xff0…...

改进LiteOS中物理内存分配算法(详细实验步骤+相关源码解读)

一、实验要求 优化TLSF算法,将Best-fit策略优化为Good-fit策略,进一步降低时间复杂度至O(1)。 优化思路: 1.初始化时预先为每个索引中的内存块挂上若干空闲块,在实际分配时避免分割(split)操作&#xff…...

洛谷100题DAY8

36.P1416 攻击火星 此题找出规律即可 #include<bits/stdc.h> using namespace std; int n; int main() {cin >> n;cout << max(0, n - 2);return 0; } 37.P1551 亲戚 并查集模板题目 两个人如果使亲戚就合并建立联系&#xff0c;最后进行查找即可 #incl…...

2. OpenHarmony源码下载

OpenHarmony源码下载(windows, ubuntu) 现在的 OpenHarmony 4.0 源码已经有了&#xff0c;在 https://gitee.com/openharmony 地址中&#xff0c;描述了源码获取的方式。下来先写下 windows 的获取方式&#xff0c;再写 ubuntu 的获取方式。 获取源码前&#xff0c;还需要的准…...

flask app.config 用法

flask app.config flask app.config 是 Flask 应用程序的配置对象。它包含了 Flask 应用程序的所有配置信息&#xff0c;如数据库连接、密钥、调试模式等。 常用的 app.config 配置项如下&#xff1a; DEBUG&#xff1a;调试模式&#xff0c;默认为 False。 SECRET_KEY&…...

【Vue】【uni-app】实现工单列表项详情页面

这次主要实现的是一个工单详情页面 从工单列表项中点击详情 跳转到工单详情页面&#xff0c;这个详情页面就是这次我们要实现的页面&#xff0c;并可以通过点击这个关闭按钮返回到工单列表页面 首先是在我们原有的工单列表页面的按钮增加一个点击跳转 <button size"m…...

安装vmware_esxi 超详细

安装vmware_esxi 超详细 </h2><div id"cnblogs_post_body" class"blogpost-body blogpost-body-html">esxi安装手册 1、esxi介绍 ESXI原生架构模式的虚拟化技术&#xff0c;是不需要宿主操作系统的&#xff0c;它自己本身就是操作系统。因此…...

Spring-Mybatis源码解析--手写代码实现Spring整合Mybatis

文章目录 前言一、引入&#xff1a;二、准备工作&#xff1a;2.1 引入依赖2.2 数据源的文件&#xff1a;2.1 数据源&#xff1a; 2.3 业务文件&#xff1a; 三、整合的实现&#xff1a;3.1 xxxMapper 接口的扫描&#xff1a;3.2 xxxMapper 接口代理对象的生成&#xff1a;3.2 S…...

5.2 Windows驱动开发:内核取KERNEL模块基址

模块是程序加载时被动态装载的&#xff0c;模块在装载后其存在于内存中同样存在一个内存基址&#xff0c;当我们需要操作这个模块时&#xff0c;通常第一步就是要得到该模块的内存基址&#xff0c;模块分为用户模块和内核模块&#xff0c;这里的用户模块指的是应用层进程运行后…...

聊聊Go语言的注释

文章目录 聊聊Go语言的注释一、注释的格式1.1 块注释1.2 行注释 二、包注释三、命令注释四、类型注释4.1 实例注释4.2 并发安全注释4.3 零值注释4.4 导出字段注释 五、函数注释5.1 参数/返回值/函数作用注释5.2 bool返回值函数注释5.3 形参/返回值名称注释5.4 并发安全注释5.5 …...

皮肤警告,羊大师讲解身体与环境的默契

皮肤警告&#xff0c;羊大师讲解身体与环境的默契 我们常常忽视身体皮肤所承受的压力和警告信号。皮肤是身体的第一道屏障&#xff0c;也是与外界环境直接接触的组织。我们的皮肤通过各种方式向我们传达信息&#xff0c;警告我们关于身体健康的重要问题。本文小编羊大师将带大…...

使用NVM管理多个Nodejs版同时支持vue2、vue3

1.安装nvm,下载地址&#xff1a; https://github.com/coreybutler/nvm-windows/releases/tag/1.1.12 2.nvm常用命令 Usage:nvm arch : Show if node is running in 32 or 64 bit mode.nvm current : Display active version.nvm debug …...

Android帝国之进程杀手--lmkd

本文概要 这是Android系统启动的第三篇文章&#xff0c;本文以自述的方式来讲解lmkd进程&#xff0c;通过本文您将了解到lmkd进程在安卓系统中存在的意义&#xff0c;以及它是如何杀进程的。&#xff08;文中的代码是基于android13&#xff09; 我是谁 init&#xff1a;“大…...

堆栈_队列实现栈

//请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 // // 实现 MyStack 类&#xff1a; // // // void push(int x) 将元素 x 压入栈顶。 // int pop() 移除…...

Unity游戏翻译解决方案:多框架适配与实时翻译优化应用指南

Unity游戏翻译解决方案&#xff1a;多框架适配与实时翻译优化应用指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator Unity游戏翻译技术正成为全球化游戏开发的关键环节&#xff0c;XUnity.AutoTranslat…...

从灰度世界到边缘检测:4种AWB算法MATLAB实现对比(附完整代码)

从灰度世界到边缘检测&#xff1a;4种AWB算法MATLAB实现对比&#xff08;附完整代码&#xff09; 在工业级图像信号处理&#xff08;ISP&#xff09;流水线中&#xff0c;自动白平衡&#xff08;AWB&#xff09;算法是确保色彩还原准确性的关键技术。不同场景下的色温变化会导致…...

YOLOE镜像从入门到精通:环境激活、代码预测、训练微调全流程

YOLOE镜像从入门到精通&#xff1a;环境激活、代码预测、训练微调全流程 1. 镜像环境准备与快速启动 1.1 环境配置检查 YOLOE官方镜像已经预装了所有必要的依赖项和工具链&#xff0c;确保开发者可以立即开始工作而无需担心环境配置问题。以下是关键环境信息&#xff1a; 项…...

REX-UniNLU与LaTeX协同工作:智能学术论文写作助手

REX-UniNLU与LaTeX协同工作&#xff1a;智能学术论文写作助手 科研写作的痛点&#xff0c;只有经历过的人才懂&#xff1a;反复调整格式、手动整理参考文献、绞尽脑汁写图表描述... 但现在&#xff0c;AI技术正在改变这一切。 1. 学术写作的新革命 如果你正在写学术论文&#…...

OpenClaw备份策略:Qwen3-14B镜像+自动化配置云端同步

OpenClaw备份策略&#xff1a;Qwen3-14B镜像自动化配置云端同步 1. 为什么需要备份OpenClaw系统 上周我的主力开发机突然硬盘故障&#xff0c;导致三个月的OpenClaw配置和技能包全部丢失。这种切肤之痛让我意识到&#xff1a;自动化系统越是智能&#xff0c;灾备方案就越要可…...

CHORD-X深度研究报告生成终端LaTeX排版集成:生成可直接编译的学术报告

CHORD-X深度研究报告生成终端LaTeX排版集成&#xff1a;生成可直接编译的学术报告 每次写学术报告或者技术文档&#xff0c;最头疼的是什么&#xff1f;对我而言&#xff0c;不是内容本身&#xff0c;而是最后的排版。内容写好了&#xff0c;却要花大量时间在Word里调整格式、…...

实战踩坑记录:用Cesium控制无人机飞行轨迹,Entity的HPR姿态更新那些‘坑’

实战踩坑记录&#xff1a;用Cesium控制无人机飞行轨迹&#xff0c;Entity的HPR姿态更新那些‘坑’ 在数字孪生和飞行模拟领域&#xff0c;精确控制无人机或其他飞行器的三维姿态一直是个技术难点。最近接手了一个无人机航迹回放项目&#xff0c;需要根据预设航点动态调整无人机…...

DeepChat行业应用:生物医药文献摘要→靶点关系提取→实验设计建议

DeepChat行业应用&#xff1a;生物医药文献摘要→靶点关系提取→实验设计建议 1. 项目背景与核心价值 在生物医药研发领域&#xff0c;研究人员每天需要阅读大量文献&#xff0c;从海量信息中提取关键发现、识别药物靶点关系&#xff0c;并设计后续实验方案。传统的人工处理方…...

多智能体强化学习调参新思路:为什么你的MAPPO在离散环境不收敛?

多智能体强化学习调参新思路&#xff1a;为什么你的MAPPO在离散环境不收敛&#xff1f; 当你在连续环境中轻松实现MAPPO&#xff08;Multi-Agent Proximal Policy Optimization&#xff09;的收敛后&#xff0c;转向离散环境时却遭遇了令人沮丧的失败——这不是个例。许多中高级…...

【回眸】系统读书笔记(十)盘点调动资源

目录 前言 资源盘点可以帮你创造选择 三类人生资源 直接价值资源 知识技能类&#xff1a;认知储备和实操能力、学科知识、行业认知、上手操作的技能 记录行为和结果&#xff1a;干成过什么、搞定过什么、负责过什么&#xff1f; 能力逆向推导&#xff1a;把行为翻译成资源…...