吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10605|回复: 67
收起左侧

[原创工具] 网段扫描工具(ping网段中可以ping到的ip地址)

[复制链接]
baileybaaifine 发表于 2023-5-19 18:04
本帖最后由 baileybaaifine 于 2023-5-19 18:06 编辑

网段扫描工具(ping网段中可以ping到的ip地址) py简单生成的工具
上面的代码实现了一个简单的IP地址段扫描工具。它的功能如下:
  • 用户通过输入一个IP地址段(例如:192.168.0.1/24),程序会将其转换为IP对象。
  • 创建一个空的可达IP地址列表。
  • 定义了一个ping函数,用于向指定的IP地址发送ping命令,并将结果添加到可达列表中。
  • 使用并发编程的ThreadPoolExecutor创建一个进程池,最多同时执行50个ping进程。
  • 遍历IP地址段中的所有IP地址,并将每个IP地址提交到进程池中执行ping函数。
  • 等待所有ping任务完成。
  • 停止计时,记录程序运行时间。
  • 将可达IP地址列表按照IP地址的排序进行排序。
  • 输出可达IP地址列表的表格形式,包括IP地址、延迟(ms)和TTL信息。
  • 输出可达IP地址的数量以及程序的总运行时间。
  • 提示用户是否继续查询,如果用户输入不是'y',则退出循环,结束程序。
  • 如果用户输入的IP地址段不符合要求,会捕获ValueError异常并进行提示。
总体而言,这段代码用于扫描指定IP地址段中的所有IP地址,通过执行ping命令检测可达性,并输出可达IP地址的相关信息。下载地址看附件



上代码


import subprocess
import ipaddress
import time
import concurrent.futures

while True:

获取用户输入的IP地址段

ip_network_str = input("请输入要扫描的IP地址段(例如:192.168.0.1/24):").strip()

try:
    # 将IP地址段转换为IP对象
    ip_network = ipaddress.ip_network(ip_network_str)

    # 创建一个列表来存储可达的IP地址及延迟和TTL信息
    reachable_hosts = []

    # 定义ping函数,用于ping指定的IP地址,并将结果添加到可达列表中
    def ping(ip):
        # 调用ping命令,并将结果输出到空设备上
        ping_result = subprocess.Popen(['ping', '-n', '1', '-w', '500', ip],
                                       stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        # 从输出中提取延迟和TTL信息
        output = ping_result.stdout.read().decode('gbk')
        delay = 'N/A'
        ttl = 'N/A'
        for line in output.split('\n'):
            if 'TTL' in line:
                ttl = line.split('TTL=')[1].split()[0]
            if '用时' in line:
                delay = line.split('用时')[1].split()[0]

        # 如果ping成功,将IP地址及延迟和TTL信息添加到可达列表中
        if 'TTL' in output:
            reachable_hosts.append((ip, delay, ttl))

    # 开始计时
    start_time = time.time()

    # 创建一个进程池,最多同时执行50个ping进程
    with concurrent.futures.ThreadPoolExecutor(max_workers=50) as executor:
        # 遍历IP地址段中的所有IP地址,并提交ping函数到进程池中执行
        futures = [executor.submit(ping, str(ip)) for ip in ip_network]

    # 等待所有ping任务完成
    concurrent.futures.wait(futures)

    # 停止计时
    end_time = time.time()

    # 按表格形式输出可达IP地址列表及延迟和TTL信息
    reachable_hosts = sorted(reachable_hosts, key=lambda x: list(map(int, x[0].split('.'))))
    print("可达的IP地址:")
    print("{:<15}{:<15}{:<10}{}".format("IP地址", "延迟(ms)", "TTL", "状态"))
    for host in reachable_hosts:
        print("{:<15}{:<15}{:<10}{}".format(host[0], host[1], host[2], "可达"))

    # 输出可达IP地址数量和程序运行时间
    num_reachable_hosts = len(reachable_hosts)
    elapsed_time = end_time - start_time
    if elapsed_time < 60:
        print("共发现 {} 个可达的IP地址,程序总共运行时间:{:.2f}秒".format(num_reachable_hosts, elapsed_time))
    else:
        print("共发现 {} 个可达的IP地址,程序总共运行时间:{:.2f}分钟".format(num_reachable_hosts, elapsed_time/60))

    # 判断是否继续查询
    user_input = input("是否继续查询(Y/N)?")
    if user_input.lower() != 'y':
        break

except ValueError:
    print("输入的不是正确的IP地址段,请重新输入!")
3.png
2.png
1.png

下载地址.txt

51 Bytes, 下载次数: 310, 下载积分: 吾爱币 -2 CB

免费评分

参与人数 5吾爱币 +10 热心值 +4 收起 理由
chen113115 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
蔡金辉 + 1 + 1 谢谢@Thanks!
Cazeo同学 + 1 热心回复!
confiant + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

friscky 发表于 2024-3-23 18:52
请输入要扫描的IP地址段(例如:192.168.0.1/24):192.168.123.1
可达的IP地址:
IP地址           延迟(ms)         TTL       状态
192.168.123.1  N/A            64        可达
共发现 1 个可达的IP地址,程序总共运行时间:0.01秒
是否继续查询(Y/N)?y
请输入要扫描的IP地址段(例如:192.168.0.1/24):192.168.123.1/24
输入的不是正确的IP地址段,请重新输入!
请输入要扫描的IP地址段(例如:192.168.0.1/24):192.168.0.1/24
输入的不是正确的IP地址段,请重新输入!
请输入要扫描的IP地址段(例如:192.168.0.1/24):192.168.0.1/24
输入的不是正确的IP地址段,请重新输入!
请输入要扫描的IP地址段(例如:192.168.0.1/24):


没看出来我哪里输入错了...
 楼主| baileybaaifine 发表于 2023-5-23 15:38
t711s 发表于 2023-5-22 16:54
图片中0/24,24指的是什么?

IP地址段192.168.1.0/24中的/24表示子网掩码的长度。这个长度表示了地址中网络部分的位数,也就是前24位。剩余的8位用于主机部分。

在这种情况下,IP地址192.168.1.0/24表示一个以192.168.1.0作为网络地址的网络,其中最后8位可用于表示主机。这个网段中包含了从192.168.1.1到192.168.1.254的所有IP地址,其中192.168.1.255是广播地址。

我讲的不是很清楚 让chat回答的
LHCAILGT 发表于 2023-5-20 13:12
temp2005 发表于 2023-5-20 13:17
一般用不上
900152 发表于 2023-5-20 16:07
有没有跨网段扫描mac的?
clgluke 发表于 2023-5-20 16:34
为啥不用nmap扫描
zbgood100 发表于 2023-5-20 17:55
这种工具网上很多,监控安防使用较多
jsdhmqh 发表于 2023-5-21 08:38
不错,感谢分享!
c259179 发表于 2023-5-21 08:48
非常不错的,感谢分享
wsasecy 发表于 2023-5-21 13:57
顶顶原创工具更健康。
Monic 发表于 2023-5-21 14:48
   收下了,感谢 已经下载收藏
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 00:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表