1. FlyPython首页
  2. 网络安全
  3. Hacking with Python

第二课 NMAP扫描器

第二课 NMAP扫描器

第二课 NMAP扫描器

《Hacking with Python》系列课程第二课,我们来写一个基于NMAP的端口扫描器

Nmap介绍

先对nmap做个简单的介绍:

Nmap是用来探测计算机网络上的主机和服务的一种安全扫描器。为了绘制网络拓扑图Nmap的发送特制的数据包到目标主机然后对返回数据包进行分析。Nmap是一款枚举和测试网络的强大工具。

  • 官方网站:https://nmap.org/
  • 官方中文文档:https://nmap.org/man/zh/

Nmap可以在非常多的平台上运行,具体平台请参考官方下载页面:https://nmap.org/download.html

Python调用Nmap

今天我们需要使用python-nmap这个包来进行Nmap的调用,在安装之前需要安装Nmap

基本用法:

第二课 NMAP扫描器

我们导入nmap包,并创建一个扫描器nm,在scan函数传入扫描目标和需要扫描的端口

我们得到这样的结果:

{'nmap': {'command_line': 'nmap -oX - -p 22-443 -sV flypython.com', 'scaninfo': {'tcp': {'method': 'syn', 'services': '22-443'}}, 'scanstats': {'timestr': 'Wed Dec 2 16:02:23 2020', 'elapsed': '13.55', 'uphosts': '1', 'downhosts': '0', 'totalhosts': '1'}}, 'scan': {'124.156.134.140': {'hostnames': [{'name': 'flypython.com', 'type': 'user'}], 'addresses': {'ipv4': '124.156.134.140'}, 'vendor': {}, 'status': {'state': 'up', 'reason': 'echo-reply'}, 'tcp': {22: {'state': 'open', 'reason': 'syn-ack', 'name': 'ssh', 'product': 'OpenSSH', 'version': '8.2p1 Ubuntu 4', 'extrainfo': 'Ubuntu Linux; protocol 2.0', 'conf': '10', 'cpe': 'cpe:/o:linux:linux_kernel'}, 80: {'state': 'open', 'reason': 'syn-ack', 'name': 'http', 'product': 'Apache httpd', 'version': '2.4.38', 'extrainfo': '(Debian)', 'conf': '10', 'cpe': 'cpe:/a:apache:http_server:2.4.38'}, 443: {'state': 'closed', 'reason': 'reset', 'name': 'https', 'product': '', 'version': '', 'extrainfo': '', 'conf': '3', 'cpe': ''}}}}}

我们可以把扫描结果取出来

第二课 NMAP扫描器

可以看到,我们把对应的nmap命令行,扫描的端口和主机IP等信息取了出来。在返回的结果中还有更多的信息,可以按需取用。

完整的扫描器

我们今天创建一个基本的扫描器,接受一个URL或者IP地址,扫描几个常见的端口,得到扫描的结果。 代码如下:

import nmap 
import sys 

target = str(sys.argv[1])
ports = [21,22,80,139,443,8080]

scan_v = nmap.PortScanner()

print("\nScanning",target,"for ports 21,22,80,139,443 and 8080...\n")

for port in ports:
    portscan = scan_v.scan(target,str(port))
    print("Port",port," is ",portscan['scan'][list(portscan['scan'])[0]]['tcp'][port]['state']) 

print("\nHost",target," is ",portscan['scan'][list(portscan['scan'])[0]]['status']['state'])

效果如下:

第二课 NMAP扫描器

nmap 是一个非常强大的工具,扫描参数可以灵活配置,可以根据官方文档深入学习。第二节课就到这里了。

此系列课程代码: https://github.com/flypythoncom/Hacking-with-Python

关注我们的微信公众号,获取最新的教程信息

此图像的alt属性为空;文件名为006tNbRwly1gai7aeyheij3076076dgb.jpg

原创文章,作者:flypython,如若转载,请注明出处:http://flypython.com/video/405.html