Skip to content

Self-hosted RFID/NFC reader-writer on Arduino Uno R4 WiFi + PN532. Dumps, cracks, and rewrites tags via onboard web interface.

License

Notifications You must be signed in to change notification settings

numbpill3d/KEYREAPER_2133.R4

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

24 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

KEYREAPER_2133.R4

KEYREAPER 2133.R4 is a covert, browser-controlled RFID/NFC reader and writer built on the Arduino Uno R4 WiFi with a PN532 I2C shield. It creates its own WiFi network and serves an embedded web interface for scanning, writing, and interrogating RFID/NFC tags in the field β€” no laptop required beyond initial connection.

A stealth tool for tag inspection, manipulation, and dumping β€” no cloud, no external dependencies.


πŸ›  Hardware

  • βœ… Arduino Uno R4 WiFi (Renesas RA4M1 + u-blox NINA-W102)
  • βœ… Adafruit PN532 RFID/NFC Shield (13.56 MHz, I2C mode)
  • βœ… USB-C power supply or battery bank
  • ❌ No SD card required
  • ❌ No internet required

βš™οΈ Features

  • πŸ” Reads RFID/NFC tags (ISO14443A/B, MIFARE, FeliCa)
  • πŸ”‘ Brute-force key discovery using common key dictionary
  • πŸ“¦ Block dumping of up to 32 data blocks per tag
  • ✍️ Web-based tag writing via POST request
  • 🧠 History buffer (last 20 UIDs + metadata)
  • 🌐 Self-hosted web UI over local AP
  • πŸ§ͺ Deep scan + aggressive protocol mode
  • πŸ”Œ Plug and play β€” just power it on and connect

🌐 Network Mode

When powered on, KEYREAPER creates its own WiFi network:

  • SSID: KEYREAPER_2133.R4 (default)
  • Password: 21332133 (editable in code)
  • IP Address: 192.168.4.1
  • Port: 80

Use your phone or laptop to connect to the device’s WiFi, then visit:

http://192.168.4.1


πŸ“± Web Interface

Control the device fully through a mobile or desktop browser:

Endpoints:

  • /api/scan β€” Single scan
  • /api/toggle β€” Continuous scan mode
  • /api/aggressive β€” Multi-protocol scan toggle
  • /api/history β€” Card log JSON
  • /api/write β€” POST hex block payloads

🧾 History Format

Each scanned tag logs:

  • UID
  • Type (ISO A/B/FeliCa)
  • Manufacturer ID
  • Key count cracked
  • Block data (if dumped)
  • Timestamp

πŸš€ Setup Instructions

  1. Clone the repo:
    git clone https://github.com/numbpill3d/KEYREAPER_2133.R4.git
    
    
  2. Open in Arduino IDE

Board: Arduino Uno R4 WiFi Port: Auto-detect

  1. Edit main.ino to change SSID/password if needed

  2. Upload the sketch

  3. Power the device β†’ connect to its WiFi from your phone

  4. Visit http://192.168.4.1 in your browser

πŸ” Write Mode

To write to a tag:

  • Use the write section in the UI

  • Must be authenticated with a cracked key

  • Supports writing raw hex blocks (plaintext or via POST)

⚠️ Legal This project is for educational and authorized use only. Do not use on systems or tags you do not own or have explicit permission to test.

🧠 Author by numbpill3d AKA voidrane Device theory + field engineering and components sourced + provided by Xenotrek

πŸ“ƒ License MIT β€” mod it, fork it, flash it.

πŸ“‘ Contributing Guidelines

⚠️ Compiler Warnings

In Arduino IDE, set:

File β†’ Preferences β†’ Compiler Warnings β†’ All

This enables full warning output during build to help catch bugs and maintain quality.

🧹 Linting

We use cpplint to maintain code quality.

To run it:

pip install cpplint cpplint src/.cpp src/.h

🐞 Bug Reporting

Found a bug or unexpected behavior?
Please open a new issue here:
πŸ‘‰ https://github.com/numbpill3d/KEYREAPER_2133.R4/issues/new?assignees=&labels=bug&template=bug_report.md&title=%5BBUG%5D+

🐞 Report Bugs / Suggest Features

Found a bug or want to suggest a feature?

β†’ Open an Issue on GitHub

πŸ§ͺ Running the Test Suite

This project uses AUnit for automated testing.

πŸ“¦ Dependencies:

  • Arduino IDE or PlatformIO
  • AUnit library

πŸ› οΈ Run Tests (Arduino IDE):

  1. Open test/test_main.cpp in Arduino IDE.
  2. Select your board: Arduino Uno R4 WiFi.
  3. Upload the sketch.
  4. Open Serial Monitor to view test results.

πŸ§ͺ Run Tests (PlatformIO):

pio test -e uno_r4_wifi

Make sure your platformio.ini defines the test environment.


βœ… Step 3: Use FLOSS License

Since AUnit is Apache 2.0 licensed, you're good β€” this satisfies the FLOSS requirement.


βœ… Optional: Add a CI File (GitHub Actions)

Later, if you want to automate this fully:

yaml

.github/workflows/test.yml

name: Arduino Tests

on: [push, pull_request]

jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install PlatformIO run: pip install platformio - name: Run Unit Tests run: pio test

OpenSSF Best Practices