diff --git a/src/main/java/com/eu/habbo/habbohotel/gameclients/GameClient.java b/src/main/java/com/eu/habbo/habbohotel/gameclients/GameClient.java index a4a1ea53..956620b6 100644 --- a/src/main/java/com/eu/habbo/habbohotel/gameclients/GameClient.java +++ b/src/main/java/com/eu/habbo/habbohotel/gameclients/GameClient.java @@ -24,6 +24,7 @@ public class GameClient { private final HabboEncryption encryption; private Habbo habbo; + private boolean handshakeFinished; private String machineId = ""; public final ConcurrentHashMap incomingPacketCounter = new ConcurrentHashMap<>(25); @@ -56,6 +57,14 @@ public class GameClient { this.habbo = habbo; } + public boolean isHandshakeFinished() { + return handshakeFinished; + } + + public void setHandshakeFinished(boolean handshakeFinished) { + this.handshakeFinished = handshakeFinished; + } + public String getMachineId() { return this.machineId; } diff --git a/src/main/java/com/eu/habbo/messages/incoming/handshake/CompleteDiffieHandshakeEvent.java b/src/main/java/com/eu/habbo/messages/incoming/handshake/CompleteDiffieHandshakeEvent.java index 3794c800..f4c218eb 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/handshake/CompleteDiffieHandshakeEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/handshake/CompleteDiffieHandshakeEvent.java @@ -21,6 +21,7 @@ public class CompleteDiffieHandshakeEvent extends MessageHandler { byte[] sharedKey = this.client.getEncryption().getDiffie().getSharedKey(this.packet.readString()); + this.client.setHandshakeFinished(true); this.client.sendResponse(new CompleteDiffieHandshakeComposer(this.client.getEncryption().getDiffie().getPublicKey())); this.client.getChannel().attr(GameServerAttributes.CRYPTO_CLIENT).set(new HabboRC4(sharedKey)); diff --git a/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java b/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java index 84d3d5e9..13d1ee87 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java @@ -51,6 +51,11 @@ public class SecureLoginEvent extends MessageHandler { if (!Emulator.isReady) return; + if (Emulator.getCrypto().isEnabled() && !this.client.isHandshakeFinished()) { + Emulator.getGameServer().getGameClientManager().disposeClient(this.client); + return; + } + String sso = this.packet.readString().replace(" ", ""); if (Emulator.getPluginManager().fireEvent(new SSOAuthenticationEvent(sso)).isCancelled()) {