Torna agli aggiornamenti
New releaseAug 4, 2026

Specter-FlipperZero v2.3

👻 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 — bonifica anti-spia per lettori NFC e skimmer per Flipper Zero

Specter 👻

Scova i lettori che non puoi vedere.

Flipper Zero Version 2.3 Onboard NFC No extra hardware ufbt MIT

Specter trasforma il tuo Flipper Zero in uno strumento tascabile di bonifica anti-spia per i lettori NFC attivi a 13,56 MHz. Ascolta passivamente il campo RF che un lettore acceso emette di continuo — uno skimmer per carte nascosto in un terminale di pagamento, un lettore occulto dietro il pannello di una porta, un logger clandestino fissato sotto una scrivania — poi ti dice dove si trova, che tipo di dispositivo è, se la stanza è pulita e, lasciato di guardia, l'istante in cui uno appare mentre sei via. Non trasmette mai.

I lettori sono invisibili. Specter li rende visibili.


📟 Sul Flipper

Schermate di Specter

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


✨ Cosa fa

Specter risponde a quattro domande diverse — dove si trova, cos'è, se la stanza è pulita, e se ne è apparso uno mentre ero via — e ognuna ha la sua schermata.

🔍 Sweep — dove si trova?

Sweep — lettore attivo trovato

Il pezzo forte: un indicatore EMF in stile analogico. L'ago segue il FIELD % in tempo reale, un marcatore peak-hold ricorda il picco più forte e la parte alta del quadrante è una hot zone. Una forma d'onda live traccia il rumore di fondo quando è tutto tranquillo.

Nell'istante in cui viene rilevata la portante di un lettore, la schermata si incornicia in un bordo di allarme, un anello pulsante palpita intorno al quadrante e la striscia passa a ● ACTIVE READER con un indicatore di prossimità (FAINT → NEAR → CLOSE → STRONG). I clic Geiger opzionali accelerano man mano che il campo si fa più forte, così puoi scansionare una superficie con il Flipper in tasca e sentire che ti stai avvicinando.

OK azzera picco/contatti · hold OK registra la lettura · LEFT calibra sulla stanza in cui ti trovi.


🔬 Fingerprint — cos'è?  NUOVO in 2.0

Fingerprint — lettore con polling identificato

Hai trovato qualcosa? Tienilo fermo sopra. Specter smette di inseguire la prossimità e inizia a cronometrare i fronti di accensione/spegnimento della portante, poi ti dice che tipo di emettitore hai di fronte:

ClasseSignificato
CONTINUOUSPortante mantenuta sempre attiva
POLLINGCiclo di polling fisso — il periodo è mostrato in ms
INTERMITTENTA raffiche ma irregolare

Ottieni il periodo di polling, la larghezza del burst, il jitter, il duty-cycle e una barra di confidenza — più un treno di impulsi da logic analyzer della portante grezza lungo la parte inferiore, così il verdetto non deve mai essere creduto sulla parola. Il ciclo di polling di un lettore è temporizzato al quarzo, quindi un polling autentico appare come un'onda quadra inconfondibile.

OK salva il rilevamento nel logbook · hold OK riavvia la misurazione.


🗺️ Site Survey — questa stanza è pulita?  NUOVO in 2.0

Site Survey — verdetto

Una scansione a tempo di un intero ambiente. Avviala, percorri la stanza e ottieni un unico verdetto alla fine, invece di dover osservare un ago per tutto il tempo:

  • CLEAN — nulla ha superato il rumore di fondo
  • TRACE — rilevamenti brevi o deboli, merita un secondo passaggio
  • ACTIVE READER — qualcosa era attivo ed emetteva davvero

…con campo massimo/medio, conteggio dei contatti e per quanto tempo della survey una portante è stata effettivamente attiva. Dura 30 s, 60 s o 2 min e registra automaticamente il risultato.


🛰️ Watch Mode — avvisami se ne appare uno  NUOVO in 2.1

Watch Mode — lettore presente

Se Sweep sei tu a cacciare e Survey è un verdetto circoscritto, Watch monta la guardia a tempo indeterminato. Armala, appoggia il Flipper e allontanati. Tiene un cronometro sempre attivo e un conteggio delle rilevazioni, ricorda quando è avvenuto l'ultimo contatto e — il punto centrale — accende lo schermo e fa suonare l'allarme nell'istante in cui appare un lettore. Ogni nuovo contatto viene registrato automaticamente con il suo timestamp.

Ignora deliberatamente la stealth: una guardia silenziosa e al buio che non ti dice mai di aver visto qualcosa sarebbe peggio che inutile. OK la riarma (azzera conteggio e cronometro).


📖 Logbook + CSV in tempo reale  CSV NUOVO in 2.1

Ogni rilevamento viene scritto due volte, con una sola azione — così è leggibile sul dispositivo ed è già un foglio di calcolo, senza dover ricordare alcun passaggio di esportazione:

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

Entrambi si trovano in apps_data/specter/ sulla scheda SD. Nulla esce dal dispositivo.

🎯 Auto-calibrazione  NUOVO in 2.0

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 piano RF; questa funzione si adatta a quello in cui ti trovi, invece di un numero incorporato in fase di compilazione.

🕶️ Modalità stealth  NUOVO in 2.0

Mantiene schermo e LED spenti per tutta la scansione, così il Flipper non si illumina mentre sei tu a fare la ricerca. Audio e vibrazione continuano a funzionare — il punto non è disattivare il feedback con cui stai scansionando. Uscire da una schermata stealth riaccende il display, quindi BACK ti porta sempre su un menu illuminato (corretto in 2.2 — prima lasciava lo schermo scuro, facendo sembrare BACK morto).

📏 Leggere l'indicatore  RISOLTO in 2.3

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

Specter una volta stampava quel numero grezzo sull'indicatore, facendo sembrare un rilevamento perfetto un terzo di uno — e lasciava CLOSE/STRONG e il test di picco della survey permanentemente fuori portata. Ora l'indicatore è scalato su quella banda di polling reale:

Duty-cycle grezzo della portanteIndicatoreProssimità
3% (rumore della stanza)9%FAINT
12%34%NEAR
20%57%CLOSE
31% (sopra un lettore)89%STRONG
≥35% / onda continua100%MAX

MAX significa a fondo scala — sei vicino quanto questa misurazione può risolvere, e avvicinarti ancora non lo cambierà. Questo viene dichiarato invece di essere nascosto, così un ago bloccato non sembra mai uno rotto.

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

💾 Tutto persiste  NUOVO in 2.0

Sensibilità, durata della survey, audio, vibrazione, LED, stealth, registrazione e modalità del meter vengono salvati sulla scheda SD nell'istante in cui li modifichi. Un kit di scansione che dimentica la sua configurazione è peggio di nessuna persistenza.


🧠 Come funziona

Ogni lettore NFC acceso sonda continuamente l'aria con una portante a 13,56 MHz, in attesa che una carta si svegli. Tu non puoi vederla, 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 lettore gli sta parlando). Specter mette il chip in modalità solo-rilevamento e campiona quel bit «campo presente?» ~500 volte al secondo — senza mai accendere la propria portante.

Quel singolo bit, campionato abbastanza velocemente, trasporta due segnali indipendenti:

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

Quanto → intensità. In una breve finestra temporale Specter misura per quale frazione di tempo una portante è presente e la smussa nel FIELD %. Un lettore posizionato proprio sopra il Flipper porta l'indicatore a fondo scala; uno più debole o più lontano lo muove appena. Questo guida l'ago, la parola di prossimità e la frequenza dei clic.

Che ritmo → identità. Separatamente, ogni transizione di quel bit viene cronometrata. Un lettore che si sveglia per 20 ms ogni 200 ms produce uno schema burst/pausa con quasi nessun jitter, perché il suo ciclo di polling è guidato da una macchina a stati temporizzata al quarzo. Il movimento della mano e il rumore RF non sono altrettanto costanti. È questa differenza a separare POLLING da INTERMITTENT.

I livelli decisionali sono testati su un vero computer

I punti in cui Specter trasforma i numeri in un'affermazione — «questo è un lettore che fa polling», «questa stanza è pulita», «ecco cosa dovrebbe leggere l'ago» — sono C puro senza dipendenze hardware, e vengono verificati da test host piuttosto che scoperti sul dispositivo:

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

🚀 Installazione

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

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

  1. Scarica specter.fap dalla pagina Releases.
  2. Apri qFlipper e trascina il file su SD Card / apps / NFC /.
  3. Sul Flipper: Apps → NFC → Specter.

Opzione B — compilalo tu stesso con 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

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 (serve pillow).


🎮 Come si usa

Una scansione, dall'inizio alla fine:

  1. Avvia Specter. Sulla schermata Sweep, premi LEFT e tieni fermo per 3 secondi per calibrare sul rumore di fondo della stanza.
  2. Tieni il Flipper piatto e muovilo lentamente sull'oggetto che stai controllando — un terminale per carte, un lettore da porta, il bordo inferiore di uno sportello ATM, un pacco, una scrivania.
    • Forma d'onda tranquilla / piatta → nessun lettore attivo nel raggio d'azione.
    • L'ago sale, i clic accelerano → ti stai avvicinando a un emettitore. Continua verso il picco.
    • ● ACTIVE READER + bordo di allarme → c'è un lettore attivo proprio qui.
  3. Hai trovato qualcosa? Esci e apri Fingerprint. Tieni il Flipper fermo contro di esso e lascia che la cadenza si stabilizzi — di solito bastano pochi secondi. Premi OK per salvare il rilevamento.
  4. Devi 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: si sveglierà e suonerà se compare un lettore mentre sei via.
  6. Controlla Logbook per tutto ciò che hai salvato, con timestamp — oppure estrai logbook.csv dalla scheda e importalo 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 sull'indicatore — e come risulta la sua impronta. Poi vai a caccia.

Comandi

SchermataTastoAzione
SweepOKAzzera picco / contatti
hold OKRegistra la lettura corrente
LEFTCalibra il rumore di fondo (3 s)
FingerprintOKSalva il rilevamento nel logbook
hold OKRiavvia la misurazione
Site SurveyOKEsegui di nuovo la survey
Watch ModeOKRiarma (azzera conteggio e cronometro)
ovunqueBACKTorna su di un livello

🔬 Limiti onesti

  • Solo 13,56 MHz (HF). Specter rileva la banda NFC — quella usata dagli skimmer per i pagamenti contactless, dalla maggior parte dei lettori di accesso moderni, dai lettori per trasporti e hotel. Non può vedere i lettori a 125 kHz (LF) (vecchi pannelli da porta HID Prox / EM4100); il percorso LF del Flipper non ha un bit equivalente di rilevamento campo.
  • Percepisce la portante di un lettore, non ciò che legge. Specter ti dice che c'è un lettore attivo, più o meno quanto è vicino e con quale ritmo fa polling — non decodifica, identifica né cattura nulla di ciò che il lettore fa.
  • L'intensità è 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 tipica banda di polling (vedi Leggere l'indicatore); un lettore che fa polling in modo insolitamente rado leggerà più basso alla stessa distanza, mentre uno in modalità onda continua andrà a fondo scala da più lontano.
  • L'indicatore arriva a fine scala. MAX significa che la portante è attiva quanto questo lettore la mantiene al massimo — oltre quel punto, avvicinarsi davvero non può produrre un numero più grande. Usa invece il peak-hold PK per confrontare le posizioni.
  • La cadenza ha una risoluzione di ~2 ms. Questo è il periodo di campionamento. Le temporizzazioni vicine a quel valore sono mostrate 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 di cui non può farsi garante.
  • CLEAN significa pulito alla sensibilità che hai scelto. Uno skimmer dormiente che si sveglia solo con un tap reale, o uno schermato, rimane invisibile a qualsiasi soglia. L'assenza di una lettura non è una garanzia di assenza.
  • Una radio alla volta. Specter occupa il chip NFC durante la scansione, quindi chiudi prima qualsiasi altra app NFC (dirà NFC non disponibile se qualcos'altro tiene la radio).

⚖️ Aspetti legali ed etici

Specter è uno strumento difensivo, solo in ascoltonon trasmette mai, non alimenta mai un campo, non tocca mai il lettore. Usalo per scansionare le tue aree POS, porte, scrivanie o i tuoi oggetti, oppure hardware che sei esplicitamente autorizzato a valutare. Sei responsabile dell'uso che ne fai. Conosci le leggi locali.


🗺️ Roadmap

  • Persistenza di sensibilità / audio / vibrazione / LED tra i riavvii
  • "Logbook" dei rilevamenti con timestamp sulla scheda SD
  • Scansione in background con schermo spento — modalità stealth
  • Soglia regolabile per un controllo di portata più fine — auto-calibrazione + sensibilità Custom
  • Impronta di un emettitore in base alla sua cadenza di polling
  • Site survey a tempo con verdetto sulla stanza
  • Esporta il logbook in CSV per i report — scritto in tempo reale accanto al .txt
  • Watch mode a lunga durata senza supervisione con allarme che si attiva al rilevamento
  • Fai usare all'indicatore tutta la sua scala con i lettori a polling reali
  • Studia un rilevamento lettori LF (125 kHz) basato su bobina 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
│   ├── 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.
  • Fa 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 sulla NFC HAL del firmware Flipper Zero (rilevamento campo furi_hal_nfc) + ufbt.

📄 Licenza

MIT © 2026 at0m-b0mb

Categorie