Skip to content

SEVEN-6174/unidbg-fetch-qsign

 
 

Repository files navigation

unidbg-fetch-qsign

获取QQSign参数通过Unidbg,开放HTTP API。unidbg-fetch-sign最低从QQ8.9.33(不囊括)开始支持,TIM不支持。

切记

  • 公共API具有高风险可能
  • 请使用与协议对应版本的libfekit.so文件
  • QSign基于Android平台,其它平台Sign计算的参数不同,不互通(例如:IPad)。
  • 不支持载入Tim.apk的so文件。

部署方法

Jar部署

  • 系统安装jdk或者jre,版本1.8或以上。如果报错找不到类,请尝试1.8或略靠近1.8的版本

  • 解压后cd到解压目录,配置config.json文件。

其中protocol中的参数可以从protocol-versions获取

{ // 复制这里的话,请把注释删除
  "server": {
    "host": "0.0.0.0",
    "port": 8080
  },
  "uin_list": [ // 未出现在uinList的qq无法访问api!
    {
      // uin也就是你的QQQ
      "uin": 114514,
      // 该uin对应的android_id
      "android_id": "1145141919810114",
      // 不能是空的哦~~
      "guid":       "5141919810114514",
      "qimei36":    "8e11b1f9764fa3b43121f6f510001fa1721a"
    }
  ],
  // 实例重载间隔
  // i>=20 i<=50
  "reload_interval": 40, 
  "protocol": {
    "qua": "V1_AND_SQ_8.9.63_4194_YYB_D",
    // version和code可以从qua中提取
    "version": "8.9.63", 
    "code": "4194"
  },
  "unidbg": {
    // 启用Dynarmic,它是一个开源的动态ARM指令集模拟器
    // 有时候会出现https://github.com/fuqiuluo/unidbg-fetch-qsign/issues/52
    "dynarmic": false,
    "unicorn": true,
    "debug": false
  }
}
bash bin/unidbg-fetch-qsign --basePath=txlib\8.9.63
  • 注意:你需要手动从apk安装包的lib/arm64-v8a目录中提取出libfekit.solibQSec.so文件并存放至一个文件夹,然后使用--basePath指定该文件夹的绝对路径,结构例如:
  • your_dir
    • libfekit.so
    • libQSec.so
    • config.json
    • dtconfig.json

dtconfig.json是FEBound.java内数据的热更新版本,每个版本的QQ不同,可自行从com.tencent.mobileqq.dt.model.FEBound逆向得到。

--basePath=/home/your_dir

Docker部署 (待修正)

xzhouqd/qsign

docker-compose部署

直接使用openjdk11启动服务

version: '2'

services:
  qsign:
    image: openjdk:11.0-jdk
    environment:
      TZ: Asia/Shanghai
    restart: always
    working_dir: /app
    # 按需修改相关参数
    command: bash bin/unidbg-fetch-qsign --port=8080 --count=1 --library=txlib/8.9.63 --android_id=someandroidid
    volumes:
      # 当前目录放置qsign的解压包
      - ./unidbg-fetch-qsign:/app
      # 当前目录放置txlib
      - ./txlib:/app/txlib
    ports:
      # 按需调整宿主机端口
      - 8901:8080

使用API

原始energy

# http://127.0.0.1:8080/custom_energy?salt=[SALT HEX]&data=[DATA]

sign

# http://127.0.0.1:8080/sign?uin=[UIN]&qua=[QUA]&cmd=[CMD]&seq=[SEQ]&buffer=[BUFFER]
参数名 意义 例子
UIN Bot的QQ号 114514
QUA QQ User-Agent,与QQ版本有关 V1_AND_SQ_8.9.63_4188_HDBM_T
CMD 指令类型,CMD有很多种,目前登录、发信息均需要sign wtlogin.login
SEQ 数据包序列号,用于指示请求的序列或顺序。它是一个用于跟踪请求的顺序的数值,确保请求按正确的顺序处理 2333
BUFFER 数据包包体,不需要长度,将byte数组转换为HEX发送 020348010203040506
POST的支持

如果buffer过长,会超出get请求方式的长度上限,因此sign的请求也支持POST的方式。

请求头 Content-Type: application/x-www-form-urlencoded

POST的内容:"uin=" + uin + "&qua=" + qua + "&cmd=" + cmd + "&seq=" + seq + "&buffer=" + buffer

登录包energy(tlv544)

下面这个只是个例子

# http://127.0.0.1:8080/energy?&version=[VERSION]&uin=[UIN]&guid=[GUID]&data=[DATA]
参数名 意义 例子
VERSION 注意!这里的VERSION指的不是QQ的版本号,而是SDK Version,可以在QQ安装包中找到此信息 6.0.0.2549
UIN Bot的QQ号 114514
GUID 登录设备的GUID,将byte数组转换为HEX发送,必须是32长度的HEX字符串 ABCDABCDABCDABCDABCDABCDABCDABCD
DATA QQ发送登录包的CmdId和SubCmdId,例子中810是登陆CmdId,9是SubCmdId 810_9

其他

  • 由于项目的特殊性,我们可能随时删除本项目且不会做出任何声明

About

获取QQSign通过Unidbg

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 72.0%
  • Java 28.0%