From 43595db045f5aab17d6f58f21a29b883854a5903 Mon Sep 17 00:00:00 2001 From: Him188moe Date: Fri, 9 Aug 2019 00:19:12 +0800 Subject: [PATCH] update --- .../packet/client/ClientHeartbeatPacket.java | 16 ++++++++++++++-- .../network/packet/client/ClientLoginPacket.java | 2 +- .../network/packet/client/ClientPacket.java | 10 ++++++++-- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientHeartbeatPacket.java b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientHeartbeatPacket.java index 6575a22d4..790175142 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientHeartbeatPacket.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientHeartbeatPacket.java @@ -1,16 +1,28 @@ package net.mamoe.mirai.network.packet.client; +import lombok.Data; +import lombok.EqualsAndHashCode; +import net.mamoe.mirai.network.Protocol; import net.mamoe.mirai.network.packet.PacketId; +import net.mamoe.mirai.util.TEAEncryption; import java.io.IOException; /** * @author Him188moe @ Mirai Project */ -@PacketId(0x0058) +@EqualsAndHashCode(callSuper = true) +@Data +@PacketId(0x00_58) public class ClientHeartbeatPacket extends ClientPacket { + public long qq; + public byte[] sessionKey;//登录后获得 + @Override public void encode() throws IOException { - + this.writeRandom(2); + this.writeQQ(qq); + this.writeHex(Protocol.fixVer); + this.write(TEAEncryption.encrypt(new byte[]{0x00, 0x01, 0x00, 0x01}, sessionKey)); } } diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientLoginPacket.java b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientLoginPacket.java index dd9b53c46..54c82f055 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientLoginPacket.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientLoginPacket.java @@ -39,6 +39,6 @@ public class ClientLoginPacket extends ClientPacket { }; data.encode(); - TEAEncryption.encrypt(data.toByteArray(), Protocol.hexToBytes(Protocol._0825key)); + this.write(TEAEncryption.encrypt(data.toByteArray(), Protocol.hexToBytes(Protocol._0825key))); } } diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientPacket.java b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientPacket.java index ac3dc27f7..09e493e72 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientPacket.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientPacket.java @@ -53,6 +53,12 @@ public abstract class ClientPacket extends DataOutputStream implements Packet { } } + protected void writeRandom(int length) throws IOException { + for (int i = 0; i < length; i++) { + this.writeByte((byte) (int) (Math.random() * 255)); + } + } + protected void writeQQ(long qq) throws IOException { this.writeLong(qq); } @@ -60,9 +66,9 @@ public abstract class ClientPacket extends DataOutputStream implements Packet { /** * Encode this packet. - * + *

* Before sending the packet, an {@linkplain Protocol#tail tail} will be added. - */ + */// TODO: 2019/8/9 添加 tail public abstract void encode() throws IOException; public byte[] toByteArray() {