Files
LCE-Revelations/Minecraft.World/CustomPayloadPacket.h
itsRevela 245da783b3 feat: upgrade stream cipher from XOR to AES-128-CTR
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.
2026-03-28 21:03:45 -05:00

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; }
};