Der ESP32 als Chameleon Ultra – Aufbau, Architektur und Code im Detail
Die Frage, ob sich ein Chameleon Ultra mit einem ESP32 und handelsüblichen Komponenten nachbilden lässt, ist ein faszinierendes technisches Gedankenexperiment, das tief in die Welt der RFID-Technik und der eingebetteten Systeme führt. Dieser Artikel beleuchtet detailliert die Architektur des Originals, den Aufbau eines ESP32-Nachbaus und die Software-Ebene, die aus der Hardware ein funktionales Werkzeug macht.
I. Das Chameleon Ultra – Ein „RFID-Labor im Taschenformat“
Entstehung und Philosophie
Das Chameleon Ultra ist ein quelloffenes Hardware-Tool, das von der globalen Community RfidResearchGroup entwickelt wurde. Es positioniert sich als tragbares „RFID-Labor im Taschenformat“ und ermöglicht das Emulieren, Klonen und Analysieren von RFID-Tags sowie das Aufdecken von Sicherheitslücken in Zutrittssystemen . Die Entwicklung begann mit der Entdeckung einer wenig bekannten RFID-Funktion in einem weit verbreiteten Bluetooth-Chip, die die Ingenieure nutzten, um ein hochleistungsfähiges, multi-frequenzfähiges Gerät zu schaffen .
Hardware-Architektur des Originals
Das Chameleon Ultra ist ein Meisterwerk der Miniaturisierung. Es basiert auf dem nRF52840 von Nordic Semiconductor – einem ARM Cortex-M4 mit 64 MHz Taktfrequenz, 1 MB Flash und 256 KB RAM . Dieser Mikrocontroller ist nicht nur leistungsfähig, sondern integriert auch Bluetooth Low Energy (BLE) für die drahtlose Steuerung .
Die Besonderheit liegt in der Dual-Frequenz-Fähigkeit:
| Frequenzbereich | Typische Systeme | Funktion |
|---|---|---|
| Niederfrequenz (125 kHz) | HID Prox, EM410x, T5577, Indala | Lesen, Schreiben, Emulieren, Klonen |
| Hochfrequenz (13,56 MHz) | MIFARE Classic, NTAG, Ultralight, DESFire | Lesen, Schreiben, Emulieren, Klonen, Cracking |
Die Präzision der Emulation ist das Alleinstellungsmerkmal. Der entscheidende Parameter ist die „Frame Delay Time“ – die Zeit, die das Gerät benötigt, um auf eine Anfrage eines Lesegeräts zu antworten. Das Chameleon Ultra erreicht hier die weltweit höchste Präzision, was bedeutet, dass die Emulation den Protokollspezifikationen entspricht und nicht durch zu langsame Reaktionen fehlschlägt .
Software-Ökosystem
Die Steuerung erfolgt über mehrere Kanäle:
- USB-C für kabelgebundene Verbindungen und Firmware-Updates
- Bluetooth Low Energy für drahtlose Steuerung via Smartphone oder PC
- CLI (Command-Line Interface), das mit dem Proxmark3-Ökosystem kompatibel ist
- GUI-Tools für verschiedene Betriebssysteme und mobile Apps
Die erweiterten Cracking-Funktionen sind bemerkenswert:
- Nested-Attacke: Ableitung von MIFARE-Schlüsseln aus einem bekannten Sektorschlüssel
- Darkside-Attacke: Ableitung ohne Kenntnis eines vorherigen Schlüssels
- Hardnested-Attacke: Brute-Force-basierte Schlüsselfindung
- MFKEY32 v2: Berechnung des Schlüssels aus abgehörter Kommunikation
II. Der ESP32-Nachbau – Hardware und Architektur
Die Idee, ein Chameleon Ultra mit einem ESP32 nachzubauen, ist naheliegend: Der ESP32 ist leistungsfähig, kostengünstig und bietet integriertes WLAN und BLE. Allerdings bringt der Wechsel von der nRF52- zur ESP32-Plattform einige Besonderheiten mit sich.
Kernkomponenten
Ein typischer ESP32-Nachbau besteht aus folgenden Elementen:
- ESP32-Entwicklungsboard (z.B. ESP32 DevKit V1, ESP32-S3)
- PN532-Modul für den 13,56-MHz-Bereich (Lesen, Schreiben, Emulation)
- Optionale Erweiterungen:
Der PN532 ist dabei das Herzstück für den HF-Bereich. Er ist ein vielseitiger NFC-Controller von NXP, der folgende Standards beherrscht :
- ISO/IEC 14443 A/B (MIFARE Classic, Ultralight, NTAG, DESFire)
- ISO/IEC 18092 (NFC Peer-to-Peer)
- FeliCa (Sony)
- Card Emulation – die Fähigkeit, sich als physische Karte auszugeben
Verdrahtung und Pinbelegung
Die Verbindung zwischen ESP32 und PN532 erfolgt typischerweise über SPI (Serial Peripheral Interface). Eine häufige Pinbelegung :
| PN532 Pin | ESP32 Pin | Funktion |
|---|---|---|
| SCK | GPIO 18 | SPI-Takt |
| MOSI | GPIO 23 | Master-Out/Slave-In |
| MISO | GPIO 19 | Master-In/Slave-Out |
| SSEL | GPIO 5 | Chip-Select (CS) |
| 3.3V | 3.3V | Stromversorgung |
| GND | GND | Masse |
Bei komplexeren Projekten mit mehreren SPI-Geräten (z.B. PN532 + CC1101 + Display) wird der SPI-Bus geteilt, und die einzelnen Geräte werden über separate Chip-Select-Pins angesteuert . Eine typische Implementierung für ein Multi-Tool sieht dann so aus :
| Gerät | CS-Pin | Bemerkung |
|---|---|---|
| TFT-Display | A2 | SPI-Bus geteilt |
| PN532 | A5 | SPI-Bus geteilt |
| CC1101 | A7 | SPI-Bus geteilt |
Die Achillesferse: Kein LF (125 kHz)
Der größte Unterschied zum Chameleon Ultra bleibt der Niederfrequenzbereich. Das Original emuliert und liest 125-kHz-Systeme wie HID Prox, EM410x oder ioProx . Der PN532 arbeitet ausschließlich bei 13,56 MHz. Zwar gibt es separate LF-Module (z.B. mit dem EM4095-Chip), doch deren Integration in eine gemeinsame Firmware mit den HF-Funktionen ist ein komplexes Unterfangen.
Ein ESP32-Nachbau bleibt daher faktisch ein reines HF-Tool für 13,56 MHz – eine wichtige und in der Praxis oft ausreichende Einschränkung für moderne Zutrittssysteme.
Die Alternative: ESP32-S3 mit erweiterten Möglichkeiten
Moderne Projekte setzen zunehmend auf den ESP32-S3, der mehr GPIOs und eine höhere Rechenleistung bietet. So existieren Fertigmodule, die ESP32-S3 mit PN532, I²S-Verstärker, RGB-LEDs und SD-Karten-Slot kombinieren . Der ESP32-S3 eignet sich auch für fortschrittlichere Anwendungen wie die Generierung von NFC-Signalen über den RMT-Peripherie (Remote Controller), der schnelle und stabile Zeitsteuersignale erzeugen kann .
III. Die Software-Ebene – Code als Herzstück
Die Hardware ist nur die eine Hälfte. Die andere, entscheidende Hälfte ist die Software, die den ESP32 und den PN532 zum Leben erweckt.
1. Die Initialisierung – Der erste Kontakt mit dem PN532
Bevor der PN532 Befehle annimmt, muss er initialisiert werden. In der Arduino-Welt geschieht dies typischerweise mit der Adafruit_PN532-Bibliothek. Ein vereinfachter Code-Ausschnitt:
cpp
#include <Wire.h>
#include <PN532_I2C.h>
#include <PN532.h>
PN532_I2C pn532_i2c(Wire);
PN532 nfc(pn532_i2c);
void setup() {
nfc.begin();
uint32_t version = nfc.getFirmwareVersion();
if (!version) {
// PN532 nicht gefunden – Fehlerbehandlung
return;
}
nfc.setPassiveActivationRetries(0xFF);
}
PN532-Initialisierung über I2C mit der Adafruit-Bibliothek
Die getFirmwareVersion()-Funktion ist der entscheidende Test: Liefert sie eine Versionsnummer ungleich Null, ist die Hardware-Kommunikation intakt.
2. Das Lesen einer Karte – Die UID-Extraktion
Der grundlegendste Vorgang ist das Auslesen der UID (Unique Identifier) einer Karte:
cpp
uint8_t uid[7];
uint8_t uidLength;
bool success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength, 1000);
if (success) {
Serial.print("UID gefunden: ");
for (uint8_t i = 0; i < uidLength; i++) {
Serial.print(uid[i], HEX);
Serial.print(" ");
}
}
Auslesen der UID einer ISO14443A-kompatiblen Karte
Die readPassiveTargetID()-Funktion versetzt den PN532 in den Reader-Modus und wartet auf eine Karte im Feld. Bei Erfolg wird die UID im uid-Array gespeichert.
3. Die Emulation – Die eigentliche Magie
Das Besondere am Chameleon Ultra ist seine Fähigkeit, sich als Karte auszugeben. Auch das ist mit dem PN532 möglich, allerdings ist die Implementierung komplexer:
cpp
// Schematischer Ablauf der Emulation
// 1. PN532 in den Target-Modus versetzen
nfc.inListPassiveTarget(); // NFC Forum Target (Passive)
// 2. Emulations-Daten setzen (z.B. die zuvor ausgelesene UID)
uint8_t emulationData[] = { /* UID-Bytes */ };
nfc.setPassiveActivationData(emulationData, sizeof(emulationData));
Schematische Darstellung der Emulationsfunktion
Die Emulation erfordert präzises Timing. Im Gegensatz dazu übernimmt das originale Chameleon Ultra mit seiner spezialisierten Hardware das gesamte RF-Response-Timing, was eine deutlich höhere Präzision und Kompatibilität ermöglicht .
4. Die fortgeschrittenen Angriffe – MIFARE Classic Cracking
Die Implementierung von Nested- oder Darkside-Attacken ist komplex und erfordert spezifische Kenntnisse des MIFARE Classic-Protokolls. Projekte wie UniGeek bieten hierfür fertige Implementierungen . Diese Angriffe sind nicht Teil der Standard-PN532-Bibliotheken.
IV. Praktische Projekte – ESP32 als Chameleon-Ersatz
Es gibt mehrere Open-Source-Projekte, die den ESP32 und PN532 zu einem funktionalen RFID-Tool kombinieren:
ESP32 NFC Tool
Die Firmware ESP32 NFC Tool verwandelt einen ESP32 DevKit V1 in einen Wi-Fi-fähigen NFC-Reader/Writer . Die Features umfassen:
- Web-UI zur Steuerung über den Browser
- Serielle Konsole mit
help-Befehl für die CLI-Steuerung - Unterstützung für SRIX (ISO 15693) und MIFARE Classic
- LittleFS für die Speicherung von Kartendumps und Schlüsseldatenbanken
- Wi-Fi Manager mit AP-Fallback-Modus
| PN532 Pin | ESP32 Pin |
|---|---|
| SDA | GPIO 21 |
| SCL | GPIO 22 |
| IRQ (optional) | GPIO 18 |
| RST (optional) | GPIO 19 |
Bruce Firmware
Die Bruce-Firmware ist eines der bekanntesten Multi-Tool-Projekte für ESP32-Handhelds. Sie unterstützt PN532-Emulation über I²C und integriert sie in einen umfassenden Workflow zum Auslesen, Schreiben und Emulieren von Tags .
Flipper Infinity
Das Projekt Flipper Infinity zeigt die Möglichkeiten eines vollständigen Multi-Tools auf einem ESP32 . Die Hardware vereint:
- PN532 für NFC/RFID
- CC1101 für Sub-GHz
- IR-Sender und -Empfänger
- TFT-Touchscreen für die Bedienung
- WiFi im Promiscuous-Modus für Paketanalyse
Die Software nutzt ESP-IDF mit FreeRTOS und jeder Protokoll-Stapel läuft als isolierte Task, um Konflikte auf den gemeinsam genutzten Bussen zu vermeiden .
V. Fazit – Was geht, was nicht
Der ESP32-Nachbau eines Chameleon Ultra ist möglich, aber nicht gleichwertig.
| Kriterium | Chameleon Ultra (Original) | ESP32 + PN532 (Nachbau) |
|---|---|---|
| HF (13,56 MHz) | ✓ Emulation + Reader + Angriffe | ✓ Emulation + Reader + Angriffe |
| LF (125 kHz) | ✓ Emulation + Reader + Angriffe | ✗ Nicht unterstützt |
| Emulationspräzision | Hervorragend (dedizierte HW) | Gut (softwarebasiert) |
| Größe | Schlüsselanhänger (8g) | Größer (Entwicklungsboard) |
| Software-Ökosystem | Sehr umfangreich (GUI, CLI, BLE) | Gut, aber fragmentiert |
| Kosten | ~20-50 € (inoff. Versionen) | Sehr günstig (Einzelteile) |
Der ESP32-Nachbau ist ein faszinierendes Lernprojekt, das tiefe Einblicke in die Funktionsweise von RFID-Systemen und eingebetteter Software bietet. Wer allerdings ein zuverlässiges Werkzeug für professionelle Sicherheitstests sucht – insbesondere mit LF-Unterstützung – ist mit dem Original besser beraten.
Die Software-Ökosysteme sind jedoch auf dem besten Weg: Projekte wie Bruce, UniGeek und das ESP32 NFC Tool zeigen, dass der ESP32 eine leistungsfähige Plattform für den 13,56-MHz-Bereich ist – und vielleicht bald auch den LF-Bereich erschließen wird.
Quellen
- PVSM.ru – ChameleonUltra Vorstellung
- ddcash/enhanced-chameleon-ultra-gui – GitHub
- HermitX-ES/NFC-Cardreader-Module – GitHub
- Les Éditions Diamond – NFC und ESP32 Artikel
- RfidResearchGroup/ChameleonUltra – GitHub Commit
- RFID Journal – Innovation and Emulation
- kylecmathias/FlipperInfinity – GitHub
- pr3y/Bruce – DeepWiki Dokumentation
- shallax/ChameleonUltra – GitHub README
- Lab401 – Chameleon Ultra Produktseite
- Senape3000/nfc-tool_ESP32 – GitHub
- Pajenicko.cz – Chameleon Ultra Beschreibung
Kommentar abschicken