Files
metasploit-gs/external/source/exploits/drunkpotato/Common_Src_Files/Services/service.h
T
2020-12-08 13:16:10 -05:00

50 lines
1.5 KiB
C

#pragma once
#include <ws2tcpip.h>
#pragma comment (lib, "Ws2_32.lib")
/**
This module is a plain C class emulation. The POC written by decoder was in cpp and used some classes
in particular for the local negotiator.
See https://stackoverflow.com/questions/40992945/convert-a-cpp-class-cpp-file-into-a-c-structure-c-file
for how I emulated a class in pure C.
This class defines a base server object. Inheritance will be emulated in order to create a
Rogue WinRM service and a simple http server derived from this class.
*/
struct _Server;
typedef void (*serviceConstructor) (struct _Server*, char*, char*);
typedef void (*serviceDestructor) (struct _Server*);
typedef void (*starter) (struct _Server*);
typedef void (*cleaner) (struct _Server*, SOCKET, char*);
typedef struct _Server
{
// Methods as pointer to functions
serviceConstructor construct;
serviceDestructor destruct;
starter listenerStart;
cleaner serverStop;
// Arguments
char* listen_port; // Trivial
char* listen_address; // Trivial
SOCKET socket; // Trivial
struct addrinfo hints; // Temporary variables used to compute
struct addrinfo* socketInfos;
} Server;
// Constructor and destructor
void initService(Server* this, char* listen_address, char* listen_port);
void destructService(Server* this);
// Class methods
static void startListener(Server* this);
static void SocketError(Server* this, SOCKET Socket, char* error_message);
// Static functions
void hexDump_if_debug_env(char* desc, void* addr, int len);