Zurück zu den Updates
New releaseSep 3, 2026

Specter-FlipperZero v2.8

👻 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- und Skimmer-Sweep für den Flipper Zero

Specter 👻

Spüre die Reader auf, die du nicht sehen kannst.

Neueste Version Downloads Sterne Build

Flipper Zero Onboard-NFC Keine zusätzliche Hardware Nur zuhören MIT

Specter verwandelt deinen Flipper Zero in einen handlichen Abwehr-Sweep gegen Wanzen für aktive 13,56-MHz-NFC-Reader. Er hört passiv auf das HF-Feld, das ein eingeschalteter Reader ständig aussendet — ein versteckter Karten-Skimmer in einem Zahlungsterminal, ein verdeckter Reader hinter einer Türverkleidung, ein heimlicher Logger unter einem Schreibtisch — und sagt dir dann, wo er ist, um welche Art von Gerät es sich handelt, ob der Raum sauber ist und — wenn er auf Wache bleibt — den Moment, in dem einer auftaucht, während du weg bist. Er sendet nie.

Die Reader sind unsichtbar. Specter macht sie sichtbar.

Vorgestellt in
Help Net Security  ·  Cyber Security News


📟 Auf dem Flipper

Specter in Aktion: einen ruhigen Raum absuchen, sich einem Reader nähern, bei MAX einrasten, seine Polling-Frequenz identifizieren, dann ein Site-Survey-Urteil

Ein Sweep von Anfang bis Ende: ruhiger Raum → Annäherung → eingerastet → was es ist → das Urteil über den Raum.

Specter-Bildschirme

Sweep (ruhig)  ·  Sweep (Reader eingerastet)  ·  Fingerprint  ·  Survey (läuft)  ·  Survey (Urteil)
Watch (klar)  ·  Watch (Reader!)  ·  Logbuch  ·  Kalibrieren  ·  Einstellungen


✨ Die fünf Modi

Specter ist fünf Werkzeuge um einen Sensor. Jedes beantwortet eine andere Frage, also hängt die richtige Wahl davon ab, was du tatsächlich herausfinden willst:

ModusDie Frage, die er beantwortetVerwende ihn, wenn
🔍 SweepWo ist es?Du ein Gerät vermutest und es durch Bewegung genau lokalisieren willst
🔬 FingerprintUm welche Art von Gerät handelt es sich?Du einen Emitter gefunden hast und wissen willst, wie er sich verhält
🗺️ Site SurveyIst dieser Raum sauber?Du ein einziges Urteil für einen ganzen Raum willst, freihändig
🛰️ Watch-ModusIst einer aufgetaucht, während ich weg war?Du den Flipper irgendwo zurücklässt, um Wache zu halten
📖 LogbuchWas habe ich gefunden, und wann?Du es dokumentierst oder heute mit letzter Woche vergleichst — filtere nach Fundtyp

🔍 Sweep — wo ist es?

Sweep — Reader gefunden, Messwert am Anschlag

Was es tut. Ein Live-EMF-Messgerät. Halte den Flipper flach und bewege ihn langsam über das, was du prüfst — ein Karten-Terminal, einen Tür-Reader, die Unterseite einer ATM-Kante, ein Paket, einen Schreibtisch. Die Nadel folgt der Feldstärke in Echtzeit.

Was du siehst.

  • Das Zifferblatt — Nadel = Live-Wert, der kleine Punkt = Peak-Hold (die stärkste Stelle, die du berührt hast, damit du Positionen vergleichen kannst).
  • FIELD % — derselbe Wert als Zahl, mit einem ▲ / ▼ Trendpfeil, der dir sagt, ob die letzte halbe Sekunde wärmer oder kälter war. Wenn du auf der Jagd bist, zählt dieser Pfeil mehr als die Zahl.
  • PK / C — Spitzenwert und wie viele separate Kontakte du hattest.
  • Untere Leiste — die Live-Wellenform und deine aktuelle Empfindlichkeit im Ruhezustand; sie wechselt zu einer schwarzen ● AKTIVER READER-Alarmleiste mit einem Nähewort, sobald ein Träger erkannt wird.
  • NäheSCHWACH → NAH → DICHT → STARK → MAX. MAX bedeutet, dass das Messgerät am Anschlag ist: Du bist so nah, wie diese Messung auflösen kann.

Ton. Optionale Geiger-Klicks, die schneller werden, je näher du kommst, sodass du mit dem Flipper in der Tasche nur nach Gehör suchen kannst.

TasteAktion
OKPeak-Hold und Kontaktzähler zurücksetzen
OK haltenDiesen Messwert im Logbuch speichern
LINKSAuf das Rauschgrundrauschen des Raums kalibrieren (3 s)

🔬 Fingerprint — um welche Art von Gerät handelt es sich?

Fingerprint — Polling-Reader identifiziert

Was es tut. Sobald der Sweep etwas gefunden hat, halte den Flipper still dagegen. Fingerprint stoppt die Nähemessung und beginnt, die Ein-/Aus-Flanken des Trägers zu timen, was tatsächlich eine Art von Emitter von einer anderen unterscheidet.

Was du siehst. Ein Urteil, eine Konfidenzleiste und die Belege für beides:

KlasseWas sie in der Praxis bedeutet
CONTINUOUSDer Träger wird dauerhaft oben gehalten
POLLINGEin fester, kristallgetakteter Poll-Zyklus — die Periode wird in ms angezeigt
INTERMITTENTStoßweise, aber unregelmäßig — oft ein Telefon oder ein Reader in Benutzung

Darunter stehen PER (Poll-Periode), BST (Burst-Breite), JIT (Jitter) und DUTY (echtes Tastverhältnis), plus eine Logikanalysator-Pulsfolge des rohen Trägers — das Urteil musst du also nie blind glauben. Ein echter Polling-Reader zeigt sich als unverkennbare Rechteckwelle.

Ein ~ vor einem Timing bedeutet, dass es nahe am 2-ms-Abtastlimit liegt, und die Konfidenz wird entsprechend abgezinst.

TasteAktion
OKDen Fund im Logbuch speichern
OK haltenDie Messung neu starten

🗺️ Site Survey — ist dieser Raum sauber?

Site Survey — Urteil

Was es tut. Ein zeitlich begrenzter Sweep eines ganzen Raums. Starte ihn, gehe normal durch den Raum und erhalte am Ende ein einziges Urteil — ohne auf die Nadel zu schauen.

Was du siehst. Einen Countdown und eine Fortschrittsleiste, während er läuft, dann eine Urteilskarte:

  • CLEAN — nichts hat das Rauschgrundrauschen überschritten
  • TRACE — kurze oder schwache Treffer; ein langsamerer zweiter Durchgang lohnt sich
  • ACTIVE READER — etwas war wirklich aktiv und sendete

…mit MAX / AVG-Feld, Kontaktanzahl und FIELD %wie viel des Surveys ein Träger tatsächlich aktiv war, was oft die aussagekräftigste der vier Zahlen ist. Läuft 30 s, 60 s oder 2 min und protokolliert das Ergebnis automatisch.

TasteAktion
OKDen Survey erneut ausführen

🛰️ Watch-Modus — ist einer aufgetaucht, während ich weg war?

Watch-Modus — Reader vorhanden

Was es tut. Hält unbegrenzt Wache. Schärfe ihn, lege den Flipper ab, geh weg. Wo Sweep deine Jagd ist und Survey ein Test mit fester Länge, wartet Watch einfach — Minuten oder Stunden lang.

Was du siehst. Eine große verstrichene Uhr und ALL CLEAR, solange nichts da ist. In dem Moment, in dem ein Reader erscheint, invertiert das Band zu READER PRESENT, der Bildschirm wacht auf und der Alarm ertönt. Das Band ist stabil statt blinkend — ein kleiner Marker pulsiert stattdessen, damit es lebendig wirkt, ohne zu stroben. Nachdem es vorbei ist, behält der Bildschirm die Belege: HITS (wie viele separate Kontakte), PEAK, LAST (wie lange der jüngste her ist) und SEEN (Gesamtzeit, in der ein Träger tatsächlich aktiv war).

Watch ignoriert den Stealth-Modus bewusst — ein dunkler, stiller Wächter, der dir nie sagt, dass er etwas gesehen hat, wäre schlimmer als nutzlos.

TasteAktion
OKNeu schärfen — setzt Uhr und Zähler zurück

📖 Logbuch — was habe ich gefunden, und wann?

Funde werden doppelt, mit einer Aktion gespeichert, sodass sie auf dem Gerät lesbar sind und bereits eine Tabelle darstellen — kein Export-Schritt, den man vergessen kann:

logbook.txt — gruppiert, für den On-Device-Viewerlogbook.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 … ```

Einträge sind mit SWEEP, READER, SURVEY oder WATCH gekennzeichnet und werden mit der Uhrzeit des Flippers gestempelt. Beide Dateien liegen in apps_data/specter/ auf der SD-Karte. Nichts verlässt jemals das Gerät. Lösche sie über Einstellungen → Logbuch löschen (mit Bestätigung — es ist die einzige irreversible Aktion, die die App ausführen kann).


⚙️ Die unterstützenden Bausteine

🎯 Automatische Kalibrierung

Drücke LINKS auf dem Sweep-Bildschirm und Specter lauscht 3 Sekunden lang auf den Umgebungsgeräuschpegel und setzt dann die Erkennungsschwelle knapp über das, was es gemessen hat — gespeichert als deine Benutzerdefinierte Empfindlichkeit. Jeder Raum hat einen anderen HF-Grundpegel; das stimmt auf den ein, in dem du stehst, statt auf eine Zahl, die zur Build-Zeit fest verdrahtet wurde. Steh an einem ruhigen Ort, wenn du es ausführst.

🕶️ Stealth-Modus

Hält Bildschirm und LED dunkel für den gesamten Sweep, damit der Flipper nicht leuchtet, während du derjenige bist, der sucht. Ton und Vibration funktionieren weiter — der Punkt ist nicht, das Feedback zu deaktivieren, mit dem du den Sweep durchführst. Das Verlassen eines Stealth-Bildschirms schaltet das Display wieder ein, sodass BACK dich immer auf einem beleuchteten Menü landen lässt.

📏 Den Messwert lesen

Warum ein Reader, den du berührst, nicht zu 100 % der Zeit sendet. Der Detektor misst eine physikalische Sache: welchen Bruchteil der Zeit ein 13,56-MHz-Träger aktiv ist. Aber Reader pollten — ein kurzer Burst, eine Pause, ein weiterer Burst. Ein typisches Terminal strahlt nur 20–35 % der Zeit, daher sättigt der rohe Tastgrad bei etwa 30 %, egal wie nah du herankommst.

Diesen rohen Wert auf der Anzeige zu zeigen, ließ eine perfekte Erkennung wie ein Drittel von einer aussehen. Der Messwert ist stattdessen gegen dieses reale Polling-Band skaliert:

Roher TrägertastgradMesswertNähe
3 % (Raumgeräusch)10 %FAINT
12 %40 %NEAR
20 %67 %CLOSE
28 %93 %STRONG
≥30 % (auf einem Reader liegend)100 %MAX

Der rohe Tastgrad geht nie verloren: Der Grundgeräuschpegel, die automatische Kalibrierung und die DUTY-Anzeige des Fingerprint-Bildschirms arbeiten weiterhin mit dem echten Tastgrad, weil diese das Signal beschreiben, nicht deine Entfernung dazu. Du willst die wörtliche Zahl? Einstellungen → Messwert → Roh.

💾 Alles bleibt erhalten

Empfindlichkeit, Survey-Länge, Ton, Vibration, LED, Stealth, Protokollierung und Messwertmodus werden im Moment der Änderung auf der SD-Karte gespeichert. Ein Sweep-Kit, das sein Setup vergisst, ist schlimmer als gar keine Persistenz.


🧠 So funktioniert es

Jeder eingeschaltete NFC-Reader sendet kontinuierlich einen 13,56-MHz-Träger in die Luft und wartet darauf, dass eine Karte aufwacht. Du kannst ihn nicht sehen, aber der NFC-Chip des Flippers kann es: Der ST25R3916 hat einen Hardware- Externfeld-Detektor (dieselbe Schaltung, die es dem Flipper ermöglicht, eine Karte zu emulieren und zu wissen, wann ein Reader mit ihm spricht). Specter versetzt den Chip in den Nur-Erkennungsmodus und abtastet dieses „Feld vorhanden?“-Bit etwa 500-mal pro Sekunde — ohne jemals seinen eigenen Träger einzuschalten.

Dieses einzelne Bit, schnell genug abgetastet, trägt zwei unabhängige Signale:```mermaid flowchart LR R["🔍 Hidden 13.56 MHz reader / skimmer
(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 Anteil der Zeit* ein Träger
vorhanden ist, und glättet dies zu **FIELD %**. Ein Lesegerät, das direkt auf dem Flipper sitzt, treibt den Messwert in den roten Bereich;
ein schwächeres oder weiter entferntes bewegt ihn nur leicht. Das steuert die Nadel, das Näherungswort und die Klickrate.

**Welcher Rhythmus → Identität.** Zusätzlich wird jeder Übergang dieses Bits zeitlich erfasst. Ein Lesegerät, das
20 ms lang alle 200 ms aufwacht, erzeugt ein Burst-/Pausenmuster mit nahezu keinem Jitter, weil seine Abfrageschleife von
einer kristallgetakteten Zustandsmaschine gesteuert wird. Handbewegungen und HF-Rauschen sind nicht so gleichmäßig. Dieser
Unterschied trennt **POLLING** von **INTERMITTENT**.

### Die Entscheidungsebenen werden auf einem echten Computer getestet

Die Stellen, an denen Specter Zahlen in eine *Behauptung* umwandelt – „das ist ein Polling-Lesegerät“, „dieser Raum ist
sauber“, „das ist, was die Nadel anzeigen sollte“ – sind reines C ohne Hardware-Abhängigkeiten, und sie werden
durch Host-Tests festgelegt und nicht auf dem Gerät entdeckt:```bash
make -C test     # 300 checks: classifier, verdict, meter scaling, presence

🚀 Installation

Kein Devboard, keine Firmware zum Flashen — es ist eine einzelne .fap.

Option A — vorgefertigte .fap (am einfachsten)

  1. Hol dir die passende .fap von der Releases-Seite:

    Deine FirmwareDatei
    Offiziell / Stockspecter.fap
    Unleashed, RogueMaster, Momentum oder alles neuerespecter-fw-dev.fap

    Wenn der Flipper APP:87 < FW:88 — This app might not work anzeigt, hast du die falsche Datei — nimm die andere. Die API-Version der App wird beim Kompilieren festgelegt, daher kann ein einzelner Build nicht beide Firmware-Linien abdecken. Sie läuft normalerweise trotzdem, wenn du auf Continue drückst, aber der passende Build fragt nicht nach.

  2. Öffne qFlipper, ziehe die Datei auf SD Card / apps / NFC /.

  3. Auf dem Flipper: Apps → NFC → Specter.

Option B — selbst bauen mit ufbt```bash

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.

> Die Icons in `icons/`, Screenshots und das Banner in `images/` werden generiert — neu erzeugen mit
> `python3 tools_gen_icons.py`, `python3 tools_gen_mockups.py` und `python3 tools_gen_banner.py` (benötigt `pillow`).

---

## 🎮 Verwendung

**Ein Sweep, Ende zu Ende:**

1. Starte **Specter**. Drücke auf dem **Sweep**-Bildschirm **LINKS** und halte 3 Sekunden still, um
   auf den Grundrauschen des Raums zu kalibrieren.
2. Halte den Flipper flach und bewege ihn **langsam** über das, was du prüfst — ein Kartenterminal, ein
   Türleser, die Unterseite einer ATM-Kante, ein Paket, ein Schreibtisch.
   - **Ruhige / flache Wellenform** → kein aktiver Leser in Reichweite.
   - **Nadel steigt, Klicks werden schneller** → du näherst dich einem Sender. Geh weiter in Richtung des Peaks.
   - **`● AKTIVER LESER` + Alarmrahmen** → ein aktiver Leser ist genau hier.
3. Etwas gefunden? Geh zurück und öffne **Fingerabdruck**. Halte den Flipper still dagegen und lass den
   Rhythmus sich setzen — ein paar Sekunden reichen meist. Drücke **OK**, um den Fund zu speichern.
4. Stattdessen einen ganzen Raum überprüfen? Öffne **Standort-Erhebung**, geh durch den Raum, bis sich der Balken füllt, und lies
   das Urteil ab.
5. Den Bereich verlassen? Lege den Flipper in den **Wachmodus** und er hält Wache, wacht auf und schlägt
   Alarm, wenn ein Leser auftaucht, während du weg bist.
6. Prüfe das **Logbuch** für alles, was du gespeichert hast, mit Zeitstempel — oder zieh `logbook.csv` von der Karte
   in eine Tabellenkalkulation.

> 💡 Sweepe zuerst einen bekannten guten Leser (dein eigenes Telefon mit NFC oder ein kontaktloses Terminal, dem du vertraust), um
> zu sehen, wie ein starkes, legitimes Feld auf dem Messgerät aussieht — und wie sein Fingerabdruck sich liest. Dann
> geh auf die Jagd.

### Bedienelemente

| Bildschirm | Taste | Aktion |
|---|---|---|
| **Sweep** | `OK` | Peak / Kontakte zurücksetzen |
| | `OK halten` | Aktuelle Messung protokollieren |
| | `LINKS` | Grundrauschen kalibrieren (3 s) |
| **Fingerabdruck** | `OK` | Fund im Logbuch speichern |
| | `OK halten` | Messung neu starten |
| **Standort-Erhebung** | `OK` | Erhebung erneut ausführen |
| **Wachmodus** | `OK` | Erneut scharf schalten (Zähler und Uhr zurücksetzen) |
| *überall* | `ZURÜCK` | Eine Ebene höher |

---

## 🔬 Ehrliche Einschränkungen

- **Nur 13,56 MHz (HF).** Specter erfasst das **NFC-Band** — das Band, das von kontaktlosen Zahlungs-Skimmern,
  den meisten modernen Zutrittslesern, Transit- und Hotellesern verwendet wird. Es **kann** **125-kHz-(LF)-Leser**
  (ältere HID-Prox-/EM4100-Türpaneele) **nicht** sehen; der LF-Pfad des Flippers hat kein äquivalentes Feld-Erkennungsbit.
- **Es erfasst den *Träger* eines Lesers, nicht das, was er liest.** Specter sagt dir *ein aktiver Leser ist hier,
  ungefähr wie nah, und in welchem Rhythmus er abfragt* — es dekodiert, identifiziert oder erfasst nichts,
  was der Leser tut.
- **Die Stärke ist relativ, nicht kalibriert.** `FIELD %` und die Nähewörter sind ein vergleichender „wärmer /
  kälter"-Leitfaden zum Sweepen, keine gemessene Entfernung in cm. Es ist eine *skalierte* Messung des
  Träger-Tastverhältnisses gegenüber einem typischen Abfrageband (siehe [Messgerät lesen](#-messgerät-lesen--fixed-in-23));
  ein Leser, der ungewöhnlich spärlich abfragt, wird bei gleicher Entfernung niedriger angezeigt, und einer im Dauerstrichmodus
  schlägt aus weiterer Entfernung aus.
- **Das Messgerät schlägt aus.** `MAX` bedeutet, der Träger ist so hoch, wie dieser Leser ihn je hält — darüber
  hinaus kann ein Näherkommen wirklich keine größere Zahl erzeugen. Verwende stattdessen den `PK`-Peak-Hold, um
  Positionen zu vergleichen.
- **Der Rhythmus löst auf ~2 ms auf.** Das ist die Abtastperiode. Zeiten nahe daran werden mit einem
  **`~`** angezeigt und die Konfidenz wird entsprechend abgewertet — 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 Empfindlichkeit, die du gewählt hast.** Ein ruhender Skimmer, der nur bei einem echten Tippen aufwacht,
  oder einer, der abgeschirmt ist, bleibt bei *jedem* Schwellenwert unsichtbar. Das Fehlen einer Messung ist keine Garantie für
  Abwesenheit.
- **Ein Funkgerät zur Zeit.** Specter übernimmt den NFC-Chip während des Sweeps, also schließe zuerst jede andere NFC-App
  (es wird *NFC nicht verfügbar* sagen, wenn etwas anderes das Funkgerät hält).

---

## ⚖️ Rechtliches & Ethik

Specter ist ein **defensives, reines Hörwerkzeug** — es **sendet nie**, versorgt nie ein Feld mit Strom, berührt nie den
Leser. Verwende es, um **deinen eigenen** POS-Bereich, deine Tür, deinen Schreibtisch oder deine Gegenstände zu sweepen, oder Hardware, die du **ausdrücklich
autorisiert** bist zu bewerten. Du bist verantwortlich dafür, wie du es verwendest. Kenne deine lokalen Gesetze.

---

## 🗺️ Roadmap

- [x] Empfindlichkeit / Ton / Vibration / LED über Neustarts hinweg speichern
- [x] „Logbuch" der Erkennungen mit Zeitstempeln auf der SD-Karte
- [x] Hintergrund-Sweep bei ausgeschaltetem Bildschirm — *Stealth-Modus*
- [x] Einstellbarer Schwellenwert für feinere Reichweitensteuerung — *Auto-Kalibrierung + Benutzerdefinierte Empfindlichkeit*
- [x] Einen Sender anhand seines Abfrage-Rhythmus identifizieren
- [x] Zeitgesteuerte Standort-Erhebung mit Raum-Urteil
- [x] Logbuch als CSV für Berichte exportieren — *wird live neben der .txt geschrieben*
- [x] Langlaufender unbeaufsichtigter Wachmodus mit Weck-bei-Erkennung-Alarm
- [x] Das Messgerät seine volle Spannweite gegen echte Abfrage-Leser nutzen lassen
- [x] Wärmer/kälter-Trendpfeil während der Jagd
- [ ] Ein LF-(125-kHz)-Spulen-basiertes Leser-Sensing als separaten Modus untersuchen
- [ ] Logbuch-Filterung nach Typ auf dem Gerät

---

## 🗂️ 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
│   ├── present_hold.h            # pure: debounce presence across poll gaps
│   ├── 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

🎨 Branding

Alle Grafiken werden generiert, sodass sie nie von der App abweichen:

AssetGrößeWohin es geht
images/banner.png2560×800README-Kopfzeile (2×, damit es auf Retina-Displays gestochen scharf bleibt)
images/social-preview.png1280×640Einstellungen → Social-Vorschau — die von GitHub empfohlene Größe (min. 640×320, 1-MB-Limit)
images/mark.png512×512Quadratisches Logo-Zeichen: Avatare, Favicons, Folien
images/demo.gif768×384Die Animation oben, ~9 s, erstellt aus den echten View-Konstanten
python3 tools_gen_banner.py # banner, social preview, logo mark
python3 tools_gen_gif.py # the demo animation
python3 tools_gen_mockups.py # screen stills
python3 tools_gen_icons.py # 1-bit Flipper icons
> Das Social-Preview-Bild ist das einzige Asset, das GitHub nicht aus dem Repository übernehmen kann – es
> muss einmalig manuell unter **Einstellungen → Social preview** hochgeladen werden. Es wird angezeigt,
> wenn das Repository auf Slack, X, LinkedIn oder Discord geteilt wird.

---

## 🙏 Danksagungen

- Entwickelt von **[at0m-b0mb](https://github.com/at0m-b0mb)**.
- Teil einer Flipper-Sicherheitswerkzeug-Familie: **[Argus](https://github.com/at0m-b0mb/Argus-FlipperZero)** (Wi-Fi-Deauth-/Evil-Twin-Wächter), **[GhostTag](https://github.com/at0m-b0mb/GhostTag-FlipperZero)** (BLE-Anti-Stalking-Jäger) und **[Cerberus](https://github.com/at0m-b0mb/flipper-cerberus)** (Sub-GHz-RF-Wächter).
- Unterstützt durch die [Flipper-Zero-Firmware](https://github.com/flipperdevices/flipperzero-firmware) NFC-HAL (`furi_hal_nfc`-Felddetektion) + [ufbt](https://github.com/flipperdevices/flipperzero-ufbt).

## 📄 Lizenz

[MIT](https://github.com/at0m-b0mb/specter-flipperzero/blob/main/LICENSE) © 2026 at0m-b0mb

Kategorien