Project-Red-Sword / exploits /windows_exploit.c
dia-gov's picture
Upload 93 files
55c3ad6 verified
#include <windows.h>
#include <wincrypt.h>
#include <winhttp.h>
#include <stdio.h>
void encryptData(const char* data, BYTE** encryptedData, DWORD* encryptedDataLen) {
HCRYPTPROV hProv;
HCRYPTKEY hKey;
HCRYPTHASH hHash;
BYTE* pbKeyBlob;
DWORD dwKeyBlobLen;
DWORD dwDataLen = strlen(data) + 1;
if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_AES, CRYPT_VERIFYCONTEXT)) {
printf("CryptAcquireContext failed: %d\n", GetLastError());
return;
}
if (!CryptCreateHash(hProv, CALG_SHA_256, 0, 0, &hHash)) {
printf("CryptCreateHash failed: %d\n", GetLastError());
CryptReleaseContext(hProv, 0);
return;
}
if (!CryptHashData(hHash, (BYTE*)data, dwDataLen, 0)) {
printf("CryptHashData failed: %d\n", GetLastError());
CryptDestroyHash(hHash);
CryptReleaseContext(hProv, 0);
return;
}
if (!CryptDeriveKey(hProv, CALG_AES_256, hHash, 0, &hKey)) {
printf("CryptDeriveKey failed: %d\n", GetLastError());
CryptDestroyHash(hHash);
CryptReleaseContext(hProv, 0);
return;
}
*encryptedDataLen = dwDataLen;
*encryptedData = (BYTE*)malloc(*encryptedDataLen);
memcpy(*encryptedData, data, dwDataLen);
if (!CryptEncrypt(hKey, 0, TRUE, 0, *encryptedData, encryptedDataLen, *encryptedDataLen)) {
printf("CryptEncrypt failed: %d\n", GetLastError());
free(*encryptedData);
*encryptedData = NULL;
*encryptedDataLen = 0;
}
CryptDestroyKey(hKey);
CryptDestroyHash(hHash);
CryptReleaseContext(hProv, 0);
}
void establishSecureConnection() {
HINTERNET hSession = WinHttpOpen(L"A WinHTTP Example Program/1.0", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);
if (!hSession) {
printf("WinHttpOpen failed: %d\n", GetLastError());
return;
}
HINTERNET hConnect = WinHttpConnect(hSession, L"example.com", INTERNET_DEFAULT_HTTPS_PORT, 0);
if (!hConnect) {
printf("WinHttpConnect failed: %d\n", GetLastError());
WinHttpCloseHandle(hSession);
return;
}
HINTERNET hRequest = WinHttpOpenRequest(hConnect, L"GET", NULL, NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE);
if (!hRequest) {
printf("WinHttpOpenRequest failed: %d\n", GetLastError());
WinHttpCloseHandle(hConnect);
WinHttpCloseHandle(hSession);
return;
}
BOOL bResults = WinHttpSendRequest(hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, 0);
if (!bResults) {
printf("WinHttpSendRequest failed: %d\n", GetLastError());
WinHttpCloseHandle(hRequest);
WinHttpCloseHandle(hConnect);
WinHttpCloseHandle(hSession);
return;
}
bResults = WinHttpReceiveResponse(hRequest, NULL);
if (!bResults) {
printf("WinHttpReceiveResponse failed: %d\n", GetLastError());
} else {
printf("Secure connection established successfully.\n");
}
WinHttpCloseHandle(hRequest);
WinHttpCloseHandle(hConnect);
WinHttpCloseHandle(hSession);
}
int main() {
const char* data = "Sensitive Data";
BYTE* encryptedData = NULL;
DWORD encryptedDataLen = 0;
encryptData(data, &encryptedData, &encryptedDataLen);
if (encryptedData) {
printf("Encrypted Data: ");
for (DWORD i = 0; i < encryptedDataLen; i++) {
printf("%02x", encryptedData[i]);
}
printf("\n");
free(encryptedData);
}
establishSecureConnection();
return 0;
}