python调用nmap扫描局域网存活主机和端口

文章目录

  • python调用nmap扫描局域网存活主机和端口
    • 操作环境
    • 运行代码
    • 关键代码
      • 1. nm.scan(ip,port,args)
      • 2. 字典的解析
    • 运行结果
    • 参考文章

操作环境

python2

sudo apt install nmap

pip install nmap json

运行代码

sudo python2 scan.py

代码经过调试,使用root可直接运行

#!python2
# scan.py must be sudo to run
import nmap
import jsonnm = nmap.PortScanner()
iprange = raw_input("input ip range(eg:192.168.224.0/24)>")
port = raw_input("input target port(eg:8888)>")
if not port:port = 8888
if not iprange:iprange = "192.168.224.0/24"
print("scan ip range " + iprange)
a = nm.scan(iprange, str(port), '-sS -O')
a = a.get("scan")target = 0
for key, value in a.items():if value.get("tcp").get(port).get("state") == "open":print "target ip maybe :" + keyprint "some information"print valuetarget = target + 1if target == 0:print "no target machine detectd...."

关键代码

1. nm.scan(ip,port,args)

请查阅参考文档一,有详细的解释

返回的结果a形式如下:a是个字典

{'nmap': {'scanstats': {'uphosts': '4', 'timestr': 'Sat Jun 27 13:29:19 2020', 'downhosts': '252', 'totalhosts': '256', 'elapsed': '9.86'}, 'scaninfo': {'tcp': {'services': '8888', 'method': 'syn'}}, 'command_line': 'nmap -oX - -p 8888 -sS -O 192.168.224.0/24'}, 'scan': {'192.168.224.132': {'status': {'state': 'up', 'reason': 'localhost-response'}, 'uptime': {'seconds': '1999559', 'lastboot': 'Thu Jun  4 10:03:20 2020'}, 'vendor': {}, 'addresses': {'ipv4': '192.168.224.132'}, 'tcp': {8888: {'product': '', 'state': 'open', 'version': '', 'name': 'sun-answerbook', 'conf': '3', 'extrainfo': '', 'reason': 'syn-ack', 'cpe': ''}}, 'hostnames': [{'type': '', 'name': ''}], 'osmatch': [{'osclass': [{'osfamily': 'Linux', 'vendor': 'Linux', 'cpe': ['cpe:/o:linux:linux_kernel:2.6.32'], 'type': 'general purpose', 'osgen': '2.6.X', 'accuracy': '100'}], 'line': '50174', 'name': 'Linux 2.6.32', 'accuracy': '100'}], 'portused': [{'state': 'open', 'portid': '8888', 'proto': 'tcp'}, {'state': 'closed', 'portid': '34334', 'proto': 'udp'}]}, '192.168.224.1': {'status': {'state': 'up', 'reason': 'arp-response'}, 'vendor': {'00:50:56:C0:00:08': 'VMware'}, 'addresses': {'mac': '00:50:56:C0:00:08', 'ipv4': '192.168.224.1'}, 'tcp': {8888: {'product': '', 'state': 'filtered', 'version': '', 'name': 'sun-answerbook', 'conf': '3', 'extrainfo': '', 'reason': 'no-response', 'cpe': ''}}, 'hostnames': [{'type': '', 'name': ''}], 'osmatch': [], 'portused': []}, '192.168.224.2': {'status': {'state': 'up', 'reason': 'arp-response'}, 'vendor': {'00:50:56:E8:9C:1A': 'VMware'}, 'addresses': {'mac': '00:50:56:E8:9C:1A', 'ipv4': '192.168.224.2'}, 'tcp': {8888: {'product': '', 'state': 'closed', 'version': '', 'name': 'sun-answerbook', 'conf': '3', 'extrainfo': '', 'reason': 'reset', 'cpe': ''}}, 'hostnames': [{'type': '', 'name': ''}], 'osmatch': [{'osclass': [{'osfamily': 'embedded', 'vendor': 'Aethra', 'cpe': ['cpe:/h:aethra:starvoice_1042'], 'type': 'broadband router', 'osgen': None, 'accuracy': '91'}], 'line': '1615', 'name': 'Aethra Starvoice 1042 ADSL router', 'accuracy': '91'}, {'osclass': [{'osfamily': 'AOS', 'vendor': 'APC', 'cpe': ['cpe:/o:apc:aos:5'], 'type': 'power-device', 'osgen': '5.X', 'accuracy': '91'}], 'line': '2920', 'name': 'APC AOS 5', 'accuracy': '91'}, {'osclass': [{'osfamily': 'SuperDOS', 'vendor': 'Bluebird', 'cpe': ['cpe:/o:bluebird:superdos'], 'type': 'general purpose', 'osgen': None, 'accuracy': '91'}], 'line': '9384', 'name': 'Bluebird SuperDOS', 'accuracy': '91'}, {'osclass': [{'osfamily': 'embedded', 'vendor': 'Brother', 'cpe': ['cpe:/h:brother:nc-130h'], 'type': 'print server', 'osgen': None, 'accuracy': '91'}], 'line': '9587', 'name': 'Brother NC-130h print server', 'accuracy': '91'}, {'osclass': [{'osfamily': 'embedded', 'vendor': 'Brother', 'cpe': ['cpe:/h:brother:hl-1870n'], 'type': 'printer', 'osgen': None, 'accuracy': '91'}], 'line': '9767', 'name': 'Brother HL-1870N printer', 'accuracy': '91'}, {'osclass': [{'osfamily': 'embedded', 'vendor': 'Brother', 'cpe': ['cpe:/h:brother:hl-2070n', 'cpe:/h:brother:mfc-5460cn'], 'type': 'printer', 'osgen': None, 'accuracy': '91'}], 'line': '9786', 'name': 'Brother HL-2070N or MFC-5460CN printer', 'accuracy': '91'}, {'osclass': [{'osfamily': 'embedded', 'vendor': 'Brother', 'cpe': ['cpe:/h:brother:hl-2070n'], 'type': 'printer', 'osgen': None, 'accuracy': '91'}], 'line': '9805', 'name': 'Brother HL-2070N printer', 'accuracy': '91'}, {'osclass': [{'osfamily': 'embedded', 'vendor': 'Brother', 'cpe': ['cpe:/h:brother:hl-5070n'], 'type': 'printer', 'osgen': None, 'accuracy': '91'}], 'line': '10112', 'name': 'Brother HL-5070N printer', 'accuracy': '91'}, {'osclass': [{'osfamily': 'embedded', 'vendor': 'Brother', 'cpe': ['cpe:/h:brother:mfc-7820n'], 'type': 'printer', 'osgen': None, 'accuracy': '91'}], 'line': '10480', 'name': 'Brother MFC-7820N printer', 'accuracy': '91'}, {'osclass': [{'osfamily': 'embedded', 'vendor': 'Brother', 'cpe': ['cpe:/h:brother:mfc-9420cn'], 'type': 'printer', 'osgen': None, 'accuracy': '91'}], 'line': '10595', 'name': 'Brother MFC-9420CN printer', 'accuracy': '91'}], 'portused': [{'state': 'closed', 'portid': '8888', 'proto': 'tcp'}]}, '192.168.224.254': {'status': {'state': 'up', 'reason': 'arp-response'}, 'vendor': {'00:50:56:F5:F1:1D': 'VMware'}, 'addresses': {'mac': '00:50:56:F5:F1:1D', 'ipv4': '192.168.224.254'}, 'tcp': {8888: {'product': '', 'state': 'filtered', 'version': '', 'name': 'sun-answerbook', 'conf': '3', 'extrainfo': '', 'reason': 'no-response', 'cpe': ''}}, 'hostnames': [{'type': '', 'name': ''}], 'osmatch': [], 'portused': []}}}

2. 字典的解析

为了更好地测试,最好使用jupyter或控制台去单步执行,去使用dict的get方法去逐步解析,防止错误

for key, value in a.items():if value.get("tcp").get(port).get("state") == "open":print "target ip maybe :" + keyprint "some information"print valuetarget = target + 1

运行结果

zhao@zhao:~/Desktop/project$ sudo python scan.py
[sudo] password for zhao:
input ip range(eg:192.168.224.0/24)>
input target port(eg:8888)>
scan ip range 192.168.224.0/24
target ip maybe :192.168.224.132
some information
{'status': {'state': 'up', 'reason': 'localhost-response'}, 'uptime': {'seconds': '2001774', 'lastboot': 'Thu Jun  4 10:03:22 2020'}, 'vendor': {}, 'addresses': {'ipv4': '192.168.224.132'}, 'tcp': {8888: {'product': '', 'state': 'open', 'version': '', 'name': 'sun-answerbook', 'conf': '3', 'extrainfo': '', 'reason': 'syn-ack', 'cpe': ''}}, 'hostnames': [{'type': '', 'name': ''}], 'osmatch': [{'osclass': [{'osfamily': 'Linux', 'vendor': 'Linux', 'cpe': ['cpe:/o:linux:linux_kernel:2.6.32'], 'type': 'general purpose', 'osgen': '2.6.X', 'accuracy': '100'}], 'line': '50174', 'name': 'Linux 2.6.32', 'accuracy': '100'}], 'portused': [{'state': 'open', 'portid': '8888', 'proto': 'tcp'}, {'state': 'closed', 'portid': '30317', 'proto': 'udp'}]}

参考文章

  1. Python中python-nmap模块的使用

  2. nmap命令扫描存活主机

python调用nmap扫描局域网存活主机和端口相关推荐

  1. nmap扫描局域网存活主机_第十五天Nmap篇:每日一练之Kali Linux面试题

    31.[不定项]Kali Linux中,Nmap网络扫描工具功能包括(  ) A.主机发现 B.端口扫描 C.版本探测 D.OS探测 (点击空白处查看内容) ▼ ABCD 32.Kali Linux中 ...

  2. nmap扫描局域网存活主机_安全工程师都在用的网络扫描软件,巧用ARP协议发现主机。第二节...

    前情回顾 前一节我们介绍了Nmap的安装和简单实用.不知道小伙伴们有什么疑问?如果有的话请在评论区留言,或者私信都可以.一定尽力解答哟! 在学习本节之前,我们一起回顾一下网络基本知识,网络分层模型大家 ...

  3. Linux下使用nmap扫描局域网存活的IP

    Linux下使用nmap扫描局域网存活的IP [root@z05 ~]# nmap -sP 192.168.0.0/24|grep 192. mass_dns: warning: Unable to ...

  4. python 局域网扫描_Python 简化版扫描局域网存活主机

    [code]''' Python 简化版局域网扫描获取存活主机IP by 郑瑞国 1.ping指定IP判断主机是否存活 2.ping所有IP获取所有存活主机 #注: 若在Linux系统下 ping - ...

  5. shell 脚本——实现扫描局域网存活主机IP,并写到文本

    一.这里大篇幅的代码是对输入的ip格式进行过滤,如果只考虑简单的扫描可以直接拉到最底. 只写开始扫描注释之后的代码 ​​​​​​​------------ #/bin/bash #Scan the s ...

  6. 使用python调用nmap模块实现端口扫描

    使用python调用nmap模块实现端口扫描 安装python-nmap模块 pip3 install python-nmapPortScanner()类,实现一个nmap工具的端口扫描功能封装; 代 ...

  7. nmap 扫描局域网内的机器 扫描指定电脑的开放的端口

    1. 扫描局域网内的机器 nmap -sP 192.168.1.0/24 nmap -sS 192.168.1.0/24 2.扫描指定机器的端口开放 nmap -sS 192.168.1.61 -p ...

  8. 为何一个主机ip可以ping通,nmap扫描结果却说主机不在线

    原因 Ping ping 是 ICMP echo request. NMAP 而nmap功能多,选项就复杂些. 默认情况下,Nmap 会进行主机发现(Host Discovery),然后对它确定在线的 ...

  9. 《云计算》-安全策略-扫描与抓包分析-使用NMAP扫描回去指定主机/网段的相关信息、使用tcpdump分析FTP访问中的明文交换信息

    3 案例3:扫描与抓包分析 3.1 问题 本案例要求熟悉Linux主机环境下的常用安全工具,完成以下任务操作: 使用NMAP扫描来获取指定主机/网段的相关信息 使用tcpdump分析FTP访问中的明文 ...

  10. 如何使用Nmap扫描所有TCP和UDP端口?

    Nmap is a very useful and popular tool used to scan ports. Nmap by default scans the most popular 10 ...

最新文章

  1. 丰度决定了细菌在复杂群落中的功能作用
  2. 注册Github账户过程
  3. 四十、Linux和ViM的使用
  4. ITK:从三个标量图像组成矢量
  5. 干货!无需任何工具,实测macOS双开微信客户端
  6. html5 can,基于html5 can-vas实现漫天飞雪效果实例
  7. C#中的System.Speech命名空间初探
  8. WPF中TextBlock文本换行与行间距
  9. 基于javaweb的宠物管理系统
  10. backward()函数中的参数解析
  11. ODC:在线深度聚类的无监督表示学习
  12. 看透SpringMVC源码-网站架构演变1-3
  13. 如何开始创业(催生全美最大孵化器YC的文章)
  14. 公众号多题库查题系统
  15. 命令行发送SMTP协议邮件(163邮箱)
  16. 本地文件复制到远程桌面无法粘贴
  17. StarUML 代码生成(C++)
  18. 美国撞击小行星的宇宙飞船成功改变行星轨道
  19. 将base64转换为图片
  20. 《信号与系统》——连续傅里叶变换与拉布拉斯变换专题

热门文章

  1. 随机生成手机号的java代码
  2. 智慧交通信号控制系统梗概
  3. 如何用30分钟快速优化家中Wi-Fi?阿里工程师有绝招
  4. Arduino Uno接JQ8900-16p语音播报模块
  5. 遥感、GIS、计算机视频教程
  6. 2019.11.21工作记录——windriver生成PCI驱动32位向64位移植
  7. 电力拖动自动控制系统_电气工程及其自动化为什么这么火!原因有这些,建议收藏...
  8. jsPlumb点到点连线偏移
  9. 【bat】 计算机清理原理,使用bat脚本清理系统垃圾的方法
  10. bat windows10系统垃圾清理---