24#include <shared_mutex>
140 if (memcmp(buff.
contents() + 1,
Module.ClientKeySeedHash, 20) != 0)
196 std::shared_lock<Skyfire::SharedMutex> guard(
sWardenCheckMgr->_checkStoreLock);
239 buff <<
uint8(type ^ xorByte);
253 buff.
append(data.data(), data.size());
261 buff <<
uint8(index++);
267 buff.
append(data.data(), data.size());
268 buff <<
uint8(index++);
291 buff <<
uint8(xorByte);
303 std::stringstream stream;
304 stream <<
"Sent check id's: ";
306 stream << *itr <<
" ";
342 buff >> newClientTicks;
350 SF_LOG_DEBUG(
"warden",
"Ticks diff %u", ourTicks - newClientTicks);
358 std::shared_lock<Skyfire::SharedMutex> guard(
sWardenCheckMgr->_checkStoreLock);
375 SF_LOG_DEBUG(
"warden",
"RESULT MEM_CHECK not 0x00, CheckId %u account Id %u", *itr,
_session->GetAccountId());
383 SF_LOG_DEBUG(
"warden",
"RESULT MEM_CHECK fail CheckId %u account Id %u", *itr,
_session->GetAccountId());
390 SF_LOG_DEBUG(
"warden",
"RESULT MEM_CHECK passed CheckId %u account Id %u", *itr,
_session->GetAccountId());
398 const uint8 byte = 0xE9;
402 SF_LOG_DEBUG(
"warden",
"RESULT PAGE_CHECK fail, CheckId %u account Id %u", *itr,
_session->GetAccountId());
404 SF_LOG_DEBUG(
"warden",
"RESULT MODULE_CHECK fail, CheckId %u account Id %u", *itr,
_session->GetAccountId());
406 SF_LOG_DEBUG(
"warden",
"RESULT DRIVER_CHECK fail, CheckId %u account Id %u", *itr,
_session->GetAccountId());
414 SF_LOG_DEBUG(
"warden",
"RESULT PAGE_CHECK passed CheckId %u account Id %u", *itr,
_session->GetAccountId());
416 SF_LOG_DEBUG(
"warden",
"RESULT MODULE_CHECK passed CheckId %u account Id %u", *itr,
_session->GetAccountId());
418 SF_LOG_DEBUG(
"warden",
"RESULT DRIVER_CHECK passed CheckId %u account Id %u", *itr,
_session->GetAccountId());
428 SF_LOG_DEBUG(
"warden",
"RESULT LUA_STR_CHECK fail, CheckId %u account Id %u", *itr,
_session->GetAccountId());
438 char* str =
new char[luaStrLen + 1];
440 str[luaStrLen] =
'\0';
445 SF_LOG_DEBUG(
"warden",
"RESULT LUA_STR_CHECK passed, CheckId %u account Id %u", *itr,
_session->GetAccountId());
462 SF_LOG_DEBUG(
"warden",
"RESULT MPQ_CHECK fail, CheckId %u account Id %u", *itr,
_session->GetAccountId());
469 SF_LOG_DEBUG(
"warden",
"RESULT MPQ_CHECK passed, CheckId %u account Id %u", *itr,
_session->GetAccountId());
480 SF_LOG_WARN(
"warden",
"%s failed Warden check %u. Action: %s",
_session->GetPlayerInfo().c_str(), checkFailed,
Penalty(check).c_str());
std::array< uint8, SESSION_KEY_LENGTH > SessionKey
#define SF_LOG_DEBUG(filterType__,...)
#define SF_LOG_WARN(filterType__,...)
@ WARDEN_SMSG_HASH_REQUEST
@ WARDEN_SMSG_MODULE_INITIALIZE
@ WARDEN_SMSG_CHEAT_CHECKS_REQUEST
struct Module_79C0768D657977D697E10BAD956CCED1 Module
std::vector< uint8 > ToByteVector(int32 minSize=0, bool littleEndian=true) const
std::array< uint8, Size > ToByteArray(bool littleEndian=true) const
void UpdateData(const std::string &str)
void Finalize(const uint8 *data, uint32 len)
void Generate(uint8 *buf, uint32 sz)
static Digest GetDigestOf(Container const &seed, uint8 const *data, size_t len)
void EncryptData(uint8 *buffer, uint32 length)
SkyFire::Crypto::ARC4 _outputCrypto
uint32 _clientResponseTimer
SkyFire::Crypto::ARC4 _inputCrypto
uint32 _previousTimestamp
ClientWardenModule * _module
static bool IsValidCheckSum(uint32 checksum, const uint8 *data, const uint16 length)
static uint32 BuildChecksum(const uint8 *data, uint32 length)
std::string Penalty(WardenCheck *check=NULL)
void HandleHashResult(ByteBuffer &buff)
void HandleData(ByteBuffer &buff)
std::list< uint16 > _memChecksTodo
void Init(WorldSession *session, SessionKey const &K)
ClientWardenModule * GetModuleForClient()
std::list< uint16 > _otherChecksTodo
std::list< uint16 > _currentChecks
Player session in the World.
uint32 GetAccountId() const
@ CONFIG_WARDEN_CLIENT_CHECK_HOLDOFF
@ CONFIG_WARDEN_NUM_MEM_CHECKS
@ CONFIG_WARDEN_NUM_OTHER_CHECKS
std::array< uint8, S > GetRandomBytes()
std::string ByteArrayToHexStr(uint8 const *bytes, size_t length, bool reverse=false)
static constexpr size_t SHA1_DIGEST_LENGTH_BYTES