专栏首页python3python-nmap使用方法(pyth

python-nmap使用方法(pyth

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 # 探测端口的服务、版本信息

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python模块学习----nmap模块

    python-nmap是一个帮助使用nmap端口扫描器的python库。它允许轻松操纵nmap扫描结果,并且将是一个完美的选择,为需要自动完成扫描任务的系统管理...

    py3study
  • Tornado基础学习篇

    Tornado是使用Python编写的一个强大的、可扩展的Web服务器。它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在...

    py3study
  • diango使用数据库

    之前写的页面,虽然和用户交互得很好,但并没有保存任何数据,页面一旦关闭,或服务器重启,一切都将回到原始状态。

    py3study
  • Python编写渗透工具学习笔记一 | 0x04 nmap实现端口扫描(准确性更高)

    0x04 nmap实现端口扫描 在windows下安装nmap模块会遇到一些障碍,主要是路径的一些问题,在linux下会比较容易。 #实现功能 端口扫描 先介绍...

    安恒网络空间安全讲武堂
  • AutoRecon:多线程网络侦察工具

    AutoRecon是一个多线程的网络侦察工具,可自动化的执行服务枚举任务。其旨在减少任务的执行时间,非常适用于CTF和某些渗透环境(例如OSCP)。在实际参与中...

    FB客服
  • python模块学习----nmap模块

    python-nmap是一个帮助使用nmap端口扫描器的python库。它允许轻松操纵nmap扫描结果,并且将是一个完美的选择,为需要自动完成扫描任务的系统管理...

    py3study
  • 手把手教你树莓派GPIO管脚驱动

    在前两次文章中,我们给大家简单介绍了树莓派,并介绍了如何安装raspbian系统,今天我们来看下,系统安装后,我们如何来操作树莓派的GPIO来控制LED灯的点亮...

    用户1605515
  • idea查看某个类的提交记录

    IT云清
  • Linux: 获取 电脑设备 信息

    近期,学校开始对研究生实验室这边进行设备安全大检查,需要我们每个人填写自己的实验室设备信息并上报。我顺手把获取设备的过程记录了下来。

    JNingWei
  • 李飞飞等ICLR2019论文:构建人类眼睛感知评估

    我们引入了两种变体:一种是在自适应时间约束下测量视觉感知,以确定模型输出显示为真实的阈值(例如250毫秒),另一种是在无时间约束的假图像和真实图像上测量人为错误...

    新智元

扫码关注云+社区

领取腾讯云代金券