Python实现扫描局域网活动ip(扫描在线电脑)

Python实现扫描局域网活动ip(扫描在线电脑)攻略

一、实现原理

我们可以通过ping指令或UDP广播的方式来探测局域网内的主机,若存在回复则代表主机在线,反之则不在线。具体实现上我们可以使用Python编写脚本,通过Python的socket库来实现基于UDP协议的主机广播扫描,或使用Python内置的subprocess库来调用系统命令执行ping操作。

二、代码实现

1. UDP广播扫描

我们可以使用Python的socket库来实现UDP广播扫描,示例代码如下:

import socket

def broadcast_scan(ip_prefix, port):
    """
    UDP广播扫描在线主机
    """
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    udp_socket.bind(("", port))
    online_ips = []
    for i in range(1, 255):
        address = ip_prefix + str(i)
        udp_socket.sendto("ping".encode("utf-8"), (address, port))
        udp_socket.settimeout(0.1)
        try:
            data, addr = udp_socket.recvfrom(1024)
            if addr[0] not in online_ips:
                online_ips.append(addr[0])
                print("IP地址为 %s 的主机在线!" % addr[0])
        except socket.timeout:
            pass
    udp_socket.close()
    return online_ips

if __name__ == '__main__':
    ip_prefix = "192.168.1."
    port = 8080
    online_ips = broadcast_scan(ip_prefix, port)
    print("在线主机数量为: %d" % len(online_ips))

在上述代码中,我们使用了Python的socket库实现了UDP广播扫描的功能。具体流程如下:

  1. 创建一个UDP socket对象,并将其设置为广播模式(设置SO_BROADCAST标志位为1);

  2. 绑定端口号,侦听网络端口;

  3. 循环遍历目标局域网所有IP地址,通过调用UDP socket的sendto方法,将"ping"数据包发送给目标IP地址;

  4. 接收来自各主机的回应,查看是否为"ping"数据包,并将其IP地址记录到online_ips列表中。

这样,我们便可以很方便地实现UDP广播扫描功能,从而快速扫描到目标网络上的所有在线主机IP地址。

2. ping扫描

除了UDP广播扫描,我们还可以使用Python的subprocess库调用系统命令来执行ping操作。示例代码如下:

import subprocess

def ping_scan(ip_prefix):
    """
    使用ping命令扫描在线主机
    """
    online_ips = []
    for i in range(1, 255):
        address = ip_prefix + str(i)
        ret = subprocess.call(["ping", "-n", "1", "-w", "10", address])
        if ret == 0:
            online_ips.append(address)
            print("IP地址为 %s 的主机在线!" % address)
    return online_ips

if __name__ == '__main__':
    ip_prefix = "192.168.1."
    online_ips = ping_scan(ip_prefix)
    print("在线主机数量为:%d" % len(online_ips))

在上述代码中,我们使用了Python的subprocess库来调用系统的ping命令来执行ping扫描操作。具体流程如下:

  1. 循环遍历目标局域网所有IP地址,通过调用subprocess库中的call方法执行ping指令,并指定参数:"-n 1"表示仅发送1个请求;"-w 10"表示等待最长10ms的回应;

  2. 根据返回码判断目标主机是否在线。

这样,我们便可以使用Python快速实现简单的ping扫描功能。

三、示例说明

示例1:使用UDP广播扫描判断目标网络内所有在线设备

if __name__ == '__main__':
    ip_prefix = "192.168.1."
    port = 8080
    online_ips = broadcast_scan(ip_prefix, port)
    print("在线主机数量为: %d" % len(online_ips))

在上述示例中,我们指定了目标局域网的IP地址前缀和端口号,即192.168.1.xxx,同时扫描端口为8080的主机,并通过UDP广播的方式将"ping"数据包发送给目标主机,从而判断主机是否在线。最终,我们会得到该网络上所有在线设备的IP地址列表,以及在线设备的数量。

示例2:使用ping扫描判断目标网络内所有在线设备

if __name__ == '__main__':
    ip_prefix = "192.168.1."
    online_ips = ping_scan(ip_prefix)
    print("在线主机数量为:%d" % len(online_ips))

在上述示例中,我们同样指定了目标局域网的IP地址前缀,即192.168.1.xxx,并通过调用系统的ping命令来执行ping扫描操作,从而判断主机是否在线。最终,我们会得到该网络上所有在线设备的IP地址列表,以及在线设备的数量。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现扫描局域网活动ip(扫描在线电脑) - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • 基于Python实现商场抽奖小系统

    下面是基于Python实现商场抽奖小系统的完整攻略: 1. 确定系统需求 在开始编写代码前,我们需要先明确这个抽奖小系统需要具备哪些功能,例如: 能够生成一定数量的奖品,并将奖品存储在数据库中 能够在数据库中添加、删除、修改奖品的信息 能够在抽奖时从数据库中获取奖品信息,并展示给用户 能够实现抽奖过程,并在最终抽中奖品后将相关信息存储在数据库中 能够展示抽奖…

    python 2023年6月13日
    00
  • Python实现自动化处理Word文档的方法详解

    Python实现自动化处理Word文档的方法详解 本篇攻略主要介绍如何利用Python实现自动化处理Word文档的方法,包括读取和编辑Word文档、替换文本和格式设置等常用操作。以下为详细步骤: 第一步:安装Python库 要实现自动化处理Word文档,我们需要安装Python的python-docx库。可以通过以下语句来安装: pip install py…

    python 2023年5月13日
    00
  • python实现人机五子棋

    Python实现人机五子棋 人机五子棋是一款常见的益智类游戏,其玩法类似于围棋,但是相对要简单一些,适合大众娱乐。Python常常被用来实现五子棋这个游戏,本篇文章将详细讲解Python实现人机五子棋的完整攻略。 准备工作 在实现人机五子棋之前,需要掌握如下技术: Python基础语法 Python的GUI库(如Tkinter、PyQt等) Alpha-be…

    python 2023年5月23日
    00
  • Python使用scrapy采集时伪装成HTTP/1.1的方法

    在使用Scrapy进行网页爬取时,为了避免被网站封禁,我们需要伪装成浏览器发送HTTP请求。其中一种方法是伪装成HTTP/1.1协议,本文将详细介绍如何实现这种装。 伪装成HTTP/1.1协议 在Scrapy中,我们可以在settings.py文件中设置USER_AGENT和DEFAULT_REQUEST_HEADERS来伪装成HTTP/1.1协议。具体步骤…

    python 2023年5月14日
    00
  • Python中的XML库4Suite Server的介绍

    Python中的XML库4Suite Server是一个基于Python实现的XML处理库。它提供了一系列功能强大的XML处理工具,包括XML解析、XML序列化和XPath查询等功能,并且支持XSLT转换和XML Schema验证等高级功能。 1. XML解析 XML解析是4Suite Server的基础功能之一。它支持DOM和SAX两种常用的XML解析方式…

    python 2023年6月3日
    00
  • python读取文件夹中图片的图片名并写入excel表格

    下面是详细的“Python读取文件夹中图片的图片名并写入Excel表格”的攻略: 1. 准备工作 在使用 Python 读取图片名称和写入 Excel 之前,我们需要先进行如下准备工作: 1.1 安装所需库 我们需要使用的库包括 os、PIL 和 openpyxl。可以通过命令行输入以下指令来安装: pip install os pip install PI…

    python 2023年5月19日
    00
  • python读取eml文件并用正则表达式匹配邮箱的代码

    以下是“Python读取eml文件并用正则表达式匹配邮箱的代码”的完整攻略: 一、问题描述 在Python中,我们可以读取eml文件并使用正则表达式匹配其中的邮箱。本文将详细讲解如何使用Python读取eml文件并使用正则表达式匹配其中的邮箱,并提供两个示例说明。 二、解决方案 2.1 读取eml文件并使用正则表达式匹配邮箱 在Python中,我们可以使用e…

    python 2023年5月14日
    00
  • Python 读取用户指令和格式化打印实现解析

    下面是关于Python读取用户指令和格式化打印实现解析的完整攻略。 1. 读取用户指令 1.1 命令行参数 Python有一个内置的sys模块,可以用来处理命令行参数。sys.argv列表是由命令行参数组成的列表。列表的第一个元素是程序本身的名称,之后的元素就是传递给程序的参数。 示例: import sys print(‘脚本名:’, sys.argv[0…

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