python nmap实现端口扫描器教程


Posted in Python onMay 28, 2020

NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。

nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。

正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。

Nmap 常被跟评估系统漏洞软件Nessus 混为一谈。Nmap 以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作。

Nmap 在黑客帝国(The Matrix)中,连同SSH1的32位元循环冗余校验漏洞,被崔妮蒂用以入侵发电站的能源管理系统。

基本功能有三个:

  • 一是探测一组主机是否在线
  • 其次是扫描 主机端口,嗅探所提供的网络服务;
  • 还可以推断主机所用的操作系统 。

Nmap可用于扫描仅有两个节点的LAN,直至500个节点以上的网络。Nmap 还允许用户定制扫描技巧。通常,一个简单的使用ICMP协议的ping操作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至主机所 使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一步分析操作。

nmap安装

nmap安装:

Windows:https://nmap.org/ 下载安装包,正常安装就好。

Linux:sudo apt-get install nmap

再安装python-nmap(针对Python3,未来趋势而已。2.x的基本不要玩了)

pip3 install python-nmap

Python操作nmap

ping扫描,支持域名,公网IP地址,IP地址段,批量IP地址。

import nmap
import sys


def nmap_ping_scan(network_prefix):
 # 创建一个扫描实例
 nm = nmap.PortScanner()
 # 配置nmap参数
 ping_scan_raw_result = nm.scan(hosts=network_prefix, arguments='-v -n -sn')
 # 分析扫描结果,并放入主机清单
 host_list = [result['addresses']['ipv4'] for result in ping_scan_raw_result['scan'].values() if
 result['status']['state'] == 'up']
 return host_list


if __name__ == '__main__':
 for host in nmap_ping_scan('www.rspt.org.cn'):
 print('%-20s %5s' % (host, 'is UP'))

E:\CodeLibrarySoftware\Anaconda3\python3.exe
47.94.150.6 is UP
Process finished with exit code 0

A扫描,支持域名,公网IP地址,IP地址段,批量IP地址。

import nmap
import sys


def nmap_A_scan(network_prefix):
 nm = nmap.PortScanner()
 # 配置nmap扫描参数
 scan_raw_result = nm.scan(hosts=network_prefix, arguments='-v -n -A')
 # 分析扫描结果
 for host, result in scan_raw_result['scan'].items():
 if result['status']['state'] == 'up':
 print('#' * 17 + 'Host:' + host + '#' * 17)
 print('-' * 20 + '操作系统猜测' + '-' * 20)
 for os in result['osmatch']:
 print('操作系统为:' + os['name'] + ' ' * 3 + '准确度为:' + os['accuracy'])
 idno = 1
 try:
 for port in result['tcp']:
 try:
 print('-' * 17 + 'TCP服务器详细信息' + '[' + str(idno) + ']' + '-' * 17)
 idno += 1
 print('TCP端口号:' + str(port))
 try:
 print('状态:' + result['tcp'][port]['state'])
 except:
 pass
 try:
 print('原因:' + result['tcp'][port]['reason'])
 except:
 pass
 try:
 print('额外信息:' + result['tcp'][port]['extrainfo'])
 except:
 pass
 try:
 print('名字:' + result['tcp'][port]['name'])
 except:
 pass
 try:
 print('版本:' + result['tcp'][port]['version'])
 except:
 pass
 try:
 print('产品:' + result['tcp'][port]['product'])
 except:
 pass
 try:
 print('CPE:' + result['tcp'][port]['cpe'])
 except:
 pass
 try:
 print('脚本:' + result['tcp'][port]['script'])
 except:
 pass
 except:
 pass
 except:
 pass

 idno = 1
 try:
 for port in result['udp']:
 try:
 print('-' * 17 + 'UDP服务器详细信息' + '[' + str(idno) + ']' + '-' * 17)
 idno += 1
 print('UDP端口号:' + str(port))
 try:
 print('状态:' + result['udp'][port]['state'])
 except:
 pass
 try:
 print('原因:' + result['udp'][port]['reason'])
 except:
 pass
 try:
 print('额外信息:' + result['udp'][port]['extrainfo'])
 except:
 pass
 try:
 print('名字:' + result['udp'][port]['name'])
 except:
 pass
 try:
 print('版本:' + result['udp'][port]['version'])
 except:
 pass
 try:
 print('产品:' + result['udp'][port]['product'])
 except:
 pass
 try:
 print('CPE:' + result['udp'][port]['cpe'])
 except:
 pass
 try:
 print('脚本:' + result['udp'][port]['script'])
 except:
 pass
 except:
 pass
 except:
 pass


if __name__ == '__main__':
 nmap_A_scan('www.rspt.org.cn')
E:\CodeLibrarySoftware\Anaconda3\python3.exe 
#################Host:47.94.150.6#################
--------------------操作系统猜测--------------------
操作系统为:Linux 3.10 - 4.11 准确度为:98
操作系统为:Linux 3.16 - 4.6 准确度为:97
操作系统为:Linux 3.2 - 4.9 准确度为:96
操作系统为:Linux 4.4 准确度为:95
操作系统为:Linux 3.2 - 3.8 准确度为:95
操作系统为:Linux 4.10 准确度为:94
操作系统为:Linux 3.16 准确度为:94
操作系统为:Linux 3.13 准确度为:93
操作系统为:Linux 3.13 or 4.2 准确度为:93
操作系统为:Linux 4.2 准确度为:93
-----------------TCP服务器详细信息[1]-----------------
TCP端口号:22
状态:open
原因:syn-ack
额外信息:Ubuntu Linux; protocol 2.0
名字:ssh
版本:6.6.1p1 Ubuntu 2ubuntu2.8
产品:OpenSSH
CPE:cpe:/o:linux:linux_kernel
-----------------TCP服务器详细信息[2]-----------------
TCP端口号:80
状态:open
原因:syn-ack
额外信息:Ubuntu
名字:http
版本:1.4.6
产品:nginx
CPE:cpe:/o:linux:linux_kernel
-----------------TCP服务器详细信息[3]-----------------
TCP端口号:443
状态:closed
原因:reset
额外信息:
名字:https
版本:
产品:
CPE:
-----------------TCP服务器详细信息[4]-----------------
TCP端口号:3000
状态:open
原因:syn-ack
额外信息:Express middleware
名字:http
版本:
产品:Node.js
CPE:cpe:/a:nodejs:node.js
-----------------TCP服务器详细信息[5]-----------------
TCP端口号:3389
状态:closed
原因:reset
额外信息:
名字:ms-wbt-server
版本:
产品:
CPE:

Process finished with exit code 0

PS: 如果你在运行时遇到这种问题:

python nmap实现端口扫描器教程

OK,打开nmap.py文件,在import nmap处按住Ctrl,点击进入nmap。

添加nmap.exe路径:  

python nmap实现端口扫描器教程

ok,自行摸索吧。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用xlrd模块读写Excel文件的方法
May 06 Python
bat和python批量重命名文件的实现代码
May 19 Python
Python爬虫实现百度图片自动下载
Feb 04 Python
python Opencv将图片转为字符画
Feb 19 Python
对python 各种删除文件失败的处理方式分享
Apr 24 Python
简单谈谈python基本数据类型
Sep 26 Python
python如何实现代码检查
Jun 28 Python
Python Pandas 获取列匹配特定值的行的索引问题
Jul 01 Python
Python Web版语音合成实例详解
Jul 16 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
Sep 23 Python
详解python方法之绑定方法与非绑定方法
Aug 17 Python
利用Python脚本写端口扫描器socket,python-nmap
Jul 23 Python
Python3多线程版TCP端口扫描器
Aug 31 #Python
简单了解python协程的相关知识
Aug 31 #Python
利用rest framework搭建Django API过程解析
Aug 31 #Python
Python进度条的制作代码实例
Aug 31 #Python
python类的实例化问题解决
Aug 31 #Python
python检测服务器端口代码实例
Aug 31 #Python
python实现多线程端口扫描
Aug 31 #Python
You might like
网站加速 PHP 缓冲的免费实现方法
2006/10/09 PHP
PHP中动态显示签名和ip原理
2007/03/28 PHP
如何用php生成扭曲及旋转的验证码图片
2013/06/07 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
很好用的js日历算法详细代码
2013/03/07 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
JavaScript错误处理
2015/02/03 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
详解基于vue的移动web app页面缓存解决方案
2017/08/03 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
jQuery实时统计输入框字数及限制
2020/06/24 jQuery
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
CSS教程:CSS3圆角属性
2009/04/02 HTML / CSS
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
争先创优演讲稿
2014/09/15 职场文书
学生检讨书范文
2015/01/27 职场文书
台风停课通知
2015/04/24 职场文书
公司更名通知函
2015/04/24 职场文书
CSS 伪元素::marker详解
2021/06/26 HTML / CSS