Torna agli aggiornamenti
New releaseAug 20, 2026

Specter-FlipperZero v2.7

👻 Specter — spazzata passiva anti-microspie per lettori/skimmer NFC a 13,56 MHz per Flipper Zero. Misuratore EMF di contro-sorveglianza che utilizza il chip NFC integrato. Nessun hardware aggiuntivo.

Condividi

Specter — NFC reader & skimmer bug-sweep for Flipper Zero

Specter 👻

Sweep for the readers you can't see.

Flipper Zero Version 2.7 Onboard NFC No extra hardware ufbt MIT

Specter trasforma il tuo Flipper Zero in una bonifica anti-spionaggio tascabile per lettori NFC attivi a 13,56 MHz. Ascolta passivamente il campo RF che un lettore acceso emette costantemente — uno skimmer nascosto infilato in un terminale di pagamento, un lettore occulto dietro un pannello, un logger malintenzionato incollato sotto una scrivania — e poi ti dice dove si trova, che tipo di dispositivo è, se la stanza è pulita e — lasciato in sorveglianza — il momento in cui uno appare mentre sei via. Non trasmette mai.

I lettori sono invisibili. Specter li rende visibili.


📟 Sul Flipper

Schermate di Specter

Sweep (silenzioso)  ·  Sweep (lettore bloccato)  ·  Fingerprint  ·  Survey (in esecuzione)  ·  Survey (verdetto)
Watch (pulito)  ·  Watch (lettore!)  ·  Logbook  ·  Calibrate  ·  Settings


✨ Le cinque modalità

Specter è cinque strumenti attorno a un unico sensore. Ognuno risponde a una domanda diversa, quindi quello giusto dipende da cosa stai effettivamente cercando di scoprire:

ModalitàLa domanda a cui rispondeUsala quando
🔍 SweepDove si trova?Sospetti un dispositivo e vuoi individuarlo muovendoti
🔬 FingerprintChe tipo di dispositivo è?Hai trovato un emettitore e vuoi sapere come si comporta
🗺️ Site SurveyQuesta stanza è pulita?Vuoi un unico verdetto per un intero spazio, senza usare le mani
🛰️ Watch ModeNe è apparso uno mentre ero via?Stai lasciando il Flipper da qualche parte a fare la guardia
📖 LogbookCosa ho trovato, e quando?Stai scrivendo il rapporto, o confrontando oggi con la scorsa settimana

🔍 Sweep — dove si trova?

Sweep — lettore trovato, indicatore al massimo

Cosa fa. Un misuratore in stile EMF in tempo reale. Tieni il Flipper piatto e muovilo lentamente sulla cosa che stai controllando — un terminale di pagamento, un lettore su una porta, il bordo inferiore di uno sportello ATM, un pacco, una scrivania. L'ago segue l'intensità del campo in tempo reale.

Cosa vedi.

  • Il quadrante — l'ago = lettura in tempo reale, il puntino piccolo = peak-hold (il punto più forte che hai toccato, così puoi confrontare le posizioni).
  • FIELD % — la stessa lettura come numero, con una freccia di tendenza ▲ / ▼ che ti dice se l'ultimo mezzo secondo ha reso le cose più calde o più fredde. Quando stai cercando, quella freccia conta più del numero.
  • PK / C — lettura di picco e quanti contatti separati hai avuto.
  • Striscia inferiore — la forma d'onda in tempo reale e la tua sensibilità attuale mentre è silenzioso; si trasforma in una barra di allarme nera ● ACTIVE READER con una parola di prossimità nel momento in cui viene rilevata una portante.
  • ProssimitàFAINT → NEAR → CLOSE → STRONG → MAX. MAX significa che l'indicatore è al massimo: sei il più vicino possibile a quanto questa misurazione può risolvere.

Suono. Clic geiger opzionali che accelerano man mano che ti avvicini, così puoi fare la scansione con il Flipper in tasca e cercare solo a orecchio.

TastoAzione
OKAzzera il peak-hold e il conteggio dei contatti
hold OKSalva questa lettura nel logbook
LEFTCalibra sul rumore di fondo della stanza (3 s)

🔬 Fingerprint — che tipo di dispositivo è?

Fingerprint — lettore in polling identificato

Cosa fa. Una volta che Sweep ha trovato qualcosa, tieni il Flipper fermo contro di esso. Fingerprint smette di misurare la prossimità e inizia a cronometrare i bordi di accensione/spegnimento della portante, che è ciò che distingue realmente un tipo di emettitore da un altro.

Cosa vedi. Un verdetto, una barra di confidenza e le prove dietro entrambi:

ClasseCosa significa in pratica
CONTINUOUSLa portante è mantenuta permanentemente attiva
POLLINGUn ciclo di polling fisso, temporizzato da cristallo — il periodo è mostrato in ms
INTERMITTENTA raffiche ma irregolare — spesso un telefono o un lettore in uso

Sotto ci sono PER (periodo di polling), BST (larghezza della raffica), JIT (jitter) e DUTY (duty-cycle reale), più un treno di impulsi da analizzatore logico della portante grezza — così il verdetto non è mai qualcosa che devi prendere per fede. Un vero lettore in polling appare come un'onda quadra inconfondibile.

Un ~ prima di un valore di temporizzazione significa che è vicino al limite di campionamento di 2 ms, e la confidenza viene scontata di conseguenza.

TastoAzione
OKSalva il risultato nel logbook
hold OKRiavvia la misurazione

🗺️ Site Survey — questa stanza è pulita?

Site Survey — verdetto

Cosa fa. Una scansione a tempo di un intero spazio. Avviala, cammina normalmente per la stanza, e ottieni un unico verdetto alla fine — senza guardare l'ago.

Cosa vedi. Un conto alla rovescia e una barra di avanzamento mentre è in esecuzione, poi una scheda di verdetto:

  • CLEAN — nulla ha superato il rumore di fondo
  • TRACE — colpi brevi o deboli; vale la pena un secondo passaggio più lento
  • ACTIVE READER — qualcosa era realmente attivo ed emetteva

…con campo MAX / AVG, conteggio dei contatti e FIELD %per quanto tempo una portante è stata realmente attiva durante la survey, che spesso è il numero più rivelatore dei quattro. Dura 30 s, 60 s o 2 min, e registra automaticamente il risultato.

TastoAzione
OKEsegui di nuovo la survey

🛰️ Watch Mode — ne è apparso uno mentre ero via?

Watch Mode — lettore presente

Cosa fa. Fa la guardia a tempo indeterminato. Armala, appoggia il Flipper, allontanati. Dove Sweep sei tu che cerchi e Survey è un test a durata fissa, Watch si limita ad attendere — per minuti o ore.

Cosa vedi. Un grande orologio del tempo trascorso e ALL CLEAR mentre non c'è nulla. Nell'istante in cui appare un lettore, la banda si inverte in READER PRESENT, lo schermo si accende e suona l'allarme. La banda è stabile piuttosto che lampeggiante — un piccolo indicatore pulsa invece, così si legge come attiva senza stroboscopiarti. Dopo che passa, lo schermo conserva le prove: HITS (quanti contatti separati), PEAK, LAST (quanto tempo fa è avvenuto il più recente) e SEEN (tempo totale in cui una portante è stata realmente attiva).

Watch ignora deliberatamente la modalità stealth — una guardia scura e silenziosa che non ti dicesse mai di aver visto qualcosa sarebbe peggio che inutile.

TastoAzione
OKRi-arma — azzera l'orologio e i contatori

📖 Logbook — cosa ho trovato, e quando?

I risultati vengono salvati due volte, con una sola azione, così sono leggibili sul dispositivo e già un foglio di calcolo — nessun passaggio di esportazione da ricordare:

logbook.txt — raggruppato, per il visualizzatore sul dispositivologbook.csv — una riga piatta per ogni voce
``` 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 … ```

Le voci sono etichettate SWEEP, READER, SURVEY o WATCH e timbrate con l'orologio del Flipper. Entrambi i file vivono in apps_data/specter/ sulla scheda SD. Nulla esce mai dal dispositivo. Puoi cancellarli da Settings → Clear logbook (con conferma prima — è l'unica cosa irreversibile che l'app può fare).


⚙️ Le parti di supporto

🎯 Auto-calibrazione

Premi LEFT sulla schermata Sweep e Specter ascolta il rumore di fondo ambientale per 3 secondi, poi imposta la soglia di rilevamento appena sopra ciò che ha misurato — salvata come sensibilità Custom. Ogni stanza ha un diverso pavimento RF; questo si sintonizza su quello in cui ti trovi invece che su un numero fissato al momento della compilazione. Mettiti in un posto tranquillo quando lo esegui.

🕶️ Modalità stealth

Mantiene schermo e LED spenti per tutta la scansione, così il Flipper non si illumina mentre sei tu a guardare. Suono e vibrazione continuano a funzionare — il punto non è disabilitare il feedback con cui stai facendo la scansione. Uscire da una schermata stealth riaccende il display, quindi BACK ti porta sempre su un menu illuminato.

📏 Leggere il misuratore

Perché un reader che tocchi non emette al 100% del tempo. Il rilevatore misura una sola cosa fisica: per quale frazione di tempo una portante a 13,56 MHz è attiva. Ma i reader fanno polling — un breve burst, una pausa, un altro burst. Un terminale tipico irradia solo per il 20–35% del tempo, quindi il duty-cycle grezzo satura intorno al 30% non importa quanto ti avvicini.

Mostrare quel numero grezzo sul misuratore faceva sembrare una rilevazione perfetta un terzo di una. Il misuratore è invece scalato su quella reale banda di polling:

Duty-cycle portante grezzoMisuratoreProssimità
3% (rumore ambiente)10%FAINT
12%40%NEAR
20%67%CLOSE
28%93%STRONG
≥30% (appoggiato su un reader)100%MAX

Il duty-cycle grezzo non viene mai perso: il pavimento di rumore, l'auto-calibrazione e il DUTY della schermata Fingerprint funzionano ancora in vero duty-cycle, perché quelli descrivono il segnale, non la tua distanza da esso. Vuoi il numero letterale? Settings → Meter → Raw.

💾 Tutto persiste

Sensibilità, durata del survey, suono, vibrazione, LED, stealth, logging e modalità del misuratore vengono salvati sulla scheda SD nel momento in cui li cambi. Un kit di scansione che dimentica la sua configurazione è peggio di nessuna persistenza.


🧠 Come funziona

Ogni reader NFC acceso continua a inviare nell'aria una portante a 13,56 MHz, in attesa che una carta si svegli. Non puoi vederlo, ma il chip NFC del Flipper sì: lo ST25R3916 ha un rilevatore di campo esterno hardware (lo stesso circuito che permette al Flipper di emulare una carta e sapere quando un reader gli sta parlando). Specter mette il chip in modalità solo-rilevamento e campiona quel bit "campo presente?" circa 500 volte al secondo — senza mai attivare la propria portante.

Quel singolo bit, campionato abbastanza velocemente, trasporta due segnali indipendenti:```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
**Quanto → intensità.** In una breve finestra temporale Specter misura *per quale frazione di tempo* un carrier è
presente e lo smussa nel **FIELD %**. Un lettore posizionato direttamente sopra il Flipper porta l'indicatore al massimo;
uno più debole o più distante lo sposta leggermente. Questo guida l'ago, la parola di prossimità e la frequenza dei click.

**Quale ritmo → identità.** Separatamente, ogni transizione di quel bit viene cronometrata. Un lettore che si attiva
per 20 ms ogni 200 ms produce un pattern burst/gap con quasi nessun jitter, perché il suo loop di polling è
guidato da una macchina a stati sincronizzata da un cristallo. Il movimento della mano e il rumore RF non sono così costanti. Questa
differenza è ciò che separa **POLLING** da **INTERMITTENT**.

### I livelli decisionali sono testati su un computer reale

I punti in cui Specter trasforma i numeri in un'*affermazione* — "questo è un lettore in polling", "questa stanza è
pulita", "questo è ciò che l'ago dovrebbe indicare" — sono C puro senza dipendenze hardware, e sono
fissati da test host piuttosto che scoperti sul dispositivo:```bash
make -C test     # 300 checks: classifier, verdict, meter scaling, presence

🚀 Installazione

Nessuna devboard, nessun firmware da flasherare — è un singolo .fap.

Opzione A — .fap precompilato (il più semplice)

  1. Prendi il .fap giusto dalla pagina Releases:

    Il tuo firmwareFile
    Ufficiale / stockspecter.fap
    Unleashed, RogueMaster, Momentum o qualsiasi versione più recentespecter-fw-dev.fap

    Se il Flipper dice APP:87 < FW:88 — This app might not work, hai quello sbagliato — prendi l'altro file. La versione API dell'app è fissata al momento della compilazione, quindi una singola build non può soddisfare entrambe le linee di firmware. Di solito funziona comunque se premi Continue, ma la build corrispondente non lo chiederà.

  2. Apri qFlipper, trascina il file su SD Card / apps / NFC /.

  3. Sul Flipper: Apps → NFC → Specter.

Opzione B — compilalo da solo con 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

Il `.fap` finisce in `dist/specter.fap`; `ufbt launch` lo copia in `apps/NFC/` e lo avvia per te.

> Le icone in `icons/`, gli screenshot e il banner in `images/` sono generati — rigenerali con
> `python3 tools_gen_icons.py`, `python3 tools_gen_mockups.py` e `python3 tools_gen_banner.py` (richiede `pillow`).

---

## 🎮 Come si usa

**Una scansione, dall'inizio alla fine:**

1. Avvia **Specter**. Nella schermata **Sweep**, premi **LEFT** e tieni premuto per 3 secondi per
   calibrare il rumore di fondo della stanza.
2. Tieni il Flipper piatto e muovilo **lentamente** sulla cosa che stai controllando — un terminale di pagamento, un
   lettore di porte, il bordo inferiore di un bancomat, un pacco, una scrivania.
   - **Forma d'onda piatta / silenziosa** → nessun lettore attivo nel raggio.
   - **L'ago che sale, i click che accelerano** → ti stai avvicinando a un emettitore. Continua verso il picco.
   - **`● ACTIVE READER` + bordo di allarme** → un lettore attivo è proprio qui.
3. Trovato qualcosa? Esci e apri **Fingerprint**. Tieni il Flipper fermo contro di esso e lascia che il
   ritmo si stabilizzi — di solito bastano pochi secondi. Premi **OK** per salvare il rilevamento.
4. Vuoi invece controllare un'intera stanza? Apri **Site Survey**, percorri lo spazio finché la barra non si riempie e leggi
   il verdetto.
5. Stai lasciando l'area? Metti il Flipper in **Watch Mode** e farà la guardia, svegliandosi e suonando
   se un lettore si attiva mentre sei via.
6. Controlla **Logbook** per tutto ciò che hai salvato, con timestamp — oppure estrai `logbook.csv` dalla scheda
   in un foglio di calcolo.

> 💡 Scansiona prima un lettore noto e funzionante (il tuo telefono in NFC, o un terminale contactless di cui ti fidi) per
> vedere come appare un campo forte e legittimo sul misuratore — e come risulta la sua impronta. Poi
> vai a caccia.

### Controlli

| Schermata | Tasto | Azione |
|---|---|---|
| **Sweep** | `OK` | Azzera picco / contatti |
| | `hold OK` | Registra la lettura corrente |
| | `LEFT` | Calibra il rumore di fondo (3 s) |
| **Fingerprint** | `OK` | Salva il rilevamento nel logbook |
| | `hold OK` | Riavvia la misurazione |
| **Site Survey** | `OK` | Esegui di nuovo il rilevamento |
| **Watch Mode** | `OK` | Riattiva (azzera conteggio e orologio) |
| *ovunque* | `BACK` | Sali di un livello |

---

## 🔬 Limiti onesti

- **Solo 13.56 MHz (HF).** Specter rileva la **banda NFC** — quella usata dagli skimmer per pagamenti contactless,
  dalla maggior parte dei lettori di accesso moderni, dai lettori di transito e alberghieri. **Non** può
  vedere lettori **125 kHz (LF)** (vecchi pannelli porta HID Prox / EM4100); il percorso LF del Flipper non ha un bit equivalente di rilevamento campo.
- **Rileva la *portante* di un lettore, non ciò che legge.** Specter ti dice *c'è un lettore attivo qui,
  più o meno quanto è vicino, e con quale ritmo interroga* — non decodifica, identifica o cattura nulla
  di ciò che il lettore fa.
- **La forza è relativa, non calibrata.** `FIELD %` e le parole di prossimità sono una guida comparativa "più caldo /
  più freddo" per la scansione, non una distanza misurata in cm. È una lettura *scalata* del
  duty-cycle della portante rispetto a una banda di polling tipica (vedi [Leggere il misuratore](#-reading-the-meter--fixed-in-23));
  un lettore che interroga in modo insolitamente rado leggerà più basso alla stessa distanza, e uno in modalità
  onda continua saturerà da più lontano.
- **Il misuratore arriva al massimo.** `MAX` significa che la portante è al massimo che questo lettore la tiene — oltre
  quel punto, avvicinarsi davvero non può produrre un numero più grande. Usa il peak-hold `PK` per confrontare
  le posizioni.
- **Il ritmo si risolve a ~2 ms.** Questo è il periodo di campionamento. I tempi vicini a questo valore sono mostrati con
  un **`~`** e la confidenza viene scontata di conseguenza — Specter preferisce segnalare il proprio limite di risoluzione
  piuttosto che citare un numero dall'aspetto preciso che non può garantire.
- **`CLEAN` significa pulito alla sensibilità che hai scelto.** Uno skimmer dormiente che si sveglia solo con un tocco reale,
  o uno schermato, resta invisibile a *qualsiasi* soglia. L'assenza di una lettura non è una garanzia di
  assenza.
- **Una radio alla volta.** Specter prende il controllo del chip NFC durante la scansione, quindi chiudi prima qualsiasi altra app NFC
  (dirà *NFC unavailable* se qualcos'altro tiene la radio).

---

## ⚖️ Aspetti legali ed etici

Specter è uno strumento **difensivo, solo in ascolto** — **non trasmette mai**, non alimenta mai un campo, non tocca mai
il lettore. Usalo per controllare **la tua** area POS, porta, scrivania o i tuoi effetti personali, o hardware che ti è stato **esplicitamente
autorizzato** a valutare. Sei responsabile di come lo usi. Conosci le leggi locali.

---

## 🗺️ Roadmap

- [x] Mantieni sensibilità / suono / vibrazione / LED tra i riavvii
- [x] "Logbook" dei rilevamenti con timestamp sulla scheda SD
- [x] Scansione in background con schermo spento — *modalità stealth*
- [x] Soglia regolabile per un controllo più fine del raggio — *auto-calibrazione + sensibilità personalizzata*
- [x] Impronta di un emettitore tramite il suo ritmo di polling
- [x] Rilevamento sito a tempo con verdetto sulla stanza
- [x] Esporta il logbook come CSV per i report — *scritto in tempo reale insieme al .txt*
- [x] Modalità watch a lungo termine senza supervisione con allarme wake-on-detection
- [x] Fai usare al misuratore tutta la sua gamma con lettori a polling reali
- [x] Freccia di tendenza più caldo/più freddo durante la caccia
- [ ] Investiga un rilevamento a bobina LF (125 kHz) come modalità separata
- [ ] Filtro del logbook sul dispositivo per tipo

---

## 🗂️ Struttura del progetto```
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

🙏 Crediti

  • Creato da at0m-b0mb.
  • Parte di una famiglia di strumenti di sicurezza per Flipper: Argus (watchdog Wi-Fi deauth / evil-twin), GhostTag (cacciatore anti-stalking BLE) e Cerberus (watchdog RF Sub-GHz).
  • Basato sul firmware Flipper Zero HAL NFC (furi_hal_nfc rilevamento campo) + ufbt.

📄 Licenza

MIT © 2026 at0m-b0mb

Categorie