A Havoc C2 plugin that creates an invisible alternate Windows desktop, streams it to a browser-based viewer, and supports full mouse/keyboard interaction like RDP, but invisible to the target user.
- Creates a hidden desktop via
CreateDesktopWand launchesexplorer.exeon it - Captures the hidden desktop using
PrintWindowcompositing and streams JPEG frames - Injects mouse/keyboard input via
PostMessagedirectly to hidden desktop windows - Renders the stream in a browser viewer with full input capture
Cross-compiler: x86_64-w64-mingw32-gcc (and optionally i686-w64-mingw32-gcc for x86)
sudo apt update && sudo apt install gcc-mingw-w64-x86-64 gcc-mingw-w64-i686sudo pacman -S mingw-w64-gccsudo dnf install mingw64-gcc mingw32-gccmake # x64 only
make both # x64 + x86
make clean # remove .o filesx86_64-w64-mingw32-gcc -c -Wall -Wno-unused-variable -o screenshot.x64.o screenshot.c
x86_64-w64-mingw32-gcc -c -Wall -Wno-unused-variable -o screeninput.x64.o screeninput.c
x86_64-w64-mingw32-gcc -c -Wall -Wno-unused-variable -o notrdp_mgr.x64.o notrdp_mgr.c- Compile the BOFs
- In the Havoc Client: Scripts Manager > Load Script > notrdp.py
notrdp [port] [quality] # Start hidden desktop session
notrdp-close # Close session
A variant plugin that captures the user's real desktop session instead of creating a hidden one. Includes opsec-friendly keystroke capture via GetAsyncKeyState polling embedded in the screenshot BOF. Packaged as notrdpuser.zip in the same repo extract and load notrdpuser.py the same way.
notrdpuser [port] [quality] # Start user desktop streaming + keystroke capture
notrdpuser-close # Close session
