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局域网ip扫描示例分享
Apr 03 Python
python之matplotlib学习绘制动态更新图实例代码
Jan 23 Python
python学习入门细节知识点
Mar 29 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
Apr 18 Python
详解python编译器和解释器的区别
Jun 24 Python
这可能是最好玩的python GUI入门实例(推荐)
Jul 19 Python
详解python中eval函数的作用
Oct 22 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
Jan 12 Python
解决numpy数组互换两行及赋值的问题
Apr 17 Python
python实现的人脸识别打卡系统
May 08 Python
分析Python list操作为什么会错误
Nov 17 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生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
让textarea自动调整大小的js代码
2011/04/12 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
JS实现很酷的EMAIL地址添加功能实例
2015/02/28 Javascript
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
vue实现通讯录功能
2018/07/14 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
Python的函数的一些高阶特性
2015/04/27 Python
开始着手第一个Django项目
2015/07/15 Python
python追加元素到列表的方法
2015/07/28 Python
Linux中Python 环境软件包安装步骤
2016/03/31 Python
利用Python实现图书超期提醒
2016/08/02 Python
python使用flask与js进行前后台交互的例子
2019/07/19 Python
python使用配置文件过程详解
2019/12/28 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
2020/02/17 Python
django列表筛选功能的实现代码
2020/03/27 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
Java语言的优势
2015/01/10 面试题
工商管理实习自我鉴定
2013/09/28 职场文书
应届毕业生就业自荐信
2013/10/26 职场文书
小学教师岗位职责
2013/11/25 职场文书
计算机数据库专业职业生涯规划书
2014/02/08 职场文书
化妆品店促销方案
2014/02/24 职场文书
公司任命书模板
2014/06/06 职场文书
服装设计专业自荐信
2014/06/17 职场文书
大学团日活动总结书
2015/05/11 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
Python pandas求方差和标准差的方法实例
2021/08/04 Python