Skip to content

Commit e071dce

Browse files
committed
Upload Files
1 parent c333687 commit e071dce

1 file changed

Lines changed: 109 additions & 0 deletions

File tree

Kroma-KeyAuth/core/util.h

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
#pragma once
2+
#include "encryption/xorstr.hpp"
3+
#include <iostream>
4+
#include <Windows.h>
5+
#include <winsvc.h>
6+
#include <random>
7+
#include <winioctl.h>
8+
#pragma warning(disable:4191 4099)
9+
#pragma warning(disable:4996)
10+
11+
#define BLACK 0
12+
#define BLUE 1
13+
#define GREEN 2
14+
#define CYAN 3
15+
#define RED 4
16+
#define MAGENTA 5
17+
#define BROWN 6
18+
#define LIGHTGRAY 7
19+
#define DARKGRAY 8
20+
#define LIGHTBLUE 9
21+
#define LIGHTGREEN 10
22+
#define LIGHTCYAN 11
23+
#define LUGHTRED 12
24+
#define LIGHTMAGENTA 13
25+
#define YELLOW 14
26+
#define WHITE 15
27+
28+
namespace Util
29+
{
30+
RECT rc;
31+
std::string random_string(const int len)
32+
{
33+
const std::string alpha_numberic("ABCDEFGHIJKLMNOPRSTUVZabcdefghijklmnoprstuvz1234567890");
34+
std::default_random_engine generator{ std::random_device{}() };
35+
const std::uniform_int_distribution< std::string::size_type > distribution{ 0, alpha_numberic.size() - 1 };
36+
std::string str(len, 0);
37+
for (auto& it : str)
38+
{
39+
it = alpha_numberic[distribution(generator)];
40+
}
41+
return str;
42+
}
43+
44+
/* set the gay fucking color */
45+
void SetColor(unsigned short color)
46+
{
47+
HANDLE con = 0;
48+
con = GetStdHandle(STD_OUTPUT_HANDLE);
49+
SetConsoleTextAttribute(con, color);
50+
}
51+
52+
/* clear the console */
53+
void Clear()
54+
{
55+
COORD topLeft = { 0, 0 };
56+
HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
57+
CONSOLE_SCREEN_BUFFER_INFO screen;
58+
DWORD written;
59+
GetConsoleScreenBufferInfo(console, &screen);
60+
FillConsoleOutputCharacterA(console, ' ', screen.dwSize.X * screen.dwSize.Y, topLeft, &written);
61+
FillConsoleOutputAttribute(console, FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE, screen.dwSize.X * screen.dwSize.Y, topLeft, &written);
62+
SetConsoleCursorPosition(console, topLeft);
63+
return;
64+
}
65+
66+
/* get hwid */
67+
static std::string get_hwid() {
68+
std::string m_sResult;
69+
70+
HANDLE m_hFile = CreateFileW(L"\\\\.\\PhysicalDrive0", 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
71+
if (m_hFile == INVALID_HANDLE_VALUE)
72+
return { };
73+
74+
std::unique_ptr< std::remove_pointer <HANDLE >::type, void(*)(HANDLE) > m_hDevice
75+
{
76+
m_hFile, [](HANDLE handle)
77+
{
78+
CloseHandle(handle);
79+
}
80+
};
81+
82+
STORAGE_PROPERTY_QUERY m_PropertyQuery;
83+
m_PropertyQuery.PropertyId = StorageDeviceProperty;
84+
m_PropertyQuery.QueryType = PropertyStandardQuery;
85+
86+
STORAGE_DESCRIPTOR_HEADER m_DescHeader;
87+
DWORD m_dwBytesReturned = 0;
88+
if (!DeviceIoControl(m_hDevice.get(), IOCTL_STORAGE_QUERY_PROPERTY, &m_PropertyQuery, sizeof(STORAGE_PROPERTY_QUERY),
89+
&m_DescHeader, sizeof(STORAGE_DESCRIPTOR_HEADER), &m_dwBytesReturned, NULL))
90+
return { };
91+
92+
const DWORD m_dwOutBufferSize = m_DescHeader.Size;
93+
std::unique_ptr< BYTE[] > m_pOutBuffer{ new BYTE[m_dwOutBufferSize] { } };
94+
95+
if (!DeviceIoControl(m_hDevice.get(), IOCTL_STORAGE_QUERY_PROPERTY, &m_PropertyQuery, sizeof(STORAGE_PROPERTY_QUERY),
96+
m_pOutBuffer.get(), m_dwOutBufferSize, &m_dwBytesReturned, NULL))
97+
return { };
98+
99+
STORAGE_DEVICE_DESCRIPTOR* m_pDeviceDescriptor = reinterpret_cast<STORAGE_DEVICE_DESCRIPTOR*>(m_pOutBuffer.get());
100+
const DWORD m_dwSerialNumberOffset = m_pDeviceDescriptor->SerialNumberOffset;
101+
if (m_dwSerialNumberOffset == 0)
102+
return { };
103+
104+
m_sResult = reinterpret_cast<const char*>(m_pOutBuffer.get() + m_dwSerialNumberOffset);
105+
m_sResult.erase(std::remove_if(m_sResult.begin(), m_sResult.end(), std::isspace), m_sResult.end());
106+
107+
return m_sResult;
108+
}
109+
}

0 commit comments

Comments
 (0)