#include "stdafx.h"
#include "hwutils.h"
#include <iostream>
#include <urlmon.h>
#include <string>
#include <wininet.h>
#include <locale>
#include <windows.h>
#include "Cheat.h"
#include <sstream>
#pragma comment(lib, "wininet")
#pragma comment(lib,"wininet.lib")
#pragma comment(lib, "urlmon.lib")
using namespace std;
std::string ReadHWFile() {
std::ifstream ifs("C:\\h.txt");
std::string content((std::istreambuf_iterator<char>(ifs)),
(std::istreambuf_iterator<char>()));
return content;
}
// Функция которая узнает серийник ПК.
string serial() {
DWORD lVolSerialNbr = 0;
char sHDSerial[255] = "";
GetVolumeInformation("C:\\", 0, 0, &lVolSerialNbr, 0, 0, 0, 0);
_ultoa(lVolSerialNbr, sHDSerial, 10);
std::string c(sHDSerial);
return c;
}
bool DoesHWIDMatch() { // Сама функция проверки, если проверка успешная выходит - true / не успешная - false
HINTERNET connect = InternetOpen("MyBrowser", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); // Создаем канал для подключения к сети
if (!connect) // проверка на успешность создания канала для подключения к сети
{
return false;
}
std::string URL = "http://beardhook.xyz/keys/" + serial() + ".ini"; // указываем в качестве ссылки для последующего открытия и чтения файла, адрес сайта + файл серийник.ini
LPCSTR Final = URL.c_str();
HINTERNET OpenAddress = InternetOpenUrl(connect, Final, NULL, INTERNET_DEFAULT_HTTPS_PORT, INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_KEEP_CONNECTION, 0);
Sleep(10);
if (!OpenAddress) // Проверка на доступ к сайту, aka подключение к сети
{
InternetCloseHandle(connect);
return false;
MessageBox(NULL, "Ошибка:", "Нету подключения к интернете!", MB_OK);
}
char DataReceived[4096];
DWORD NumberOfBytesRead = 0;
while (InternetReadFile(OpenAddress, DataReceived, 4096, &NumberOfBytesRead) && NumberOfBytesRead) {} // Читает файл и записывает данные в переменные
InternetCloseHandle(OpenAddress); // выключаем интерпутер
InternetCloseHandle(connect); // выключаем интерпутер
if (strstr(DataReceived, "HGF%R3")) // проверяем на нужный текст в файле, например HGF%R3
{
return true;
}
else
{
E::Misc->Panic(); // Здесь функция выгрузки вашего софта, в каждом своя. Тута для TGF.
static TCHAR path[MAX_PATH]; // создаем переменную под адресс
std::string serial1 = serial(); // создаем и приравниваем переменной серийник, для последующей записи
LPCSTR Final1 = serial1.c_str(); // Просто забиваем в ещё одну переменную серийник, даунский мув конечно.
std::string folder, file, serial; // создаем больше переменных, ибо чет мало было
file = std::string(path) + strenc("C:\\serialkey.ini"); // прописываем адресс для сохранения файла с серийником
WritePrivateProfileString(Final1, Final1, Final1, file.c_str()); // Записываем серийник в файл указанный строкой выше, дабы покупатель вашей пасты радовался.
MessageBox(NULL, "Подписка не обнаружена!", "Ошибка:", MB_OK); // Сообщение о отсуствии подписки.
}
return false;
}