You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android远程管理工具Socket.io服务端代码:参数d与数据流向疑问

基于Socket.io的Android远程管理服务端请求响应流程解析

整体流程概述

这套代码是管理员与受控Android设备之间的消息中转服务端:

  • 管理员发起指令请求,服务端转发给指定受控设备
  • 受控设备执行指令后,将结果回传给服务端,服务端再转发给管理员

request函数详解(管理员→服务端→受控端)

const request =(d)=>{// request from attacker to victim
    let { to, action, data } = JSON.parse(d);
    log("Requesting action: "+ action);
    io.to(victimList[to]).emit(action, data);
}
  • 参数d:是管理员通过Socket连接发送给服务端的JSON格式字符串,本质是管理员的指令请求包,包含了指令的所有必要信息。
  • JSON.parse(d)的作用:把字符串格式的请求包解析成JavaScript对象,从中解构出三个核心字段:
    • to:受控设备在服务端victimList列表中的标识,服务端通过这个值找到对应的受控设备Socket连接
    • action:要让受控设备执行的操作类型(比如getDeviceInfo获取设备信息、takeScreenshot截图等)
    • data:执行该操作需要的附加参数(比如操作文件时的路径、执行命令时的指令内容等)
  • 最后服务端通过io.to(victimList[to]).emit(action, data),把指令(action)和参数(data)转发给目标受控设备。

response/responseBinary函数详解(受控端→服务端→管理员)

这两个函数是受控设备执行完指令后,向管理员返回结果的中转逻辑:

普通响应函数response

const response =(action, data)=>{// response from victim to attacker
    if(adminSocketId){
        log("response action: "+ action);
        io.to(adminSocketId).emit(action, data);
    }
}

二进制响应函数responseBinary

const responseBinary =(action, data, callback)=>{// response from victim to attacker
    if(adminSocketId){
        log("response action: "+ action);
        callback("success")
        io.to(adminSocketId).emit(action, data);
    }
}
  • action:和请求时的action一一对应,用于让管理员识别这是哪个指令的响应结果(比如请求是takeScreenshot,响应的action也为takeScreenshot,方便管理员匹配处理)
  • data:受控设备执行指令后的返回结果:
    • response中的data是常规文本/JSON数据(比如设备信息的JSON串、命令执行的文本输出)
    • responseBinary中的data是二进制数据(比如截图的二进制流、文件的二进制内容)
  • callback(仅responseBinary):受控设备发送二进制数据后,服务端通过这个回调告知受控设备“响应已接收,将转发给管理员”,避免受控端重复发送。

内容的提问来源于stack exchange,提问作者Ruben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 03:24:21