Moukthar通信协议深度解析:WebSocket命令体系全揭秘
2026/8/20 19:38:39 网站建设 项目流程

Moukthar通信协议深度解析:WebSocket命令体系全揭秘

【免费下载链接】mouktharAndroid remote administration tool项目地址: https://gitcode.com/gh_mirrors/mo/moukthar

Moukthar 是一款开源的Android 远程管理工具(RAT),其核心竞争力在于一套设计精妙的Moukthar通信协议——所有远程操作都通过 WebSocket 长连接完成实时指令传输。无论是窃取通讯录、远程拍照,还是下发短信、控制文件上传下载,背后都依赖这套统一命令体系。本文将从零开始,为你彻底拆解 Moukthar 的 WebSocket 命令体系:消息如何编码、命令如何下发、数据如何回传,让你一篇文章看懂整条通信链路。

一、Moukthar通信协议架构:三方协作,一条长连接

要理解 Moukthar 的 WebSocket 命令体系,首先要知道通信链路上有三个角色

角色技术实现职责
Android 客户端Java + java-websocket 库维持长连接、接收并执行命令、回传结果
WebSocket 中继服务PHP + Ratchet 框架(端口 8080)身份校验、消息路由、指令转发
浏览器控制面板原生 JS WebSocket展示设备列表、发送操作指令、实时查看日志

三者通过一个 WebSocket 服务端完成全双工实时通信。服务端入口在 App.php,核心路由与消息分发逻辑全部集中在 C2WebSocket.php 中,它以onMessage()方法为总入口,根据消息里的type字段判断消息来自哪一方。

二、消息类型(type)字段:一秒钟识别消息身份

Moukthar 通信协议用type字段区分消息来源,这是整个命令体系的第一层路由,一共四种:

  • client:来自 Android 端设备,既包含命令执行结果,也包含主动上报的数据(短信、通知、定位等)
  • server:来自控制面板下发的远程指令
  • js-server:浏览器面板注册为日志接收端,用于实时显示通信状态
  • js-server-files:文件管理页专用的浏览器连接,用于接收目录列表结果

对应代码在 C2WebSocket.php 的onMessage()中清晰可辨:$data->type一旦命中对应分支,就会交给clientConnection()serverConnection()jsServerFilesCommand()处理,路由逻辑一目了然。

三、完整的命令下发流程:从点击按钮到手机执行

以「向目标手机发送一条短信」为例,一条命令在 Moukthar 通信协议中要经过六个环节:

  1. 操作者在控制面板点击「发送短信」
  2. 控制面板将表单数据POST 到/send接口(见 ControlPanel.php 的sendCommand()
  3. PHP 通过 WebSocket 客户端把 JSON 指令推送到中继服务
  4. 中继服务按web_socket_id在连接池中精确定位目标设备(C2WebSocket.php 的getClient()+isClientConnected()
  5. 指令被转发到 Android 端 WebSocketClient.java
  6. 客户端解析cmd字段,执行对应操作

整个链路是「控制面板 → HTTP → WebSocket 中继 → Android 客户端」的单向指令通道,执行结果再沿相反方向回传,形成闭环。

四、16条核心命令一览:Moukthar WebSocket命令体系全盘点

Android 端所有可执行指令都被定义在一个枚举类里——Command.java,共 16 条,覆盖了设备管理的方方面面:

命令功能是否带参数
CALL拨打电话number
TEXT发送短信numbermessage
CAMERA_FRONT/CAMERA_BACK前后摄像头拍照
VIDEO录制视频frontCameraduration
SCREENSHOT屏幕截图
READ_CONTACTS/WRITE_CONTACT/DELETE_CONTACT读写删通讯录namenumber
LIST_INSTALLED_APPS列出已安装应用
LAUNCH_APP/INSTALL_APK启动应用 / 安装APKpackage/path
LIST_FILES/DOWNLOAD_FILE/UPLOAD_FILE文件浏览 / 下载 / 上传pathurlfilename
LOCATION获取定位

这 16 条命令构成了 Moukthar 通信协议的命令体系主体,客户端 WebSocketClient.java 中一个switch (cmd)就完成了全部命令的分发与执行。

五、指令格式深度拆解:JSON 载荷与参数结构

Moukthar 通信协议的命令载荷统一采用 JSON 格式,每条指令都至少包含cmd(命令名)+ 具体参数两个部分。来看几个最典型的例子:

  • 拨打电话{"cmd":"CALL","number":"+8613800138000"}
  • 发送短信{"cmd":"TEXT","number":"+8613800138000","message":"hello"}
  • 录制视频{"cmd":"VIDEO","frontCamera":false,"duration":10}
  • 浏览目录{"cmd":"LIST_FILES","path":"/sdcard/Download"}

注意服务端的细节:在 C2WebSocket.php 的serverConnection()中,DELETE_CONTACT分支的转发载荷写成了"cmd":"DOWNLOAD_FILE"——这是一个值得注意的 Bug,也提醒开发者实际阅读源码时要以客户端枚举为准。

六、客户端如何上报数据:响应字段与数据库落盘

Android 端执行完命令后,会用res字段标记结果类型回传,Moukthar 通信协议里共有8 种响应类型

  • id:设备注册自己,把web_socket_id写回数据库
  • image/video/screenshot:媒体文件,回传filename+timestamp
  • location:回传latitudelongitudealtitude
  • contact/app_list:批量回传通讯录、应用列表
  • files:目录列表结果

中继服务收到后,会在clientConnection()中执行 SQL 插入,将数据落盘到IMAGELOCATIONSCREENSHOTVIDEOCONTACTINSTALLED_APP等数据表,控制面板再按需读取展示。媒体文件本身则通过 HTTP 上传到 C2 的/doc接口,由 ControlPanel.php 的upload()方法接收保存。

七、心跳保活与断线重连:长连接为何稳定不掉线

远程管理场景下,连接稳定性至关重要。Moukthar 通信协议做了两道保障:

  1. 周期心跳:客户端 MainService.java 每隔 5 秒检查连接状态,并发送{"type":"client","res":"id"}心跳包,中继服务据此更新数据库中的web_socket_id
  2. 自动重连:当连接意外断开时,WebSocketClient.java 的onClose()会立刻再次connect(),配合服务端START_STICKY前台服务机制,保证设备长时间在线

八、前端如何接入 WebSocket:文件管理页实战

控制面板的前端也直接使用原生 WebSocket。以文件管理页 files.php 为例:页面加载后即建立ws://localhost:8080连接,以js-server-files身份注册;操作者输入目录路径点击发送时,前端会构造{"cmd":"LIST_FILES","web_socket_id":"...","path":"..."}指令推送给中继服务,目录结果随后通过日志面板实时回显——这就是你在截图里看到的那块黑色终端日志区。

九、理解 Moukthar通信协议后:几个实用要点

  • 身份绑定是关键:所有指令都依赖web_socket_id定位设备,它其实是连接池中连接的resourceId,与数据库CLIENT表一一对应
  • 参数校验要谨慎:客户端用Command.valueOf()解析命令,非法命令会抛异常并被静默捕获
  • 学习源码路线:建议按「Command.java → WebSocketClient.java → C2WebSocket.php」的顺序阅读,这是理解 Moukthar 通信协议最快的一条路径

总结

Moukthar 的 WebSocket 命令体系并不复杂:JSON 编码、type 路由、cmd 分发、res 回传,四步就串起了从控制面板到 Android 设备的整条远程管理链路。看懂这套 Moukthar 通信协议,你不仅能理解该项目的全部工作方式,也能为自建 Android 远程管理或 IoT 设备控制项目提供一份极佳的设计参考。如果想亲自部署体验,克隆仓库后按 README 指引配置即可运行完整的 WebSocket 服务。

【免费下载链接】mouktharAndroid remote administration tool项目地址: https://gitcode.com/gh_mirrors/mo/moukthar

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询