Files
WoWee/include/auth/crypto.hpp
Kelsi 87eddf3c83 Enhanced Warden implementation with comprehensive documentation
Added MD5 hashing and extensive testing documentation for future attempts
at supporting strict Warden servers like Warmane.

Enhancements:
- Added MD5 hash support to Crypto class (OpenSSL-based)
- Tested 6 different module ACK response formats against Warmane
- Analyzed module packet structure (37 bytes: opcode + seed + trailing)
- Enhanced debug logging for plaintext and encrypted Warden data

Documentation:
- WARDEN_IMPLEMENTATION.md: Complete implementation guide with all attempts
- WARDEN_QUICK_REFERENCE.md: Quick troubleshooting and testing guide

Test Results (Warmane):
- Empty ACK (0 bytes): Server silent
- XOR/MD5 checksum (18 bytes): Server silent
- Single byte (1 byte): Server disconnects (rejected)
- Echo trailing (20 bytes): Server silent
- Result + SHA1 (21 bytes): Server silent

Conclusion:
- Current implementation works with permissive/disabled Warden servers
- Warmane requires module execution or undocumented response format
- Full documentation provided for future reverse engineering attempts

Next steps documented:
1. Capture packets from real WoW client (protocol analysis)
2. Implement module execution engine (months of work)
3. Test with local AzerothCore server
2026-02-12 02:22:04 -08:00

34 lines
813 B
C++

#pragma once
#include <vector>
#include <cstdint>
#include <string>
namespace wowee {
namespace auth {
class Crypto {
public:
static std::vector<uint8_t> sha1(const std::vector<uint8_t>& data);
static std::vector<uint8_t> sha1(const std::string& data);
/**
* MD5 hash (16 bytes)
*/
static std::vector<uint8_t> md5(const std::vector<uint8_t>& data);
static std::vector<uint8_t> md5(const std::string& data);
/**
* HMAC-SHA1 message authentication code
*
* @param key Secret key
* @param data Data to authenticate
* @return 20-byte HMAC-SHA1 hash
*/
static std::vector<uint8_t> hmacSHA1(const std::vector<uint8_t>& key,
const std::vector<uint8_t>& data);
};
} // namespace auth
} // namespace wowee