Zurück zu den Updates
New releaseAug 4, 2026

Specter-FlipperZero v2.3

👻 Specter — passiver 13,56-MHz-NFC-Leser/Skimmer-Bug-Sweep für Flipper Zero. Gegenüberwachungs-EMF-Messgerät, das den integrierten NFC-Chip nutzt. Keine zusätzliche Hardware nötig.

Teilen

Specter — NFC-Reader- & Skimmer-Wanzenprüfung für Flipper Zero

Specter 👻

Such nach den Readern, die du nicht sehen kannst.

Flipper Zero Version 2.3 Onboard NFC No extra hardware ufbt MIT

Specter verwandelt deinen Flipper Zero in einen handlichen Gegenüberwachungs-Wanzencheck für aktive 13,56-MHz-NFC-Reader. Es hört passiv auf das HF-Feld, das ein eingeschalteter Reader ständig abstrahlt — einen versteckten Karten-Skimmer in einem Zahlungsterminal, einen getarnten Reader hinter einer Türverkleidung, einen heimlichen Logger unter einem Schreibtisch — und sagt dir dann, wo er ist, um was für ein Gerät es sich handelt, ob der Raum sauber ist — und, wenn es auf Wache bleibt, den Moment, in dem einer auftaucht, während du weg bist. Es sendet niemals.

Die Reader sind unsichtbar. Specter macht sie sichtbar.


📟 Auf dem Flipper

Specter-Bildschirme

Sweep (ruhig)  ·  Sweep (Reader gefunden)  ·  Fingerprint  ·  Survey (läuft)  ·  Survey (Ergebnis)
Watch (klar)  ·  Watch (Reader!)  ·  Logbook  ·  Kalibrieren  ·  Einstellungen


✨ Was es tut

Specter beantwortet vier verschiedene Fragen — wo ist es, was ist es, ist der Raum sauber und ist einer aufgetaucht, während ich weg war — und jede hat ihren eigenen Bildschirm.

🔍 Sweep — wo ist es?

Sweep — aktiver Reader gefunden

Das Glanzstück: eine EMF-Anzeige im Analogstil. Die Nadel bewegt sich in Echtzeit auf dem FIELD %-Wert, eine Peak-Hold-Markierung merkt sich den stärksten Ausschlag, und der obere Bereich der Skala ist eine Hot Zone. Eine Live-Wellenform zeichnet den Grundrauschpegel auf, solange es ruhig ist.

Sobald der Träger eines Readers erfasst wird, umrahmt sich der Bildschirm mit einem Alarmrahmen, ein pulsierender Ring pulsiert um die Skala, und das Band wechselt auf ● ACTIVE READER mit einer Näherungsanzeige (FAINT → NEAR → CLOSE → STRONG). Optional beschleunigen sich Geiger-Klicks, je stärker das Feld wird, sodass du eine Oberfläche mit dem Flipper in der Tasche abtasten und hören kannst, wie du wärmer wirst.

OK setzt Peak/Kontakte zurück · hold OK protokolliert die Messung · LEFT kalibriert auf den Raum, in dem du dich befindest.


🔬 Fingerprint — was ist es?  NEU in 2.0

Fingerprint — abfragender Reader identifiziert

Etwas gefunden? Halte still darauf. Specter jagt nicht länger der Nähe hinterher, sondern beginnt, die Ein-/Aus-Flanken des Trägers zu vermessen, und sagt dir dann, um welche Art von Emitter du es zu tun hast:

KlasseBedeutung
CONTINUOUSTräger dauerhaft aktiv
POLLINGFester Pollzyklus — die Periode wird in ms angezeigt
INTERMITTENTStoßweise, aber unregelmäßig

Du erhältst die Poll-Periode, Burst-Breite, Jitter, Duty-Cycle und eine Konfidenzleiste — dazu eine Pulsfolge wie vom Logikanalysator des rohen Trägers am unteren Rand, damit das Urteil nie im Alleingang geglaubt werden muss. Die Poll-Schleife eines Readers ist kristallgetaktet, daher erscheint ein echter Poll als unverkennbare Rechteckwelle.

OK speichert den Fund im Logbuch · hold OK startet die Messung neu.


🗺️ Site Survey — ist dieser Raum sauber?  NEU in 2.0

Site Survey — Ergebnis

Ein zeitgesteuerter Scan eines ganzen Raums. Starte ihn, gehe durch den Raum und erhalte am Ende ein einziges Ergebnis, statt die ganze Zeit auf eine Nadel zu schauen:

  • CLEAN — nichts hat den Grundrauschpegel überschritten
  • TRACE — kurze oder schwache Treffer, ein zweiter Durchgang lohnt sich
  • ACTIVE READER — etwas war aktiv und hat wirklich gesendet

…mit maximalem/durchschnittlichem Feld, Kontaktanzahl und wie lange während des Surveys ein Träger tatsächlich aktiv war. Läuft 30 s, 60 s oder 2 min und protokolliert das Ergebnis automatisch.


🛰️ Watch-Modus — sag mir, ob einer auftaucht  NEU in 2.1

Watch-Modus — Reader vorhanden

Wo Sweep das Jagen ist und Survey ein begrenztes Urteil, steht Watch unbegrenzt Wache. Scharfschalten, den Flipper ablegen und weggehen. Es führt eine laufende Uhr und einen Erkennungszähler, merkt sich, wann der letzte Kontakt war, und — der eigentliche Sinn — weckt den Bildschirm und schlägt in dem Moment Alarm, in dem ein Reader auftaucht. Jeder neue Kontakt wird automatisch mit Zeitstempel protokolliert.

Es ignoriert bewusst Stealth: Ein stiller, dunkler Wächter, der nie verrät, dass er etwas gesehen hat, wäre schlimmer als nutzlos. OK schärft ihn erneut (setzt Zähler und Uhr zurück).


📖 Logbuch + Live-CSV  CSV NEU in 2.1

Jeder Fund wird durch eine einzige Aktion zweifach geschrieben — so ist er auf dem Gerät lesbar und bereits eine Tabellenkalkulation, ohne dass du an einen Exportschritt denken musst:

logbook.txt — gruppiert, für die Anzeige auf dem Gerätlogbook.csv — eine flache Zeile pro Eintrag
2026-07-18 14:35:11
  SURVEY 60s ACTIVE max74…
2026-07-18 14:32:07
  READER POLLING 204ms…
timestamp,type,detail
2026-07-18 14:35:11,SURVEY,60s ACTIVE …
2026-07-18 14:32:07,READER,POLLING 204ms …

Beide liegen in apps_data/specter/ auf der SD-Karte. Nichts verlässt das Gerät.

🎯 Autokalibrierung  NEU in 2.0

Drücke auf dem Sweep-Bildschirm LEFT und Specter lauscht 3 Sekunden lang auf den Umgebungs-Grundrauschpegel, setzt dann die Erkennungsschwelle knapp über das, was es gemessen hat — gespeichert als deine Custom-Empfindlichkeit. Jeder Raum hat einen anderen HF-Grundrauschpegel; das stimmt auf den Raum ab, in dem du gerade stehst, statt auf einen Wert, der zur Build-Zeit eingebrannt wurde.

🕶️ Stealth-Modus  NEU in 2.0

Hält Bildschirm und LED während des gesamten Sweeps dunkel, damit der Flipper nicht leuchtet, während du derjenige bist, der sucht. Ton und Vibration funktionieren weiter — es geht nicht darum, das Feedback abzuschalten, an dem du dich entlangtastest. Das Verlassen eines Stealth-Bildschirms schaltet das Display wieder ein, sodass BACK dich immer in einem beleuchteten Menü landen lässt (behoben in 2.2 — früher blieb der Bildschirm dunkel, wodurch BACK tot wirkte).

📏 Die Messanzeige lesen  BEHOBEN in 2.3

Warum ein Reader, den du berührst, nicht zu 100 % der Zeit sendet. Der Detektor misst eine einzige physikalische Größe: welchen Bruchteil der Zeit ein 13,56-MHz-Träger tatsächlich aktiv ist. Aber Reader pollt — ein kurzer Burst, eine Pause, ein weiterer Burst. Ein typisches Terminal oder ein Zugangs-Reader strahlt nur 20–35 % der Zeit, daher sättigt der rohe Duty-Cycle bei etwa 30 %, egal wie nah du herankommst.

Specter hat diese rohe Zahl früher direkt auf der Anzeige ausgegeben, wodurch eine perfekte Erkennung wie ein Drittel von einer aussah — und CLOSE/STRONG sowie der Peak-Test des Surveys blieben dauerhaft unerreichbar. Die Anzeige ist jetzt gegen dieses reale Poll-Band skaliert:

Roher Träger-DutyAnzeigeNähe
3 % (Raumrauschen)9 %FAINT
12 %34 %NEAR
20 %57 %CLOSE
31 % (direkt auf einem Reader)89 %STRONG
≥35 % / Dauerstrich100 %MAX

MAX bedeutet am Anschlag — du bist so nah, wie es diese Messung auflösen kann, und näher heranzugehen ändert nichts. Das wird klar gesagt, statt versteckt, damit eine festgehaltene Nadel nie wie eine kaputte aussieht.

Der rohe Duty-Cycle geht nie verloren: Grundrauschpegel, Autokalibrierung und der DUTY-Wert auf dem Fingerprint-Bildschirm arbeiten weiterhin mit dem echten Duty-Cycle, denn sie beschreiben das Signal, nicht deine Entfernung dazu. Du bevorzugst die wörtliche Zahl? Settings → Meter → Raw.

💾 Alles bleibt erhalten  NEU in 2.0

Empfindlichkeit, Survey-Länge, Ton, Vibration, LED, Stealth, Protokollierung und Anzeigemodus werden in dem Moment auf der SD-Karte gespeichert, in dem du sie änderst. Ein Sweep-Kit, das sein Setup vergisst, ist schlimmer als gar keine Persistenz.


🧠 Wie es funktioniert

Jeder eingeschaltete NFC-Reader sendet kontinuierlich einen 13,56-MHz-Träger in die Luft und wartet darauf, dass eine Karte aufwacht. Du kannst es nicht sehen, aber der NFC-Chip des Flipper kann es: Der ST25R3916 verfügt über einen Hardware-Externfeld-Detektor (dieselbe Schaltung, die es dem Flipper erlaubt, eine Karte zu emulieren und zu erkennen, wann ein Reader mit ihm spricht). Specter versetzt den Chip in einen Nur-Erkennungs-Modus und tastet dieses „Feld vorhanden?“-Bit etwa 500-mal pro Sekunde ab — ohne jemals den eigenen Träger einzuschalten.

Dieses einzelne Bit trägt, schnell genug abgetastet, zwei unabhängige Signale:

flowchart LR
    R["🔍 Hidden 13.56 MHz reader / skimmer<br/>(constantly polling its field)"] -- "RF carrier" --> A

    subgraph FLIP["Flipper Zero — Specter.fap"]
      A["ST25R3916 NFC chip<br/>external-field detector"] --> S["Sampler thread<br/>~500 samples/s"]
      S --> M["<b>How much?</b><br/>carrier duty-cycle<br/>peak · average · contacts"]
      S --> C["<b>What rhythm?</b><br/>burst / gap edge timing<br/>period · jitter"]
      M --> G["EMF gauge · waveform<br/>geiger clicks · LED · vibe"]
      M --> V["Survey verdict<br/>CLEAN / TRACE / ACTIVE"]
      C --> K["Emitter class<br/>CONTINUOUS / POLLING /<br/>INTERMITTENT + pulse train"]
      V --> L["📖 SD logbook"]
      K --> L
    end

Wie viel → Stärke. Über ein kurzes Zeitfenster misst Specter, welcher Bruchteil der Zeit ein Träger vorhanden ist, und glättet ihn zu FIELD %. Ein Reader direkt auf dem Flipper schlägt den Messwert voll aus; ein schwächerer oder weiter entfernter bewegt ihn ein wenig. Das steuert die Nadel, das Nähewort und die Klickrate.

Welcher Rhythmus → Identität. Zusätzlich wird jeder Übergang dieses Bits zeitlich erfasst. Ein Reader, der alle 200 ms für 20 ms aufwacht, erzeugt ein Burst/Pause-Muster mit fast keinem Jitter, weil seine Poll-Schleife von einer kristallgetakteten Zustandsmaschine gesteuert wird. Handbewegung und HF-Rauschen sind nicht so stabil. Dieser Unterschied trennt POLLING von INTERMITTENT.

Die Entscheidungsebenen werden auf einem echten Computer getestet

Die Stellen, an denen Specter Zahlen in eine Aussage verwandelt — „das ist ein Polling-Reader“, „dieser Raum ist sauber“, „das sollte die Nadel anzeigen“ — sind reines C ohne Hardware-Abhängigkeiten und werden durch Host-Tests abgesichert, statt auf dem Gerät ausprobiert zu werden:

make -C test     # 284 checks: classifier, survey verdict, meter scaling

🚀 Installation

Kein Devboard, keine zu flashende Firmware — es ist eine einzelne .fap.

Option A — vorgebaute .fap (am einfachsten)

  1. Hol dir specter.fap von der Releases-Seite.
  2. Öffne qFlipper und ziehe die Datei auf SD Card / apps / NFC /.
  3. Auf dem Flipper: Apps → NFC → Specter.

Option B — selbst bauen mit ufbt

# one-time
python3 -m pip install --upgrade ufbt

# from the repo root, with your Flipper plugged in over USB:
ufbt            # build specter.fap into ./dist
ufbt launch     # build, upload to the Flipper and open it
make -C test    # run the host tests for the pure logic

Die .fap landet in dist/specter.fap; ufbt launch kopiert sie nach apps/NFC/ und startet sie für dich.

Symbole in icons/, Screenshots und das Banner in images/ sind generiert — neu generieren mit python3 tools_gen_icons.py, python3 tools_gen_mockups.py und python3 tools_gen_banner.py (benötigt pillow).


🎮 Verwendung

Ein Sweep von Anfang bis Ende:

  1. Starte Specter. Drücke auf dem Sweep-Bildschirm LEFT und halte 3 Sekunden lang still, um auf den Grundrauschpegel des Raums zu kalibrieren.
  2. Halte den Flipper flach und bewege ihn langsam über das, was du prüfst — ein Kartenterminal, einen Tür-Reader, die Unterkante eines Geldautomaten, ein Paket, einen Schreibtisch.
    • Ruhig / flache Wellenform → kein aktiver Reader in Reichweite.
    • Nadel steigt, Klicks werden schneller → du näherst dich einem Emitter. Geh weiter in Richtung des Peaks.
    • ● ACTIVE READER + Alarmrahmen → hier ist ein aktiver Reader.
  3. Etwas gefunden? Geh zurück und öffne Fingerprint. Halte den Flipper still dagegen und lass den Rhythmus zur Ruhe kommen — ein paar Sekunden reichen normalerweise. Drücke OK, um den Fund zu speichern.
  4. Stattdessen einen ganzen Raum überprüfen? Öffne Site Survey, gehe durch den Raum, bis sich der Balken füllt, und lies das Ergebnis ab.
  5. Verlässt du den Bereich? Leg den Flipper in den Watch-Modus und er hält Wache, weckt auf und schlägt Alarm, wenn ein Reader auftaucht, während du weg bist.
  6. Prüfe das Logbuch auf alles, was du gespeichert hast, mit Zeitstempel — oder ziehe logbook.csv von der Karte in eine Tabellenkalkulation.

💡 Scanne zuerst einen bekanntermaßen guten Reader (dein eigenes Telefon mit NFC oder ein vertrauenswürdiges kontaktloses Terminal), um zu sehen, wie ein starkes, legitimes Feld auf der Anzeige aussieht — und wie sein Fingerprint gelesen wird. Dann geh auf die Jagd.

Steuerung

BildschirmTasteAktion
SweepOKPeak / Kontakte zurücksetzen
hold OKAktuelle Messung protokollieren
LEFTGrundrauschpegel kalibrieren (3 s)
FingerprintOKFund im Logbuch speichern
hold OKMessung neu starten
Site SurveyOKSurvey erneut ausführen
Watch-ModusOKErneut scharfschalten (Zähler und Uhr zurücksetzen)
überallBACKEine Ebene nach oben

🔬 Ehrliche Einschränkungen

  • Nur 13,56 MHz (HF). Specter erfasst das NFC-Band — dasjenige, das von kontaktlosen Zahlungs-Skimmern, den meisten modernen Zugangs-Readern sowie Transit- und Hotel-Readern genutzt wird. Es kann 125-kHz-(LF)-Reader nicht sehen (ältere HID-Prox-/EM4100-Türpanels); der LF-Pfad des Flipper hat kein entsprechendes Feld-Erkennungs-Bit.
  • Es erfasst den Träger eines Readers, nicht das, was er liest. Specter sagt dir, dass hier ein aktiver Reader ist, ungefähr wie nah und in welchem Rhythmus er pollt — es dekodiert, identifiziert oder erfasst nichts von dem, was der Reader tut.
  • Die Stärke ist relativ, nicht kalibriert. FIELD % und die Nähewörter sind ein vergleichender „wärmer / kälter“-Leitfaden für den Sweep, keine gemessene Entfernung in cm. Es ist eine skalierte Anzeige des Träger-Duty-Cycles im Vergleich zu einem typischen Poll-Band (siehe Die Messanzeige lesen); ein Reader, der ungewöhnlich spärlich pollt, zeigt bei gleicher Entfernung weniger an, und einer im Dauerstrich-Modus schlägt bereits aus größerer Entfernung voll aus.
  • Die Messanzeige erreicht ihren Anschlag. MAX bedeutet, dass der Träger so aktiv ist, wie es dieser Reader jemals hält — jenseits dieses Punktes kann ein Näherkommen wirklich keine größere Zahl erzeugen. Verwende stattdessen die PK-Peak-Hold-Funktion, um Positionen zu vergleichen.
  • Der Rhythmus löst ca. 2 ms auf. Das ist die Abtastperiode. Zeitangaben in dieser Größenordnung werden mit ~ angezeigt und die Konfidenz wird entsprechend abgezogen — Specter markiert lieber seine eigene Auflösungsgrenze, als eine präzise aussehende Zahl zu nennen, hinter der es nicht stehen kann.
  • CLEAN bedeutet sauber bei der von dir gewählten Empfindlichkeit. Ein ruhender Skimmer, der nur bei einer echten Berührung aufwacht, oder einer, der abgeschirmt ist, bleibt bei jeder Schwelle unsichtbar. Das Ausbleiben einer Erkennung ist keine Garantie für Abwesenheit.
  • Nur ein Funkgerät zur Zeit. Specter übernimmt während des Sweeps den NFC-Chip. Schließe also zuerst alle anderen NFC-Apps (es wird NFC unavailable angezeigt, wenn etwas anderes das Funkgerät hält).

⚖️ Rechtliches & Ethik

Specter ist ein defensives, reines Zuhör-Werkzeug — es sendet nie, erzeugt nie ein Feld und berührt den Reader nicht. Nutze es, um deinen eigenen POS-Bereich, Tür, Schreibtisch oder Besitz zu scannen, oder Hardware, die du ausdrücklich autorisiert bist zu prüfen. Du bist verantwortlich für die Nutzung. Kenne deine lokalen Gesetze.


🗺️ Fahrplan

  • Empfindlichkeit / Ton / Vibration / LED über Neustarts hinweg speichern
  • „Logbuch“ der Erkennungen mit Zeitstempeln auf der SD-Karte
  • Hintergrund-Sweep bei ausgeschaltetem Bildschirm — Stealth-Modus
  • Einstellbare Schwelle für feinere Reichweitenkontrolle — Autokalibrierung + Custom-Empfindlichkeit
  • Einen Emitter anhand seines Poll-Rhythmus identifizieren (Fingerprint)
  • Zeitgesteuerter Site-Survey mit Raum-Ergebnis
  • Logbuch als CSV exportieren für Berichte — wird live neben der .txt geschrieben
  • Langlaufender unbeaufsichtigter Watch-Modus mit Aufweck-Alarm bei Erkennung
  • Die Anzeige über den vollen Bereich gegen echte Polling-Reader nutzen
  • Einen LF-(125-kHz)-Spulen-basierten Readersensorbetrieb als separaten Modus untersuchen
  • Logbuch auf dem Gerät nach Typ filtern

🗂️ Projektstruktur

Specter-FlipperZero/
├── application.fam               # Flipper app manifest (category: NFC)
├── specter.c / specter_i.h       # app entry, wiring, alert feedback, stealth
├── helpers/
│   ├── field_detector.{c,h}      # worker thread: samples the field-present bit,
│   │                             #   duty-cycle + edge timing + calibration
│   ├── emitter_classify.{c,h}    # pure: cadence -> CONTINUOUS/POLLING/INTERMITTENT
│   ├── survey_verdict.{c,h}      # pure: survey stats -> CLEAN/TRACE/ACTIVE
│   ├── field_scale.{c,h}         # pure: raw carrier duty -> full-scale meter
│   ├── specter_settings.{c,h}    # persisted settings (saved_struct)
│   └── specter_log.{c,h}         # SD logbook, RTC-stamped .txt + live .csv
├── views/
│   ├── sweep_view.{c,h}          # the EMF gauge / waveform / alarm screen
│   ├── fingerprint_view.{c,h}    # classification card + pulse-train trace
│   ├── survey_view.{c,h}         # progress + verdict card
│   └── watch_view.{c,h}          # unattended guard: clock + count + alarm
├── scenes/                       # scene-manager navigation
├── test/                         # host tests for the pure decision layers
├── icons/                        # 1-bit Flipper icons (generated)
├── images/                       # banner + screen mockups (generated)
└── tools_gen_*.py                # regenerate icons / mockups / banner

🙏 Danksagungen

📄 Lizenz

MIT © 2026 at0m-b0mb

Kategorien