mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-22 18:00:17 +08:00
Merge remote-tracking branch 'origin/master'
# Conflicts: # mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/login/ServerLoginResponseVerificationCodePacket.kt
This commit is contained in:
commit
1ae263a1ab
@ -34,7 +34,7 @@ abstract class ServerPacket(val input: DataInputStream) : Packet {
|
||||
"08 36 31 03" -> ServerLoginResponseResendPacket.Flag.`08 36 31 03`
|
||||
else -> ServerLoginResponseResendPacket.Flag.OTHER
|
||||
})
|
||||
871 -> return ServerLoginResponseVerificationCodePacket(stream)
|
||||
871 -> return ServerLoginResponseVerificationCodePacket(stream, bytes.size)
|
||||
}
|
||||
|
||||
if (bytes.size > 700) {
|
||||
|
@ -1,12 +1,11 @@
|
||||
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.readVarString
|
||||
import net.mamoe.mirai.network.packet.server.*
|
||||
import net.mamoe.mirai.util.TEACryptor
|
||||
import net.mamoe.mirai.util.hexToBytes
|
||||
import net.mamoe.mirai.util.hexToShort
|
||||
import net.mamoe.mirai.util.toHexString
|
||||
import java.io.DataInputStream
|
||||
|
||||
/**
|
||||
@ -18,7 +17,6 @@ class ServerLoginResponseSuccessPacket(input: DataInputStream, val packetDataLen
|
||||
var age: Short = 0
|
||||
var gender: Int = 0//from 1byte
|
||||
lateinit var nick: String
|
||||
lateinit var clientKey: ByteArray
|
||||
|
||||
lateinit var token38: ByteArray
|
||||
lateinit var token88: ByteArray
|
||||
@ -27,49 +25,54 @@ class ServerLoginResponseSuccessPacket(input: DataInputStream, val packetDataLen
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
override fun decode() {
|
||||
|
||||
//测试完成 @NaturalHG
|
||||
/**
|
||||
* Version 1 @Deprecated
|
||||
this.input.skip(7)//8
|
||||
|
||||
encryptionKey = this.input.readNBytes(16)//24
|
||||
|
||||
this.input.skip(1)//25
|
||||
this.input.skip(2)//25->26
|
||||
|
||||
token38 = this.input.readNBytes(56)//81
|
||||
token38 = this.input.readNBytes(56)//81->82
|
||||
|
||||
this.input.skip(61L)//142
|
||||
this.input.skip(60L)//142
|
||||
|
||||
val msgLength = when (this.input.readShort()) {
|
||||
"01 07".hexToShort() -> 0
|
||||
"00 33".hexToShort() -> 28 * 3
|
||||
"01 10".hexToShort() -> 64 * 3
|
||||
//??
|
||||
var b = this.input.readNBytes(2)
|
||||
val msgLength = when (b.toUByteArray().toHexString()) {
|
||||
"01 07" -> 0
|
||||
"00 33" -> 28
|
||||
"01 10" -> 65
|
||||
else -> throw IllegalStateException()
|
||||
}//144
|
||||
|
||||
|
||||
System.out.println(msgLength)
|
||||
|
||||
this.input.skip(17L + msgLength)//161+msgLength
|
||||
|
||||
this.input.mark(113)//161+msgLength
|
||||
|
||||
clientKey = this.input.readNBytes(112)//273+msgLength
|
||||
|
||||
this.input.reset()//161+msgLength
|
||||
|
||||
this.input.skip(10)//171+msgLength
|
||||
|
||||
this._0828_rec_decr_key = this.input.readNBytes(16)//187+msgLength
|
||||
_0828_rec_decr_key = this.input.readNBytes(16)//187+msgLength
|
||||
|
||||
this.input.skip(2)//189+msgLength
|
||||
|
||||
token88 = this.input.readNBytes(136)//325+msgLength
|
||||
this.input.skip(2)
|
||||
|
||||
token88 = this.input.readNBytes(136)//325+ // msgLength
|
||||
|
||||
this.input.skip(299L)//624+msgLength
|
||||
|
||||
//varString (nickLength bytes)
|
||||
val nickLength = this.input.readByte().toUByte().toInt()//625+msgLength
|
||||
val nickLength = this.input.readByte().toInt()//625+msgLength
|
||||
|
||||
System.out.println(nickLength)
|
||||
|
||||
nick = this.input.readVarString(nickLength)//625+msgLength+nickLength
|
||||
|
||||
val dataIndex = packetDataLength - 31
|
||||
|
||||
/*
|
||||
this.input.skip((dataIndex - (625 + msgLength + nickLength)) + 0L)//-31
|
||||
|
||||
gender = this.input.readByte().toUByte().toInt()//-30
|
||||
@ -77,11 +80,41 @@ class ServerLoginResponseSuccessPacket(input: DataInputStream, val packetDataLen
|
||||
this.input.skip(9)//-27
|
||||
|
||||
age = this.input.readShort()//-25
|
||||
*/
|
||||
age = 0
|
||||
gender = 0
|
||||
|
||||
/*
|
||||
age = HexToDec(取文本中间(data, 取文本长度(data) - 82, 5))
|
||||
gender = 取文本中间(data, 取文本长度(data) - 94, 2)
|
||||
*/
|
||||
* **/
|
||||
/** version 2 */
|
||||
|
||||
this.input.skip(7)//8
|
||||
this.encryptionKey = this.input.readNBytes(16)//24
|
||||
|
||||
this.input.skip(2)//26
|
||||
this.token38 = this.input.readNBytes(56)//82
|
||||
|
||||
this.input.skip(60L)//142
|
||||
val msgLength = when (this.input.readNBytes(2).toUByteArray().toHexString()) {
|
||||
"01 07" -> 0
|
||||
"00 33" -> 28
|
||||
"01 10" -> 64
|
||||
else -> throw IllegalStateException()
|
||||
}
|
||||
|
||||
this._0828_rec_decr_key = this.input.readNBytes(171 + msgLength,16)
|
||||
|
||||
this.token88 = this.input.readNBytes(189 + msgLength,136)
|
||||
|
||||
val nickLength = this.input.goto(624 + msgLength).readByte().toInt()
|
||||
this.nick = this.input.readVarString(nickLength)
|
||||
|
||||
this.age = this.input.goto(packetDataLength - 28).readShort()
|
||||
|
||||
this.gender = this.input.goto(packetDataLength - 32).readByte().toInt()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,30 +1,38 @@
|
||||
package net.mamoe.mirai.network.packet.server.login
|
||||
|
||||
import net.mamoe.mirai.network.packet.server.ServerPacket
|
||||
import net.mamoe.mirai.network.packet.server.dataInputStream
|
||||
import net.mamoe.mirai.network.packet.server.goto
|
||||
import net.mamoe.mirai.util.TEACryptor
|
||||
import net.mamoe.mirai.network.packet.server.readVarString
|
||||
import net.mamoe.mirai.util.toHexString
|
||||
import java.io.DataInputStream
|
||||
|
||||
/**
|
||||
* @author Him188moe
|
||||
*/
|
||||
class ServerLoginResponseVerificationCodePacket(input: DataInputStream) : ServerPacket(input) {
|
||||
var verifyCodeLength: Int = 0
|
||||
lateinit var verifyCode: String
|
||||
class ServerLoginResponseVerificationCodePacket(input: DataInputStream, val packetLength: Int) : ServerPacket(input) {
|
||||
var verifyCodeLength: Short = 0
|
||||
lateinit var verifyCode: ByteArray
|
||||
lateinit var token00BA: ByteArray
|
||||
var unknownBoolean: Boolean? = null
|
||||
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
override fun decode() {//todo decode 注释的内容
|
||||
/*
|
||||
data = 取文本中间(data, 43, 取文本长度(data) - 45)
|
||||
data = TeaDecrypt(data, Protocol.shareKey)
|
||||
|
||||
verifyCodeLength = HexToDec(取文本中间(data, 235, 5))
|
||||
verifyCode = 取文本中间(data, 241, verifyCodeLength * 3 - 1)
|
||||
unknownBoolean = 取文本中间(data, 245 + verifyCodeLength * 3 - 1, 2) == "01"
|
||||
token00BA = 取文本中间(data, 取文本长度(data) - 178, 119)*/
|
||||
token00BA = 取文本中间(data, 取文本长度(data) - 178, 119)
|
||||
*/
|
||||
this.verifyCodeLength = this.input.goto(78).readShort()
|
||||
this.verifyCode = this.input.readNBytes(this.verifyCodeLength.toInt())
|
||||
|
||||
this.input.skip(1)
|
||||
|
||||
val b = this.input.readByte()
|
||||
System.out.println(b.toHexString())
|
||||
|
||||
this.token00BA = this.input.goto(packetLength - 60).readNBytes(40)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,6 @@ fun UByteArray.toHexString(separator: String = " "): String = Utils.toHexString(
|
||||
fun Byte.toHexString(): String = this.toUByte().toString(16)
|
||||
|
||||
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun String.hexToBytes(): ByteArray = Protocol.hexToBytes(this)
|
||||
@ExperimentalUnsignedTypes
|
||||
|
@ -73,6 +73,6 @@ public class HaxComparator {
|
||||
|
||||
|
||||
public static void main(String[] args){
|
||||
System.out.println(HaxComparator.compare("AA CC AA DD EE FF","AA CC AA DD EE GG HH"));
|
||||
System.out.println(HaxComparator.compare("00 01 09 00 70 00 01 23 7B FE 83 D1 37 64 46 84 9D E9 9C E7 BB 8E 44 00 38 9B A4 3B C2 BB 49 4C DA B0 A5 5C C8 27 29 74 EF CB 38 59 4E 03 C8 15 C6 F9 BF 3F 88 22 7E 22 5B 48 02 71 59 1A 2C C8 42 BA 81 76 66 0C 46 91 89 6C B2 17 BF 2A 00 F8 8B 00 20 7C 28 07 3D AA 24 EF B4 49 9D 85 7F 4C F5 41 56 F4 1F AD 53 81 9F C1 03 F3 03 65 DD 0C 04 CC 68 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6","AA CC AA DD EE GG HH"));
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,12 @@
|
||||
import net.mamoe.mirai.network.packet.server.login.ServerLoginResponseSuccessPacket
|
||||
import net.mamoe.mirai.network.packet.server.login.ServerLoginResponseVerificationCodePacket
|
||||
import net.mamoe.mirai.util.hexToBytes
|
||||
import net.mamoe.mirai.util.toHexString
|
||||
import java.io.ByteArrayInputStream
|
||||
import java.io.DataInputStream
|
||||
import java.io.File
|
||||
import javax.imageio.ImageIO
|
||||
import javax.imageio.stream.ImageInputStream
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun main(){
|
||||
@ -16,9 +22,35 @@ fun main(){
|
||||
|
||||
// val packet = ClientPasswordSubmissionPacket(1994701021,"xiaoqqq",)
|
||||
|
||||
val data = "00 01 09 00 70 00 01 23 7B FE 83 D1 37 64 46 84 9D E9 9C E7 BB 8E 44 00 38 9B A4 3B C2 BB 49 4C DA B0 A5 5C C8 27 29 74 EF CB 38 59 4E 03 C8 15 C6 F9 BF 3F 88 22 7E 22 5B 48 02 71 59 1A 2C C8 42 BA 81 76 66 0C 46 91 89 6C B2 17 BF 2A 00 F8 8B 00 20 7C 28 07 3D AA 24 EF B4 49 9D 85 7F 4C F5 41 56 F4 1F AD 53 81 9F C1 03 F3 03 65 DD 0C 04 CC 68 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 01 07 01 D3 00 01 00 16 00 00 00 01 00 00 00 64 00 00 0D FD 00 09 3A 80 00 00 00 3C 00 02 68 6E 6A 38 6A 50 36 71 43 72 60 2A 5A 29 72 3D 00 88 00 04 5D 59 19 96 B7 5F F8 D4 00 00 00 00 00 78 B9 8D 0C 93 E9 54 A1 D4 5A E8 44 84 F9 A6 47 58 BB 32 8F 97 A1 40 70 B7 49 30 60 04 15 D4 4F D1 E0 52 53 20 8F 16 4E 02 2E 36 0C E5 4A 64 41 80 84 C6 15 74 16 37 BC 59 7B 19 EA ED A2 20 61 79 03 24 75 12 80 D5 87 47 09 52 53 5C 99 DA 89 A9 AB B4 35 43 B8 86 92 7F D9 53 04 10 9E 9E CC 4F FE 7F B3 67 CF 39 C9 9B 74 B9 16 CC 4E 71 27 E2 51 FB 5E 30 6A A6 34 BB 4A 74 5A 47 48 28 24 69 79 6D 2D 63 35 32 40 35 00 78 00 01 5D 59 19 96 00 70 0F 3E 2C E5 BC 62 C6 C3 0A 06 01 DB 81 C5 73 BE B0 6A D0 2F 36 E5 F4 0E E2 EC 50 03 0E 7B 30 9A 38 F7 82 87 F7 65 AE E9 FE 98 82 49 A5 E6 9F E7 46 71 C3 9F 69 BD 13 08 65 3F 78 3F 57 7B 14 B3 BE 74 87 1B F6 C3 FC E9 A2 78 4E FE E2 7C 0A DD DD 38 E9 52 25 79 8A 8A CF 25 B0 E2 62 65 B8 A5 95 ED AC 48 B7 D6 2E AA A8 6A C3 FF 56 E3 7F 0F 00 83 01 3C 78 52 35 69 24 68 3F 76 55 25 37 60 43 40 64 00 70 00 01 5D 59 19 96 00 68 BA BF 74 0D 6D E6 81 FF 63 B5 EB A3 44 A8 3F 9E 25 36 D0 B3 29 14 24 5A 34 17 32 88 4D F6 96 4D 8A 4F 6B 00 45 CF AD 0A 17 74 C9 75 45 98 1F 20 E0 CD 89 32 21 7B 3C 60 9E AE 2B EE 23 2C 87 F2 C8 30 9F CD 93 1E 07 A5 5C 67 F3 71 01 9D 86 BB B5 0F 3E ED AB 39 F4 09 C4 8C 0A DD 65 04 A9 9E 3E 97 08 BE 40 4C 66 56 70 5F 45 47 6A 5E 4D 36 38 29 34 53 3D 3B 2C 52 01 08 00 29 00 01 00 25 00 1D 02 5B 14 28 E0 B9 91 E2 80 A2 CC 80 CF 89 E2 80 A2 CC 81 E0 B9 91 29 02 13 80 02 00 05 00 04 00 00 00 01 01 15 00 10 1C 57 7F 1B BF 9C 97 09 79 30 5C 17 43 B9 A2 FC"
|
||||
/*
|
||||
val data = "00 01 09 00 70 00 01 5C 71 80 A6 BA 20 62 2E C1 BE BF F2 47 37 40 A1 00 38 91 25 85 58 18 D3 67 77 2C 4D 02 D8 66 A6 F7 3E 57 D8 CE 01 47 7F D0 8F 13 C8 3A E5 19 A2 60 BC 4C 9A 35 4E 92 9F 21 48 6C 67 68 36 6B 94 C1 6F 11 8D 55 6B 04 9A 22 C3 00 20 29 7E D4 A7 16 02 07 14 41 90 3A 65 06 AC CB 28 AB 90 DB 46 33 C9 C0 1D 06 44 7A 92 17 C3 A5 F3 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 01 07 01 D3 00 01 00 16 00 00 00 01 00 00 00 64 00 00 0D B6 00 09 3A 80 00 00 00 3C 00 02 2E 29 4E 47 5F 68 78 2C 47 25 5F 59 50 65 60 5D 00 88 00 04 5D 59 45 17 B7 5F F8 D4 00 00 00 00 00 78 38 E0 3B 23 4A C5 0E 93 CB C1 66 96 37 8B 46 B2 86 23 3F 2D 09 45 E0 16 1C E9 9C 11 7A FA 2D A8 50 47 42 74 01 06 84 76 0E 5F C6 04 29 1A 4A 65 AA 93 49 DF BD 00 ED 80 B8 26 CA 80 E8 20 6D 15 43 DD D8 E6 48 C2 8A 5A F8 70 6B 51 3A E2 2D 21 95 4B 6A 75 A8 90 CA B1 C0 E5 73 99 D7 59 D8 DD 3D C9 5C E4 49 61 22 11 60 85 48 C4 7D E0 84 62 AD B3 13 84 61 C1 9E 19 35 41 44 44 37 3F 21 33 64 4B 37 5D 77 6D 61 3F 00 78 00 01 5D 59 45 17 00 70 A4 D9 44 9E 95 51 B4 B0 91 CC 1E DB 34 F9 F7 13 8B 30 08 C0 AE 33 22 9C FF 87 CF 9B A2 B0 E5 E1 D0 E0 AD DD 8F E9 F6 1E 01 1F AA 74 46 66 B4 81 54 B9 29 E5 FC 0B 7F C9 13 AE 32 BA D6 55 2E B0 A1 30 24 B6 F2 E7 62 F9 2E 00 E4 51 61 50 7C D1 36 E8 61 96 36 FF B7 32 74 3C 2A F7 74 63 DA 7D 57 84 18 ED 84 E9 D8 87 6D 66 1D D5 84 D4 23 99 00 83 01 63 2A 69 2E 25 79 28 3B 29 33 29 40 28 54 7E 21 00 70 00 01 5D 59 45 17 00 68 6F 1F FB 31 7B D7 B7 D8 91 32 D7 20 8B 8A F6 02 C8 22 E5 24 8C 25 F2 6A C5 B0 ED 35 01 BF AF 42 72 33 4E FB 3F D3 02 BA F4 46 2B 68 20 0B E3 39 81 B1 D3 8A E0 1B 0F 69 D1 70 AE 49 A5 24 4F BB 58 4F F8 31 A0 37 4C CD F1 12 35 80 99 7D 25 CA F9 E9 45 B6 B0 57 56 66 61 C5 7B 90 57 BF E2 2C 94 91 80 1A B0 D7 21 A8 44 2C 33 4A 29 77 5F 71 40 41 38 3D 7A 41 65 33 01 08 00 29 00 01 00 25 00 1D 02 5B 14 28 E0 B9 91 E2 80 A2 CC 80 CF 89 E2 80 A2 CC 81 E0 B9 91 29 02 13 80 02 00 05 00 04 00 00 00 01 01 15 00 10 F9 86 85 81 30 F6 1B E0 E7 97 98 F6 46 C3 4F B2"
|
||||
val s = DataInputStream(data.hexToBytes().inputStream())
|
||||
val packet = ServerLoginResponseSuccessPacket(s,(data.length+1)/3)
|
||||
packet.decode()
|
||||
System.out.println("0828key: \n" + packet._0828_rec_decr_key.toUByteArray().toHexString(" "))
|
||||
System.out.println("token88: \n" + packet.token88.toUByteArray().toHexString(" "))
|
||||
System.out.println("token38: \n" + packet.token38.toUByteArray().toHexString(" "))
|
||||
System.out.println("enckey: \n" + packet.encryptionKey.toUByteArray().toHexString(" "))
|
||||
System.out.println("nick: " + packet.nick)
|
||||
System.out.println("age: " + packet.age)
|
||||
System.out.println("gender: " + packet.gender)
|
||||
*/
|
||||
|
||||
val data = "FB 01 04 03 33 00 01 00 BA 02 03 2C 13 00 05 01 00 00 01 23 00 38 F5 C3 CF F4 B4 27 C5 8F 9B D3 ED 18 73 7D E9 CB 43 1F 57 43 BE D3 1B 9A F5 26 2B F4 D9 43 14 9A ED 3B C3 6C E5 7F 4E B0 0C BA 55 57 18 06 78 E1 13 A7 B2 A8 7F 47 E1 1C 02 BC 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 00 00 00 82 00 00 00 35 08 03 00 00 00 BA 12 C3 02 00 00 00 04 67 41 4D 41 00 00 B1 8F 0B FC 61 05 00 00 00 01 73 52 47 42 00 AE CE 1C E9 00 00 00 6C 50 4C 54 45 F6 F8 F4 E3 EE FD E5 FD FF EE FD F0 F6 F9 E7 F7 F9 EC F4 FE FF F7 F7 F9 F5 F4 FF EC F7 FF E6 F4 E0 F5 FC F8 49 5B 8F CB DB FA BB C9 F5 2B 40 7C D6 E6 FF FD FB FF ED F1 F0 2A 43 B3 D6 F6 FF FC F1 FC 1C 38 91 A7 BD F6 63 74 BD 70 8B CC 34 4F A5 DE F3 F1 75 88 E7 A4 B7 D3 73 82 A1 8C A3 DC F3 FB D8 4D 68 B9 94 A8 FB 8D 9C B6 CB 42 B0 8E 00 00 0A 6F 49 44 41 54 58 C3 B4 57 89 76 EB 2A 12 14 20 B1 09 10 42 68 DF 2C FB FF FF 71 0A 79 49 E2 E4 CE CC 79 37 8F 13 59 B6 72 EC 2E AA BB AB 9A 2C FB 61 89 8F 95 E5 79 A9 70 CB B2 22 C7 2A 65 DB 5E 72 21 F1 A9 90 B2 28 C4 F9 AF 5F 5F 05 30 9C 28 D2 4B C6 58 F9 8C 92 17 39 13 6D 9B FF EB 10 8A 3B 0F 2F 10 52 64 45 51 64 42 A6 37 79 21 DA FC F2 6F 40 08 9F AE B7 9C A4 C8 27 31 F2 C4 50 A4 D4 9C F9 01 BC A2 90 0F 08 E1 2F AE 1F E3 7E 7D 24 52 F4 67 2C 91 02 E3 CA 13 2F 78 97 00 86 DF 4E C4 23 56 F1 F8 7B 10 90 42 3D D2 93 EE 27 04 F1 80 F0 4B 99 10 4F 62 5E D9 2D EE 57 8A F1 A0 E1 64 20 2B 55 F9 C8 C3 67 08 F8 81 7F F2 F7 BE FD 67 1D 9E 9B 4F EB 89 25 21 28 19 63 09 5D A9 94 2A 59 AA 87 B3 32 4E 84 FF 3C 13 8F AF 06 F1 29 FD E2 C1 02 54 E0 8C 5E 5C 2E A5 72 43 65 F4 E5 72 61 5C 4A 45 81 41 97 79 0A 9E FF 62 22 C2 EB 7E 42 48 45 80 2B 0F 58 B9 66 D6 1C 63 75 D3 97 BC F4 08 0F 08 5C 6B 8D CC 14 1F 10 C4 5F B4 C3 37 66 EE E5 78 CF 42 12 05 CD F5 4D 29 EB 36 AD 19 82 CF 76 35 C6 86 B2 94 A7 36 FC 62 39 BE A8 B8 D7 02 78 08 8F 66 E4 44 45 DF BB AB A3 34 92 14 DF 54 C6 32 1D 00 21 7F 41 08 7F C9 7F F8 28 88 4F B5 90 89 3A 21 90 9E DF E8 DE 34 4D 8C D1 EF C6 AC 6B 7F 74 8E B1 FA 84 90 7F B0 F0 CF 5A E2 27 4C AF 8E 28 EF 24 48 B2 AF B1 9A 96 3E F6 43 75 38 6F 29 5D 1A C7 59 78 87 F0 1B B2 F0 95 05 3C 93 B2 26 B6 9F BA 18 AB AE 59 EC 88 17 17 A9 8F 4B B3 CE 60 A1 CD F2 CB 03 42 10 7F D9 06 1F 76 80 8E 4F 6D 9F 56 99 05 25 A5 DD AA EB 62 7A 6F 87 E6 B8 0E 5D 33 C6 99 C6 C4 02 24 EB 74 8C 87 98 64 F8 5E A9 9E 1E F7 72 FB FF B3 21 8A A4 00 01 00 28 F9 59 C5 E6 34 43 53 95 C8 17 2E 62 78 BF E8 27 BF 20 BA 11 5A 74 D1 7C D0 95 6C F6 A3 41 D2 84 BD 7D F6 64 BC 27 40 50 01 15 00 10 44 98 EB B8 30 3B DE 7D 2B CC 4C 41 B3 1C 92 86"
|
||||
val s = DataInputStream(data.hexToBytes().inputStream())
|
||||
val packet = ServerLoginResponseVerificationCodePacket(s,(data.length+1)/3)
|
||||
packet.decode()
|
||||
System.out.println(packet.token00BA.toUByteArray().toHexString(" "))
|
||||
System.out.println(packet.verifyCode.toUByteArray().toHexString(" "))
|
||||
System.out.println(packet.verifyCodeLength)
|
||||
|
||||
val f = File(System.getProperty("user.dir") + "/test.jpg")
|
||||
f.createNewFile()
|
||||
val io = ImageIO.createImageInputStream(ByteArrayInputStream(packet.verifyCode))
|
||||
try {
|
||||
ImageIO.write(Render, "jpg", f)
|
||||
}catch (e: Exception){
|
||||
e.printStackTrace()
|
||||
}
|
||||
|
||||
System.out.println(packet._0828_rec_decr_key)
|
||||
}
|
Loading…
Reference in New Issue
Block a user