diff --git a/Enumeration/Network/Get_IP_Address.c b/Enumeration/Network/Get_IP_Address.c index e69de29..e699aed 100644 --- a/Enumeration/Network/Get_IP_Address.c +++ b/Enumeration/Network/Get_IP_Address.c @@ -0,0 +1,60 @@ +#include +#include +#include + +#pragma comment(lib, "ws2_32.lib") // Link with Winsock library + +// Function to get the IP address +char* getIPAddress() { + WSADATA wsaData; + static char ipstr[INET_ADDRSTRLEN]; // Static to ensure it persists after the function exits + char hostname[256]; + struct addrinfo hints, * res, * p; + + // Initialize Winsock + if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { + return NULL; + } + + // Get the hostname of the machine + if (gethostname(hostname, sizeof(hostname)) != 0) { + WSACleanup(); + return NULL; + } + + // Set up hints for getaddrinfo + ZeroMemory(&hints, sizeof(hints)); + hints.ai_family = AF_INET; // IPv4 + hints.ai_socktype = SOCK_STREAM; + hints.ai_protocol = IPPROTO_TCP; + + // Get address information + if (getaddrinfo(hostname, NULL, &hints, &res) != 0) { + WSACleanup(); + return NULL; + } + + // Loop through the results and get the first IPv4 address + for (p = res; p != NULL; p = p->ai_next) { + struct sockaddr_in* addr = (struct sockaddr_in*)p->ai_addr; + inet_ntop(AF_INET, &addr->sin_addr, ipstr, sizeof(ipstr)); + break; // Stop after the first address + } + + // Free the address information and cleanup + freeaddrinfo(res); + WSACleanup(); + + return ipstr; +} + +int main() { + char* ipAddress = getIPAddress(); + if (ipAddress) { + printf("%s\n", ipAddress); + } + else { + printf("Failed to retrieve IP address.\n"); + } + return 0; +} diff --git a/Staging Techniques/ADS_Stage.c b/Staging Techniques/ADS_Stage.c new file mode 100644 index 0000000..ba067c5 --- /dev/null +++ b/Staging Techniques/ADS_Stage.c @@ -0,0 +1,59 @@ +#include +#include +#include + +void writeToADS(const char* fileName, const char* streamName, const char* data) { + char fullPath[MAX_PATH]; + snprintf(fullPath, sizeof(fullPath), "%s:%s", fileName, streamName); + + FILE* file = fopen(fullPath, "wb"); + if (file == NULL) { + fprintf(stderr, "Error opening stream for writing.\n"); + return; + } + + fwrite(data, sizeof(char), strlen(data), file); + fclose(file); + printf("Data written to stream '%s' successfully.\n", streamName); +} + +void readFromADS(const char* fileName, const char* streamName) { + char fullPath[MAX_PATH]; + snprintf(fullPath, sizeof(fullPath), "%s:%s", fileName, streamName); + + FILE* file = fopen(fullPath, "rb"); + if (file == NULL) { + fprintf(stderr, "Error opening stream for reading.\n"); + return; + } + + fseek(file, 0, SEEK_END); + long size = ftell(file); + fseek(file, 0, SEEK_SET); + + char* buffer = (char*)malloc(size + 1); + if (buffer == NULL) { + fprintf(stderr, "Memory allocation error.\n"); + fclose(file); + return; + } + + fread(buffer, sizeof(char), size, file); + buffer[size] = '\0'; // Null-terminate the string + fclose(file); + + printf("Data read from stream '%s':\n%s\n", streamName, buffer); + free(buffer); +} + +int main() { + const char* fileName = "example.txt"; + const char* streamName = "myStream"; + const char* data = "This is some data stored in an alternate data stream."; + + writeToADS(fileName, streamName, data); + + readFromADS(fileName, streamName); + + return 0; +} diff --git a/Staging Techniques/Local_Stage.c b/Staging Techniques/Local_Stage.c new file mode 100644 index 0000000..cdd2540 --- /dev/null +++ b/Staging Techniques/Local_Stage.c @@ -0,0 +1,42 @@ +#include +#include +#include + +// Global variables +unsigned char* buf = NULL; // Buffer to store file content +DWORD size = 0; // Variable to store file size + +// Function to read binary file +void readBin(const char* fileName) { + FILE* file; + + file = fopen(fileName, "rb"); + if (file == NULL) { + fprintf(stderr, "Error opening file.\n"); + return; + } + + fseek(file, 0, SEEK_END); // Move to end of file + size = ftell(file); // Get file size + fseek(file, 0, SEEK_SET); // Move back to start of file + + buf = (unsigned char*)malloc(size * sizeof(char)); // Allocate memory for file content + if (buf == NULL) { + fprintf(stderr, "Memory allocation error.\n"); + fclose(file); + return; + } + + fread(buf, sizeof(char), size, file); // Read file content into buffer + fclose(file); + + printf("File read successfully. Size: %lu bytes.\n", size); +} + + +int main() { + const char* fileName = "example.bin"; // Specify the binary file to read + readBin(fileName); // Call the function to read the file + + return 0; +}