{"id":15208822,"url":"https://github.com/xzb-1248/spark","last_synced_at":"2025-05-14T07:08:52.521Z","repository":{"id":38014772,"uuid":"470490380","full_name":"XZB-1248/Spark","owner":"XZB-1248","description":"✨Spark is a web-based, cross-platform and full-featured Remote Administration Tool (RAT) written in Go that allows you control all your devices anywhere. Spark是一个Go编写的，网页UI、跨平台以及多功能的远程控制和监控工具，你可以随时随地监控和控制所有设备。","archived":false,"fork":false,"pushed_at":"2025-02-05T17:12:20.000Z","size":5041,"stargazers_count":2033,"open_issues_count":19,"forks_count":533,"subscribers_count":35,"default_branch":"master","last_synced_at":"2025-04-11T02:51:35.248Z","etag":null,"topics":["dashboard","go","golang","rat","remote-access-tool","remote-admin-tool","remote-administration-tool","remote-control","server-monitoring","shell","spark","webshell"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/XZB-1248.png","metadata":{"files":{"readme":"README.ZH.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2022-03-16T08:17:34.000Z","updated_at":"2025-04-10T23:04:46.000Z","dependencies_parsed_at":"2024-06-18T19:56:29.139Z","dependency_job_id":"2bb4b536-a5a9-4794-bcb5-f4d0f14086f8","html_url":"https://github.com/XZB-1248/Spark","commit_stats":{"total_commits":84,"total_committers":2,"mean_commits":42.0,"dds":"0.26190476190476186","last_synced_commit":"9020b6fd88040e7f5d7c9e98a37007590cc99c99"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XZB-1248%2FSpark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XZB-1248%2FSpark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XZB-1248%2FSpark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XZB-1248%2FSpark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XZB-1248","download_url":"https://codeload.github.com/XZB-1248/Spark/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254092776,"owners_count":22013290,"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":["dashboard","go","golang","rat","remote-access-tool","remote-admin-tool","remote-administration-tool","remote-control","server-monitoring","shell","spark","webshell"],"created_at":"2024-09-28T07:02:04.202Z","updated_at":"2025-05-14T07:08:52.471Z","avatar_url":"https://github.com/XZB-1248.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"#### [[English]](./README.md) [中文] [[API Document]](./API.md) [[API文档]](./API.ZH.md)\n\n---\n\n\u003ch1\u003eSpark\u003c/h1\u003e\n\n**Spark** 是一个免费、安全、开源、基于网页、跨平台且功能丰富的远程管理工具，可以让你通过浏览器，随时随地管理设备。\n\n✅ **不收集数据**: Spark不会收集任何用户数据。  \n✅ **不自动更新**: 服务端不会在任何情况下进行自动更新。  \n✅ **直接通信**: 客户端永远只会和你的服务器通信，隐私优先。\n\n---\n\n\n\n| ![GitHub repo size](https://img.shields.io/github/repo-size/XZB-1248/Spark?style=flat-square) | ![GitHub issues](https://img.shields.io/github/issues/XZB-1248/Spark?style=flat-square) | ![GitHub closed issues](https://img.shields.io/github/issues-closed/XZB-1248/Spark?style=flat-square) |\n|--------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------|\n\n| [![GitHub downloads](https://img.shields.io/github/downloads/XZB-1248/Spark/total?style=flat-square)](https://github.com/XZB-1248/Spark/releases) | [![GitHub release (latest by date)](https://img.shields.io/github/downloads/XZB-1248/Spark/latest/total?style=flat-square)](https://github.com/XZB-1248/Spark/releases/latest) |\n|---------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n\n---\n\n## ⚠️ 免责声明\n\n**本项目及其源代码和发行版，旨在用于学习和交流。**\n\n❌ **禁止用于任何非法用途！**  \n❌ **使用本项目所带来的风险由使用者本人承担。**  \n✅ **作者和开发者不会对你错误使用而造成的损害承担任何责任。**\n\n如果你发现了任何安全问题，请**不要**发布issue，并立即[联系我](mailto:i@1248.ink)。\n\n---\n\n## 🚀 快速开始\n\n### 二进制运行\n\n1. 在[releases](https://github.com/XZB-1248/Spark/releases)中下载二进制文件。\n2. 按照[配置文件说明](#配置文件)，设置好配置文件。\n3. 运行服务端，访问`IP:端口`，例如 `http://localhost:8000/` 。\n4. 在管理页面中生成客户端，并部署到目标设备上。\n5. 开始控制目标设备。\n\n---\n\n## ⚙️ 配置文件\n\n在服务端的根目录下，创建`config.json`文件，按照以下格式填写：\n\n  ```json\n  {\n      \"listen\": \":8000\",\n      \"salt\": \"123456abcdef\",\n      \"auth\": {\n          \"username\": \"password\"\n      },\n      \"log\": {\n          \"level\": \"info\",\n          \"path\": \"./logs\",\n          \"days\": 7\n      }\n  }\n  ```\n\n- **`listen`**（必填），格式为 `IP:端口`\n- **`salt`**（必填），长度不大于**24**的随机字符串，修改后需要**重新部署所有客户端**\n- **`auth`**（选填），格式为 `用户名:密码`\n  - 密码强烈建议使用hash加密（格式为`$算法$密文`，例如`$sha256$11223344556677AABBCCDDEEFF`）\n  - 支持的算法有：`sha256`，`sha512`和`bcrypt`\n- **`log`**（选填），日志配置\n  - `level`日志等级，可选值：`disable`, `fatal`, `error`, `warn`, `info`, `debug`\n  - `path`日志保存目录（默认为`./logs`）\n  - `days`日志保存天数（默认为`7`）\n\n---\n\n## 🛠️ 特性\n\n| 特性/OS | Windows | Linux | MacOS |\n|-------|---------|-------|-------|\n| 进程管理  | ✔       | ✔     | ✔     |\n| 结束进程  | ✔       | ✔     | ✔     |\n| 网络状态  | ✔       | ✔     | ✔     |\n| 文件浏览  | ✔       | ✔     | ✔     |\n| 文件传输  | ✔       | ✔     | ✔     |\n| 文件编辑  | ✔       | ✔     | ✔     |\n| 删除文件  | ✔       | ✔     | ✔     |\n| 代码高亮  | ✔       | ✔     | ✔     |\n| 屏幕监控  | ✔       | ✔     | ✔     |\n| 屏幕快照  | ✔       | ✔     | ✔     |\n| 系统信息  | ✔       | ✔     | ✔     |\n| 远程终端  | ✔       | ✔     | ✔     |\n| * 关机  | ✔       | ✔     | ✔     |\n| * 重启  | ✔       | ✔     | ✔     |\n| * 注销  | ✔       | ❌     | ✔     |\n| * 睡眠  | ✔       | ❌     | ✔     |\n| * 休眠  | ✔       | ❌     | ❌     |\n| * 锁屏  | ✔       | ❌     | ❌     |\n\n🚨 **星号代表该功能可能需要管理员或root权限才能使用。**\n\n---\n\n## 📸 截图\n\n![overview](./docs/overview.ZH.png)\n\n![terminal](./docs/terminal.ZH.png)\n\n![desktop](./docs/desktop.ZH.png)\n\n![procmgr](./docs/procmgr.ZH.png)\n\n![explorer](./docs/explorer.ZH.png)\n\n![overview.cpu](./docs/overview.cpu.ZH.png)\n\n![explorer.editor](./docs/explorer.editor.ZH.png)\n\n---\n\n## 🔧 开发\n\n### 组件\n本项目由三个部分组成：\n- **客户端**\n- **服务端**\n- **前端**\n\n如果要让客户端支持除了Linux和Windows之外的系统，你必须要安装对应的C交叉编译工具链。  \n例如，如果要给Android系统编译客户端，那就必须安装 [Android NDK](https://developer.android.com/ndk/downloads) 。\n\n### 指南\n\n```bash\n# Clone项目\n$ git clone https://github.com/XZB-1248/Spark\n$ cd ./Spark\n\n\n# 编译前端\n$ cd ./web\n$ npm install\n$ npm run build-prod\n\n\n# 服务端嵌入静态资源\n$ cd ..\n$ go install github.com/rakyll/statik\n$ statik -m -src=\"./web/dist\" -f -dest=\"./server/embed\" -p web -ns web\n\n\n# 编译客户端\n$ mkdir ./built\n$ go mod tidy\n$ go mod download\n$ ./scripts/build.client.sh\n\n\n# 编译服务端\n$ mkdir ./releases\n$ ./scripts/build.server.sh\n```\n\n---\n\n## 功能定制\n\n如果需要二次开发/功能定制，请联系[**i@1248.ink**](mailto:i@1248.ink)。\n\n---\n\n## 项目依赖\n\nSpark使用了许多第三方的开源项目。\n\n依赖列表可以在 `go.mod` 和 `package.json` 里面找到。\n\n一些主要的依赖项如下列所示。\n\n### 后端\n\n* [Go](https://github.com/golang/go) ([License](https://github.com/golang/go/blob/master/LICENSE))\n\n* [gin-gonic/gin](https://github.com/gin-gonic/gin) (MIT License)\n\n* [imroc/req](https://github.com/imroc/req) (MIT License)\n\n* [kbinani/screenshot](https://github.com/kbinani/screenshot) (MIT License)\n\n* [shirou/gopsutil](https://github.com/shirou/gopsutil) ([License](https://github.com/shirou/gopsutil/blob/master/LICENSE))\n\n* [gorilla/websocket](https://github.com/gorilla/websocket) (BSD-2-Clause License)\n\n* [olahol/melody](https://github.com/olahol/melody) (BSD-2-Clause License)\n\n* [orcaman/concurrent-map](https://github.com/orcaman/concurrent-map) (MIT License)\n\n### 前端\n\n* [React](https://github.com/facebook/react) (MIT License)\n\n* [Ant-Design](https://github.com/ant-design/ant-design) (MIT License)\n\n* [axios](https://github.com/axios/axios) (MIT License)\n\n* [xterm.js](https://github.com/xtermjs/xterm.js) (MIT License)\n\n* [crypto-js](https://github.com/brix/crypto-js) (MIT License)\n\n### 感谢\n\n* [natpass](https://github.com/lwch/natpass) (MIT License)\n* 图像差异部分参考了natpass项目的有关逻辑。\n\n---\n\n### Star趋势\n\n[![Stargazers over time](https://starchart.cc/XZB-1248/Spark.svg)](https://starchart.cc/XZB-1248/Spark)\n\n---\n## 📜 开源协议\n\n本项目基于 [BSD-2 协议](./LICENSE) 。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxzb-1248%2Fspark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxzb-1248%2Fspark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxzb-1248%2Fspark/lists"}