Merge remote-tracking branch 'origin/master'

This commit is contained in:
Him188moe 2019-08-17 21:58:44 +08:00
commit 145b856611
5 changed files with 49 additions and 11 deletions

View File

@ -11,9 +11,9 @@ import java.io.DataInputStream
class Server0825Packet(private val type: Type, inputStream: DataInputStream) : ServerPacket(inputStream) {
lateinit var serverIP: String;
var loginTime: Long = 0;
lateinit var loginIP: String;
lateinit var token: ByteArray;
var loginTime: Int = 0
lateinit var loginIP: String
lateinit var token: ByteArray
lateinit var tgtgtKey: ByteArray
enum class Type {
@ -32,15 +32,19 @@ class Server0825Packet(private val type: Type, inputStream: DataInputStream) : S
when (data.readByte().toInt()) {
0xFE -> {
System.out.println("0xfe")
serverIP = data.readIP()
}
0X00 -> {
data.skip(16 - 2)
token = data.readNBytes(167 - (16 - 2))
loginTime = data.readLong()//todo check
data.skip(4)
token = data.readNBytes(56)
data.skip(28)
loginTime = data.readInt()
loginIP = data.readIP()
tgtgtKey = getRandomKey(16);
tgtgtKey = getRandomKey(16)
}
else -> {
throw IllegalStateException()
}

View File

@ -1,6 +1,8 @@
package net.mamoe.mirai.network.packet.server
import net.mamoe.mirai.network.packet.Packet
import net.mamoe.mirai.util.toHexString
import java.io.DataInputStream
/**
@ -44,10 +46,12 @@ fun DataInputStream.readUntil(byte: Byte): ByteArray {
return buff
}
@ExperimentalUnsignedTypes
fun DataInputStream.readIP(): String {
var buff = ""
for (i in 0..12) {//todo: check that
buff += readByte().toInt()
for (i in 0..3) {//todo: check t// hat
buff += (readByte().toInt()).toString()
if(i !=3)buff+="."
}
return buff
}

View File

@ -34,6 +34,8 @@ fun UByteArray.toHexString(separator: String = " "): String = Utils.toHexString(
fun Byte.toHexString(): String = this.toString(16)
@ExperimentalUnsignedTypes
fun String.hexToBytes(): ByteArray = Protocol.hexToBytes(this)
@ExperimentalUnsignedTypes

View File

@ -19,4 +19,20 @@ public class NetworkTest {
}
public static String bytesToHex(byte[] bytes) {
StringBuffer sb = new StringBuffer();
for(int i = 0; i < bytes.length; i++) {
String hex = Integer.toHexString(bytes[i] & 0xFF);
if(hex.length() < 2){
sb.append(0);
}
sb.append(hex);
}
return sb.toString();
}
}

View File

@ -1,6 +1,18 @@
import net.mamoe.mirai.network.packet.client.Client0825ResponsePacket
import net.mamoe.mirai.network.packet.server.Server0825Packet
import net.mamoe.mirai.util.TEACryptor
import net.mamoe.mirai.util.hexToBytes
import net.mamoe.mirai.util.hexToUBytes
import net.mamoe.mirai.util.toHexString
import java.io.DataInputStream
@ExperimentalUnsignedTypes
fun main(){
val v = "00 37 13 08 25 31 01 76 E4 B8 DD 03 00 00 00 01 2E 01 00 00 68 52 00 00 00 00 A4 F1 91 88 C9 82 14 99 0C 9E 56 55 91 23 C8 3D C3 47 F0 25 A1 8E 74 EF 1E 0B 32 5B 20 8A FA 3B 0B 52 8F 86 E6 04 F1 D6 F8 63 75 60 8C 0C 7D 06 D1 E0 22 F8 49 EF AF 61 EE 7E 69 72 EB 10 08 30 69 50 1C 84 A9 C2 16 D7 52 B9 1C 79 CA 5A CF FD BC AE D8 A6 BB DC 21 6E 79 26 E1 A2 23 11 AA B0 9A 49 39 72 ED 61 12 B6 88 4D A2 56 23 E9 92 11 92 27 4A 70 00 C9 01 7B 03";
v.split(" ")
val data = "00 37 13 08 25 31 01 76 E4 B8 DD 03 00 00 00 01 2E 01 00 00 68 52 00 00 00 00 A4 F1 91 88 C9 82 14 99 0C 9E 56 55 91 23 C8 3D C3 47 F0 25 A1 8E 74 EF 1E 0B 32 5B 20 8A FA 3B 0B 52 8F 86 E6 04 F1 D6 F8 63 75 60 8C 0C 7D 06 D1 E0 22 F8 49 EF AF 61 EE 7E 69 72 EB 10 08 30 69 50 1C 84 A9 C2 16 D7 52 B9 1C 79 CA 5A CF FD BC AE D8 A6 BB DC 21 6E 79 26 E1 A2 23 11 AA B0 9A 49 39 72 ED 61 12 B6 88 4D A2 56 23 E9 92 11 92 27 4A 70 00 C9 01 7B 03"
val s = DataInputStream(data.hexToBytes().inputStream())
val packet = Server0825Packet(Server0825Packet.Type.TYPE_08_25_31_01,s)
packet.decode()
System.out.println(packet.token.toUByteArray().toHexString(" "))
System.out.println(packet.loginTime)
System.out.println(packet.loginIP)
}