python通过nmap扫描在线设备并尝试AAA登录(实例代码)

下面是详细的攻略:

简介

本攻略是为了介绍如何使用Python编程语言和nmap工具来扫描在线设备并尝试进行AAA(认证、授权、计费)登录。
namp是一款经典的网络扫描工具,可以对目标进行端口扫描、操作系统识别、服务识别等,而要实现AAA登录,则需要借助MySQL数据库以及Python语言。

步骤

1. 安装nmap以及Python-nmap

首先需要安装nmap和Python-nmap模块,可以使用以下命令进行安装:

sudo apt-get install nmap
pip install python-nmap

2. 创建MySQL数据库

创建一个MySQL数据库,包含3个表:用户表、设备表和日志表,其中分别存储用户信息、设备信息、用户登录日志等。

3. 编写Python脚本

接下来编写Python脚本,实现以下功能:

  1. 扫描局域网中的在线设备,并将结果保存到设备表中。
  2. 读取设备表中的设备信息,依次尝试使用保存的用户名和密码进行登录,将登录成功/失败的结果保存到日志表中。

以下是具体的示例代码:

import nmap
import pymysql

def scan_network():
    nm = nmap.PortScanner()
    nm.scan(hosts='192.168.0.1/24', arguments='-n -sP -PE -PA21,23,80,3389')
    for host in nm.all_hosts():
        if nm[host].state() == 'up':
            ip = nm[host]['addresses']['ipv4']
            mac = nm[host]['addresses']['mac']
            vendor = nm[host]['vendor'][mac] if 'vendor' in nm[host] else ''
            insert_device(ip, mac, vendor)

def login_devices():
    db = pymysql.connect("localhost", "user", "password", "database")
    cursor = db.cursor()
    cursor.execute("SELECT * FROM devices")
    devices = cursor.fetchall()
    for device in devices:
        ip = device[0]
        username = device[1]
        password = device[2]
        if login_device(ip, username, password):
            log_device(ip, username, "Login succeeded")
        else:
            log_device(ip, username, "Login failed")

def insert_device(ip, mac, vendor):
    db = pymysql.connect("localhost", "user", "password", "database")
    cursor = db.cursor()
    cursor.execute("INSERT INTO devices VALUES ('{}', '', '{}', '{}')".format(ip, mac, vendor))
    db.commit()

def login_device(ip, username, password):
    # 使用telnet或ssh协议进行AAA登录,登录成功返回True,否则返回False
    pass

def log_device(ip, username, status):
    db = pymysql.connect("localhost", "user", "password", "database")
    cursor = db.cursor()
    cursor.execute("INSERT INTO logs VALUES ('{}', '{}', '{}', NOW())".format(ip, username, status))
    db.commit()

if __name__ == '__main__':
    scan_network()
    login_devices()

上述代码中,scan_network()函数用于扫描网络中的在线设备,将结果保存到设备表中;login_devices()函数用于读取设备表中的设备信息,依次进行AAA登录,并将登录成功/失败的结果保存到日志表中;insert_device()函数用于向设备表中插入设备信息;login_device()函数用于进行AAA登录;log_device()函数用于向日志表中插入日志信息。

4. 运行脚本

最后运行Python脚本,即可进行扫描和AAA登录的操作。运行结果将保存到MySQL数据库中,可以根据日志信息进行后续分析。

示例说明

示例1:扫描网络中的在线设备

假设当前主机的IP地址为192.168.0.100,执行如下命令可以扫描该主机所在的网络中的在线设备:

import nmap

nm = nmap.PortScanner()
nm.scan(hosts='192.168.0.1/24', arguments='-n -sP -PE -PA21,23,80,3389')
for host in nm.all_hosts():
    if nm[host].state() == 'up':
        print('Online host: %s (%s)' % (host, nm[host]['addresses']['mac']))

执行结果如下:

Online host: 192.168.0.1 (B8:27:EB:36:BA:57)
Online host: 192.168.0.2 (00:50:DA:B8:2C:0E)
Online host: 192.168.0.100 (B8:27:EB:C2:33:A6)

可以看到,当前网络中有3台在线的设备,分别是192.168.0.1、192.168.0.2和192.168.0.100。

示例2:进行AAA登录

假设当前网络中有一台名为“switch”的设备,需要进行AAA登录,使用如下命令可以进行登录:

import telnetlib

HOST = '192.168.0.10'
USER = 'admin'
PASSWORD = 'admin'

tn = telnetlib.Telnet(HOST)
tn.read_until(b"Username: ")
tn.write(USER.encode('ascii') + b"\n")
tn.read_until(b"Password: ")
tn.write(PASSWORD.encode('ascii') + b"\n")

其中,HOST是目标设备的IP地址,USER和PASSWORD是登录的用户名和密码。如果登录成功,则可以继续进行后续操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python通过nmap扫描在线设备并尝试AAA登录(实例代码) - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Python 元组拆包示例(Tuple Unpacking)

    当我们从函数或语句返回多个值时,Python 通常返回它们作为元组。元组拆包是一种将元组的值分配给多个变量的方法。在这个过程中,元组中的每个项目都分配给一个变量。元组拆包非常有用,它可以让你从函数中返回或处理多个值非常容易。 元组拆包语法非常简单。只需将元组中的每个项目赋值给相应的变量即可。我们来看几个示例说明: 示例一:基本用法 # 定义一个示例元组 pe…

    python 2023年6月3日
    00
  • Django 查询数据库返回JSON的实现

    下面就是详细讲解“Django 查询数据库返回JSON的实现”的完整攻略。 首先,要使用Django的ORM进行数据库查询,然后将查询结果通过JSON序列化的方式返回给前端。下面是具体的实现步骤: 1. 查询数据 使用Django的ORM进行数据库查询,可以很方便地实现对数据库数据的读取和操作。此处以查询某一用户的所有订单为例,代码如下: from djan…

    python 2023年6月3日
    00
  • python3.6+opencv3.4实现鼠标交互查看图片像素

    下面是“python3.6+opencv3.4实现鼠标交互查看图片像素”的完整攻略: 准备工作 在开始实现该功能之前,需要先安装好以下两个工具: python 3.6,可以从官方网站下载并安装; opencv 3.4,可以在命令行运行以下命令安装: pip install opencv-python==3.4.0.14 实现步骤 导入必要的模块 在pytho…

    python 2023年5月18日
    00
  • python优化数据预处理方法Pandas pipe详解

    Python优化数据预处理方法Pandas pipe详解 在Python中,Pandas是一个非常流行的数据处理库。Pandas提供了许多功能强大的函数方法,可以帮助我们高效地处理和析数据。其中,pipe()函数是一个非常有用的函数,可以帮助我们优化数据预处理的过程。 pipe()函数的作用 pipe()函数是Pandas中的一个函数它可以将多个数据处理函数…

    python 2023年5月13日
    00
  • 多线程爬虫批量下载pcgame图片url 保存为xml的实现代码

    实现一个多线程爬虫批量下载pcgame图片并保存为xml的代码,需要考虑以下几个步骤: 确定要爬取的网站和目标文件 编写程序进行网页爬取和图片下载,并将图片url保存到xml文件中 处理多线程相关的内容,加快程序的运行速度 下面是具体的实现流程: 确定要爬取的网站和目标文件 我们以pcgame.com.cn网站的图片为例进行爬取。在爬取之前,需要先分析该网站…

    python 2023年5月19日
    00
  • 10个易被忽视但应掌握的Python基本用法

    10个易被忽视但应掌握的Python基本用法 Python 是一门非常强大的编程语言,除了常用的语法和库,还有一些常被忽视但非常实用的基本用法,下面是 10 个这样的用法: 1. 列表推导式 列表推导式是快速生成列表的方法,例如,我们可以使用以下代码生成一个包含从 0 到 9 的整数的列表: number_list = [num for num in ran…

    python 2023年5月13日
    00
  • python如何使用contextvars模块源码分析

    下面是详细的Python如何使用contextvars模块源码分析攻略。 1. 翻阅文档 首先,我们需要查阅Python的官方文档,了解contextvars模块的基本用法和重要概念。同时,我们要熟悉与contextvars相关的其他模块和函数,如 asyncio, inspect 和 threading 等。 可以在 Python 官方文档中查阅 cont…

    python 2023年6月3日
    00
  • 开发环境Ubuntu16安装以后的初始化设置

    下面是开发环境Ubuntu16安装以后的初始化设置的完整攻略。 一、更新软件包列表 在打开终端窗口后,输入以下命令,更新软件包列表: sudo apt-get update 示例:更新软件包列表 $ sudo apt-get update [sudo] password for user: Hit:1 http://us.archive.ubuntu.com…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部