一、python-nmap安装

# yum -y install nmap #安装nmap工具
# 模块pip方式安装
# pip install nmap
# 模块源码安装
# wget http://xael.org/pages/python-nmap-0.6.1.tar.gz
# tar -zxvf python-nmap-0.6.1.tar.gz
# cd python-nmap-0.6.1
# python setup.py install

二、模块常用方法说明

这里我们主要接受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','')
print ret 返回格式如下:
{'nmap': {'scanstats':
{'uphosts': '', 'timestr': 'Tue Oct 25 11:30:47 2016', 'downhosts': '', 'totalhosts': '', 'elapsed': '1.11'},
'scaninfo': {'tcp': {'services': '', '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': '', '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

Python之——python-nmap的安装与常用方法说明的更多相关文章

  1. python笔记:windows 下安装 python lxml

    原文:http://blog.csdn.net/zhaokuo719/article/details/8209496 windows 环境下安装 lxml python 1.首先保证你的python ...

  2. 如何在windows下的Python开发工具IDLE里安装其他模块?

    以安装Httplib2模块为例 1 下载模块 到 “https://code.google.com/p/httplib2/” 下载一款适合你的压缩包“httplib2-0.4.0.zip” 2 解压下 ...

  3. Python中MySQLdb模块的安装

    安装 MySQLdb是Python语言访问mysql数据库的一个模块,如果你不确定自己的Python环境中是否已经安装了这个模块,可以打开Python shell,输入import MySQLdb,如 ...

  4. linux python升级和ipython的安装

    ==CentOS 6.X 自带的python版本是 2.6 , 由于工作需要,很多时候需要2.7版本.所以需要进行版本升级.由于一些系统工具和服务是对 Python 有依赖的,所以升级 Python ...

  5. python的egg包的安装和制作]

    Defining Python Source Code Encodings Python egg 的安装 egg文件制作与安装 2011-06-10 14:22:50|  分类: python |   ...

  6. python 使用 setup.py 方式安装及包的卸载

     安装:         可通过 --home 或 --prefix 指定安装目录 --prefix=xx/xxx    选择安装目录 --record files.txt   记录所有安装文件的路径 ...

  7. Python各种模块下载及安装配置

    方式1 在Python官网https://www.python.org/或者是github搜索进行下载 ,解压缩之后通过命令提示符进入已经解压缩文件夹根目录,输入下面的命令: python setup ...

  8. linux下Python网络编程框架-Twisted安装

    Twisted是python下的用来进行网络服务和应用程序编程的框架,安装Twisted前需要系统预先安装有python. 一.安装Twisted http://twistedmatrix.com/R ...

  9. storm安装(2)ZeroMQ、JZMQ、Python、Java环境的安装

    2.ZeroMQ安装 把安装本件zeromq-2.1.7.tar.gz拷贝到home文件路径下, 给文件加入权限 chmod +x /home/zeromq-2.1.7.tar.gz 解压文件 tar ...

随机推荐

  1. Qt 纯属娱乐-模拟一个导航定位系统

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://www.cnblogs.com/lihuidashen/p/115397 ...

  2. Java 内省(Introspector)和 BeanUtils

    人生若只如初见,何事秋风悲画扇. 概述 内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息, ...

  3. SoloLear_C# Tutorial_Contents

    一.Basic Concepts 基本概念 二.Conditionals and Loops 条件语句和循环 三.Methods 方法 四.Classes&Objects 类&对象 五 ...

  4. 去掉Myeclipse对JS等文件的验证

    在用Myeclipse导入新工程或在写代码时,最郁闷的就是它对js,jsp,html的验证太严格了,有时会呈现一个红叉或者一个黄色的感慨号,一运行就报Cannot return from outsid ...

  5. Winform中自定义xml配置文件,并配置获取文件路径

    场景 在Winform程序中,需要将一些配置项存到配置文件中,这时就需要自定义xml的配置文件格式.并在一些工具类中去获取配置文件的路径并加载其内容. 关注公众号霸道的程序猿获取编程相关电子书.教程推 ...

  6. redis的几个知识点

    Redis的全称是Remote Dictionary Server,即远程字典服务,通常用作服务器缓存服务. 这里通过Redis的几个知识点来了解Redis. Redis的通讯协议 Redis的通讯协 ...

  7. [AWS] 01 - What is Amazon EMR

    [DE] ML on Big data: MLlib 关于 Amazon EMR 发布版本 利用 Amazon EMR 分析大数据 Amazon Athena 是一种交互式查询服务,让您能够轻松使用标 ...

  8. moment实现计算两个时间的差值

    var m1 = moment('2018-08-14 11:00:00'), m2 = moment('2018-08-14 12:10:00'); console.log(m1)console.l ...

  9. 关于瀑布流的布局原理分析(纯CSS瀑布流与JS瀑布流)

    瀑布流 又称瀑布流式布局,是比较流行的一种网站页面布局方式.即多行等宽元素排列,后面的元素依次添加到其后,等宽不等高,根据图片原比例缩放直至宽度达到我们的要求,依次按照规则放入指定位置. 为什么使用瀑 ...

  10. Linux常用命令(常用)

    一,Linux常用命令二,CentOS没有盘符,只有根目录/,可以理解为只有一个盘有一个文件夹有点特殊,画了一个房子,代表当前用户的家 1.记住一个点:区分根目录和当前用户的家cd ~ 代表回家cd ...