mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-04 09:25:23 +08:00
Move DeviceInfo
This commit is contained in:
parent
23adcf6d4a
commit
e116224180
@ -7,22 +7,20 @@
|
||||
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
package net.mamoe.mirai.qqandroid.utils
|
||||
package net.mamoe.mirai.utils
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.net.wifi.WifiManager
|
||||
import android.os.Build
|
||||
import android.telephony.TelephonyManager
|
||||
import kotlinx.io.core.toByteArray
|
||||
import net.mamoe.mirai.utils.Context
|
||||
import net.mamoe.mirai.utils.localIpAddress
|
||||
import net.mamoe.mirai.utils.md5
|
||||
import java.io.File
|
||||
|
||||
/**
|
||||
* Delegated by [Build]
|
||||
* 部分引用指向 [Build].
|
||||
* 部分需要权限, 若无权限则会使用默认值.
|
||||
*/
|
||||
actual class SystemDeviceInfo actual constructor(context: Context) : DeviceInfo(context) {
|
||||
actual open class SystemDeviceInfo actual constructor(context: Context) : DeviceInfo(context) {
|
||||
override val display: ByteArray get() = Build.DISPLAY.toByteArray()
|
||||
override val product: ByteArray get() = Build.PRODUCT.toByteArray()
|
||||
override val device: ByteArray get() = Build.DEVICE.toByteArray()
|
@ -39,6 +39,10 @@ class BotConfiguration {
|
||||
* 日志记录器
|
||||
*/
|
||||
var logger: MiraiLogger? = null
|
||||
/**
|
||||
* 设备信息覆盖
|
||||
*/
|
||||
var deviceInfo: ((Context) -> DeviceInfo)? = null
|
||||
|
||||
/**
|
||||
* 父 [CoroutineContext]
|
||||
|
@ -7,17 +7,17 @@
|
||||
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
package net.mamoe.mirai.qqandroid.utils
|
||||
package net.mamoe.mirai.utils
|
||||
|
||||
import kotlinx.serialization.SerialId
|
||||
import kotlinx.serialization.Serializable
|
||||
import net.mamoe.mirai.qqandroid.io.serialization.ProtoBufWithNullableSupport
|
||||
import net.mamoe.mirai.utils.Context
|
||||
import kotlinx.serialization.protobuf.ProtoBuf
|
||||
import net.mamoe.mirai.utils.cryptor.contentToString
|
||||
import net.mamoe.mirai.utils.getValue
|
||||
import net.mamoe.mirai.utils.unsafeWeakRef
|
||||
|
||||
abstract class DeviceInfo(
|
||||
/**
|
||||
* 设备信息. 可通过继承 [SystemDeviceInfo] 来在默认的基础上修改
|
||||
*/
|
||||
abstract class DeviceInfo internal constructor(
|
||||
context: Context
|
||||
) {
|
||||
val context: Context by context.unsafeWeakRef()
|
||||
@ -72,7 +72,7 @@ abstract class DeviceInfo(
|
||||
@SerialId(9) val innerVersion: ByteArray
|
||||
)
|
||||
|
||||
return ProtoBufWithNullableSupport.dump(
|
||||
return ProtoBuf.dump(
|
||||
DevInfo.serializer(), DevInfo(
|
||||
bootloader,
|
||||
procVersion,
|
||||
@ -87,10 +87,6 @@ abstract class DeviceInfo(
|
||||
)
|
||||
}
|
||||
|
||||
override fun toString(): String { // net.mamoe.mirai.utils.cryptor.ProtoKt.contentToString
|
||||
return "DeviceInfo(display=${display.contentToString()}, product=${product.contentToString()}, device=${device.contentToString()}, board=${board.contentToString()}, brand=${brand.contentToString()}, model=${model.contentToString()}, bootloader=${bootloader.contentToString()}, fingerprint=${fingerprint.contentToString()}, bootId=${bootId.contentToString()}, procVersion=${procVersion.contentToString()}, baseBand=${baseBand.contentToString()}, version=$version, simInfo=${simInfo.contentToString()}, osType=${osType.contentToString()}, macAddress=${macAddress.contentToString()}, wifiBSSID=${wifiBSSID?.contentToString()}, wifiSSID=${wifiSSID?.contentToString()}, imsiMd5=${imsiMd5.contentToString()}, imei='$imei', ipAddress='$ipAddress', androidId=${androidId.contentToString()}, apn=${apn.contentToString()})"
|
||||
}
|
||||
|
||||
interface Version {
|
||||
val incremental: ByteArray
|
||||
val release: ByteArray
|
||||
@ -99,6 +95,11 @@ abstract class DeviceInfo(
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Defaults "%4;7t>;28<fc.5*6".toByteArray()
|
||||
*/
|
||||
fun generateGuid(androidId: ByteArray, macAddress: ByteArray): ByteArray = md5(androidId + macAddress)
|
||||
|
||||
/*
|
||||
fun DeviceInfo.toOidb0x769DeviceInfo() : Oidb0x769.DeviceInfo = Oidb0x769.DeviceInfo(
|
||||
brand = brand.encodeToString(),
|
@ -7,11 +7,15 @@
|
||||
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
package net.mamoe.mirai.qqandroid.utils
|
||||
package net.mamoe.mirai.utils
|
||||
|
||||
import net.mamoe.mirai.utils.Context
|
||||
import net.mamoe.mirai.utils.DeviceInfo
|
||||
|
||||
/**
|
||||
* System default values
|
||||
* 通过本机信息来获取设备信息.
|
||||
*
|
||||
* Android: 获取手机信息, 与 QQ 官方相同.
|
||||
* JVM: 部分为常量, 部分为随机
|
||||
*/
|
||||
expect class SystemDeviceInfo(context: Context) : DeviceInfo
|
||||
open expect class SystemDeviceInfo(context: Context) : DeviceInfo
|
@ -7,13 +7,14 @@
|
||||
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
package net.mamoe.mirai.qqandroid.utils
|
||||
package net.mamoe.mirai.utils
|
||||
|
||||
import kotlinx.io.core.toByteArray
|
||||
import net.mamoe.mirai.utils.Context
|
||||
import net.mamoe.mirai.utils.localIpAddress
|
||||
import net.mamoe.mirai.utils.io.getRandomByteArray
|
||||
import net.mamoe.mirai.utils.io.getRandomString
|
||||
|
||||
actual class SystemDeviceInfo actual constructor(context: Context) : DeviceInfo(context) {
|
||||
@UseExperimental(ExperimentalUnsignedTypes::class)
|
||||
actual open class SystemDeviceInfo actual constructor(context: Context) : DeviceInfo(context) {
|
||||
override val display: ByteArray get() = "MIRAI.200122.001".toByteArray()
|
||||
override val product: ByteArray get() = "mirai".toByteArray()
|
||||
override val device: ByteArray get() = "mirai".toByteArray()
|
||||
@ -22,24 +23,18 @@ actual class SystemDeviceInfo actual constructor(context: Context) : DeviceInfo(
|
||||
override val model: ByteArray get() = "mirai".toByteArray()
|
||||
override val bootloader: ByteArray get() = "unknown".toByteArray()
|
||||
override val fingerprint: ByteArray get() = "mamoe/mirai/mirai:10/MIRAI.200122.001/5891938:user/release-keys".toByteArray()
|
||||
override val bootId: ByteArray get() = "5974cb66-bb69-4e82-a436-836b98ebd88c".toByteArray()
|
||||
override val bootId: ByteArray = ExternalImage.generateUUID(md5(getRandomByteArray(16))).toByteArray()
|
||||
override val procVersion: ByteArray get() = "Linux version 3.0.31-g6fb96c9 (android-build@xxx.xxx.xxx.xxx.com)".toByteArray()
|
||||
override val baseBand: ByteArray get() = byteArrayOf()
|
||||
override val version: DeviceInfo.Version get() = Version
|
||||
override val simInfo: ByteArray get() = "T-Mobile".toByteArray()
|
||||
override val osType: ByteArray get() = "android".toByteArray()
|
||||
override val macAddress: ByteArray get() = "02:00:00:00:00:00".toByteArray()
|
||||
override val wifiBSSID: ByteArray?
|
||||
get() = "02:00:00:00:00:00".toByteArray()
|
||||
override val wifiSSID: ByteArray?
|
||||
get() = "<unknown ssid>".toByteArray()
|
||||
@UseExperimental(ExperimentalUnsignedTypes::class)
|
||||
override val imsiMd5: ByteArray
|
||||
get() = ubyteArrayOf(0xD4u, 0x1Du, 0x8Cu, 0xD9u, 0x8Fu, 0x00u, 0xB2u, 0x04u, 0xE9u, 0x80u, 0x09u, 0x98u, 0xECu, 0xF8u, 0x42u, 0x7Eu).toByteArray()
|
||||
override val imei: String get() = "858414524711993"
|
||||
@UseExperimental(ExperimentalUnsignedTypes::class)
|
||||
override val ipAddress: ByteArray
|
||||
get() = localIpAddress().split(".").map { it.toUByte().toByte() }.takeIf { it.size == 4 }?.toByteArray() ?: byteArrayOf()
|
||||
override val wifiBSSID: ByteArray? get() = "02:00:00:00:00:00".toByteArray()
|
||||
override val wifiSSID: ByteArray? get() = "<unknown ssid>".toByteArray()
|
||||
override val imsiMd5: ByteArray get() = md5(getRandomByteArray(16))
|
||||
override val imei: String get() = getRandomString(15, '0'..'9')
|
||||
override val ipAddress: ByteArray get() = localIpAddress().split(".").map { it.toUByte().toByte() }.takeIf { it.size == 4 }?.toByteArray() ?: byteArrayOf()
|
||||
override val androidId: ByteArray get() = display
|
||||
override val apn: ByteArray get() = "wifi".toByteArray()
|
||||
|
Loading…
Reference in New Issue
Block a user