查看: 608|回复: 0

[Python] 局域网在线IP检测

[复制链接]
  • TA的每日心情
    郁闷
    4 天前
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    发表于 4 天前 | 显示全部楼层 |阅读模式
    写了一个局域网在线ip检测工具
    这段代码的主要功能是通过多线程方式扫描一个局域网内的 IP 地址,检测哪些 IP 地址是在线的。

    1. **线程数量和步长**:
       ```python
       num_threads = 200  # 可以根据需要调整线程数量
       step = (end_ip - start_ip + 1) // num_threads
       ```
       - `num_threads` 定义了将要使用的线程数量,这里设置为 200。
       - `step` 计算出每个线程需要扫描的 IP 范围的大小,通过 `(end_ip - start_ip + 1) // num_threads` 计算得到。

    2. **记录开始时间**:
       ```python
       start_time = time.time()  # 记录开始时间
       ```
       - 通过 `time.time()` 记录当前时间,用于计算扫描所花费的总时间。

    3. **创建并启动线程**:
       ```python
       for i in range(num_threads):
           s = start_ip + i * step
           e = min(start_ip + (i + 1) * step - 1, end_ip)
           t = threading.Thread(target=scan_range, args=(s, e))
           threads.append(t)
           t.start()
       ```
       - 通过循环创建多个线程。每个线程负责扫描一个 IP 范围。
       - `s` 和 `e` 分别代表当前线程要扫描的起始和结束 IP 地址。
       - 使用 `threading.Thread` 创建线程,并将扫描函数 `scan_range` 作为目标,传递起始和结束 IP 作为参数。
       - 将线程添加到 `threads` 列表中,并调用 `t.start()` 启动线程。

    4. **等待所有线程结束**:
       ```python
       for t in threads:
           t.join()
       ```
       - 这个循环确保主线程会等待所有的工作线程 `t` 完成后再继续执行。`t.join()` 阻塞主线程,直到 `t` 线程结束。

    5. **记录结束时间和计算耗时**:
       ```python
       end_time = time.time()  # 记录结束时间
       elapsed_time = end_time - start_time
       elapsed_time_formatted = "{:.2f}".format(elapsed_time)  # 格式化为小数点后两位
       ```
       - 记录结束时间后,通过简单的减法计算出整个扫描过程的耗时。
       - `elapsed_time_formatted` 用于将耗时格式化为小数点后两位的字符串。

    6. **打印扫描结果**:
       ```python
       print(f"扫描完成,总共用时: {elapsed_time_formatted} 秒")
       return online_ips
       ```
       - 打印扫描完成的信息及所耗的时间。
       - 最后返回在线的 IP 地址列表 `online_ips`。

    这段代码利用多线程提高 IP 扫描效率,适用于局域网的在线状态检测,并统计出扫描所用的时间。

    局域网在线IP检测.zip

    1013 Bytes, 下载次数: 0, 下载积分: i币 -1

    售价: 1 i币  [记录]  [购买]

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-12-22 15:56 , Processed in 0.045946 second(s), 14 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部