Commit 302208f7 authored by jiahua.liu's avatar jiahua.liu

Merge remote-tracking branch 'origin/master'

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