设为首页 收藏本站
查看: 1154|回复: 0

[经验分享] 简单介绍python-nmap 模块的使用

[复制链接]

尚未签到

发表于 2018-8-13 06:57:34 | 显示全部楼层 |阅读模式
  python-nmap是python的一个模块库,使用这个模块可以让python很方便的操作nmap扫描器来工作,它可以帮助管理员完成自动扫描任务和生成报告的工具,它还支持nmap的脚步输出。最新的版本是python-nmap-0.2.4.tar.gz,
  下载地址是:http://xael.org/norman/python/python-nmap/python-nmap-0.2.4.tar.gz
  不过这个版本是适合python3.*来使用的,如果你的python版本还是2.*的话,还是使用这个版本,python- nmap.0.1.4.tar.gz, 下载链接是http://xael.org/norman/python/python-nmap/python-nmap-0.1.4.tar.gz
  安装还是很简单的,解压缩,运行setup.py  install之后,就搞定了。
  下面贴出自带的example.py的源码:
#!/usr/bin/env python  
# -*- coding: latin-1 -*-
  
import sys
  
import nmap                         # import nmap.py module
  
try:
  
    nm = nmap.PortScanner()         # instantiate nmap.PortScanner object
  
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)
  
nm.scan(‘127.0.0.1′, ’22-443′)      # scan host 127.0.0.1, ports from 22 to 443
  
nm.command_line()                   # get command line used for the scan : nmap -oX – -p 22-443 127.0.0.1
  
nm.scaninfo()                       # get nmap scan informations {‘tcp': {‘services': ’22-443′, ‘method': ‘connect’}}
  
nm.all_hosts()                      # get all hosts that were scanned
  
nm[‘127.0.0.1′].hostname()          # get hostname for host 127.0.0.1
  
nm[‘127.0.0.1′].state()             # get state of host 127.0.0.1 (up|down|unknown|skipped)
  
nm[‘127.0.0.1′].all_protocols()     # get all scanned protocols [‘tcp’, ‘udp’] in (ip|tcp|udp|sctp)
  
nm[‘127.0.0.1′][‘tcp’].keys()       # get all ports for tcp protocol
  
nm[‘127.0.0.1′].all_tcp()           # get all ports for tcp protocol (sorted version)
  
nm[‘127.0.0.1′].all_udp()           # get all ports for udp protocol (sorted version)
  
nm[‘127.0.0.1′].all_ip()            # get all ports for ip protocol (sorted version)
nm[‘127.0.0.1′].all_sctp()          # get all ports for sctp protocol (sorted version)  
nm[‘127.0.0.1′].has_tcp(22)         # is there any information for port 22/tcp on host 127.0.0.1
  
nm[‘127.0.0.1′][‘tcp’][22]          # get infos about port 22 in tcp on host 127.0.0.1
  
nm[‘127.0.0.1′].tcp(22)             # get infos about port 22 in tcp on host 127.0.0.1
  
nm[‘127.0.0.1′][‘tcp’][22][‘state’] # get state of port 22/tcp on host 127.0.0.1 (open
  
# a more usefull example :
  
for host in nm.all_hosts():
  
    print(‘—————————————————-‘)
  
    print(‘Host : %s (%s)’ % (host, nm[host].hostname()))
  
    print(‘State : %s’ % nm[host].state())
  
    for proto in nm[host].all_protocols():
  
        print(‘———-‘)
  
        print(‘Protocol : %s’ % proto)
  
        lport = nm[host][proto].keys()
  
        lport.sort()
  
        for port in lport:
  
            print(‘port : %
s\tstate : %s’ % (port, nm[host][proto][port][‘state’]))  
print(‘—————————————————-‘)
  
# If you want to do a pingsweep on network 192.168.1.0/24:
  
nm.scan(hosts=’192.168.1.0/24′, arguments=’-n -sP -PE -PA21,23,80,3389′)
  
hosts_list = [(x, nm[x][‘status’][‘state’]) for x in nm.all_hosts()]
  
for host, status in hosts_list:
  
    print(‘{0}:{1}’.format(host, status))
  
print ‘—————————————————-‘
  
# Asynchronous usage of PortScannerAsync
  
nma = nmap.PortScannerAsync()
  
def callback_result(host, scan_result):
  
    print ‘——————’
  
    print host, scan_result
  
nma.scan(hosts=’192.168.1.0/30′, arguments=’-sP’, callback=callback_result)
  
while nma.still_scanning():
  
    print(“Waiting …”)
  
    nma.wait(2)   # you can do whatever you want but I choose to wait after the end of the scan
  下面看下运行的效果:
  [root@centos6 nmap]# python example.py
  —————————————————-
  Host : 127.0.0.1 (localhost)
  State : up
  ———-
  Protocol : tcp
  port : 22       state : open
  port : 25       state : open
  port : 80       state : open
  —————————————————-
  192.168.1.0:down
  192.168.1.1:down
  192.168.1.10:down
  192.168.1.100:down
  。。。
  192.168.1.159:down
  192.168.1.16:down
  192.168.1.160:down
  192.168.1.161:down
  192.168.1.162:down
  192.168.1.163:down
  192.168.1.164:down
  192.168.1.165:down
  192.168.1.166:down
  192.168.1.167:down
  192.168.1.168:down
  192.168.1.169:down
  。。。
  192.168.1.97:down
  192.168.1.98:down
  192.168.1.99:down
  —————————————————-
  Waiting …
  ——————
  192.168.1.0 {‘nmap': {‘scanstats': {‘uphosts': u’0′, ‘timestr': u’Mon Nov 14 17:25:27 2011′, ‘downhosts': u’1′, ‘totalhosts': u’1′, ‘elapsed': u’1.24′}, ‘scaninfo': {}, ‘command_line': u’nmap -oX – -sP 192.168.1.0′}, ‘scan': {u’192.168.1.0′: {‘status': {‘state': u’down’, ‘reason': u’host-unreach’}, ‘hostname': ”}}}
  Waiting …
  ——————
  192.168.1.1 {‘nmap': {‘scanstats': {‘uphosts': u’0′, ‘timestr': u’Mon Nov 14 17:25:28 2011′, ‘downhosts': u’1′, ‘totalhosts': u’1′, ‘elapsed': u’1.23′}, ‘scaninfo': {}, ‘command_line': u’nmap -oX – -sP 192.168.1.1′}, ‘scan': {u’192.168.1.1′: {‘status': {‘state': u’down’, ‘reason': u’host-unreach’}, ‘hostname': ”}}}
  Waiting …
  ——————
  192.168.1.2 {‘nmap': {‘scanstats': {‘uphosts': u’0′, ‘timestr': u’Mon Nov 14 17:25:29 2011′, ‘downhosts': u’1′, ‘totalhosts': u’1′, ‘elapsed': u’1.23′}, ‘scaninfo': {}, ‘command_line': u’nmap -oX – -sP 192.168.1.2′}, ‘scan': {u’192.168.1.2′: {‘status': {‘state': u’down’, ‘reason': u’host-unreach’}, ‘hostname': ”}}}
  ——————
  192.168.1.3 {‘nmap': {‘scanstats': {‘uphosts': u’0′, ‘timestr': u’Mon Nov 14 17:25:31 2011′, ‘downhosts': u’1′, ‘totalhosts': u’1′, ‘elapsed': u’1.23′}, ‘scaninfo': {}, ‘command_line': u’nmap -oX – -sP 192.168.1.3′}, ‘scan': {u’192.168.1.3′: {‘status': {‘state': u’down’, ‘reason': u’host-unreach’}, ‘hostname': ”}}}
  其他功能大家可以自己实践,安装这个模块,首先系统必须要安装好nmap这个软件是必须条件。。。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-550849-1-1.html 上篇帖子: Python的socket模块详解 下篇帖子: python 设置默认字符集
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表