Commit Graph
922 Commits
Author SHA1 Message Date
kormax 9d7447ddcd Refine Innovatron protocol handling 2026-06-26 23:20:05 +03:00
kormax 1e254bc7a1 Add support for Innovatron protocol to Calypso commands 2026-06-18 22:33:41 +03:00
kormax a881c81ec1 Add support for detecting Innovatron protocol in 'hf 14b info' 2026-06-18 20:26:13 +03:00
kormax da5355ed81 Add support for GetContainerId to 'hf felica sim' 2026-06-13 22:20:45 +03:00
towelbyte c1cefd6e38 Complete and working reimplementation of COTAG support
- "lf cotag reader": now behaves mostly the same as "lf read",
   except it is dedicated for COTAG.
	- It makes sure to send COTAG start sequence and to use
          real time sampling mode to get enough samples.

- "lf cotag demod": Working client-side COTAG demodulation implementation
   (high-low raw demod + Manchester demodulation from high/low demod).
	- Now uses samples directly from g_GraphBuffer
	- Supports 3 types of COTAG preamble (1 active, 2 passive), which
          can start anywhere in the samples.
	- Prints full 128-bits of COTAG tag data in 3 formats: raw,
          groupped by nibbles, and in hex, and identifies and
          prints out the card number.

Signed-off-by: andrej@towelbyte.net
2026-06-12 22:49:06 +02:00
kormax 4ad136b5db Implement 'hf felica sim' command 2026-06-12 18:31:57 +03:00
Philippe Teuwen 184a957436 counterfeit ULC: add support to auth with nonce pairs 2026-06-10 01:02:14 +02:00
Philippe Teuwen 607737e52e counterfeit ULC: need to merge nonce collection in auth logic for proper timings 2026-06-10 00:39:46 +02:00
michael 9a4fcf2140 hf 15 reader: 16-slot anti-collision inventory (--all)
Add ISO 15693 16-slot inventory with anti-collision tree-walking, reachable via 'hf 15 reader --all'; single-tag reading stays the default. The firmware steps the 16 slots with EOF markers and flags 'signal but no decode' slots as collision hints; the client walks the UID mask tree, validates CRC per slot to confirm real collisions, and dedups discovered tags. Single-tag reading (default) and 16-slot inventory (--all) both run under hf 15 reader.
2026-06-08 14:54:00 -07:00
Philippe Teuwen ff04e1ea9a hf mfu cauth: add -c to collect nonces 2026-06-07 22:58:39 +02:00
Philippe Teuwen d078e8a62b make style 2026-05-21 20:54:44 +02:00
Iceman 537f844ce4 Merge pull request #3301 from suut/desfire-ev3c-support__create-mapping
Desfire EV3C Support: create MFC mapping
2026-05-14 18:50:53 +02:00
Iceman d9ed0b310f Merge pull request #3302 from kormax/calypso-improvements
Calypso improvements
2026-05-12 21:53:17 +02:00
kormax d0d562528d Recognize more command codes in 'hf calypso list' 2026-05-12 19:04:02 +03:00
kormax bd5cb11ee7 Add color codes to ansi.h 2026-05-12 18:22:15 +03:00
iceman1001 cbb572afad style 2026-05-11 14:36:17 +02:00
suut 1c258381ef add support for hf mfdes createmfcmapping 2026-05-11 10:54:22 +02:00
Antiklesys abe54994d2 Implemented SC operations 2026-05-11 13:54:49 +08:00
kormax 3da7e52c1a Implement 'hf calypso list' command 2026-05-10 21:18:04 +03:00
kormax 226f049599 Make clearing the trace an explicit flag in FeliCa module 2026-04-25 20:26:44 +03:00
Antiklesys 0ffe244a6b Fix for circular buffer error during hf iclass sim
Issue origin:
Commit 6b7665ed5 "Added live fc/cn update to hf iclass tagsim" added a data_available() poll inside the per-byte DMA loop of GetIso15693CommandFromReader so the ARM could drop out of RF-listen and process live emulator updates.

Before that commit, that tight loop had no USB poll at all — only gotFrame / BUTTON_PRESS / WDT_HIT. Verified via git show 6b7665ed5^:armsrc/iso15693.c.

Why it shows up on sim -t 3/6/7: those are the FULL sim modes that share do_iclass_simulation. Between reader commands the decoder sits in STATE_READER_UNSYNCD, so the gated poll at iso15693.c:1570-1575 fires every byte (reading UDP peripheral registers). With DMA filling at ~1 byte / ~19 µs, the added USB register reads plus jitter occasionally push the CPU past the 90% lag threshold → behindBy 461 with DMA_BUFFER_SIZE=512.

Commit fb8f94fa2 narrowed the gate to UNSYNCD to stop mid-frame exits, but the per-byte poll itself is still what's new on that path.

Fix:

New mode constant in include/iclass_cmd.h:

#define ICLASS_SIM_MODE_FULL_LIVE  8  // FULL + allow USB interrupt for live emul updates
Treat it identically to ICLASS_SIM_MODE_FULL everywhere except for the poll gate.

Add a flag param to GetIso15693CommandFromReader — e.g. bool allow_usb_interrupt in iso15693.c:1495 and iso15693.h:42. Wrap the poll:

if (allow_usb_interrupt &&
    (dr->state == STATE_READER_UNSYNCD ||
     dr->state == STATE_READER_AWAIT_1ST_FALLING_EDGE_OF_SOF) &&
     data_available()) { ... }
Pass true only for live mode in do_iclass_simulation iclass.c:502:

bool live = (simulationMode == ICLASS_SIM_MODE_FULL_LIVE);
len = GetIso15693CommandFromReader(receivedCmd, MAX_FRAME_SIZE, &reader_eof_time, live);
The len == -2 drain block stays but becomes dead code for non-live modes (never returns -2).

Client side: cmdhficlass.c:1687 (CmdHFiClassTagSim) sends ICLASS_SIM_MODE_FULL_LIVE. CmdHFiClassSim -t 3/6/7 keeps sending ICLASS_SIM_MODE_FULL / _GLITCH / _GLITCH_KEY.

Other callers (iso15693.c:2270, iclass.c:1121 = reader-attack sim) pass false.

Result:

hf iclass sim -t 3/6/7 → byte-inner loop is back to its pre-tagsim shape → no blow-buffer abort.
hf iclass tagsim → keeps live update ability; still has the overhead, but that's the trade-off the feature needs.
2026-04-17 03:00:14 +08:00
Iceman fc3dbe56bd Merge pull request #3208 from R4H33M/iclass-page-support
Add --page flag to hf iclass dump
2026-04-13 08:18:07 +07:00
kormax b8c2e2531f Annotate more FeliCa commands with 'hf felica list' 2026-04-12 12:40:20 +03:00
kormax 3eecb97a88 Add system code annotation for 'hf felica info' and 'hf felica rqsyscode' 2026-04-10 20:36:50 +03:00
Raheem Idowu 22dae554c7 hf iclass dump --page support 2026-04-04 17:15:13 -04:00