This commit is contained in:
Him188moe 2019-08-17 21:50:07 +08:00
parent 3e451344b4
commit a6959672d7
5 changed files with 15 additions and 10 deletions

View File

@ -10,7 +10,7 @@ import java.io.IOException
* @author Him188moe @ Mirai Project
*/
@ExperimentalUnsignedTypes
@PacketId(0x08_25_31_02)
@PacketId("08 25 31 02")
class Client0825ResponsePacket(private val serverIP: String, private val qq: Int) : ClientPacket() {
@ExperimentalUnsignedTypes
override fun encode() {

View File

@ -14,10 +14,15 @@ import java.net.InetAddress
*/
@PacketId("08 36")
@ExperimentalUnsignedTypes
class Client0836_622Packet(private val qq: Int, private val password: String, private val tgtgtKey: ByteArray, private val seq: String, private val token0825: ByteArray) : ClientPacket() {
class Client0836_622Packet(private val qq: Int, private val password: String, private val loginTime: ByteArray, private val loginIP: ByteArray, private val tgtgtKey: ByteArray, private val seq: String, private val token0825: ByteArray) : ClientPacket() {
@ExperimentalUnsignedTypes
override fun encode() {
this.writeHex(seq)
this.writeQQ(qq)
this.writeHex(Protocol._0836_622_fix1)
this.writeHex(Protocol.publicKey)
this.writeHex("00 00 00 10")
this.writeHex(Protocol._0836key1)
//TEA 加密
this.write(TEACryptor.encrypt(object : ClientPacket() {
@ -37,7 +42,7 @@ class Client0836_622Packet(private val qq: Int, private val password: String, pr
this.writeQQ(qq)
this.writeHex("00 06")//tag
this.writeHex("00 78")//length
this.writeTLV0006(qq, password)
this.writeTLV0006(qq, password, loginTime, loginIP, tgtgtKey)
//fix
this.writeHex(Protocol._0836_622_fix2)
this.writeHex("00 1A")//tag
@ -88,7 +93,7 @@ class Client0836_622Packet(private val qq: Int, private val password: String, pr
writeLong(getCrc32(it))//todo may be int? check that.
}
}
}.encodeToByteArray(), Protocol.redirectionKey.hexToBytes()))
}.encodeToByteArray(), Protocol.shareKey.hexToBytes()))
}

View File

@ -8,7 +8,8 @@ import java.io.IOException
/**
* @author Him188moe @ Mirai Project
*/
@PacketId(0x00_58)
@ExperimentalUnsignedTypes
@PacketId("00 58")
class ClientHeartbeatPacket : ClientPacket() {
var qq: Int = 0
var sessionKey: ByteArray? = null//登录后获得

View File

@ -11,7 +11,7 @@ import java.io.IOException
* @author Him188moe @ Mirai Project
*/
@ExperimentalUnsignedTypes
@PacketId(0x08_25_31_01)
@PacketId("08 25 31 01")
class ClientLoginPacket : ClientPacket() {
var qq: Int = 0

View File

@ -85,11 +85,10 @@ fun DataOutputStream.writeTLV0006(qq: Int, password: String, loginTime: ByteArra
it.writeHex(Protocol._0825data2)
it.writeHex("00 00 01")
val md5_1: ByteArray = md5(password);
val md5_1 = md5(password);
val md5_2 = md5(md5_1 + "00 00 00 00".hexToBytes() + qq.toBytes())
it.write(md5_1)
it.write(loginTime)//FIXED 12(maybe 11???) bytes
it.write(loginTime)//todo FIXED 12(maybe 11???) bytes??? check that
it.writeByte(0);
it.writeZero(4 * 3)
it.write(loginIP)