mirror of
https://github.com/mamoe/mirai.git
synced 2025-04-14 23:20:49 +08:00
Merge remote-tracking branch 'origin/master'
# Conflicts: # mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/PacketFactory.kt
This commit is contained in:
commit
302208f741
README.md
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network
QQAndroidClient.kt
protocol/packet
43
README.md
43
README.md
@ -5,9 +5,8 @@
|
||||
[](https://bintray.com/him188moe/mirai/mirai-core/)
|
||||
**[English](README-eng.md)**
|
||||
|
||||
**TIM PC 协议** 跨平台 QQ 协议支持库.
|
||||
**纯 Kotlin 实现协议和支持框架. 目前可运行在 JVM 或 Android.**
|
||||
部分协议来自网络上开源项目.
|
||||
**TIM PC 和 QQ Android 协议** 跨平台 QQ 协议支持库.
|
||||
**纯 Kotlin 实现协议和支持框架. 目前可运行在 JVM 或 Android.**
|
||||
|
||||
**一切开发旨在学习,请勿用于非法用途**
|
||||
|
||||
@ -17,17 +16,6 @@
|
||||
在 [Project](https://github.com/mamoe/mirai/projects/1) 查看已支持功能和计划
|
||||
在 [UpdateLog](https://github.com/mamoe/mirai/blob/master/UpdateLog.md) 查看版本更新记录
|
||||
|
||||
## Contribution
|
||||
|
||||
我们 (Mamoe, NaturalHG & Him188) 将会一直维护这个项目,除非遇到不可抗力因素。
|
||||
|
||||
我们欢迎一切形式的贡献。
|
||||
我们也期待有更多人能加入 Mirai 的开发。
|
||||
|
||||
若在使用过程中有任何疑问, 可提交 issue 或是邮件联系(support@mamoe.net). 我们希望 Mirai 变得更易用.
|
||||
|
||||
您的 star 是对我们最大的鼓励(点击项目右上角);
|
||||
|
||||
## Features
|
||||
#### mirai-core
|
||||
通用 API 模块,请参考此模块调用 Mirai.
|
||||
@ -46,9 +34,11 @@ QQ for Android (8.2.0 版本,2019 年 12 月)协议的实现,目前还
|
||||
|
||||
开发进度:
|
||||
- 完成 密码登录 (2020/1/23)
|
||||
- 进行中 验证码登录
|
||||
- 进行中 消息解析
|
||||
- 进行中 图片上传下载
|
||||
- 完成 群消息解析 (2020/1/25)
|
||||
- 进行中 免密登录
|
||||
- 进行中 图片验证码登录
|
||||
- 进行中 消息解析和发送
|
||||
- 进行中 图片上传和下载
|
||||
|
||||
## Use directly
|
||||
**直接使用Mirai(终端环境/网页面板(将来)).**
|
||||
@ -87,8 +77,19 @@ implementation("net.mamoe:mirai-core-timpc-android:VERSION")
|
||||
Android 上, Mirai 运行需使用 80M 内存.
|
||||
JVM 上需 120M-150M 内存
|
||||
|
||||
## Contribution
|
||||
|
||||
我们 (Mamoe, NaturalHG & Him188) 将会一直维护这个项目,除非遇到不可抗力因素。
|
||||
|
||||
我们欢迎一切形式的贡献。
|
||||
我们也期待有更多人能加入 Mirai 的开发。
|
||||
|
||||
若在使用过程中有任何疑问, 可提交 issue 或是邮件联系(support@mamoe.net). 我们希望 Mirai 变得更易用.
|
||||
|
||||
您的 star 是对我们最大的鼓励(点击项目右上角);
|
||||
|
||||
## Wiki
|
||||
在 [Wiki](https://github.com/mamoe/mirai/wiki/Development-Guide---Kotlin) 中查看各类帮助
|
||||
在 [Wiki](https://github.com/mamoe/mirai/wiki/Development-Guide---Kotlin) 中查看各类帮助,如 API 示例。
|
||||
|
||||
## Try
|
||||
|
||||
@ -115,9 +116,9 @@ bot.subscribeAlways<MemberPermissionChangedEvent> {
|
||||
|
||||
## Build Requirements
|
||||
|
||||
- Kotlin 1.3.61
|
||||
- JDK 8
|
||||
- Android SDK 29
|
||||
- Kotlin 1.3.61
|
||||
- JDK 8 (required)
|
||||
- Android SDK 29 (for Android target, optional)
|
||||
|
||||
#### Libraries used
|
||||
感谢:
|
||||
|
@ -9,10 +9,7 @@ import net.mamoe.mirai.data.OnlineStatus
|
||||
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.PacketLogger
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.Tlv
|
||||
import net.mamoe.mirai.qqandroid.utils.Context
|
||||
import net.mamoe.mirai.qqandroid.utils.DeviceInfo
|
||||
import net.mamoe.mirai.qqandroid.utils.NetworkType
|
||||
import net.mamoe.mirai.qqandroid.utils.SystemDeviceInfo
|
||||
import net.mamoe.mirai.qqandroid.utils.*
|
||||
import net.mamoe.mirai.utils.MiraiExperimentalAPI
|
||||
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||
import net.mamoe.mirai.utils.cryptor.ECDH
|
||||
@ -20,10 +17,7 @@ import net.mamoe.mirai.utils.cryptor.contentToString
|
||||
import net.mamoe.mirai.utils.cryptor.decryptBy
|
||||
import net.mamoe.mirai.utils.cryptor.initialPublicKey
|
||||
import net.mamoe.mirai.utils.getValue
|
||||
import net.mamoe.mirai.utils.io.hexToBytes
|
||||
import net.mamoe.mirai.utils.io.read
|
||||
import net.mamoe.mirai.utils.io.readUShortLVByteArray
|
||||
import net.mamoe.mirai.utils.io.readUShortLVString
|
||||
import net.mamoe.mirai.utils.io.*
|
||||
import net.mamoe.mirai.utils.unsafeWeakRef
|
||||
|
||||
/*
|
||||
@ -86,8 +80,8 @@ internal open class QQAndroidClient(
|
||||
val context: Context by context.unsafeWeakRef()
|
||||
val bot: QQAndroidBot by bot.unsafeWeakRef()
|
||||
|
||||
var tgtgtKey: ByteArray = ByteArray(16) // generateTgtgtKey(device.guid)
|
||||
val randomKey: ByteArray = ByteArray(16) // 加密使用
|
||||
var tgtgtKey: ByteArray = generateTgtgtKey(device.guid)
|
||||
val randomKey: ByteArray = getRandomByteArray(16)
|
||||
|
||||
var miscBitMap: Int = 184024956 // 也可能是 150470524 ?
|
||||
var mainSigMap: Int = 16724722
|
||||
|
@ -8,7 +8,7 @@ import net.mamoe.mirai.qqandroid.network.io.JceInput
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.jce.RequestPacket
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.OnlinePush
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.LoginPacket
|
||||
//import net.mamoe.mirai.qqandroid.network.protocol.packet.login.SvcReqRegisterPacket
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.StatSvc
|
||||
import net.mamoe.mirai.utils.DefaultLogger
|
||||
import net.mamoe.mirai.utils.MiraiLogger
|
||||
import net.mamoe.mirai.utils.cryptor.adjustToPublicKey
|
||||
@ -50,6 +50,7 @@ internal val PacketLogger: MiraiLogger = DefaultLogger("Packet")
|
||||
@UseExperimental(ExperimentalUnsignedTypes::class)
|
||||
internal object KnownPacketFactories : List<PacketFactory<*>> by mutableListOf(
|
||||
LoginPacket,
|
||||
StatSvc.Register,
|
||||
OnlinePush.PbPushGroupMsg
|
||||
) {
|
||||
|
||||
|
@ -59,7 +59,7 @@ internal class OnlinePush {
|
||||
permission = when {
|
||||
flags and 16 != 0 -> MemberPermission.ADMINISTRATOR
|
||||
flags and 8 != 0 -> MemberPermission.OWNER
|
||||
flags and 0 != 0 -> MemberPermission.MEMBER
|
||||
flags == 0 -> MemberPermission.MEMBER
|
||||
else -> {
|
||||
bot.logger.warning("判断群员权限失败")
|
||||
MemberPermission.MEMBER
|
||||
|
@ -261,8 +261,8 @@ internal object LoginPacket : PacketFactory<LoginPacket.LoginPacketResponse>("wt
|
||||
// val ret = tlvMap[0x104]?.let { println(it.toUHexString()) }
|
||||
println()
|
||||
val question = tlvMap[0x165] ?: error("CAPTCHA QUESTION UNKNOWN")
|
||||
when (question[18].toUHexString()) {
|
||||
"36" -> {
|
||||
when (question[18].toInt()) {
|
||||
0x36 -> {
|
||||
//图片验证
|
||||
DebugLogger.debug("是一个图片验证码")
|
||||
bot.client.t104 = tlvMap[0x104]!!
|
||||
|
Loading…
Reference in New Issue
Block a user