{"id":14637792,"url":"https://github.com/p1d3er/RemoteWebScreen","last_synced_at":"2025-09-07T06:30:51.300Z","repository":{"id":215293724,"uuid":"738584482","full_name":"p1d3er/RemoteWebScreen","owner":"p1d3er","description":"本项目是一个远程控制应用，使用 Golang 开发，允许用户通过 Web 界面远程控制和屏幕监控其他计算机。主要功能包括屏幕共享、鼠标和键盘控制以及键盘记录。","archived":false,"fork":false,"pushed_at":"2024-07-11T09:38:22.000Z","size":6588,"stargazers_count":319,"open_issues_count":0,"forks_count":34,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-09-11T03:43:52.299Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/p1d3er.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-03T15:08:35.000Z","updated_at":"2024-09-07T17:17:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"1a51fe67-bcfb-4074-8c30-679018030499","html_url":"https://github.com/p1d3er/RemoteWebScreen","commit_stats":null,"previous_names":["p1d3er/remotewebscreen"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p1d3er%2FRemoteWebScreen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p1d3er%2FRemoteWebScreen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p1d3er%2FRemoteWebScreen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p1d3er%2FRemoteWebScreen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/p1d3er","download_url":"https://codeload.github.com/p1d3er/RemoteWebScreen/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232182977,"owners_count":18484714,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-10T02:01:16.160Z","updated_at":"2025-09-07T06:30:51.270Z","avatar_url":"https://github.com/p1d3er.png","language":"Go","readme":"# RemoteWebScreen\n\n2025/06/30\n+ 更新界面\n+ 更新证书\n\n![image-20231124095233832](/images/image-20250630092753.png)\n\n## 项目概述\n\n本项目是一个远程控制应用，使用 Golang 开发，允许用户通过 Web 界面远程控制和屏幕监控其他计算机。主要功能包括屏幕共享、鼠标和键盘控制以及键盘记录。\n\n## 目录结构\n\n```\nRemoteWebScreen/\n├── server/                 # 服务器端代码\n│   ├── keymouevent.go      # WebSocket和鼠标和键盘通信逻辑\n│   ├── screen.go           # 截图\n│   └── screenshotHandler.go# 屏幕共享逻辑\n│\n├── certs/                  # 证书\n│   ├── cert.pem            # cert\n│   └── key.pem             # key\n│\n├── static/                 # 前端静态文件\n│   └── pako.min.js         # 主HTML文件\n│\n├── keyboard/               # 键盘记录相关模块\n│   ├── call_back.go        # 鼠标键盘回调函数\n│   ├── dump.go             # 保存键盘记录以及剪切板截图操作\n│   ├── Keyboard.go         # 启动键盘记录\n│   └── misc.go             # 相关函数\n│\n├── win32/                  # 键盘记录相关配置\n│   ├── define.go           # 键盘对应表\n│   └── win32.go            # hook设置\n│\n├── main.go                 # 应用程序的主入口点\n│\n├── index.html              # 前端代码\n│\n└── go.mod                  # Go模块定义\n```\n## 主要组件\n\n1. **WebSocket 通信**：使用 `github.com/gorilla/websocket` 包实现服务端和客户端之间的实时通信。\n2. **屏幕控制**：使用 `github.com/go-vgo/robotgo` 包进行鼠标键盘控制。\n3. **屏幕捕获**：`\"github.com/kbinani/screenshot\"`包进行屏幕捕获\n4. **证书加密**：使用`https`和`wss`方式进行传输。\n5. **前端界面**：HTML/CSS/JavaScript 实现，用于显示远程屏幕和发送控制命令。\n\n扩展屏鼠标移动算法\n```\n主屏分辨率\u003c扩展屏的分辨率{\n\t扩展屏的分辨率 := bounds.Dx() * (主屏分辨率 / (screen.W-bounds.Min.X))\n}else{\n\t扩展屏的分辨率 := 主屏分辨率 * bounds.Min.X+bounds.Dx() / screen.W\n}\n```\n\n## 工具使用\n\n注：启动工具时，关闭一下防火墙。此工具基于正向连接，所以会在被控端启动端口。\n\n```\nWindows server 2003及之前版本：\nnetsh firewall set opmode disable  #关闭  \nnetsh firewall set opmode enable   #开启\nWindows server 2003之后版本：\nnetsh advfirewall set allprofiles state off  #关闭    \nnetsh advfirewall set allprofiles state on   #开启\n```\n\n```\nRemoteWebScreen.exe start\t #默认443\nRemoteWebScreen.exe start [端口号]\n```\n\n```\nhttps://IP:端口号/:端口号         #屏幕控制\nhttps://IP:端口号/:端口号log      #键盘记录\n```\n\n### 屏幕控制\n\n注：非管理员运行时启动任务管理器，鼠标键盘控制会被禁止。\n\n访问`https://IP:端口号/:端口号`。访问需要安装证书\n\n![image-20231124095233832](/images/image-20231124095233832.png)\n\n以上三处分别为，`切换到扩展屏`、`鼠标键盘控制`、`画质修改`。\n\n**退出杀软**\n\n可以直接通过模拟鼠标退出`火绒`。其他杀软未测试，针对`360`因为360有HOOK鼠标键盘操作所以不建议使用鼠标键盘控制，因为会失效。\n\n![image-20231124101731491](/images/image-20231124101731491.png)\n\n### 键盘记录\n\n注：项目结束时请清理生成的文件\n\n访问`https://IP:端口号/:端口号log\t`\n\n当有键盘记录时会生成记录文件到以下目录\n\n```\n%tmp%/screen_log/templog.tmp\t\t\t\t\t\t\t\t#注:键盘记录\n%tmp%/screen/2006_01_02_15_04_05_04.png\t\t\t\t\t#注:截屏记录\n```\n\n![image-20231124101333601](/images/image-20231124101333602.png)\n\n通过上图可以记录到输入的账号密码，同时当用户打开密码本复制密码时，也能获取`Ctrl+c/v`，同时当用户进行复制和粘贴操作时会截一张图。\n\n![image-20231124101600198](/images/image-20231124101600198.png)\n\n## 安装证书\n\n双击安装证书\n\n```\nRemoteWebScreen.p12  #密码:RemoteWebScreen\n```\n注：小技巧，缩放浏览器也可以调节画面清晰度。欢迎issues\n\n**仅供技术研究使用，请勿用于非法用途，否则后果作者概不负责**\n","funding_links":[],"categories":["Go"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp1d3er%2FRemoteWebScreen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fp1d3er%2FRemoteWebScreen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp1d3er%2FRemoteWebScreen/lists"}