# 网络环境编程 **Repository Path**: lee14Moon/webEnvCode ## Basic Information - **Project Name**: 网络环境编程 - **Description**: 《网络环境与编程》设计性实验 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-06 - **Last Updated**: 2025-06-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 安全FTP服务器和客户端 这是一个具有加密通信功能的FTP服务器和客户端程序,实现了安全的文件传输和用户认证功能。 ## 功能特点 1. 安全的用户认证系统 - 使用数据库存储用户信息 - 密码加密存储 - 支持添加新用户 2. 加密通信 - 使用RSA进行密钥交换 - 使用AES进行数据传输加密 - 所有通信内容都经过加密 3. 文件操作功能 - 列出目录内容 - 切换目录 - 创建目录 - 上传文件 - 下载文件 - 查看文件属性 - 重命名文件 - 创建新文件 ## 安装要求 - Python 3.7+ - 依赖包: - cryptography - pycryptodome - SQLAlchemy - python-dotenv ## 安装步骤 1. 克隆或下载项目代码 2. 安装依赖包: ```bash pip install -r requirements.txt ``` ## 使用方法 1. 启动服务器: ```bash python ftp_server.py ``` 2. 启动客户端: ```bash python ftp_client.py ``` 3. 在客户端中登录: - 输入用户名和密码 - 如果是首次使用,可以使用 `add` 命令添加新用户 4. 可用命令: - `list` - 列出当前目录文件 - `cd <目录名>` - 进入指定目录 - `cd..` - 返回上级目录 - `pwd` - 显示当前目录 - `mkdir <目录名>` - 创建目录 - `get <文件名>` - 下载文件 - `put <文件名>` - 上传文件 - `attrib <文件名>` - 查看文件属性 - `rename <旧文件名> <新文件名>` - 重命名文件 - `create <文件名>` - 创建文件 - `add <用户名> <密码>` - 添加用户 - `exit` - 退出程序 ## 安全说明 1. 所有通信都使用加密传输 2. 用户密码在数据库中加密存储 3. 使用RSA进行密钥交换,AES进行数据传输加密 4. 支持多用户并发访问 ## 注意事项 1. 首次使用时需要添加用户才能登录 2. 确保服务器和客户端之间的网络连接正常 3. 文件传输过程中请勿中断连接 4. 建议定期更改密码以确保安全 # 附:任务需求 网络环境与编程》设计性实验 编写程序,设计一个功能相对完善的FTP服务器和FTP客户端程序,以实现安全的网络通信,具体要求如下: 1.实现服务器端和客户端之间聊天功能,即服务器端和客户端之间能够进行对话,并要求对对话内容进行保密通信。 2.在客户端能使用命令list、cd、cd..、cd 文件夹、pwd、mkdir、get、put、attrib(查看文件属性)、rename(文件或目录改名)、create 文件名(创建一个文件)、add(添加帐号和密码),命令实现在服务器端列出文件和目录列表,显示文件目录、改变文件目录到上一级目录,改变文件目录到指定目录、显示当前目录、创建目录,下载文件和上传文件等功能。 3.要求实现用户身份认证功能,在使用FTP相关功能之前要先进行身份认证,只有认证成功才能使用系统的相关功能。认证的帐号和密码要进行加密。认证的帐号和密码要放在服务器的数据库中。 4.为了进行保密通信,要求在服务器端和客户端进行的任何信息(除第一次发送公开密钥体制中的公钥之外)传输均要进行加密,以实现安全传输。在进行身份认证时采用公开密钥密码体制的方法,在进行网络聊天和文件传输等相关系统功能时使用对称密钥密码体制的方法。注:如不实现安全传输,本次答辩成绩为不及格。 5.设计程序时可以自由分组,要求每一组的人数必须在5人以下(或5人),每组选一个组长(由组长具体负责本组的任务完成),分组的情况报给班长进行统计。程序完成之后,在第15周左右开始答辩,答辩时必须明确小组中的每个同学的工作量,每组的同学的表现正常情况为(一个A,二个B,二个C)。 6.如果发现二个小组的程序完全雷同,则二组的所有同学的期末成绩全部为0分。