From a0b2516c3c6688d3b70ec5d72e14c697437e8d8d Mon Sep 17 00:00:00 2001 From: liujiahua123123 Date: Sun, 18 Aug 2019 17:14:50 +0800 Subject: [PATCH] half done --- .../network/packet/server/ServerPacket.kt | 4 ++ .../login/ServerLoginResponseSucceedPacket.kt | 37 ++++++++++++++----- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/ServerPacket.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/ServerPacket.kt index ef7c60590..5a0032903 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/ServerPacket.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/ServerPacket.kt @@ -86,5 +86,9 @@ fun DataInputStream.readIP(): String { return buff } +fun DataInputStream.readVarString(length:Int): String{ + return String(this.readNBytes(length)) +} + fun ByteArray.dataInputStream(): DataInputStream = DataInputStream(this.inputStream()) \ No newline at end of file diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/login/ServerLoginResponseSucceedPacket.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/login/ServerLoginResponseSucceedPacket.kt index 6f02496c8..638ea481f 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/login/ServerLoginResponseSucceedPacket.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/login/ServerLoginResponseSucceedPacket.kt @@ -3,6 +3,8 @@ package net.mamoe.mirai.network.packet.server.login import net.mamoe.mirai.network.Protocol import net.mamoe.mirai.network.packet.server.ServerPacket import net.mamoe.mirai.network.packet.server.dataInputStream +import net.mamoe.mirai.network.packet.server.readIP +import net.mamoe.mirai.network.packet.server.readVarString import net.mamoe.mirai.util.TEACryptor import net.mamoe.mirai.util.hexToBytes import net.mamoe.mirai.util.hexToShort @@ -12,8 +14,8 @@ import java.io.DataInputStream * @author Him188moe @ Mirai Project * @author NaturalHG @ Mirai Project */ -class ServerLoginResponseSucceedPacket(input: DataInputStream) : ServerPacket(input) { - lateinit var _0828_rec_decr_key: ByteArray +class ServerLoginResponseSucceedPacket(input: DataInputStream, val packetDataLength: Int) : ServerPacket(input) { + lateinit var _0828_rec_decr_key: ByteArray//16 bytes| var age: Int = 0 var gender: Boolean = false//from 1byte lateinit var nick: String @@ -27,24 +29,41 @@ class ServerLoginResponseSucceedPacket(input: DataInputStream) : ServerPacket(in @ExperimentalUnsignedTypes override fun decode() { - this.input.skip(141)//取文本中间 (data, 141 * 3 + 1, 5) + this.input.skip(7)//8 + + encryptionKey = this.input.readNBytes(16)//24 + + this.input.skip(1)//25 + + token38 = this.input.readNBytes(56)//81 + + this.input.skip(61L)//142 + val msgLength = when (this.input.readShort()) { "01 07".hexToShort() -> 0 "00 33".hexToShort() -> 28 * 3 "01 10".hexToShort() -> 64 * 3 else -> throw IllegalStateException() - } + }//144 + + this.input.skip(27L + msgLength)//171+msgLength + + this._0828_rec_decr_key = this.input.readNBytes(16)//187+msgLength + + this.input.skip(437L)//187+msgLength + + //varString (nickLength bytes) + val nickLength = this.input.readByte().toUByte().toInt()//625+msgLength + + nick = this.input.readVarString(nickLength)//625+msgLength+nickLength + + val dataIndex = packetDataLength - 31 - _0828_rec_decr_key = 取文本中间(data, 514 + msgLength, 47) - val nickLength = HexToDec(取文本中间(data, 1873 + msgLength, 2)) - nick = 转_Ansi文本(取文本中间(data, 1876 + msgLength, 3 * nickLength - 1)) age = HexToDec(取文本中间(data, 取文本长度(data) - 82, 5)) gender = 取文本中间(data, 取文本长度(data) - 94, 2) clientKey = 删全部空(取文本中间(data, 484 * 3 + msgLength + 1, 112 * 3 - 1)) - token38 = 取文本中间(data, 76, 167) token88 = 取文本中间(data, 568 + msgLength, 407) - encryptionKey = 取文本中间(data, 22, 47) } }