# 安全FTP服务器和客户端 **Repository Path**: Aq_com/secure-ftp-servers-and-clients ## Basic Information - **Project Name**: 安全FTP服务器和客户端 - **Description**: 基于Python实现的安全FTP服务器和客户端程序,支持文件传输、用户认证和加密通信。 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-28 - **Last Updated**: 2025-07-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, 加密通信 ## README # 安全FTP服务器和客户端 这是一个使用Python实现的安全FTP服务器和客户端程序,支持文件传输、用户认证和加密通信。 ## 功能特点 - 安全的用户认证 - 使用**PBKDF2进行密码哈希** - 密码安全存储在MySQL数据库中 - 支持多用户管理 - 加密通信 - **RSA非对称加密用于密钥交换** - **Fernet对称加密保护数据传输** - 端到端加密确保通信安全 - 文件操作 - 文件上传和下载 - 目录创建和导航 - 文件属性查看 - 文件重命名 - 实时通信 - 支持用户间私聊 - 支持全局广播消息 - 在线用户列表查看 ## 项目结构 ``` . ├── client/ # 客户端代码 │ ├── client.py # 客户端主要实现 │ └── run_client.py # 客户端启动脚本 ├── server/ # 服务器代码 │ ├── server.py # 服务器主要实现 │ └── run_server.py # 服务器启动脚本 └── shared/ # 共享模块 ├── crypto.py # 加密工具类 └── database.py # 数据库管理类 ``` ## 先安装要依赖的东西 1. 安装MySQL数据库服务器 ```bash # Windows下推荐使用MySQL安装程序 # 下载地址:https://dev.mysql.com/downloads/installer/ ``` 2. 创建数据库 ```sql CREATE DATABASE ftp_server; ``` 3. 安装Python依赖(使用国内源加速): ```bash pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ ``` 4. 配置数据库连接: 编辑 `shared/database.py` 中的数据库连接信息: ```python self.connection = mysql.connector.connect( host="localhost", # 注意修改成自己的数据库地址 user="your_username", #注意换成你自己的账号和密码 password="your_password", #注意换成你自己的账号和密码 database="ftp_server" # 注意修改成自己的数据库名 ) ``` ## 再使用 1. 先启动服务器: ```bash cd server python run_server.py ``` 2. 再启动客户端: ```bash cd client python run_client.py ``` 3. 客户端命令列表: 基础命令: - `connect [host] [port]` - 连接到服务器 - `quit` - 退出客户端 文件操作: - `list` - 列出当前目录文件 - `cd [path]` - 改变目录 - `pwd` - 显示当前目录 - `mkdir [name]` - 创建目录 - `get [filename]` - 下载文件 - `put [filename]` - 上传文件 - `attrib [filename]` - 查看文件属性 - `rename [old] [new]` - 重命名文件或目录 - `create [filename]` - 创建新文件 用户管理: - `add [username] [password]` - 添加新用户 - `online` - 查看在线用户 - `chat ` - 发送聊天消息(使用"all"广播) ## 安全特性 - 所有密码经过PBKDF2-SHA256哈希处理后存储 - 使用RSA-2048进行密钥交换 - 使用Fernet实现对称加密 - 防止目录遍历攻击 - 密码输入时不显示明文 ## 注意事项 - 首次运行前确保MySQL服务已启动 - 默认服务器端口为21000 - 默认创建admin用户(密码:admin123) - 文件传输使用二进制模式,支持所有类型文件 - 建议在局域网内使用