Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Specter-FlipperZero — Specter — Flipper Zero के लिए निष्क्रिय 13.56 MHz NFC रीडर/स्किमर बग-स्वीप। ऑनबोर्ड NFC चिप का उपयोग करने वाला काउंटर-निगरानी EMF मीटर। कोई अतिरिक्त हार्डवेयर नहीं, कभी ट्रांसमिट नहीं करता। | Kitploit
उपकरण/GitHubGitHub/at0m-b0mb/specter-flipperzero
रक्षात्मक उपकरणएम्बेडेड सिस्टम सुरक्षाIoT सुरक्षाआरएफआईडी/एनएफसी उपकरणपेनिट्रेशन टेस्टिंगहार्डवेयर सुरक्षारेड टीमिंग
GitHubat0m-b0mb/specter-flipperzero

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Specter-FlipperZero

Specter — Flipper Zero के लिए निष्क्रिय 13.56 MHz NFC रीडर/स्किमर बग-स्वीप। ऑनबोर्ड NFC चिप का उपयोग करने वाला काउंटर-निगरानी EMF मीटर। कोई अतिरिक्त हार्डवेयर नहीं, कभी ट्रांसमिट नहीं करता।

रिपॉजिटरी देखें
884875 दिन पहलेKitploit द्वारा समीक्षित
<!-- banner: paper by default, true black when the reader's GitHub is dark -->
<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="images/banner-dark.png">
    <img src="https://assets.kitploit.com/production/public/readmes/42070/74bc06f0a6a1b0731b4768b4256f662b34a582f5b9701a9bce44cb1b10bedd0d.png" alt="Specter — NFC reader and skimmer bug-sweep for Flipper Zero" width="100%">
  </picture>
</p>

<p align="center">
  <sub>
    The waveform is not a graphic. It is 128 columns of 13.56&nbsp;MHz carrier that
    Specter recorded off a real polling reader at 8&nbsp;ms per column, read back
    out of the screenshot beside it. Its duty measures 28% where the device's own
    counter printed 27%, and both numbers are on the banner.
  </sub>
</p>

<p align="center"><i>Sweep for the readers you can't see.</i></p>

<p align="center">
  <a href="https://at0m-b0mb.github.io/Specter-FlipperZero/"><b>Project site</b></a>
  &nbsp;·&nbsp;
  <a href="https://github.com/at0m-b0mb/Specter-FlipperZero/releases/latest">Download</a>
  &nbsp;·&nbsp;
  <a href="https://github.com/at0m-b0mb/specter-flipperzero/blob/main/docs/changelog.md">Changelog</a>
</p>

<!-- live badges: these track the repo, so the README never goes stale -->
<p align="center">
  <a href="https://github.com/at0m-b0mb/Specter-FlipperZero/releases/latest"><img src="https://img.shields.io/github/v/release/at0m-b0mb/Specter-FlipperZero?style=flat-square&amp;color=8A6714&amp;labelColor=000000" alt="Latest release"></a>
  <a href="https://github.com/at0m-b0mb/Specter-FlipperZero/releases"><img src="https://img.shields.io/github/downloads/at0m-b0mb/Specter-FlipperZero/total?style=flat-square&amp;color=8A6714&amp;labelColor=000000&amp;label=downloads" alt="Downloads"></a>
  <a href="https://github.com/at0m-b0mb/Specter-FlipperZero/stargazers"><img src="https://img.shields.io/github/stars/at0m-b0mb/Specter-FlipperZero?style=flat-square&amp;color=8A6714&amp;labelColor=000000" alt="Stars"></a>
  <a href="https://github.com/at0m-b0mb/Specter-FlipperZero/actions/workflows/build.yml"><img src="https://img.shields.io/github/actions/workflow/status/at0m-b0mb/Specter-FlipperZero/build.yml?branch=main&amp;style=flat-square&amp;labelColor=000000&amp;color=8A6714&amp;label=build" alt="Build"></a>
</p>

<p align="center">
  <img src="https://img.shields.io/badge/platform-Flipper%20Zero-8A6714?style=flat-square&amp;logo=flipper&amp;logoColor=FE8A2C&amp;labelColor=000000" alt="Flipper Zero">
  <img src="https://img.shields.io/badge/radio-13.56%20MHz%20NFC%20(onboard)-8A6714?style=flat-square&amp;labelColor=000000" alt="Onboard NFC">
  <img src="https://img.shields.io/badge/extra%20hardware-none-8A6714?style=flat-square&amp;labelColor=000000" alt="No extra hardware">
  <img src="https://img.shields.io/badge/transmits-never-8A6714?style=flat-square&amp;labelColor=000000" alt="Listen-only">
  <img src="https://img.shields.io/badge/license-MIT-8A6714?style=flat-square&amp;labelColor=000000" alt="MIT">
</p>

<p align="center">
  <b>Specter</b> आपके Flipper Zero को <b>सक्रिय 13.56 MHz NFC रीडरों</b> के लिए एक जेबी
  <b>काउंटर-निगरानी बग-स्वीप</b> में बदल देता है। यह चालू रीडर द्वारा लगातार उत्सर्जित होने वाले
  RF फ़ील्ड को <i>निष्क्रिय रूप से सुनता</i> है — भुगतान टर्मिनल में छिपाया गया कोई गुप्त कार्ड
  स्किमर, दरवाज़े के पैनल के पीछे छिपा कोई गुप्त रीडर, मेज़ के नीचे चिपकाया गया कोई रोग लॉगर —
  और फिर आपको बताता है कि <b>वह कहाँ है</b>, <b>वह किस तरह की चीज़ है</b>, <b>कमरा साफ़ है या
  नहीं</b>, और — निगरानी पर छोड़ दिया जाए तो — <b>आपके दूर रहते हुए कोई कब प्रकट होता है</b>।
  यह कभी प्रसारित नहीं करता।
</p>

<p align="center"><sub>रीडर अदृश्य हैं। Specter उन्हें दृश्य बनाता है।</sub></p>

<p align="center">
  <sub>
    <b>यहाँ प्रकाशित</b><br>
    <a href="https://www.helpnetsecurity.com/2026/07/29/specter-flipper-zero-skimmer-detector/">Help Net Security</a>
    &nbsp;·&nbsp;
    <a href="https://cybersecuritynews.com/specter-with-flipper-zero/">Cyber Security News</a>
  </sub>
</p>

---

## Flipper पर

<p align="center">
  <img src="https://raw.githubusercontent.com/at0m-b0mb/specter-flipperzero/main/images/demo.gif" width="70%" alt="Specter in use: sweeping a quiet room, closing in on a reader, locking on at PEGGED, fingerprinting its polling cadence, then a site-survey verdict">
</p>
<p align="center">
  <sub>एक स्वीप, शुरू से अंत तक: शांत कमरा → पास पहुँचना → लॉक-ऑन → यह <b>क्या</b> है → कमरे का निर्णय।</sub>
</p>

### वे स्क्रीनें जो किसी एक मोड की नहीं हैं

<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="images/screens-dark.png">
    <img src="https://raw.githubusercontent.com/at0m-b0mb/specter-flipperzero/main/images/screens.png" width="100%" alt="The boot intro, main menu, Sweep listening, Fingerprint with nothing there, a Site Survey walking, Watch with a contact logged, the Logbook and Settings — all captured from a real Flipper Zero">
  </picture>
</p>
<p align="center">
  <sub>
    शांत अवस्थाएँ और इंट्रो — नीचे दिए गए चारों मोड की अपनी-अपनी कैप्चर हैं, इसलिए ये वे हैं जो
    उनकी नहीं हैं। <b>इस README की हर छवि एक असली डिवाइस से ली गई कैप्चर है</b>, जो
    <code>tools_screenshot.py</code> द्वारा Flipper के अपने RPC सत्र के ज़रिए ली गई है। इस
    प्रोजेक्ट में अब कोई मॉकअप रेंडरर नहीं है — UI का चित्र उसका दूसरा कार्यान्वयन होता है, और
    वह पूरी तरह विश्वसनीय दिखते हुए भी फ़र्मवेयर से मेल नहीं खाता था (देखें
    <a href="https://github.com/at0m-b0mb/specter-flipperzero/blob/main/docs/changelog.md">3.0.1</a>)।
  </sub>
</p>

---

## पाँच मोड

Specter एक सेंसर के इर्द-गिर्द पाँच टूल हैं। हर एक अलग सवाल का जवाब देता है, इसलिए सही टूल
इस पर निर्भर करता है कि आप वास्तव में क्या पता लगाना चाहते हैं:

| मोड | यह किस सवाल का जवाब देता है | इसे कब इस्तेमाल करें |
|---|---|---|
| **Sweep** | *यह कहाँ है?* | आपको किसी डिवाइस पर शक है और आप घूम-घूम कर उसका पता लगाना चाहते हैं |
| **Fingerprint** | *यह किस तरह की चीज़ है?* | आपने कोई उत्सर्जक ढूँढ लिया है और जानना चाहते हैं कि वह कैसे व्यवहार करता है |
| **Site Survey** | *क्या यह कमरा साफ़ है?* | आप पूरे स्थान के लिए एक ही निर्णय चाहते हैं, बिना हाथ लगाए |
| **Watch Mode** | *क्या मेरे दूर रहते कोई प्रकट हुआ?* | आप Flipper को कहीं पहरा देने के लिए छोड़कर जा रहे हैं |
| **Logbook** | *मैंने क्या पाया, और कब?* | आप रिपोर्ट लिख रहे हैं, या आज की तुलना पिछले हफ़्ते से कर रहे हैं — खोज के प्रकार से फ़िल्टर करें |

---

### Sweep — *यह कहाँ है?*

<img src="https://raw.githubusercontent.com/at0m-b0mb/specter-flipperzero/main/screenshots/sweep_reader.png" width="42%" align="right" alt="Sweep — reader found, meter pegged">

**यह क्या करता है।** एक लाइव EMF-शैली का मीटर। Flipper को सपाट पकड़ें और जिस चीज़ की जाँच
कर रहे हैं उसके ऊपर धीरे-धीरे घुमाएँ — कोई कार्ड टर्मिनल, दरवाज़े का रीडर, ATM के किनारे का
निचला हिस्सा, कोई पार्सल, कोई मेज़। सुई फ़ील्ड की ताक़त के साथ वास्तविक समय में चलती है।

**आप क्या देखते हैं।**
- **डायल** — सुई = लाइव रीडिंग, छोटा बिंदु = *पीक-होल्ड* (आपने जो सबसे मज़बूत जगह छुई, ताकि
  आप स्थानों की तुलना कर सकें)।
- **`FIELD %`** — वही रीडिंग एक संख्या के रूप में, साथ में **▲ / ▼ ट्रेंड ऐरो** जो बताता है कि
  पिछले आधे सेकंड में चीज़ें *गर्म हुईं या ठंडी*। शिकार करते समय वह ऐरो संख्या से ज़्यादा मायने
  रखता है।
- **`PEAK %`** — आर्म करने के बाद से सबसे मज़बूत रीडिंग, यानी पीक-होल्ड बिंदु के पीछे की संख्या।
- **डायल पर बनी रेखा** — आपकी मौजूदा संवेदनशीलता पर `READER` *कहाँ से शुरू* होता है। उसके आगे
  का सब कुछ वही है जिसे Specter हिट कहेगा, इसलिए डायल "क्या गिना जाएगा?" का जवाब देता है,
  आपको अनुमान लगाने के लिए नहीं छोड़ता।
- **निचली पट्टी** — जब तक आप अपना पहला रीडर नहीं ढूँढ लेते, यह उन दो कुंजियों को दिखाती है जिन्हें
  आप बटन दबाकर खुद नहीं खोज सकते (`LEFT=cal`, `hold OK=log`); उसके बाद, आपकी संवेदनशीलता और
  एक लाइव वेवफ़ॉर्म। जैसे ही कोई कैरियर पकड़ा जाता है, यह एक काली **`● ACTIVE READER`** अलार्म
  पट्टी में बदल जाती है, साथ में निकटता का शब्द।
- **निकटता** — `FAINT → NEAR → CLOSE → STRONG → PEGGED`। `PEGGED` का मतलब है कि मीटर
  *पेग्ड* है: आप उतने पास हैं जितना यह मापन हल कर सकता है।

**ध्वनि।** वैकल्पिक गाइगर क्लिक जो **आपके पास पहुँचने पर तेज़ हो जाते हैं**, ताकि आप Flipper को
जेब में रखकर सिर्फ़ सुनकर शिकार कर सकें।

| कुंजी | क्रिया |
|---|---|
| `OK` | पीक-होल्ड और संपर्क गणना रीसेट करें |
| `hold OK` | इस रीडिंग को लॉगबुक में सहेजें |
| `LEFT` | कमरे के नॉइज़ फ़्लोर पर कैलिब्रेट करें (3 सेकंड) |
| `UP` / `DOWN` | शिकार छोड़े बिना संवेदनशीलता बदलें |

<br clear="right">

### Fingerprint — *यह किस तरह की चीज़ है?*

<img src="https://raw.githubusercontent.com/at0m-b0mb/specter-flipperzero/main/screenshots/fingerprint_reader.png" width="42%" align="right" alt="Fingerprint — polling reader identified">

**यह क्या करता है।** एक बार Sweep को कुछ मिल जाए, तो Flipper को उसके सामने **स्थिर** पकड़ें।
Fingerprint निकटता मापना बंद कर देता है और **कैरियर के ऑन/ऑफ़ किनारों का समय मापना** शुरू करता
है, और यही असल में एक तरह के उत्सर्जक को दूसरे से अलग करता है।

**आप क्या देखते हैं।** एक निर्णय, एक विश्वास बार, और दोनों के पीछे का प्रमाण:

| वर्ग | व्यवहार में इसका मतलब |
|---|---|
| **CONTINUOUS** | कैरियर स्थायी रूप से ऊपर बना रहता है |
| **POLLING** | एक निश्चित, क्रिस्टल-समयबद्ध पोल चक्र — अवधि ms में दिखाई जाती है |
| **INTERMITTENT** | फटा-फटा पर अनियमित — अक्सर कोई फ़ोन या उपयोग में लाया जा रहा रीडर |

इनके नीचे `PER` (पोल अवधि), `BST` (बर्स्ट चौड़ाई), `JIT` (जिटर) और `UP` (वास्तविक
ड्यूटी-साइकल) हैं, साथ में कच्चे कैरियर की एक **लॉजिक-एनालाइज़र पल्स ट्रेन** — ताकि निर्णय
कभी ऐसा न हो जिसे आपको आँख बंद करके मानना पड़े। एक असली पोलिंग रीडर एक अचूक स्क्वायर वेव के
रूप में दिखता है।

> किसी टाइमिंग से पहले `~` का मतलब है कि यह 2 ms की सैंपलिंग सीमा के करीब है, और विश्वास
> उसी हिसाब से घटा दिया जाता है।

| कुंजी | क्रिया |
|---|---|
| `OK` | खोज को लॉगबुक में सहेजें |
| `hold OK` | मापन पुनः आरंभ करें |

<br clear="right">

### Site Survey — *क्या यह कमरा साफ़ है?*

<img src="https://raw.githubusercontent.com/at0m-b0mb/specter-flipperzero/main/screenshots/survey_active.png" width="42%" align="right" alt="Site Survey — verdict">

**यह क्या करता है।** पूरे स्थान का एक **समयबद्ध** स्वीप। इसे शुरू करें, कमरे में सामान्य रूप से
चलें, और अंत में एक ही निर्णय पाएँ — सुई देखने की ज़रूरत नहीं।

**आप क्या देखते हैं।** चलते समय एक काउंटडाउन और प्रगति बार, फिर एक निर्णय कार्ड:

- **`CLEAN`** — कुछ भी नॉइज़ फ़्लोर को पार नहीं कर पाया
- **`TRACE`** — संक्षिप्त या धुँधली हिट; धीमे दूसरे दौर के लायक
- **`ACTIVE READER`** — कुछ वाकई ऊपर था और उत्सर्जित कर रहा था
- **`TOO SHORT`** — आपने इसे उससे पहले रोक दिया कि वह `CLEAN` कहने का हक़ कमा ले

…साथ में `PEAK` / `AVG` फ़ील्ड, संपर्क गणना, और `UP %` — **सर्वे के दौरान कितने समय तक कोई
कैरियर वास्तव में ऊपर था**, जो अक्सर चारों में से सबसे बताने वाली संख्या होती है। यह 30 सेकंड,
60 सेकंड या 2 मिनट तक चलता है, और परिणाम अपने आप लॉग करता है। कार्ड उस अवधि का नाम बताता है
जिस पर इसे आँका गया, क्योंकि 30 सेकंड का `CLEAN` और दो मिनट का `CLEAN` एक जैसी खोज नहीं हैं —
और 10 सेकंड से छोटा काटा गया रन `CLEAN` के बजाय `TOO SHORT` बताता है। यह असमानता जानबूझकर है:
**उपस्थिति प्रमाण है, अनुपस्थिति नहीं।** एक सेकंड में कुछ ढूँढ लेना एक असली खोज है, इसलिए
`TRACE` और `ACTIVE READER` को जल्दी होने के कारण कभी रोका नहीं जाता; एक सेकंड में कुछ न
मिलना पूरे कमरे के बारे में एक दावा है जिसे एक सेकंड सहन नहीं कर सकता।

| कुंजी | क्रिया |
|---|---|
| `OK` *(चलते समय)* | अभी रोकें और जो मिला उस पर निर्णय दें |
| `OK` *(कार्ड पर)* | एक और सर्वे चलाएँ |

<br clear="right">

### Watch Mode — *क्या मेरे दूर रहते कोई प्रकट हुआ?*

<img src="https://raw.githubusercontent.com/at0m-b0mb/specter-flipperzero/main/screenshots/watch_reader.png" width="42%" align="right" alt="Watch Mode — reader present">

**यह क्या करता है।** **अनिश्चित काल तक** पहरा देता है। इसे आर्म करें, Flipper रखकर चले जाएँ।
जहाँ Sweep आपका शिकार है और Survey एक निश्चित अवधि का परीक्षण है, वहीं Watch बस प्रतीक्षा
करता है — मिनटों या घंटों तक।

**आप क्या देखते हैं।** जब तक कुछ नहीं होता, एक बड़ी बीती हुई घड़ी और `NO READER`। जैसे ही कोई
रीडर प्रकट होता है, पट्टी उलटकर **`ACTIVE READER`** हो जाती है, एक ताक़त बार दिखाता है कि वह
कितना पास है, **स्क्रीन जाग जाती है**, और अलार्म बजता है। पट्टी टिमटिमाने के बजाय स्थिर रहती है —
1-बिट स्क्रीन पर एक ठोस उलटा ब्लॉक पहले से ही उस पर सबसे तेज़ चीज़ होता है, और जो रीडआउट वाकई
बदलते हैं वही जीवंतता लाते हैं। गुज़र जाने के बाद स्क्रीन प्रमाण रख लेती है: `HITS` (कितने अलग
संपर्क), `PEAK`, `LAST` (सबसे हाल का कितना पहले था) और `UP` (कुल समय जब कोई कैरियर वास्तव में
ऊपर था)। घड़ी 99:59 के बाद जमने के बजाय `hh:mm` में बदल जाती है, ताकि रात भर की निगरानी भी
जुड़ती रहे।

Watch **जानबूझकर स्टेल्थ मोड को अनदेखा करता है** — एक अंधेरा, ख़ामोश पहरेदार जो कभी न बताए कि
उसने कुछ देखा, बेकार से भी बदतर होगा।

| कुंजी | क्रिया |
|---|---|
| `OK` | फिर से आर्म करें — घड़ी और काउंटर साफ़ करता है |

<br clear="right">

### Logbook — *मैंने क्या पाया, और कब?*

खोजें **एक ही क्रिया से दो बार सहेजी जाती हैं**, ताकि वे डिवाइस पर पढ़ने योग्य हों *और* पहले से
एक स्प्रेडशीट भी हों — निर्यात का कोई चरण याद रखने की ज़रूरत नहीं:

<table>
<tr><th><code>logbook.txt</code> — समूहीकृत, ऑन-डिवाइस व्यूअर के लिए</th><th><code>logbook.csv</code> — प्रति प्रविष्टि एक सपाट पंक्ति</th></tr>
<tr><td>

```
2026-07-18 14:35:11
  SURVEY 60s ACTIVE max74…
2026-07-18 14:32:07
  READER POLLING 204ms…
```

</td><td>

```
timestamp,type,detail
2026-07-18 14:35:11,SURVEY,60s ACTIVE …
2026-07-18 14:32:07,READER,POLLING 204ms …
```

</td></tr>
</table>

प्रविष्टियाँ `SWEEP`, `READER`, `SURVEY` या `WATCH` के रूप में टैग की जाती हैं और Flipper की घड़ी से टाइमस्टैम्प लगाई जाती हैं। दोनों फ़ाइलें SD कार्ड पर `apps_data/specter/` में रहती हैं। कुछ भी कभी डिवाइस से बाहर नहीं जाता। उन्हें **Settings → Clear logbook** से साफ़ करें (पहले पुष्टि की जाती है — यह ऐप द्वारा किया जाने वाला एकमात्र अपरिवर्तनीय कार्य है)।

---

## सहायक हिस्से

### ऑटो-कैलिब्रेशन

Sweep स्क्रीन पर **LEFT** दबाएँ और Specter **3 सेकंड तक परिवेशी शोर फ़्लोर** सुनता है, फिर जो भी मापा गया उससे ठीक ऊपर डिटेक्शन थ्रेशोल्ड सेट करता है — जिसे आपकी **Custom** संवेदनशीलता के रूप में सहेजा जाता है। हर कमरे का RF फ़्लोर अलग होता है; यह उसी के अनुसार ट्यून करता है जिसमें आप खड़े हैं, न कि बिल्ड समय पर सेट किसी संख्या के अनुसार। इसे चलाते समय किसी शांत जगह पर खड़े हों।

### स्टेल्थ मोड

पूरे स्वीप के दौरान **स्क्रीन और LED को अंधेरा** रखता है, ताकि जब आप निगरानी कर रहे हों तो Flipper चमके नहीं। ध्वनि और कंपन काम करते रहते हैं — उद्देश्य उस फ़ीडबैक को बंद करना नहीं है जिसके आधार पर आप स्वीप कर रहे हैं। स्टेल्थ स्क्रीन से बाहर निकलने पर डिस्प्ले फिर से जल उठता है, इसलिए `BACK` हमेशा आपको एक जगमगाते मेनू पर ले जाता है।

### मीटर को पढ़ना

**जिस रीडर को आप छू रहे हैं वह 100% समय क्यों नहीं उत्सर्जित करता।** डिटेक्टर एक भौतिक चीज़ मापता है: 13.56 MHz कैरियर कितने समय तक सक्रिय रहता है। लेकिन रीडर **पोल** करते हैं — एक छोटा बर्स्ट, एक नींद, फिर एक और बर्स्ट। एक सामान्य टर्मिनल केवल **20–35% समय** ही विकिरण करता है, इसलिए कच्चा ड्यूटी-साइकल आपके कितने भी पास जाने पर लगभग 30% पर *संतृप्त* हो जाता है।

उस कच्ची संख्या को गेज पर दिखाने से एक सटीक डिटेक्शन एक-तिहाई जैसा दिखने लगता था। इसके बजाय मीटर को उस वास्तविक पोलिंग बैंड के अनुसार स्केल किया गया है:

| कच्चा कैरियर ड्यूटी | मीटर | निकटता |
|---|---|---|
| 3% (कमरे का शोर) | 10% | `FAINT` |
| 12% | 40% | `NEAR` |
| 20% | 67% | `CLOSE` |
| 28% | 93% | `STRONG` |
| ≥30% *(रीडर पर टिका हुआ)* | **100%** | `PEGGED` |

**कच्चा ड्यूटी कभी खोता नहीं**: शोर फ़्लोर, ऑटो-कैलिब्रेशन और Fingerprint स्क्रीन का `UP` सब अभी भी वास्तविक ड्यूटी-साइकल में काम करते हैं, क्योंकि वे *सिग्नल* का वर्णन करते हैं, आपकी उससे दूरी का नहीं। शाब्दिक संख्या चाहिए? **Settings → Meter scale → Duty %**।

### सब कुछ बना रहता है

संवेदनशीलता, सर्वे की अवधि, ध्वनि, वाइब, LED, स्टेल्थ, लॉगिंग और मीटर मोड — जैसे ही आप उन्हें बदलते हैं, **SD कार्ड पर सहेज दिए जाते हैं**। जो स्वीप किट अपनी सेटिंग भूल जाए, वह बिना किसी स्थायित्व से भी बदतर है।

---

## यह कैसे काम करता है

हर चालू NFC रीडर लगातार **13.56 MHz कैरियर के साथ हवा में पिंग करता रहता है**, किसी कार्ड के जागने का इंतज़ार करते हुए। आप इसे देख नहीं सकते, लेकिन Flipper की NFC चिप देख सकती है: **ST25R3916** में एक हार्डवेयर **बाहरी-फ़ील्ड डिटेक्टर** है (वही सर्किट जो Flipper को कार्ड एमुलेट करने और यह जानने देता है कि कोई रीडर उससे बात कर रहा है)। Specter चिप को केवल-डिटेक्ट मोड में रखता है और **उस "फ़ील्ड मौजूद है?" बिट को ~500 बार प्रति सेकंड सैंपल करता है** — बिना कभी अपना कैरियर चालू किए।

वह एक बिट, इतनी तेज़ी से सैंपल किया गया, दो स्वतंत्र सिग्नल रखता है:

```mermaid
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
```

**कितना → ताकत।** एक छोटी विंडो में Specter मापता है कि *कितने समय के अंश* में कोई कैरियर मौजूद है और उसे **FIELD %** में स्मूद कर देता है। Flipper के ठीक ऊपर बैठा रीडर मीटर को पूरा भर देता है; कमज़ोर या दूर वाला उसे थोड़ा हिलाता है। यही नीडल, निकटता शब्द और क्लिक दर को चलाता है।

**कौन-सी लय → पहचान।** अलग से, उस बिट के हर ट्रांज़िशन का समय मापा जाता है। एक रीडर जो हर 200 ms में 20 ms के लिए जागता है, लगभग बिना किसी जिटर के एक बर्स्ट/गैप पैटर्न बनाता है, क्योंकि उसका पोलिंग लूप एक क्रिस्टल-टाइम्ड स्टेट मशीन द्वारा संचालित होता है। हाथ की हरकत और RF शोर उतने स्थिर नहीं होते। यही अंतर **POLLING** को **INTERMITTENT** से अलग करता है।

### निर्णय परतों का परीक्षण एक असली कंप्यूटर पर किया जाता है

जहाँ Specter संख्याओं को एक *दावे* में बदलता है — "यह एक पोलिंग रीडर है", "यह कमरा साफ़ है", "नीडल को यही पढ़ना चाहिए" — वे शुद्ध C हैं जिनमें कोई हार्डवेयर निर्भरता नहीं है, और उन्हें डिवाइस पर खोजने के बजाय होस्ट टेस्ट द्वारा पिन किया जाता है:

```bash
make -C test     # 527 checks: classifier, verdict, meter scaling, presence,
                 #             cadence, log filtering, log wrapping
```

---

## इंस्टॉल करें

कोई डेवबोर्ड नहीं, फ्लैश करने के लिए कोई फर्मवेयर नहीं — यह एक ही `.fap` है।

**विकल्प A — पहले से बना `.fap` (सबसे आसान)**

1. [**Releases**](https://github.com/at0m-b0mb/Specter-FlipperZero/releases) पेज से सही `.fap` लें:

   | आपका फर्मवेयर | फ़ाइल |
   |---|---|
   | **आधिकारिक / स्टॉक** | `specter.fap` |
   | **Unleashed, RogueMaster, Momentum** या कोई भी नया | `specter-fw-dev.fap` |

   > अगर Flipper कहता है **`APP:87 < FW:88 — This app might not work`**, तो आपके पास
   > गलत वाला है — दूसरी फ़ाइल लें। ऐप का API संस्करण कंपाइल होने पर तय हो जाता है,
   > इसलिए एक ही बिल्ड दोनों फर्मवेयर लाइनों को संतुष्ट नहीं कर सकता। यह आमतौर पर
   > Continue दबाने पर चलता रहता है, लेकिन मेल खाता बिल्ड पूछेगा नहीं।
2. **qFlipper** खोलें, फ़ाइल को `SD Card / apps / NFC /` पर ड्रैग करें।
3. Flipper पर: **Apps → NFC → Specter**।

**विकल्प B — इसे स्वयं [`ufbt`](https://github.com/flipperdevices/flipperzero-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
```

`.fap` `dist/specter.fap` में जाता है; `ufbt launch` इसे `apps/NFC/` में कॉपी करता है और आपके लिए शुरू कर देता है।

> `icons/` में आइकन और `images/` में बैनर जनरेट किए जाते हैं — इन्हें
> `python3 tools_gen_icons.py` और `python3 tools_gen_banner.py` से फिर से जनरेट करें (`pillow` चाहिए)।
> `screenshots/` में सब कुछ एक असली डिवाइस से
> `python3 tools_screenshot.py` के साथ कैप्चर किया गया है (`pyserial` और USB पर एक Flipper चाहिए)।

---

## इसका उपयोग

**एक स्वीप, शुरू से अंत तक:**

1. **Specter** लॉन्च करें। **Sweep** स्क्रीन पर, कमरे के नॉइज़ फ्लोर पर कैलिब्रेट करने के लिए **LEFT** दबाएँ और 3 सेकंड तक स्थिर रखें।
2. Flipper को सपाट पकड़ें और जिस चीज़ की जाँच कर रहे हैं उसके ऊपर **धीरे-धीरे** घुमाएँ — एक कार्ड टर्मिनल, एक दरवाज़ा रीडर, ATM के निचले हिस्से के नीचे, एक पार्सल, एक डेस्क।
   - **शांत / सपाट वेवफ़ॉर्म** → रेंज में कोई सक्रिय रीडर नहीं।
   - **नीडल ऊपर चढ़ रही है, क्लिक तेज़ हो रहे हैं** → आप एक एमिटर के पास पहुँच रहे हैं। पीक की ओर बढ़ते रहें।
   - **`● ACTIVE READER` + अलार्म बॉर्डर** → एक सक्रिय रीडर ठीक यहीं है।
3. कुछ मिला? बाहर निकलें और **Fingerprint** खोलें। Flipper को उसके सामने स्थिर पकड़ें और कैडेंस को सेटल होने दें — आमतौर पर कुछ सेकंड काफ़ी होते हैं। फ़ाइंडिंग सेव करने के लिए **OK** दबाएँ।
4. पूरा कमरा क्लियर कर रहे हैं? **Site Survey** खोलें, बार भरने तक जगह में घूमें, और वर्डिक्ट पढ़ें।
5. इलाका छोड़ रहे हैं? Flipper को **Watch Mode** में छोड़ दें और यह पहरा देगा, आपकी अनुपस्थिति में कोई रीडर आने पर जागकर अलार्म बजाएगा।
6. आपने जो कुछ भी सेव किया है, उसके लिए **Logbook** देखें, टाइमस्टैम्प के साथ — या कार्ड से `logbook.csv` निकालकर स्प्रेडशीट में डालें।

> पहले एक ज्ञात-अच्छे रीडर को स्वीप करें (आपका अपना फ़ोन NFC कर रहा हो, या कोई कॉन्टैक्टलेस टर्मिनल जिस पर आप भरोसा करते हैं) ताकि देख सकें कि मीटर पर एक मज़बूत, वैध फ़ील्ड कैसा दिखता है — और उसका फ़िंगरप्रिंट कैसा पढ़ा जाता है। फिर शिकार पर निकलें।

### नियंत्रण

| स्क्रीन | कुंजी | क्रिया |
|---|---|---|
| **Sweep** | `OK` | पीक / कॉन्टैक्ट रीसेट करें |
| | `hold OK` | वर्तमान रीडिंग लॉग करें |
| | `LEFT` | नॉइज़ फ्लोर कैलिब्रेट करें (3 s) |
| **Fingerprint** | `OK` | फ़ाइंडिंग को लॉगबुक में सेव करें |
| | `hold OK` | मापन पुनः आरंभ करें |
| **Site Survey** | `OK` | सर्वे दोबारा चलाएँ |
| **Watch Mode** | `OK` | फिर से आर्म करें (काउंट और क्लॉक साफ़ करें) |
| *कहीं भी* | `BACK` | एक स्तर ऊपर |

---

## ईमानदार सीमाएँ

- **केवल 13.56 MHz (HF)।** Specter **NFC बैंड** को संवेद करता है — वही जो कॉन्टैक्टलेस पेमेंट स्किमर, अधिकांश आधुनिक एक्सेस रीडर, ट्रांज़िट और होटल रीडर उपयोग करते हैं। यह **125 kHz (LF)** रीडर (पुराने HID Prox / EM4100 डोर पैनल) **नहीं** देख सकता; Flipper के LF पथ में समतुल्य फ़ील्ड-डिटेक्ट बिट नहीं है।
- **यह रीडर के *कैरियर* को संवेद करता है, यह नहीं कि वह क्या पढ़ता है।** Specter आपको बताता है *यहाँ एक सक्रिय रीडर है, लगभग कितना पास, और यह किस लय पर पोल करता है* — यह रीडर जो कुछ करता है उसे डिकोड, पहचान या कैप्चर नहीं करता।
- **स्ट्रेंथ सापेक्ष है, कैलिब्रेटेड नहीं।** `FIELD %` और निकटता शब्द स्वीपिंग के लिए एक तुलनात्मक "गर्म / ठंडा" गाइड हैं, cm में मापी गई दूरी नहीं। यह एक सामान्य पोलिंग बैंड के विरुद्ध कैरियर ड्यूटी-साइकल की *स्केल्ड* रीडिंग है (देखें [Reading the meter](#-reading-the-meter--fixed-in-23)); जो रीडर असामान्य रूप से कम पोल करता है वह समान दूरी पर कम पढ़ेगा, और जो continuous-wave मोड में है वह दूर से ही पेग हो जाएगा।
- **मीटर अधिकतम तक पहुँच जाता है।** `PEGGED` का मतलब है कि कैरियर उतना ही ऊपर है जितना यह रीडर कभी रखता है — उसके आगे, पास जाना वास्तव में बड़ा नंबर नहीं दे सकता। ऐसा होने पर Flipper एक बार बज़ करता है, ताकि आप जान सकें कि स्क्रीन दिखाई न देने पर भी चलना बंद करें। इसके बजाय स्थितियों की तुलना करने के लिए `PEAK` होल्ड का उपयोग करें।
- **कैडेंस ~2 ms तक रिज़ॉल्व होता है।** यही सैंपलिंग अवधि है। इसके आसपास की कोई भी टाइमिंग **`~`** के साथ दिखाई जाती है और कॉन्फ़िडेंस तदनुसार घटाया जाता है — Specter अपनी रिज़ॉल्यूशन सीमा को चिह्नित करना पसंद करेगा बजाय ऐसा सटीक दिखने वाला नंबर बताने के जिसके पीछे वह खड़ा न हो सके।
- **`CLEAN` का मतलब आपकी चुनी हुई संवेदनशीलता पर साफ़ है।** एक सुप्त स्किमर जो केवल असली टैप पर जागता है, या जो शील्डेड है, *किसी भी* थ्रेशोल्ड पर अदृश्य रहता है। रीडिंग का न होना अनुपस्थिति की गारंटी नहीं है।
- **एक समय में एक रेडियो।** स्वीपिंग के दौरान Specter NFC चिप पर नियंत्रण ले लेता है, इसलिए पहले कोई अन्य NFC ऐप बंद करें (यदि कोई और रेडियो पकड़े हुए है तो यह *NFC unavailable* कहेगा)।

---

## कानूनी और नैतिक

Specter एक **रक्षात्मक, केवल-सुनने वाला** टूल है — यह **कभी ट्रांसमिट नहीं करता**, कभी फ़ील्ड पावर नहीं करता, कभी रीडर को छूता नहीं। इसका उपयोग **अपने** POS क्षेत्र, दरवाज़े, डेस्क या सामान को स्वीप करने के लिए करें, या ऐसे हार्डवेयर के लिए जिसका मूल्यांकन करने के लिए आपको **स्पष्ट रूप से अधिकृत** किया गया है। इसका उपयोग कैसे करते हैं इसकी ज़िम्मेदारी आपकी है। अपने स्थानीय कानून जानें।

---

## रोडमैप

- [x] रीबूट के बीच संवेदनशीलता / ध्वनि / वाइब / LED बनाए रखें
- [x] SD कार्ड पर टाइमस्टैम्प के साथ डिटेक्शन का "Logbook"
- [x] स्क्रीन बंद करके बैकग्राउंड स्वीप — *स्टेल्थ मोड*
- [x] बेहतर रेंज नियंत्रण के लिए समायोज्य थ्रेशोल्ड — *ऑटो-कैलिब्रेशन + Custom sensitivity*
- [x] पोलिंग कैडेंस द्वारा एमिटर का फ़िंगरप्रिंट
- [x] रूम वर्डिक्ट के साथ टाइम्ड साइट सर्वे
- [x] रिपोर्टिंग के लिए लॉगबुक को CSV के रूप में निर्यात करें — *.txt के साथ लाइव लिखा जाता है*
- [x] डिटेक्शन पर जागने वाले अलार्म के साथ लंबे समय तक बिना निगरानी वाला वॉच मोड
- [x] मीटर को असली पोलिंग रीडर के विरुद्ध अपनी पूरी रेंज उपयोग करने दें
- [x] शिकार के दौरान गर्म/ठंडा ट्रेंड एरो
- [ ] एक अलग मोड के रूप में LF (125 kHz) कॉइल-आधारित रीडर सेंस की जाँच करें
- [ ] डिवाइस पर लॉगबुक को प्रकार के अनुसार फ़िल्टर करना

---

## प्रोजेक्ट लेआउट

```
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
│   ├── cadence.h                 # pure: burst/gap/period timing with liveness
│   ├── ema.h                     # pure: the strength smoother
│   ├── log_filter.h              # pure: keep only one kind of finding
│   ├── log_wrap.h                # pure: wrap an entry at words, not mid-word
│   ├── specter_settings.{c,h}    # persisted settings (saved_struct)
│   └── specter_log.{c,h}         # SD logbook, RTC-stamped .txt + live .csv
├── views/
│   ├── view_chrome.h             # the header, presence dot and error screen
│   │                             #   every measurement view shares
│   ├── 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, mark and social card (generated), plus
│                                 #   device_*.png: real captures off a Flipper
├── screenshots/                  # the six captures the Apps Catalog listing uses
├── docs/catalog/                 # the prepared catalog manifest + how to submit
├── tools_check_layout.py         # static overlap + clearance checker (CI-gated)
└── tools_gen_*.py                # regenerate icons / mockups / banner / GIF
```

---

## ब्रांडिंग

**BACKLIGHT.** पहचान के लिए **Didot** में सेट, आवाज़ के लिए **Futura**, हर मापे गए मान के लिए **Andale Mono**। नारंगी `#FE8A2C` है — इस ऐप को चलते हुए qFlipper कैप्चर से *नमूना लिया गया*, इसलिए यह Flipper की अपनी बैकलाइट है, न कि इससे मिलता-जुलता चुना गया रंग। `screenshots/` में हर कैप्चर ठीक दो रंगों में है, `(254,138,44)` और `(0,0,0)`; हार्डवेयर यही उत्सर्जित करता है।

इसे कभी ब्रांड रंग के रूप में इस्तेमाल नहीं किया जाता। **किसी भी एसेट पर एकमात्र अंगारा वह प्रकाश है जो डिवाइस ने वास्तव में उत्सर्जित किया** — एक वास्तविक कैप्चर के अंदर के पिक्सेल, पूर्णांक स्केल पर अछूते चिपकाए गए। आर्टवर्क उसी ह्यू में पंद्रह डिग्री ठंडा बनाया गया है। एक रैंप, विपरीत सिरों से पढ़ा गया: **कागज़ पर अधिक स्याही का मतलब अधिक सिग्नल, काली पर अधिक प्रकाश का मतलब अधिक सिग्नल** — क्योंकि कागज़ वह जगह है जहाँ एक स्वीप समाप्त होती है (Specter एक टाइमस्टैम्प्ड लॉगबुक लिखता है जिसे आप किसी को सौंप सकते हैं) और काला वह जगह है जहाँ यह होता है (स्टेल्थ मोड बैकलाइट को ज़बरदस्ती बंद कर देता है)।

एक्सेंट केवल एक चीज़ खींचता है और कुछ नहीं: **मापा गया कैरियर।** यह कभी नियम, फ़्रेम, मार्जिन या शब्द नहीं है — सिस्टम में कहीं भी सुनहरे शब्द नहीं हैं, और कोई इसे बनाने की कोशिश करे तो रेंडरर त्रुटि उठाता है। इसलिए बैनर में ठीक एक एक्सेंट-रंगीन वस्तु है, और वह वस्तु एक माप है।

वेवफ़ॉर्म 128 कॉलम का कैरियर है जिसे Specter ने एक वास्तविक पोलिंग रीडर से 8 ms प्रति कॉलम पर रिकॉर्ड किया, और बगल के स्क्रीनशॉट से वापस निकाला गया। बाईं ओर का सपाट हिस्सा ट्रेस बफ़र है इससे पहले कि वह भरा, न कि किसी के द्वारा मापी गई शांति। इसका ड्यूटी **28%** पढ़ता है जहाँ डिवाइस के अपने काउंटर ने **27%** छापा, और दोनों संख्याएँ बैनर पर हैं। मार्क **30%** ड्यूटी पर एक पोल साइकल है — उस रीडर का 40 ms में से 12 ms, और यह भी `SPECTER_FULL_SCALE_DUTY`, वह ड्यूटी जिस पर मीटर 100% पढ़ता है। एक संख्या, होने के दो स्वतंत्र कारण।

`#FE8A2C` यहाँ एकमात्र रंग है जिसे हमने नहीं चुना।

| एसेट | आकार | यह कहाँ जाता है |
|---|---|---|
| `images/banner.png` | 2560×800 | README हेडर, कागज़ की पृष्ठभूमि (2× ताकि रेटिना पर कुरकुरा रहे) |
| `images/banner-dark.png` | 2560×800 | वही चित्र शुद्ध काले पर, डार्क-मोड पाठकों को `<picture>` द्वारा परोसा गया |
| `images/social-preview.png` | **1280×640** | **Settings → Social preview** — GitHub का अनुशंसित आकार (न्यूनतम 640×320, 1 MB सीमा) |
| `images/mark.png` | 512×512 | वर्गाकार लोगो मार्क: सोशल पोस्ट, स्लाइड, favicon। **रेपो अवतार नहीं** — GitHub एक रेपो के बगल में *मालिक* की प्रोफ़ाइल तस्वीर दिखाता है, इसलिए सेट करने के लिए कोई प्रति-रेपो अवतार नहीं है |
| `images/mark-180/64/32/16.png` | नामानुसार | 180 और 64 डाउनस्केल किए गए; **32 और 16 मूल रूप से बनाए गए हैं** ताकि कुछ भी एंटी-एलियास होकर धुँधला न हो जाए |
| `images/demo.gif` | 384×192 | हर मोड से गुज़रने वाला एक स्क्रिप्टेड वॉकथ्रू, **डिवाइस से रिकॉर्ड किया गया** — `tools_screenshot.py --tour-gif` |
| `images/splash.gif` | 384×192 | बूट इंट्रो, लॉन्च अनुरोध से आगे रिकॉर्ड किया गया — `--splash` |
| `images/screens.png` | — | कैप्चर की कॉन्टैक्ट शीट, हल्की पृष्ठभूमि, `--sheet` द्वारा पुनर्निर्मित |
| `images/screens-dark.png` | — | वही शीट शुद्ध काले पर, डार्क-मोड पाठकों को `<picture>` द्वारा परोसी गई |
| `screenshots/*.png` | 512×256 | **हर स्क्रीन, एक वास्तविक डिवाइस से कैप्चर की गई** RPC के माध्यम से। ठीक दो रंग: पैनल के अपने। |

```bash
python3 tools_brand_data.py          # the facts the branding is allowed to state
python3 tools_gen_banner.py          # banner (light + dark), social preview, logo mark
python3 tools_gen_icons.py           # 1-bit Flipper icons

# these need a Flipper on USB (pip install pyserial)
python3 tools_screenshot.py --all      # walk every screen and capture it
python3 tools_screenshot.py --reader   # the shots that need a live reader
python3 tools_screenshot.py --splash   # the boot intro
python3 tools_screenshot.py --tour-gif # one GIF of the app being used
```

> सोशल प्रीव्यू वह एकमात्र एसेट है जिसे GitHub रेपो से नहीं उठा सकता — इसे **Settings → Social preview** में एक बार मैन्युअली अपलोड करना पड़ता है। यह तब रेंडर होता है जब रेपो को Slack, X, LinkedIn या Discord पर शेयर किया जाता है।

---

## श्रेय

- **[at0m-b0mb](https://github.com/at0m-b0mb)** द्वारा निर्मित।
- Flipper सुरक्षा-टूल परिवार का हिस्सा: **[Argus](https://github.com/at0m-b0mb/Argus-FlipperZero)** (Wi-Fi deauth / evil-twin watchdog), **[GhostTag](https://github.com/at0m-b0mb/GhostTag-FlipperZero)** (BLE anti-stalking hunter) और **[Cerberus](https://github.com/at0m-b0mb/flipper-cerberus)** (Sub-GHz RF watchdog)।
- [Flipper Zero firmware](https://github.com/flipperdevices/flipperzero-firmware) NFC HAL (`furi_hal_nfc` field detection) + [ufbt](https://github.com/flipperdevices/flipperzero-ufbt) द्वारा संचालित।

## लाइसेंस

[MIT](https://github.com/at0m-b0mb/specter-flipperzero/blob/main/LICENSE) © 2026 at0m-b0mb
टूल डाउनलोड करें