nmap是一个知名的端口扫描工具,超级好用,可调的参数也多(但需懂得网络相关知识,否则就别费精神研究参数了)

一般在linux上使用,当然,它也有windows的版本,但不在这里展开。

关于nmap的用法,可以参考在线手册 https://nmap.org/book/man-briefoptions.html

python-nmap 实际是在python里面调用底层的nmap,所以第一步是先安装系统的nmap,再装python-nmap

以下是安装步骤

本文使用的系统是centos 6,python的版本是3.5.2

1)安装系统的nmap

# yum install nmap -y

......

Package 2:nmap-5.51-6.el6.x86_64 already installed and latest version

Nothing to do

由于我已经装过了,所以提示已安装

验证一下

# nmap -v

Starting Nmap 5.51...

2)安装python-nmap

[root@Lab2 ~]# pip3 install python-nmap

Requirement already satisfied: python-nmap in ....

同样已经装过

以下是python3中使用(https://xael.org/pages/python-nmap-en.html)

最基本的用法,也是串行的方式,请自行去上面的网站上查询

这里说的是异步方式,要使用python来进行扫描,我相信大多是批量扫描,否则没必要用python,直接在命令行下执行nmap

python-nmap有两种异步的使用方式,根据源码来看,实际上就是多进程。

第一种:

# 先定义一个回调方法,参数必须是两个,名字随便取,这里用的是host和scan_result

import nmap
def callback_result(host, scan_result):print('------------------')print(host, scan_result)# 异步Scanner
nm = nmap.PortScannerAsync()# 扫描参数,第一个是扫描对象,可以是单个IP、网段、IP-IP诸多写法,详细自己查手册或者百度
# 第二个是ports参数,同样写法多样
# 第三个arguments参数,这个就有讲究了,假如不写这个参数,默认会带一个-sV,然后你扫描一个ip都能等到天荒地老,关于-sV的含义在文后给出作为参考。在这里,我们给一个-sS,或者可以给个空白字符串也是可以的
# 第四个是指定回调函数
nm.scan('192.168.1.0/24', ports='22,80,8888', arguments='-sS', callback=callback_result)# 以下是必须写的,否则你会看到一运行就退出,没有任何的结果
while nm.still_scanning():print("sleep")nm.wait(2)

第二种:

import nmap
nm = nmap.PortScannerYield()
for result in nm.scan('192.168.1.0/24', ports='22,80,8888,8080,443', arguments="-sS"):print(result)

这种调用方式简单很多,也是推荐的写法。得到的结果

 ('192.168.1.1', {'scan': {'192.168.1.1': {'tcp': {80: {'extrainfo': '', 'state': 'filtered', 'name': 'http', 'product': '', 'reason': 'no-response', 'conf': '3', 'cpe': '', 'version': ''}, 8080: {'extrainfo': '', 'state': 'filtered', 'name': 'http-proxy', 'product': '', 'reason': 'no-response', 'conf': '3', 'cpe': '', 'version': ''}, 443: {'extrainfo': '', 'state': 'closed', 'name': 'https', 'product': '', 'reason': 'reset', 'conf': '3', 'cpe': '', 'version': ''}, 22: {'extrainfo': '', 'state': 'closed', 'name': 'ssh', 'product': '', 'reason': 'reset', 'conf': '3', 'cpe': '', 'version': ''}, 8888: {'extrainfo': '', 'state': 'open', 'name': 'sun-answerbook', 'product': '', 'reason': 'syn-ack', 'conf': '3', 'cpe': '', 'version': ''}}, 'vendor': {}, 'status': {'state': 'up', 'reason': 'timestamp-reply'}, 'addresses': {'ipv4': '192.168.1.1'}, 'hostnames': [{'type': '', 'name': ''}]}}, 'nmap': {'scanstats': {'uphosts': '1', 'downhosts': '0', 'elapsed': '1.29', 'totalhosts': '1', 'timestr': 'Wed Jun 13 17:25:28 2018'}, 'command_line': 'nmap -oX - -p 22,80,8888,8080,443 -sS 192.168.1.1', 'scaninfo': {'tcp': {'services': '22,80,443,8080,8888', 'method': 'syn'}}}})

如何分析使用result,各位自己发挥吧, 它其实就是个元组,内嵌了字典

SERVICE/VERSION DETECTION:

-sV: Probe open ports to determine service/version info # 探测端口的服务、版本信息

转载于:https://blog.51cto.com/coosh/2129009

python-nmap使用方法(python3)相关推荐

  1. ubuntu安装python3.8_将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程

    1. 概述 本文记录在 Ubuntu 16.04 上将 python 升级为 3.8 版本,并配置为系统默认 python3 的过程. 在 Ubuntu 16.04 中,python3 的默认版本为 ...

  2. Python学习教程:Python3内置模块之base64编解码方法小结

    Python学习教程:Python3内置模块之base64编解码方法小结 概述 Base64 是网络上最常见的用于传输 8Bit 字节码的编码方式之一,Base64 就是一种基于 64 个可打印字符来 ...

  3. Python 文件 close() 方法

    描述 Python 文件 close() 方法用于关闭一个已打开的文件.关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误. close() 方法允许调用多次. 当 file 对 ...

  4. python3里的pillow怎么安装_“python安装pillow教程“python3.4怎么安装pil

    "python安装pillow教程"python3.4怎么安装pil python安装pillow教程2020-10-09 03:37:02人已围观 如何在python3.6中装p ...

  5. python导入模块报错syntaxerror_SyntaxError: invalid syntax python错误解决方法

    今天爱分享给大家带来SyntaxError: invalid syntax python错误解决方法,希望能够帮助到大家. "SyntaxError: invalid syntax" ...

  6. python编程在哪里写程序-教你如何编写、保存与运行Python程序的方法

    第一步 接下来我们将看见如何在 Python 中运行一个传统的"Hello World"程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Pyth ...

  7. 退出python命令行-在cmd命令行里进入和退出Python程序的方法

    在cmd命令行里进入和退出Python程序的方法 进入: 直接输入python即可,如图所示 退出: 1:输入exit(),回车 2:输入quit(),回车 3:输入ctrl+z,回车 以上这篇在cm ...

  8. python下载不了-python3下载不了

    Python是一种流行的编程语言,被初学者和长期开发人员广泛使用.现代Mac OS版本安装了Python 2.7.x(如果是较旧的Mac OS X版本,则为Python 2.6.1),但许多Pytho ...

  9. Python的__str__()方法

    Python的__str__()方法 说明:本文章的Python代码测试基于Python3.x __str__()方法的作用: 不定义__str__方法,print输出对象实例时,默认打印对象实例的内 ...

  10. Python 字典 fromkeys()方法

    Python 字典 fromkeys() 方法用于创建一个新的字典,并以可迭代对象中的元素分别作为字典中的键,且所有键对应同一个值,默认为None. fromkeys() 方法语法: 1 dict.f ...

最新文章

  1. 织梦cms系统如何code 财付通接口
  2. 性价比高台式计算机,2021年台式电脑什么牌子好,性价比高?
  3. 在VC中动态加载ODBC的方法
  4. sqlite3 学习
  5. 手机MODEM 开发(23)---Modem1 NVRAM基础知识总结
  6. centos mysql无法启动 sock_CentOS通过yum安装MariaDB(MySQL)无法启动服务或者找不到mysql.sock...
  7. 自己做量化交易软件(37)小白量化实战10--操作方法与MetaTrader5高频策略的进化
  8. Word如何快速绘制你需要的作文稿纸
  9. 使用Flvplayer.swf播放器播放 .flv 格式的视频
  10. 李彦宏对话IMF总裁拉加德:缓解B端焦虑,要看AI这道主菜味道如何
  11. Redis 实现限流器的三种方法
  12. 在WPS表格里制作连接到openGauss的实时刷新报表
  13. 收银设备对接php,快速对接payjs的个人支付接口(收银台模式)
  14. 我国古代的度量衡和音律的关系
  15. 总体设计--《软件工程导论》
  16. 网络安全需要看什么书?(网安工程师)?
  17. 3D模型欣赏:清纯美丽小姐姐
  18. 实现BMP位图色深转换的方法
  19. Qt学习笔记(三)——记事本
  20. 听译letters live

热门文章

  1. 湘潭大学自考计算机,湘潭大学自考专业
  2. opencv中的CV_RGB2GRAY与CV_BGR2GRAY的区别
  3. 令人相见恨晚的PPT技巧,熟练掌握后,工作效率提升10倍
  4. 单臂路由的使用及详细配置命令
  5. 爱剪辑的入门使用体验
  6. 基于MATLAB的仿射变换/透射变换/道路检测/车牌检测
  7. 设计一可控同步四进制可逆计数器, 其由输入X1,X2控制, 用D触发器和74153及必要的芯片实现
  8. AWS认证是什么?怎么报考?
  9. 四十三、项目实战—阿里百秀
  10. C++编写程序一定要加using namespace std吗?命名空间你真的清楚吗?