对于端口扫描,使用的最多的就是nmap这个工具,不想python已经强大到,提供了nmap这个扫描端口的模块。

本片文章主要介绍nmap模块的两个常用类:

  • PortScanner()类,实现一个nmap工具的端口扫描功能的封装;
  • PortScannerHostDict()类,实现存储与访问主机的扫描结果。

安装:这里需要安装的是python-nmap模块,不是nmap模块,pip install python-nmap。

PortScanner()类的一些常用方法:

1. scan()方法:

scan(self,host='127.0.0.1',ports=None,arguments='-sV')

实现指定主机,端口,nmap命令行参数的扫描。

参数说明:

  • hosts:字符串类型,表示扫描的主机的地址,格式可以用"scanme.nmap.org","127.0.0.1/24"表示;
  • ports:字符串类型,表示要扫描的端口,可以用"22,80,443-1000"表示;
  • arguments:字符串类型,表示nmap命令行参数,格式为"-sU -sX -sC"表示。
import nmap
#实例化
nm = nmap.PortScanner()#端口扫描nm.scan('www.baidu.com','22,80,443','-sV')

2. command_line(self)方法

返回的扫描方法映射到具体的nmap命令行

nm.command_line()

3. scaninfo(self)方法

返回nmap扫描信息,格式为字典类型

nm.scaninfo()

4. all_hosts(self)方法

返回nmap扫描的主机清单,格式为列表类型

nm.all_hosts()

------------------------------------------------------

PortScannerHostDict()类的一些常用方法

1. hostname(self)方法

返回扫描对象的主机名

nm['61.135.169.125'].hostname()

2. state(self)方法

返回扫描对象的状态,包括四种状态(up,down,unknown,skipped)

nm['61.135.169.125'].state()

3. all_protocols(self)方法

返回扫描的协议

nm['61.135.169.125'].all_protocols()

4.all_tcp(self)方法

返回TCP协议扫描的端口

nm['61.135.169.125'].all_tcp()

5.tcp(self,port)方法

返回扫描TCP协议port的信息

nm['61.135.169.125'].tcp(443)

实践:实现高效的端口扫描

实践代码采用scan()方法的arguments参数指定为 "-v  -PE  -p + 端口",-v表示启用细节模式,可以返回非up状态主机清单;-PE 表示采用TCP同步扫描(TCP,SYN)方式;-p指定扫描端口范围。程序输出部分采用了三个for循环体,第一层遍历扫描主机,第二层遍历协议,第三层遍历端口,最后输出主机状态。

import sysimport nmap

scan_row=[]input_data = input('Please input hosts and port: ')scan_row = input_data.split(" ")if len(scan_row)!=2:    print("Input errors,example \"192.168.1.0/24 80,443,22\"")    sys.exit(0)#接收用户输入的主机hosts=scan_row[0] #接收用户输入的端口port=scan_row[1]

try:    #创建端口扫描对象    nm = nmap.PortScanner() except nmap.PortScannerError:    print('Nmap not found', sys.exc_info()[0])    sys.exit(0)except:    print("Unexpected error:", sys.exc_info()[0])    sys.exit(0)

try:    #调用扫描方法,参数指定扫描主机hosts,nmap扫描命令行参数arguments    nm.scan(hosts=hosts, arguments=' -v -sS -p '+port) except Exception as e:    print("Scan erro:"+str(e))

#遍历扫描主机for host in nm.all_hosts():     print('----------------------------------------------------')    #输出主机及主机名    print('Host : %s (%s)' % (host, nm[host].hostname()))     #输出主机状态,如up、down    print('State : %s' % nm[host].state())     for proto in nm[host].all_protocols():         #遍历扫描协议,如tcp、udp        print('----------')        #输入协议名        print('Protocol : %s' % proto)         #获取协议的所有扫描端口        lport = nm[host][proto].keys()        #端口列表排序        list(lport).sort()        #遍历端口及输出端口与状态        for port in lport:             print('port : %s\tstate : %s' % (port, nm[host][proto][port]['state']))

转载于:https://www.cnblogs.com/bmjoker/p/10574598.html

7.python实现高效端口扫描器之nmap模块相关推荐

  1. python扫描器_7.python实现高效端口扫描器之nmap模块

    对于端口扫描,使用的最多的就是nmap这个工具,不想python已经强大到,提供了nmap这个扫描端口的模块. 本片文章主要介绍nmap模块的两个常用类: PortScanner()类,实现一个nma ...

  2. 需要额外端口信息_使用Python进行TCP端口扫描

    使用Python进行TCP端口扫描 首先我们供给一台主机,要进行的步骤就是对其主机端口的扫描,查看其中开放的端口. 我们创建一个TCP的全连接的扫描器,使用socket来创建连接器. 扫描端口开放 # ...

  3. python 端口扫描 东京_GitHub - w2n1ck/portscan: 一个基于Python+Go的端口扫描及服务探测脚本...

    portscan 一个基于Python+Go的端口扫描及服务探测脚本 0x00 前言 近期由于公司环境整改/迭代以及历史弱口令等撞库,运维同事将内网测试环境的一些SSH等敏感端口对外,导致被挖矿团伙利 ...

  4. 网络安全自学篇之Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具

    前言: Web渗透技术的核心是发现Web漏洞,发现漏洞有手工和软件自动化扫描两种方式.对于用户验证漏洞.用户凭证管理问题.权限特权及访问控制漏洞.缓存漏洞.跨站脚本漏洞.加密漏洞.路径切换漏洞.代码注 ...

  5. 端口扫描程序nmap使用详解

    1 概述 Nmap是一款网络扫描和主机检测的非常有用的工具,适用于winodws,linux,等操作系统,支持很多扫描技术,例如:UDP.TCP connect().TCP SYN(半开扫描).ftp ...

  6. [网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster原理详解

    Web渗透技术的核心是发现Web漏洞,发现漏洞有手工和软件自动化扫描两种方式.对于用户验证漏洞.用户凭证管理问题.权限特权及访问控制漏洞.缓存漏洞.跨站脚本漏洞.加密漏洞.路径切换漏洞.代码注入漏洞. ...

  7. 端口扫描神器 - Nmap的基本使用

    搜索公众号:白帽子左一,领配套练手靶场,全套安全课程及工具 一.Nmap简介 Nmap是一款网络扫描和主机检测的非常有用的工具. 可以用于收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器. ...

  8. 端口扫描工具 NMAP使用详解,收藏这一篇就够了

    前言 为了保护计算机不受攻击和各种病毒.木马的侵扰,其实我们可以在网络设备上采取措施,对某些数据包进行阻挡.过滤等,但重要的还是用户需要有一定的意识,采取措施对自己的计算机进行保护安全: 那么,今天主 ...

  9. linux系统端口扫描工具,[命令] Linux 端口扫描工具 nmap 的使用(转载)

    注意:在使用 nmap 命令之前要先安装 nmap 软件包 Nmap 简介 Nmap ("Network Mapper(网络映射器)") 是一款开放源代码的 网络探测和安全审核的工 ...

最新文章

  1. 深入jQuery中的data()
  2. Cygwin的安装及在Android jni中的简单使用举例
  3. linux ssh 连接超时中断 解决方法
  4. HDU-1051 Wooden Sticks
  5. .NET Core实战项目之CMS 第十五章 各层联动工作实现增删改查业务
  6. 一行代码蒸发64亿人民币!黑客盯上区块链漏洞!Python真的变态!
  7. # Schedulerx正式登陆Ali-k8s应用目录
  8. windows nginx 停止和启动_大数据离线项目实践之nginx服务器搭建
  9. java编写猫抓老鼠程序_Java抓鱼程序
  10. 2 怎么用vite_在国内怎么玩steam服帝国时代2决定版?用斧牛加速器
  11. 菜鸟的学习之路(7) — 包(package)、Object类和String类
  12. 升级ssl后ssh登录失效_centos7升级openssl、openssh常见问题及解决方法
  13. 迈高图手机版_迈高图(地图数据器)|迈高图(地图数据器) v2.11.8.0官方版 - 系统天堂...
  14. 设计一个RC高通滤波器或低通滤波器
  15. go语言sql转struct在线工具
  16. 华为云ECS服务器中通过docker部署ELK-kibana
  17. Visio中如何做出弧度的文字
  18. 微信支付一 :公众号支付1
  19. HBase查询一张表的数据条数的方法
  20. 2017. 圆周排列

热门文章

  1. FortiGate双链路不同运营商上网配置
  2. Android开发周报:Google 推出AR SDK、Android 8.0 Oreo 最终版发布
  3. 评论家:亚马逊先于苹果达万亿美元市值
  4. Servlet 调用过程
  5. KlayGE 4.4中渲染的改进(五):OpenGL 4.4和OpenGLES 3
  6. Linux netstat 命令查看80端口状态
  7. gridview中的种种超级链接
  8. 值得看的hadoop书籍
  9. 生成纯字母随机编号的示例(大小写混合).sql
  10. 【百度地图API】如何批量转换为百度经纬度