当前位置: 首页 > news >正文

Python扫描器-python-nmap的安装与常用方法说明

python-nmap

把nmap指令参数封装起来,然后调用nmap,格式化nmap输出的结果。

549050-20190814162524511-1968421546.png

模块常用方法说明

这里我们主要接受python-nmap模块的两个常用类,一个是PortScanner()类,实现一个nmap工具的端口扫描功能封装;另一个为PortScannerHostDict()类,实现存储与访问主机扫描结果

1、PortScanner()类常用方法

1-1、scan()方法

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

方法,实现指定主机、端口、namp命令行参数的扫描。参数hosts为字符串类型,表示扫描的主机地址,格式可以用"scanme.nmap.org"、"192.116.0-255.1-127"、"216.163.128.20/20"表示; 参数ports为字符串类型,表示扫描的端口,可以用"22,53,110,143-4564"表示;参数namp命令行参数,格式为"-sU -sX -sC",例如:

nm = nmap.PortScanner()
nm.scan('192.168.209.121-122', '22,80')

1-2、command_line()方法
command_line(self)方法,返回的扫描方法映射到具体的nmap命令行,如:

>>> nm.command_line()
u'nmap -oX - -p 22,80 -sV 192.168.209.121-122'

1-3、scaninfo()方法
scaninfo(self)方法,返回nmap扫描信息,格式为字典类型,如:

>>>nm.scanninfo()
{'tcp':{'services':'22,80', 'method':'syn'}}

1-4、all_hosts()方法
all_hosts(self)方法,返回nmap扫描的主机清单,格式为列表类型,例如:

['192.168.209.121', '192.168.209.122']

2、PortScannerHostDict()类常用方法
2-1、hostname()方法
hostname(self)方法,返回扫描对象的主机名,如:

>>> nm['192.168.209.121'].hostname()
'liuyazhuang'

2-2、state()方法
state(self)方法,返回扫描对象的状态,包括4中状态(up、down、unknown、skipped),如:

>>> nm['192.168.209.121'].state()

'up'

2-3、all_protocols()方法
all_protocols(self)方法,返回扫描的协议,如:

>>> nm['192.168.209.121'].all_protocols()
['tcp']

2-4、all_tcp()方法
all_tcp(self)方法,返回TCP协议扫描的端口,如:

>>> nm['192.168.209.121'].all_tcp()

[22,80]

2-5、tcp()方法
tcp(self, port)方法,返回扫描TCP协议port(端口)的信息,如:

>>> nm['192.168.209.121'].tcp(22)
{'state':'open', 'reason':'syn-ack', 'name':'ssh'}

python操作nmap

1.简单的小案例

创建PortScanner实例,然后扫描159.239.210.26这个IP的20-443端口。

import nmap

nm = nmap.PortScanner()
ret = nm.scan('115.239.210.26','20')
print ret

返回格式如下:

{'nmap': {'scanstats': 
{'uphosts': '1', 'timestr': 'Tue Oct 25 11:30:47 2016', 'downhosts': '0', 'totalhosts': '1', 'elapsed': '1.11'},
 'scaninfo': {'tcp': {'services': '20', 'method': 'connect'}}, 'command_line': 'nmap -oX - -p 20 -sV 115.239.210.26'},
 'scan': {'115.239.210.26': {'status': {'state': 'up', 'reason': 'syn-ack'}, 'hostnames': [{'type': '', 'name': ''}],
 'vendor': {}, 'addresses': {'ipv4': '115.239.210.26'},
 'tcp': {20: {'product': '', 'state': 'filtered', 'version': '', 'name': 'ftp-data', 'conf': '3', 'extrainfo': '', 
'reason': 'no-response', 'cpe': ''}
}
}
}
}

2.内置方法:

还可以打印出简单的信息

import nmap  
nm = nmap.PortScanner() 
print nm.scaninfo()
# {u'tcp': {'services': u'20-443', 'method': u'syn'}}
print nm.command_line() 
# u'nmap -oX - -p 20-443 -sV 115.239.210.26' 

查看有多少个host

print nm.all_hosts()
# [u'115.239.210.26'] 

查看该host的详细信息

nm['115.239.210.26']

查看该host包含的所有协议

nm['115.239.210.26'].all_protocols() 

查看该host的哪些端口提供了tcp协议

nm['115.239.210.26']['tcp']

nm['115.239.210.26']['tcp'].keys() 

查看该端口是否提供了tcp协议

nm['115.239.210.26'].has_tcp(21)

还可以像这样设置nmap执行的参数

nm.scan(hosts='192.168.1.0/24', arguments='-n -sP -PE -PA21,23,80,3389') 

更多操作请进官网http://xael.org/pages/python-nmap-en.html

转载于:https://www.cnblogs.com/17bdw/p/11353679.html

相关文章:

  • JVM学习
  • Linux清除痕迹
  • luogu2015 二叉苹果树
  • Docker安装LogonTracer
  • 代码安全审计工具
  • spring中bean配置和bean注入
  • Windows下同时安装python2和python3如何兼容版本
  • 极客时间-左耳听风-程序员攻略-技术资源集散地
  • 处理提交html危险代码的异常方法
  • JUC 总结
  • 信息收集-DNS记录查询
  • JSON Hijacking漏洞
  • Failure [DELETE_FAILED_INTERNAL_ERROR]之后rm apk卸载
  • 浏览器中的文件传输过程
  • 面试常考 大数加减乘除
  • 2017前端实习生面试总结
  • Electron入门介绍
  • Iterator 和 for...of 循环
  • overflow: hidden IE7无效
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • springMvc学习笔记(2)
  • 初识MongoDB分片
  • 从零开始的无人驾驶 1
  • 分享一份非常强势的Android面试题
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 关于springcloud Gateway中的限流
  • 一道闭包题引发的思考
  • 做一名精致的JavaScripter 01:JavaScript简介
  • kubernetes资源对象--ingress
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (分布式缓存)Redis持久化
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (排序详解之 堆排序)
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net操作Excel出错解决
  • .NET技术成长路线架构图
  • .net项目IIS、VS 附加进程调试
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • @Documented注解的作用
  • [52PJ] Java面向对象笔记(转自52 1510988116)
  • [Android]使用Android打包Unity工程
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • [cocos creator]EditBox,editing-return事件,清空输入框
  • [Hadoop in China 2011] 蒋建平:探秘基于Hadoop的华为共有云
  • [J2ME]如何替换Google Map静态地图自带的Marker
  • [java] 23种设计模式之责任链模式
  • [Java性能剖析]Sun JDK基本性能剖析工具介绍
  • [SHELL]shell scripts笔记(1)
  • [Shell编程学习路线]--shell中重定向和管道符(详细介绍)
  • [SQL开发笔记]DELETE 语句:删除表中的行