吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2565|回复: 17
收起左侧

[Python 原创] 扫描局域网FTP并打开

  [复制链接]
shieep 发表于 2026-4-13 12:31
为了和电子设备传输文件,经常会装个FTP软件,我这里常用的是Mixplorer,默认端口2121,用户名为Admin,密码为空。
但是在局域网上IP经常会变,每次都需要手打地址,这里写个脚本,可以自行扫描,然后自动调用FlashFXP打开FTP,极大提升了便利性。
你可以自行更换相关设置。
[Python] 纯文本查看 复制代码
import socket
import threading
from queue import Queue
import subprocess
import os

# ===================== 配置项 =====================
# 已设置为你的路径:E:\Network\FlashFXP\FlashFXP.exe
FLASHFXP_PATH = r"E:\Network\FlashFXP\FlashFXP.exe"
PORT = 2121
USERNAME = "Admin"
PASSWORD = ""
TIMEOUT = 0.5
MAX_THREADS = 100
# ==================================================

queue = Queue()
success_hosts = []

def get_local_network():
    """自动获取本机IP,自动计算网段"""
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        s.connect(("8.8.8.8", 80))
        local_ip = s.getsockname()[0]
    finally:
        s.close()

    parts = local_ip.split('.')
    prefix = f"{parts[0]}.{parts[1]}.{parts[2]}."
    return prefix

def get_hostname(ip):
    try:
        return socket.gethostbyaddr(ip)[0]
    except:
        return "未知主机名"

def open_flashfxp(ip):
    """自动调用FlashFXP连接"""
    if not os.path.exists(FLASHFXP_PATH):
        print(f"[!] FlashFXP 未找到:{FLASHFXP_PATH}")
        return

    ftp_url = f"ftp://{USERNAME}:{PASSWORD}@{ip}:{PORT}"
    try:
        subprocess.Popen([FLASHFXP_PATH, ftp_url])
        print(f"[🔗 已打开 FlashFXP 连接:{ip}]")
    except Exception as e:
        print(f"[❌ 打开失败:{e}]")

def scan_ip(ip):
    try:
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            s.settimeout(TIMEOUT)
            if s.connect_ex((ip, PORT)) == 0:
                hostname = get_hostname(ip)
                success_hosts.append((ip, hostname))
                print(f"[✅ 成功] {ip} | {hostname}")
                open_flashfxp(ip)
    except:
        pass

def worker():
    while not queue.empty():
        scan_ip(queue.get())
        queue.task_done()

def main():
    print("=" * 60)
    print("        局域网 2121 端口自动扫描 + FlashFXP 自动打开")
    print("=" * 60)

    prefix = get_local_network()
    print(f"[*] 自动识别网段:{prefix}1 ~ {prefix}254")

    # 生成IP段 1~254
    for i in range(1, 255):
        queue.put(prefix + str(i))

    # 启动多线程
    for _ in range(MAX_THREADS):
        t = threading.Thread(target=worker, daemon=True)
        t.start()

    queue.join()

    # 输出结果
    print("\n" + "=" * 50)
    print("                 扫描完成")
    print("=" * 50)
    if success_hosts:
        for idx, (ip, name) in enumerate(success_hosts, 1):
            print(f"{idx}. {ip}  -  {name}")
    else:
        print("[❌] 未找到开放 2121 端口的主机")
    print("=" * 50)

if __name__ == "__main__":    main()

免费评分

参与人数 3吾爱币 +8 热心值 +3 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
anning666 + 1 + 1 我很赞同!
amateur150 + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

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

JARK006 发表于 2026-4-13 14:39
说到FTP,倒是可以试试我这个FTP服务器,使用很方便
https://github.com/jark006/FtpServer

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
naixubao + 1 + 1 谢谢@Thanks!
SVIP008 + 1 + 1 大佬的这个我一直在用,确实是很方便,一个字,爽!感谢大佬

查看全部评分

xinyu5034 发表于 2026-4-13 20:08
daixiangjiang 发表于 2026-4-13 14:36
1e3e 发表于 2026-4-13 15:07
感谢好智能化,其实路由器有些价格贵点的可以设置固定ip的
Duoi 发表于 2026-4-13 17:27
有时候打印机扫描需要用到FTP
zhaoxunzhiyin 发表于 2026-4-13 17:56
谢谢楼主分享
765058729 发表于 2026-4-13 19:28
JARK006 发表于 2026-4-13 14:39
说到FTP,倒是可以试试我这个FTP服务器,使用很方便
https://github.com/jark006/FtpServer

登录不上去,传一个到论坛用用
JARK006 发表于 2026-4-13 20:08
765058729 发表于 2026-4-13 19:28
登录不上去,传一个到论坛用用

https://www.52pojie.cn/thread-1956187-1-1.html
lbdcyy 发表于 2026-4-14 08:36
有备无患,办公经常会用到
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2026-7-15 01:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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