1020 Commits

Author SHA1 Message Date
GameTec-live
6d30d33aef Merge pull request #357 from fmuk/pr/nfcimport-v2
Some checks failed
Deploy wiki to GitHub Pages with Jekyll / build (push) Failing after 40s
Deploy wiki to GitHub Pages with Jekyll / deploy (push) Has been skipped
Push handler / Build Firmware (push) Failing after 1m37s
Push handler / Create dev pre-release with artifacts (push) Has been skipped
Push handler / Create tagged release with artifacts (push) Has been skipped
feat: add Flipper Zero .nfc file importer for MFU/NTAG slots
dev
2026-04-07 20:47:18 +02:00
Fauzan Mirza
dc950c4f60 fix: correct nfcimport class placement after merge 2026-04-07 00:52:07 +02:00
Fauzan Mirza
7931150412 Merge remote-tracking branch 'origin/main' into pr/nfcimport-v2 2026-04-07 00:49:42 +02:00
GameTec-live
93c1e150ab Merge pull request #361 from azuwis/esave
Some checks failed
Deploy wiki to GitHub Pages with Jekyll / build (push) Failing after 56s
Deploy wiki to GitHub Pages with Jekyll / deploy (push) Has been skipped
Push handler / Build Firmware (push) Failing after 47s
Push handler / Create dev pre-release with artifacts (push) Has been skipped
Push handler / Create tagged release with artifacts (push) Has been skipped
Fix `param error` of `hf mf esave`
2026-04-06 18:30:30 +02:00
GameTec-live
92505b0364 Merge pull request #362 from kevihiiin/pac-emulation
Add LF PAC/Stanley (125kHz) Support
2026-04-06 18:29:46 +02:00
Kevin Yuan
eddbb31c05 Merge branch 'main' into pac-emulation 2026-04-06 16:43:41 +01:00
GameTec-live
b77af1e779 Merge pull request #389 from Crazycurly/main
Some checks failed
Deploy wiki to GitHub Pages with Jekyll / build (push) Failing after 1m7s
Deploy wiki to GitHub Pages with Jekyll / deploy (push) Has been skipped
Push handler / Build Firmware (push) Failing after 1m2s
Push handler / Create dev pre-release with artifacts (push) Has been skipped
Push handler / Create tagged release with artifacts (push) Has been skipped
feat(cli): integrate HardNested attack into autopwn
2026-04-04 20:12:31 +02:00
GameTec-live
a4b11e441a Merge pull request #388 from taichunmin/usb-serial-number
Fix firmware application USB serial number
2026-04-04 20:09:59 +02:00
Kevin Yuan
3924ad134b Merge branch 'main' into pac-emulation 2026-04-02 14:17:42 +01:00
GameTec-live
91f2e46bcb Merge pull request #397 from nieldk/feat/lf-data-analysis
Some checks failed
Deploy wiki to GitHub Pages with Jekyll / build (push) Failing after 1m3s
Deploy wiki to GitHub Pages with Jekyll / deploy (push) Has been skipped
Push handler / Build Firmware (push) Failing after 46s
Push handler / Create dev pre-release with artifacts (push) Has been skipped
Push handler / Create tagged release with artifacts (push) Has been skipped
feat(data): add LF capture analysis commands
2026-04-02 12:40:10 +02:00
GameTec-live
78e78eb883 Merge pull request #396 from nieldk/feat/hf14a-sniff
feat(hf): add ISO14443A reader frame capture (hf 14a sniff)
2026-04-02 12:32:26 +02:00
Niel Nielsen
890f316ca0 Merge branch 'main' into feat/lf-data-analysis 2026-04-02 12:09:01 +02:00
GameTec-live
652f341ff9 Merge pull request #399 from nieldk/feat/lf-raw-sniff-v2
Some checks failed
Deploy wiki to GitHub Pages with Jekyll / build (push) Failing after 1m2s
Deploy wiki to GitHub Pages with Jekyll / deploy (push) Has been skipped
Push handler / Build Firmware (push) Failing after 46s
Push handler / Create dev pre-release with artifacts (push) Has been skipped
Push handler / Create tagged release with artifacts (push) Has been skipped
feat(lf): add raw LF field ADC capture (lf sniff)
2026-04-02 11:47:06 +02:00
Niel Nielsen
d0a8ade9e4 feat(lf): add raw LF field ADC capture (lf sniff) 2026-04-02 11:16:32 +02:00
GameTec-live
0ac25caedc Merge pull request #398 from RfidResearchGroup/revert-395-feat/lf-raw-sniff
Revert "feat(lf): add raw LF field ADC capture (lf sniff)"
2026-04-02 11:09:15 +02:00
GameTec-live
74e2dac27e Revert "feat(lf): add raw LF field ADC capture (lf sniff)" 2026-04-02 11:07:16 +02:00
Niel Nielsen
27697f9344 Merge branch 'main' into feat/lf-data-analysis 2026-04-02 10:58:20 +02:00
Benjamin Møller
dd27081cdf Merge branch 'main' into feat/hf14a-sniff 2026-04-02 10:50:53 +02:00
GameTec-live
4f9cc9ec7c Merge pull request #395 from nieldk/feat/lf-raw-sniff
feat(lf): add raw LF field ADC capture (lf sniff)
2026-04-02 10:44:33 +02:00
Benjamin Møller
3f68690399 Merge branch 'main' into feat/lf-raw-sniff 2026-04-02 10:40:44 +02:00
GameTec-live
88f7fda526 Merge pull request #394 from nieldk/feat/lf-em4x05-reader
Some checks failed
Deploy wiki to GitHub Pages with Jekyll / build (push) Failing after 36s
Deploy wiki to GitHub Pages with Jekyll / deploy (push) Has been skipped
Push handler / Build Firmware (push) Failing after 1m33s
Push handler / Create dev pre-release with artifacts (push) Has been skipped
Push handler / Create tagged release with artifacts (push) Has been skipped
feat(lf): add EM4x05/EM4x69 reader (RTF gap protocol)
2026-04-02 09:00:33 +02:00
Niel Nielsen
29c407464b fix: make each PR self-contained with all required source files 2026-04-02 08:14:18 +02:00
Niel Nielsen
f65acdd26d fix: make each PR self-contained with all required source files 2026-04-02 08:14:17 +02:00
Niel Nielsen
5daad00953 fix: make each PR self-contained with all required source files 2026-04-02 08:14:16 +02:00
Niel Nielsen
0b6bb28fc1 fix(data): guard Ultra-only includes and processors for Lite build 2026-04-02 08:07:15 +02:00
Niel Nielsen
cff829e81c fix(hf): guard Ultra-only includes and processors for Lite build 2026-04-02 08:06:26 +02:00
Niel Nielsen
dcad76bf38 fix(lf): guard Ultra-only includes and processors for Lite build 2026-04-02 08:05:33 +02:00
Niel Nielsen
4b88bf57b9 fix(lf): guard Ultra-only includes and processors for Lite build 2026-04-02 08:04:41 +02:00
Niel Nielsen
ce932d2e8a feat(data): add LF capture analysis commands 2026-04-02 07:43:16 +02:00
Niel Nielsen
164d450f87 feat(hf): add ISO14443A reader frame capture (hf 14a sniff) 2026-04-02 07:42:26 +02:00
Niel Nielsen
264c2799a7 feat(lf): add raw LF field ADC capture (lf sniff) 2026-04-02 07:41:24 +02:00
Niel Nielsen
e02918b867 feat(lf): add EM4x05/EM4x69 reader (RTF gap protocol) 2026-04-02 07:34:16 +02:00
Daniel Wagner
a421e99648 request hfxo 2026-03-30 15:37:29 +01:00
Sam
6f4722a964 feat(cli): integrate hardnested attack into autopwn for HardNested vulnerable cards
When autopwn detects a HardNested vulnerable card (nt_level=2) with some known keys,
it now automatically attempts to recover remaining keys using the hardnested attack,
instead of only printing an advisory message. The implementation:

- Iterates over each missing key slot, picking a known key before each attempt
  (allows newly recovered keys to be reused for subsequent targets)
- Invokes hardnested.recover_key() with standard parameters (200 max runs, 3 max attempts)
- After each found key, checks if it is reusable for other sectors
- Falls back to senested attack if hardnested does not recover all keys

This matches the existing behavior for nested and static-encrypted-nested attacks.
2026-03-25 16:30:48 +08:00
Kevin Yuan
9e58461f9a Potential fix: Compare glitch in PWM module 2026-03-24 17:04:18 +00:00
Kevin Yuan
ac859f7531 Add PAC/Stanley LF entry 2026-03-24 15:44:12 +00:00
Kevin Yuan
f5d721bbfd PAC/Stanley CLI: replace --id with --cn/--raw (PM3 parity)
Split the single --id argument into --cn (8 ASCII chars) and --raw
(32 hex char T55XX bitstream, directly compatible with PM3 raw output).
Add Python-side PAC bitstream encoder/decoder for raw format support.
Output now shows CN and Raw labels matching PM3's format.

Add NRF_LOG module registration to pac.c for debug logging,
consistent with other protocol implementations.

Reassign PAC command IDs (3014/3015) to avoid collision with ioProx
(3010/3011) after rebase onto upstream/main.
2026-03-24 15:04:41 +00:00
Kevin Yuan
69327ded7d Clean up PAC/Stanley CLI: remove debug command, accept ASCII IDs, handle unknown tag types gracefully
- Remove lf pac debug command (development-only)
- Accept both 16-hex and 8-ASCII card ID formats with 7-bit validation
- Add T55xx write command under lf pac write
- Handle unknown TagSpecificType values in slot list without crashing
- Auto-initialize slot data when setting tag type
- Simplify pac_write_to_t55xx by removing unused key parameters
2026-03-24 14:41:22 +00:00
Kevin Yuan
ccf4510c1c Improve PAC/Stanley NRZ reader reliability
Three fixes that together bring rapid-fire read reliability from ~20%
to 100%:

- Add MIN_SPIKE_CAP floor (8000) to prevent spike_cap from clipping
  NRZ high when prescan correctly captures NRZ low. Without this,
  spike_cap = raw_min*3 ≈ 2820 collapses the signal range.

- Reorder carrier-before-SAADC in pac_read(): start the 125kHz field
  and wait 10ms before enabling ADC sampling, so prescan calibration
  sees real NRZ signal levels rather than T55XX power-on-reset noise.

- Add auto-recalibration: if no valid frame is found after 20480
  Phase 3 samples (~164ms, ~5 frame periods), reset the decoder to
  Phase 1 and re-calibrate from fresh samples. This gives ~3
  calibration attempts per 500ms scan window instead of just one.

Tested with Proxmark3 sim (15 consecutive rapid-fire reads, 100%) and
T55XX tag (write-read roundtrip + 15x rapid-fire, 100%).
2026-03-24 14:38:46 +00:00
Kevin Yuan
8442bea4c1 Add PAC/Stanley T55XX write support
Add pac_t55xx_writer() for encoding PAC card data into T55XX blocks,
along with the T5577_PAC_CONFIG (NRZ/Direct, RF/32, password-protected,
4 data blocks). Wire DATA_CMD_PAC_WRITE_TO_T55XX (3011) through the
command processor, dispatch table, and Python client.
2026-03-24 14:38:46 +00:00
Kevin Yuan
17ff2abf60 Replace moving average with PM3-style per-sample thresholding and fix integer overflows
Replace the 32-sample moving average + hysteresis demodulation with
Proxmark3-inspired per-sample thresholding and dead zone. This
eliminates ~16 samples of group delay per edge, reducing timing
jitter from ~11 samples to ~2-3 samples.

The new approach:
- Prescan: track raw_min, compute spike_cap (unchanged)
- Warmup: track min/max of clipped samples directly (not averaged)
- Detection: per-sample dead zone classification — sample >= high
  threshold → 1, sample <= low threshold → 0, between → keep
  previous state. Thresholds set at 75% fuzz of signal range.

Removes the avg_buf[32] circular buffer, avg_sum, avg_idx, and
sum-unit threshold/hysteresis state. Struct is 72 bytes smaller.

Widen integer types to prevent overflow UB:
- sample_count: uint16_t -> uint32_t (overflows at 524ms)
- interval, nbits: uint16_t -> uint32_t (matching sample_count width)
2026-03-24 14:38:46 +00:00
Kevin Yuan
2fd1a260cf Add PAC/Stanley LF tag emulation support
Implements NRZ/Direct modulation at RF/32 for PAC/Stanley tag emulation.
The modulator encodes 8-byte ASCII card IDs into 128-bit NRZ frames
(0xFF sync + 12 UART frames) and generates PWM waveforms using constant
output levels (compare=counter_top for HIGH, compare=0 for LOW).

Firmware: modulator in pac.c, load/save/factory callbacks in lf_tag_em,
tag_emulation registration, SET/GET_EMU_ID commands (5006/5007).
CLI: pac_set/get_emu_id methods, 'lf pac econfig' command, hw slot list
display for PAC tags.
2026-03-24 14:38:46 +00:00
Kevin Yuan
c494a2cc81 Add PAC/Stanley LF tag reading support
Implements NRZ/Direct modulation decoder for PAC/Stanley 125kHz cards
using SAADC ADC sampling with spike-aware threshold calibration.
The LC antenna produces brief high-amplitude transients at NRZ transitions
which are clipped before the moving-average filter to isolate the actual
data levels.
2026-03-24 14:37:25 +00:00
taichunmin
c51051b30e Fix firmware application USB serial number 2026-03-24 00:44:36 +08:00
Fauzan Mirza
acb8959117 docs: add nfcimport entry to CHANGELOG
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 23:52:35 +01:00
Fauzan Mirza
193f66acdd feat: add --amiibo flag to hf mfu nfcimport for PWD/PACK derivation
Real NTAG 215 chips never reveal the stored password over NFC, so
Flipper .nfc dumps always have zeros for pages 133-134 (PWD/PACK).
This causes readers to reject the emulated tag when they attempt
PWD_AUTH as part of their amiibo validation flow.

The --amiibo flag derives the correct PWD from the UID using the
well-known XOR algorithm and sets PACK to the standard 0x8080,
enabling proper authentication with Nintendo devices.

Usage: hf mfu nfcimport -f Kirby.nfc -s 6 --amiibo

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 23:52:13 +01:00
Fauzan Mirza
a5847c75ef feat: add Flipper Zero .nfc file importer for MFU/NTAG slots
Add `hf mfu nfcimport` command to import Flipper Zero .nfc files
directly into ChameleonUltra emulator slots. Supports NTAG 210/212/
213/215/216, Mifare Ultralight, Ultralight C, and Ultralight EV1.

The importer parses the Flipper .nfc format and configures the slot
with the correct tag type, anti-collision data (UID/ATQA/SAK),
GET_VERSION response, READ_SIG signature, counter values, and full
page data.

Handles NTAG counter index mapping (Flipper's NFC counter index 2
maps to firmware internal index 0) and gracefully skips unsupported
counters with a warning.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 23:52:13 +01:00
GameTec-live
e5d615d512 Merge pull request #367 from bernadic/feat/ioprox
Some checks failed
Deploy wiki to GitHub Pages with Jekyll / build (push) Failing after 1m18s
Deploy wiki to GitHub Pages with Jekyll / deploy (push) Has been skipped
Push handler / Build Firmware (push) Failing after 59s
Push handler / Create dev pre-release with artifacts (push) Has been skipped
Push handler / Create tagged release with artifacts (push) Has been skipped
feat(lf): add ioProx support (read, emulate, clone)
2026-03-20 18:46:07 +01:00
Jozef Bernadic
e4d70d1417 fix(cmd): resolve ioProx command ID conflict with #362 2026-03-19 08:25:59 +01:00
Jozef Bernadic
76bb091247 docs(changelog): add ioProx entry 2026-03-03 16:58:34 +01:00