[core] Fix qimei holding

This commit is contained in:
Karlatemp 2023-06-17 14:03:34 +08:00
parent bf992f877e
commit 1877c95783
No known key found for this signature in database
GPG Key ID: BA173CA2B9956C59
3 changed files with 17 additions and 4 deletions

View File

@ -18,6 +18,7 @@ import net.mamoe.mirai.data.OnlineStatus
import net.mamoe.mirai.internal.BotAccount
import net.mamoe.mirai.internal.QQAndroidBot
import net.mamoe.mirai.internal.network.components.AccountSecrets
import net.mamoe.mirai.internal.network.components.SsoProcessorContext
import net.mamoe.mirai.internal.network.components.SsoSession
import net.mamoe.mirai.internal.network.protocol.data.jce.FileStoragePushFSSvcList
import net.mamoe.mirai.internal.network.protocol.packet.Tlv
@ -177,8 +178,8 @@ internal open class QQAndroidClient(
/**
* t545
*/
var qimei16: String? = null
var qimei36: String? = null
val qimei16: String? get() = bot.components[SsoProcessorContext].qimei16
val qimei36: String? get() = bot.components[SsoProcessorContext].qimei36
}
internal val QQAndroidClient.apkId: ByteArray get() = protocol.apkId.toByteArray()

View File

@ -32,6 +32,12 @@ internal interface SsoProcessorContext {
val configuration: BotConfiguration get() = bot.configuration
/**
* t545
*/
var qimei16: String?
var qimei36: String?
companion object : ComponentKey<SsoProcessorContext>
}
@ -42,6 +48,10 @@ internal class SsoProcessorContextImpl(
override val device: DeviceInfo = configuration.createDeviceInfo(bot)
override val protocol: BotConfiguration.MiraiProtocol get() = configuration.protocol
override val configuration: BotConfiguration get() = bot.configuration
override var qimei16: String? = null
override var qimei36: String? = null
}
internal fun BotConfiguration.createDeviceInfo(bot: Bot): DeviceInfo = deviceInfo?.invoke(bot) ?: DeviceInfo.random()

View File

@ -195,8 +195,10 @@ internal suspend fun QQAndroidBot.requestQimei(logger: MiraiLogger) {
val decryptedData = aesDecrypt(resp.data.decodeBase64(), aesKey, aesKey)
val qimeiData = Json.decodeFromString(QimeiData.serializer(), decryptedData.decodeToString())
client.qimei36 = qimeiData.q36
client.qimei16 = qimeiData.q16
client.bot.components[SsoProcessorContext].let { context ->
context.qimei36 = qimeiData.q36
context.qimei16 = qimeiData.q16
}
}
private val dalvikVersions = mapOf(