mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/LCE-Revelations.git
synced 2026-05-25 15:16:12 +00:00
Replace the XOR obfuscation cipher with AES-128-CTR using the Windows BCrypt API. Key material grows from 16 to 32 bytes (16 AES key + 16 IV). All callers auto-adjust via StreamCipher::KEY_SIZE. No handshake or protocol changes needed beyond the larger MC|CKey payload.
45 lines
1.6 KiB
C++
45 lines
1.6 KiB
C++
#pragma once
|
|
using namespace std;
|
|
|
|
#include "Packet.h"
|
|
|
|
class CustomPayloadPacket : public Packet, public enable_shared_from_this<CustomPayloadPacket>
|
|
{
|
|
public:
|
|
|
|
// Mojang-defined custom packets
|
|
static const wstring CUSTOM_BOOK_PACKET;
|
|
static const wstring CUSTOM_BOOK_SIGN_PACKET;
|
|
static const wstring TEXTURE_PACK_PACKET;
|
|
static const wstring TRADER_LIST_PACKET;
|
|
static const wstring TRADER_SELECTION_PACKET;
|
|
static const wstring SET_ADVENTURE_COMMAND_PACKET;
|
|
static const wstring SET_BEACON_PACKET;
|
|
static const wstring SET_ITEM_NAME_PACKET;
|
|
|
|
// Security: stream cipher handshake channels
|
|
static const wstring CIPHER_KEY_CHANNEL; // server->client: carries 32-byte key (16 AES key + 16 IV)
|
|
static const wstring CIPHER_ACK_CHANNEL; // client->server: ack (empty payload)
|
|
static const wstring CIPHER_ON_CHANNEL; // server->client: activation signal (empty payload)
|
|
|
|
// Security: identity token channels
|
|
static const wstring IDENTITY_TOKEN_ISSUE; // server->client: issue new 32-byte token
|
|
static const wstring IDENTITY_TOKEN_CHALLENGE; // server->client: request stored token
|
|
static const wstring IDENTITY_TOKEN_RESPONSE; // client->server: present stored token
|
|
|
|
wstring identifier;
|
|
int length;
|
|
byteArray data;
|
|
|
|
CustomPayloadPacket();
|
|
CustomPayloadPacket(const wstring &identifier, byteArray data);
|
|
|
|
virtual void read(DataInputStream *dis);
|
|
virtual void write(DataOutputStream *dos);
|
|
virtual void handle(PacketListener *listener);
|
|
virtual int getEstimatedSize();
|
|
|
|
public:
|
|
static shared_ptr<Packet> create() { return std::make_shared<CustomPayloadPacket>(); }
|
|
virtual int getId() { return 250; }
|
|
}; |