AnisurRahman-46/Direct-Drop
GitHub: AnisurRahman-46/Direct-Drop
Stars: 1 | Forks: 0
# ⚡ Direct-Drop (🚧 开发中)
**一个原生、零依赖的局域网文件共享架构。**
## 🎯 什么是 Direct-Drop?
Direct-Drop 是一个轻量级、跨平台的文件传输工具,我正在从零开始构建它。其目标是在本地 Wi-Fi 网络中,在不使用互联网、蓝牙或任何臃肿的第三方 Web 框架(如 Flask 或 Django)的情况下,在 Windows 电脑和移动设备之间安全、即时地传输文件。
## 🧠 探索的网络与安全概念
我没有选择导入现成库这条捷径,而是原生构建核心引擎,以深入理解计算机之间是如何通信的。在构建过程中,我实现了:
* **Socket 编程:** 在设备之间建立原始 TCP 连接。
* **动态 IP 路由:** 通过 UDP 扫描本地网络配置,避免硬编码 IP。
* **自定义 HTTP 数据包解析:** 手动切片并从原始 `multipart/form-data` 流中提取二进制文件负载。
* **局域网安全与最小权限:** 将应用程序安全地隔离在用户空间,避免强制修改管理员级防火墙设置。
* **异步数据传输:** 管理分块文件读取,防止在传输大文件时发生 RAM 溢出。
## 🗓️ 开发阶段
## 🛠️ 第一阶段:核心引擎与动态 IP 路由
**目标:** 建立一个纯原生的 TCP Web 服务器,动态映射主机的局域网 (LAN) 架构,并确保稳定的端口管理。
### ⚙️ 我们构建了什么
在这个初始阶段,我构建了 Direct-Drop 服务器的基础。我没有硬编码 IP 地址或依赖 `localhost`(移动设备无法访问),而是构建了一个 **动态路由** 函数,该函数会自动搜寻宿主机的真实 Wi-Fi IP 地址。我还实现了一个命令行界面 (CLI) 来接受文件路径,动态生成 ASCII 二维码,并保护服务器的生命周期以防止端口挂起。
### 🔍 工作原理(底层机制)
* **CLI 触发器:** 我们使用了 `argparse` 库,**以便**用户可以直接通过终端传递特定的文件路径,允许脚本在启动服务器之前立即验证文件是否实际存在。
* **UDP Ping 技巧:** 我们创建了一个虚拟 UDP socket 并尝试连接到一个公共 DNS 服务器 (`8.8.8.8`),**以便**强制 Windows 操作系统查询其内部路由表。这 **安全地** 揭示了当前用于 Wi-Fi 的 **活动私有 IP** 地址,而无需实际通过互联网发送负载。
* **服务器启动:** 我们将 Python 原生的 `http.server` 绑定到该特定私有 IP 的 8080 端口上,**以便**同一 Wi-Fi 网络上的外部设备(如手机)可以将流量直接路由到笔记本电脑。
* **QR 握手:** 我们使用 `qrcode` 库通过数学运算生成了一个 ASCII 二维码并将其打印到终端,**以便**用户可以立即将手机与服务器 URL (`http://:8080/`) 配对,而无需手动输入 IP 地址。
* **端口重用修复:** 我们显式设置了 `socketserver.TCPServer.allow_reuse_address = True`,**以便**如果用户停止脚本并立即重新启动它,Windows 会立即 **释放 8080 端口,而不是因** “地址已被使用”的网络错误 **导致应用程序崩溃**。
* **优雅关闭:** 我们将服务器执行包装在 `try/except KeyboardInterrupt` 块中,**以便**当用户按下 `CTRL+C` 时,服务器会 **安全地** 干净利落地关闭端口,防止隐形的“幽灵”端口在后台持续监听。
### 🧠 应用的核心网络与安全概念
* **Socket 编程 (UDP vs. TCP):** 利用 UDP 无连接的特性安全地查询操作系统路由表,而无需打开不必要的出站 TCP 流。
* **LAN 架构与 NAT:** 通过确保服务器严格绑定到内部私有 IP(例如 `192.168.x.x`)而不是环回地址 (`127.0.0.1`),加深了对网络地址转换 **(NAT)** 的理解,从而允许本地点对点路由。
* **零依赖系统设计:** 绕过了像 Flask 这样的大型框架。通过使用原生的 `socketserver` 和 `http.server`,应用程序的攻击面被大幅最小化,且足迹保持极其轻量。
* **资源管理:** 通过编写显式的端口释放命令和安全地处理手动键盘中断,确保严格遵守操作系统规范。
*由 **Anisur Rahman** 构建*
标签:Beacon Object File, HTTP解析, P2P, Socket编程, TCP协议, 二维码, 内网穿透, 动态IP路由, 原生开发, 大文件传输, 局域网文件传输, 异步传输, 数据库初始化, 文件共享, 无互联网传输, 极简架构, 沙箱, 移动设备, 网络信息收集, 网络安全, 逆向工具, 隐私保护, 零依赖