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: 如果你在运行时遇到这种问题:

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

添加nmap.exe路径:

ok,自行摸索吧。

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

python调用nmap扫描全端口_python nmap实现端口扫描器教程相关推荐

  1. python调用高德api路径规划_Python调用高德API实现批量地址转经纬度并写入表格的功能...

    本段代码是先将需要转换经纬度的地址爬取在 '地址.csv' 文件里,文件截图示例: 代码展示 # coding=utf-8 # SPL # 时间:2020/12/20 21:15 import csv ...

  2. python调用java的jar包_python调用java的jar包报错127

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 最近在弄python需要调用到Java的jar包,按照网上的教程走,最后总是报错No matching overloads found for [init ...

  3. 正在启动python的代码补全客户端_Python交互模式下代码自动补全

    这个功能是以lib的形式提供的,配置写到home下的.pythonrc文件中, 并设置好环境变量让python启动时执行初始化: # ~/.pythonrc # enable syntax compl ...

  4. python调用第三方接口获取数据_python调用接口,python接收post请求接口(附完整代码)...

    与Scala语言相比,Python有其独特的优势和广泛的应用,python调用接口,因此Spark也推出了PySpark,它在框架上提供了一个使用Python语言的接口,python接收post请求接 ...

  5. python调用第三方接口获取数据_python 接口实现 供第三方调用的例子

    python 接口实现 供第三方调用的例子 实验环境 1.环境问题 python 2.7 以上自带的pyunit bottle 作为一个python的简易服务器 在python安装目录 打开命令窗口( ...

  6. python调用高德地图api 可视化_Python调用高德地图API实现经纬度换算、地图可视化...

    前地图可视化的工具和函数比较多,但是在不知道相关地点经纬度的情况下,通过python调用高德地图API实现经纬度换算,并且直接在高德地图新推出的轻量级可视化平台上实现一键式地图可视化,这其中需要申请密 ...

  7. python调用百度地图实现导航_python调用百度地图WEB服务API获取地点对应坐标值

    本篇博客介绍如何使用Python调用百度地图WEB服务API获取地点对应坐标值,现有一系列结构化地址数据(如:北京市海淀区上地十街十号),目的是获取对应坐标值. 百度地图开发者平台路线规划使用说明网址 ...

  8. python监控端口_python监控设备端口示例

    python监控设备端口示例 发布于 2014-08-10 18:22:16 | 120 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对象.解释型计算机程 ...

  9. python调用百度识别文字接口_python调用百度通用文字识别接口进行验证码识别

    官方文档入口 https://cloud.baidu.com/doc/OCR/OCR-Python-SDK.html#.E7.AE.80.E4.BB.8B 安装 pip3 install baidu- ...

  10. python 调用class不指定函数_python调用另一个.py中的类或函数

    同一文件夹下的调用 1.调用函数 A.py文件如下: def add(x,y): print('和为:%d'%(x+y)) 在B.py文件中调用A.py的add函数如下: import A A.add ...

最新文章

  1. 近期工作:Updater Application Block (UAB)继续
  2. c语言程序设计2014春第一套作业,C语言程序设计2014春第一套作业
  3. 黄聪:WordPress判断当前用户是否为管理员登录
  4. Android之DrawText详解
  5. spring boot 中@Mapper和@Repository的区别
  6. 我就是互联网的老不死
  7. iOS开发中经常用的实用代码合集
  8. html两行中间间距怎么去,css行之间的间距怎么调?
  9. 为什么以前的电视一打雷就容易烧坏,现在的电视就不那么怕雷?
  10. 小米手机卡顿如何解决
  11. MySQL 时间戳转换成秒
  12. 关于信号处理中的复信号
  13. 解决IDM浏览器插件强制更新后无法继续使用的问题
  14. 什么是对象存储OSS,看完你就懂了
  15. 程序员教你不背单词学英语!流利英语一周成!!!
  16. Unity3D 使用UGUI实现公告牌
  17. 安硕科技Java面试过程—(皇德耀世)
  18. eclipse快捷键使用以及一些小机灵
  19. 肠道微生物:治疗功能性消化不良的新途径
  20. 神经网络与深度学习-课后习题

热门文章

  1. InnoDB存储引擎概念与原理解析
  2. unity 解决乱码_解决unity3d读写中文乱码
  3. 51单片机c语言xdata,新概念51单片机c语言教程ppt
  4. 如何成为一个真正在路上的Linuxer
  5. JavaScript高级程序设计(第3版)
  6. iphone 目录大全
  7. 数据结构严蔚敏--第三章--栈和队列
  8. Windows Server 2003 SP2 企业版 ISO 下载
  9. 观看Tudou视频更流畅
  10. VirtualBox的ctrl键不能用