# websocket-trans **Repository Path**: wikiness/websocket-trans ## Basic Information - **Project Name**: websocket-trans - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-09 - **Last Updated**: 2026-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WebSocket端口转发工具 这是一个基于WebSocket的端口转发工具,支持客户端和服务端两种模式,通过不同的启动参数来选择运行模式。 ## 功能特性 - **客户端模式**:监听本地端口,将流量通过WebSocket转发到远程服务器 - **服务端模式**:作为WebSocket服务器,接收客户端连接并转发到目标地址 - **加密传输**:使用RSA进行密钥交换,RC4进行数据加密 - **简单易用**:通过命令行参数即可切换模式 ## 项目结构 ``` websocket-trans/ ├── pom.xml ├── README.md └── src/main/ ├── java/com/zh/dev/ │ ├── WstMain.java # 统一入口类 │ ├── client/ │ │ └── WSClient.java # 客户端实现 │ ├── server/ │ │ ├── WstApplication.java # 服务端主类 │ │ ├── WSTServer.java # WebSocket服务端 │ │ └── config/ │ │ └── WSConfig.java # WebSocket配置 │ └── util/ │ └── RsaUtil.java # RSA加密工具 └── resources/ └── application.yml # 应用配置 ``` ## 使用方法 ### 1. 构建项目 ```bash cd websocket-trans mvn clean package ``` 构建完成后,会在 `target` 目录下生成 `websocket-trans-1.0.0.jar` 文件。 ### 2. 服务端模式 启动WebSocket服务端,监听8081端口: ```bash java -jar target/websocket-trans-1.0.0.jar server ``` 服务端启动后,会监听 `ws://localhost:8081/ws` 地址。 ### 3. 客户端模式 启动客户端,将本地8080端口的流量转发到目标地址: ```bash java -jar target/websocket-trans-1.0.0.jar client 8080 192.168.1.100:3306 ws://localhost:8081/ws ``` 参数说明: - `8080` - 本地监听端口 - `192.168.1.100:3306` - 目标地址(格式:host:port) - `ws://localhost:8081/ws` - WebSocket服务器地址 ### 4. 客户端公钥配置 客户端需要在与jar包同目录下创建一个名为 `pub` 的文件,内容为服务端的公钥。 从 `application.yml` 中复制 `mrsa.pub` 的值到 `pub` 文件中。 ## 工作原理 1. **密钥交换**: - 客户端生成随机RC4密钥 - 使用服务端公钥加密密钥并发送给服务端 - 服务端使用私钥解密获取RC4密钥 2. **建立隧道**: - 客户端发送目标地址(使用RC4加密) - 服务端连接目标地址 - 建立双向数据转发通道 3. **数据传输**: - 所有数据使用RC4加密传输 - 支持双向实时数据转发 ## 配置说明 ### 服务端配置 (application.yml) ```yaml server: port: 8081 # 服务端监听端口 mrsa: pub: <公钥> priv: <私钥> ``` ## 注意事项 1. 客户端需要在与jar包同目录下创建 `pub` 文件,包含服务端公钥 2. 确保服务端和客户端的RSA密钥对匹配 3. 建议在生产环境中使用自定义的RSA密钥对 4. WebSocket连接默认超时时间为5分钟 ## 技术栈 - Java 8 - Spring Boot 2.3.7 - Spring WebSocket - Hutool 5.8.7 - Java-WebSocket 1.4.0 - Undertow ## 许可证 MIT License