![]() ![]() I tried with and without ProtocolLib, both resulted in this error (i guess because the server already compresses it and the client still awaits uncompressed).Īt last i tried to delay the PacketLoginOutEncryptionBegin for 1 or even 10 seconds, until all compression and handshake stuff is done. The packet id of PacketLoginOutEncryptionBegin is 1. So i tried to block and buffer the PacketLoginOutSetCompression and PacketLoginOutSuccess, to first send the PacketLoginOutEncryptionBegin, which causes the client error "Bad packet id 37". Sending directly after the PacketLoginInStart packet (like online mode would do) causes the same client error (maybe because the compression start is sent within the same tick and the client still enables compression faster than handling the encryption packet). I assume a compression error, like the packet is sent uncompressed (because it's normally sent before the compression start), but the client awaits compressed packets (because the compression start packet is already sent). ![]() I tried to use ProtocolLib to send it immediately after the PacketLoginOutSuccess, this causes the client to disconnect by a client error "Packet was larger than expected". Schedule the packet (PacketLoginOutEncryptionBegin) Taken from .YggdrasilMinecraftSessionService.hasJoinedServer(GameProfile, String, InetAddress) captured by ProtocolLib PacketEvent (_BEGIN) PacketLoginInEncryptionBegin packet = // e.g. This is the client packet you need to capture: Taken from 1_13_R2.LoginListener.a(PacketLoginInEncryptionBegin) Of Course you can send the PacketLoginOutEncryptionBegin, if the server doesn't, to receive a PacketLoginInEncryptionBegin from the client to generate the hash and do the HTTP GET. S -> C | 1_13_R2.PacketLoginOutSetCompressionĪs you can see the needed packet PacketLoginInEncryptionBegin is not received, because the server sends no PacketLoginOutEncryptionBegin. ![]() > OFFLINE S | 1_13_R2.PacketHandshakingInSetProtocol S -> C | 1_13_R2.PacketLoginOutEncryptionBegin S | 1_13_R2.PacketLoginInEncryptionBegin C | 1_13_R2.PacketLoginOutSetCompression > ONLINE S | 1_13_R2.PacketHandshakingInSetProtocolĬ -> S | 1_13_R2.PacketLoginInStart Check the packets sent in online-mode and offline-mode, then compare them: ![]() It contains the client shared secret needed for the hash.Ģ. Click to expand.The "second Encryption Response" is the PacketLoginInEncryptionBegin. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |