Commit f6c20122 authored by Him188moe's avatar Him188moe

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/login/ServerLoginResponseSuccessPacket.kt
parents baec0a2b a0b2516c
...@@ -86,5 +86,9 @@ fun DataInputStream.readIP(): String { ...@@ -86,5 +86,9 @@ fun DataInputStream.readIP(): String {
return buff return buff
} }
fun DataInputStream.readVarString(length:Int): String{
return String(this.readNBytes(length))
}
fun ByteArray.dataInputStream(): DataInputStream = DataInputStream(this.inputStream()) fun ByteArray.dataInputStream(): DataInputStream = DataInputStream(this.inputStream())
\ No newline at end of file
...@@ -3,6 +3,8 @@ package net.mamoe.mirai.network.packet.server.login ...@@ -3,6 +3,8 @@ package net.mamoe.mirai.network.packet.server.login
import net.mamoe.mirai.network.Protocol import net.mamoe.mirai.network.Protocol
import net.mamoe.mirai.network.packet.server.ServerPacket import net.mamoe.mirai.network.packet.server.ServerPacket
import net.mamoe.mirai.network.packet.server.dataInputStream 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.TEACryptor
import net.mamoe.mirai.util.hexToBytes import net.mamoe.mirai.util.hexToBytes
import net.mamoe.mirai.util.hexToShort import net.mamoe.mirai.util.hexToShort
...@@ -12,8 +14,8 @@ import java.io.DataInputStream ...@@ -12,8 +14,8 @@ import java.io.DataInputStream
* @author Him188moe @ Mirai Project * @author Him188moe @ Mirai Project
* @author NaturalHG @ Mirai Project * @author NaturalHG @ Mirai Project
*/ */
class ServerLoginResponseSuccessPacket(input: DataInputStream) : ServerPacket(input) { class ServerLoginResponseSuccessPacket(input: DataInputStream, val packetDataLength: Int) : ServerPacket(input) {
lateinit var _0828_rec_decr_key: ByteArray lateinit var _0828_rec_decr_key: ByteArray//16 bytes|
var age: Int = 0 var age: Int = 0
var gender: Boolean = false//from 1byte var gender: Boolean = false//from 1byte
lateinit var nick: String lateinit var nick: String
...@@ -27,24 +29,41 @@ class ServerLoginResponseSuccessPacket(input: DataInputStream) : ServerPacket(in ...@@ -27,24 +29,41 @@ class ServerLoginResponseSuccessPacket(input: DataInputStream) : ServerPacket(in
@ExperimentalUnsignedTypes @ExperimentalUnsignedTypes
override fun decode() { 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()) { val msgLength = when (this.input.readShort()) {
"01 07".hexToShort() -> 0 "01 07".hexToShort() -> 0
"00 33".hexToShort() -> 28 * 3 "00 33".hexToShort() -> 28 * 3
"01 10".hexToShort() -> 64 * 3 "01 10".hexToShort() -> 64 * 3
else -> throw IllegalStateException() 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)) age = HexToDec(取文本中间(data, 取文本长度(data) - 82, 5))
gender = 取文本中间(data, 取文本长度(data) - 94, 2) gender = 取文本中间(data, 取文本长度(data) - 94, 2)
clientKey = 删全部空(取文本中间(data, 484 * 3 + msgLength + 1, 112 * 3 - 1)) clientKey = 删全部空(取文本中间(data, 484 * 3 + msgLength + 1, 112 * 3 - 1))
token38 = 取文本中间(data, 76, 167)
token88 = 取文本中间(data, 568 + msgLength, 407) token88 = 取文本中间(data, 568 + msgLength, 407)
encryptionKey = 取文本中间(data, 22, 47)
} }
} }
......
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