Skip to content

cons0le7/Grabber

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

114 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Grabber

Node.js Python License: MIT


Warning

Educational / Demonstration Purposes Only

  • Grabber is a social engineering proof-of-concept (POC) designed to demonstrate how browser permissions (camera, location) can be exploited when users trust unverified sites.
  • This tool is NOT intended for malicious use. The author takes no responsibility for any misuse.

πŸ“š Table of Contents


πŸ“– Overview

Grabber simulates a website with a seemingly legitimate use of gps and camera permissions. Its goal is to raise awareness about how easily sensitive data can be harvested when permissions are granted to untrusted websites.


Terminal Menu:

Image

User-Facing Page Themes:

Image

Admin Panel:

Image


βœ… What happens when a user visits the page?

  • The site appears to be a legitimate website requiring camera and location permissions.
  • Collects:
    • Server-facing IP
    • Public IP (via IPify API)
    • WebRTC leak IPs
  • If location permission is granted:
    • Displays their location on an interactive OpenStreetMap.
  • If camera permission is granted:
    • Silently captures 3 front-facing photos in the background.
    • Displays a fake error popup:
      "Failed to initialize camera."
  • Logs stored in data.json.
  • Captured photos saved in /images.

An admin dashboard allows:
βœ” Viewing IP details (with WHOIS info)
βœ” Viewing captured geolocation on an interactive map
βœ” Viewing captured images (single or carousel with autoplay)
βœ” Secure access – The admin panel is only accessible from localhost or 127.0.0.1, preventing external access.


✨ Features

  • βœ… Disguised UI – Multiple user-facing HTML themes that appear to be websites legitimately requiring permissions
  • βœ… IP Collection – Server IP, Public IP, WebRTC IP leaks
  • βœ… Location Tracking – OpenStreetMap embed if allowed
  • βœ… Silent Camera Capture – Three selfies in background, fake error shown
  • βœ… Secure Admin Panel – Login protected with scrypt-hashed credentials and restricted to localhost only
  • βœ… Image Carousel – Navigate or autoplay captured images
  • βœ… Serveo Integration – Expose local server securely
  • βœ… Optional URL Shortening – Three shortening services supported

⚑ Installation

Requirements

  • Node.js v14+
  • Python 3.8+
  • npm
  • pip
  • OpenSSH

Debian / Ubuntu

sudo apt update && sudo apt install -y git nodejs npm python3 python3-pip openssh-client
git clone https://github.com/cons0le7/Grabber

Arch Linux

sudo pacman -S --needed git nodejs npm python python-pip openssh
git clone https://github.com/cons0le7/Grabber

Android (Termux)

pkg install git nodejs python python-pip openssh
git clone https://github.com/cons0le7/Grabber

iOS / iSH (Alpine)

apk add git nodejs npm python3 py3-pip openssh
git clone https://github.com/cons0le7/Grabber

⌨️ Install Node Packages

cd Grabber
npm install whois whois-json underscore

πŸ” Set Admin Credentials

python3 pass.py

βœ” Prompts for username & password
βœ” Hashes credentials using scrypt
βœ” Saves securely in config.json

Tip: Delete pass.py after setup for extra security.


πŸ›  Usage Flow

Start the server:

python3 grab.py

This will:

  • Check if port 3000 is in use and prompt to terminate any processes occupying it.
  • List all available user-facing HTML pages in /public and prompt for selection.
  • Ask if you want Local mode (localhost only) or Public mode (via Serveo or localhost.run).
  • If Public mode is chosen, optionally ask whether to shorten the public URL (3 options available).
  • Start the Node.js server on http://localhost:3000.
  • If Public mode is chosen, create a Serveo or localhost.run tunnel and display a public link.

After starting server, send the generated link to the test device.


On Test Device:

  • Open the link.
  • Accept location permissions β†’ Displays map.
  • Tap β€œScan Item” β†’ Accept camera permissions.
  • Fake error appears: "Failed to initialize camera." (images are still captured).

Server-Side:

  • Access the admin panel:
    http://localhost:3000/admin or http://127.0.0.1:3000/admin
    (The panel is not accessible externally, only from localhost for security.)

  • Log in using your credentials.

  • View:

    βœ” Collected IP info with WHOIS
    βœ” Click coordinates β†’ Opens interactive map
    βœ” Captured images β†’ Carousel with navigation & autoplay


πŸ“‚ Data Storage

  • Captured images: /images
  • All session data: data.json

πŸ“ Project Structure

Grabber/
β”‚
β”œβ”€β”€ public/          # Front-end files (HTML, CSS, JS)
β”œβ”€β”€ images/          # Captured images
β”œβ”€β”€ config.json      # Stores hashed credentials
β”œβ”€β”€ data.json        # Logs IP, location, session details
β”œβ”€β”€ grab.py          # Main launcher script
β”œβ”€β”€ pass.py          # Credential setup script
└── server.js        # Node.js server

βš–οΈ Legal / Educational Use Only

  • This software is strictly for educational, research, or demonstration purposes.
  • Do not use this tool to target real individuals or systems without explicit consent.
  • By using Grabber, you agree not to engage in illegal or unethical activities.
  • The author does not endorse or facilitate malicious use and assumes no liability for misuse.

⚠️ Disclaimer

This tool is provided β€œas-is”.
The authors are not responsible for any damages, legal issues, or misuse arising from the use of this software.


πŸ“œ License

MIT License. See LICENSE for details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors