feat: add msg spoofer

This commit is contained in:
2026-06-19 08:33:31 -03:00
parent 47e0ea18e8
commit 6a14fbd28f
+69
View File
@@ -239,6 +239,73 @@ void Spoofer::wsMessageCallback(std::shared_ptr<ix::ConnectionState> /*connectio
break; break;
} }
} }
void Spoofer::onServerMessageList(std::string& body)
{
glz::generic doc;
auto ec = glz::read_json(doc, body);
if (ec)
{
_log->error("JSON parse error for onServerMessageList");
return;
}
auto now = std::chrono::system_clock::now();
auto now_seconds = std::chrono::duration_cast<std::chrono::seconds>(now.time_since_epoch()).count();
auto now_milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()).count();
/*
msg construction
*/
glz::generic bodyContent = glz::generic::object_t{
{"sections",
glz::generic::array_t{
glz::generic::object_t{
{"type", "text"},
{"text", "Japan is turning footsteps into electricity!<br><br>Using piezoelectric tiles, every step "
"you take generates a small amount of energy. Millions of steps together can power LED "
"lights and displays in busy places like Shibuya Station.<br><br>A brilliant way to create a "
"sustainable and smart city - turning movement into clean, renewable energy."}},
glz::generic::object_t{
{"type", "itemshowcase"},
{"rewards", glz::generic::array_t{glz::generic::object_t{
{"type", "inventory"}, {"id", "ADDON_flashlight_oddbulb"}, {"amount", 1.0}}}}}}},
{"image", glz::generic::object_t{
{"packagedPath", "/Game/UI/UMGAssets/Icons/ItemAddons/iconAddon_powerBulb.iconAddon_powerBulb"},
{"contentVersion", "ccc3f02b0a671fe19a0017d6a69293876a465fd9"},
{"uri", ""}}}};
std::string bodyContentStr;
ec = glz::write_json(bodyContent, bodyContentStr);
if (ec)
{
_log->error("JSON write error for onServerMessageList");
return;
}
glz::generic msg = glz::generic::object_t{
{"allowedPlatforms", glz::generic::array_t{"egs", "grdk", "ps4", "ps5", "steam", "xbox", "xsx"}},
{"flag", "READ"},
{"gameSpecificData", glz::generic::object_t{}},
{"read", false},
{"tag", glz::generic::array_t{"inbox"}},
{"expireAt", static_cast<double>(now_seconds + (1337 * 24 * 60 * 60))},
{"received", static_cast<double>(now_milliseconds)},
{"recipientId", "system"},
{"message",
glz::generic::object_t{{"title", "Japan is turning footsteps into electricity"}, {"body", bodyContentStr}}}};
doc["messages"].get_array().push_back(msg);
ec = glz::write_json(doc, body);
if (ec)
{
_log->error("JSON write error for onServerMessageList");
return;
}
#ifdef _DEBUG
_log->verbose("Spoofed message list");
#endif
}
/* /*
proxy handlers proxy handlers
*/ */
@@ -248,6 +315,8 @@ void Spoofer::serverResponseHandler(const std::string& url, std::string& body, s
if (url.find("bhvrdbd.com") == std::string::npos) return; if (url.find("bhvrdbd.com") == std::string::npos) return;
std::lock_guard<std::mutex> lock(_mutex); std::lock_guard<std::mutex> lock(_mutex);
if (url.find("/api/v1/messages/listV2") != std::string::npos) return onServerMessageList(body);
} }
void Spoofer::clientRequestHandler(const std::string& url, std::string& body, std::string& /*headers*/, bool /*wasBlocked*/) void Spoofer::clientRequestHandler(const std::string& url, std::string& body, std::string& /*headers*/, bool /*wasBlocked*/)