Skip to content

NFC: Add ASK CTx poller - #4455

Open
kormax wants to merge 2 commits into
flipperdevices:devfrom
kormax:feature/askctx-poller
Open

kormax wants to merge 2 commits into
flipperdevices:devfrom
kormax:feature/askctx-poller

Conversation

@kormax

@kormax kormax commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

What's new

Summary

Adds support for detecting and dumping contactless cards and tickets that utilize the ASK CTx protocol.

Such tags were commonly used in France and some other European countries, with some modern installations utilizing this technology in Latin America, such as in Mexico. Examples of such tags can be seen in the image below:

ASKCTx

The ASK CTx protocol is based on the ISO14443-B analog layer, but has differences in data framing (different SOF/EOF handling) and a unique command format, making it incompatible with the default ISO14443-B poller.

Motivation

Even though the ASK CTx protocol has been losing ground to ST25TB and MFU, it is still being used in some locations, hence why adding support for this protocol helps to expand coverage of NFC tag technologies that Flipper Zero can support.

Details

To support this feature, the following changes were made:

  • Add an ASK CTx NFC protocol with detection and activation using REQT and SELECT_ALL commands where applicable.
  • Add memory dumping for CTS256B, CTS512B and CTM512B tags using the respective READ command.
  • Add NFC app support for reading and saving tags, displaying their UID, product code, fab code, and memory contents.
  • Add NFC CLI dump support for the protocol under the askctx identifier.

Notes

This change focuses on the poller side only for now, with writing and emulation omitted due to the following reasons:

  • Reduce concerns about firmware memory & RAM footprint;
  • At the current moment, I am unable to test emulation against real readers, so offering this functionality without any functional guarantees could mislead users into relying on it.

References

The ASK CTx implementation is based on prior work in:

Verification

The demo below uses an ASK CTS512B tag, but the same steps have also been verified for ASK CTS256B and ASK CTM512B tags.

NFC App

  1. Open NFC -> Read;
  2. Hold an ASK CTx tag near the Flipper;
  3. See the target being detected as ASK CTx, and the result shows the card's UID, Product Code and Fab Code:
    AskCtxDetected
  4. Press More -> Info;
  5. View the dumped block data:
    AskCtxInfo
  6. Go back, press Save, confirm;
  7. Open saved entry, click Info;
  8. See saved info:
    SavedInfo

NFC CLI

A) Autodetection:

[nfc]>: dump
Protocols detected: ASK CTx
Dumping as "ASK CTx"
Dump saved to '/ext/nfc/dump-20260929-163015.nfc'

B) Manual selection of the protocol

[nfc]>: dump -p askctx
Dumping as "ASK CTx"
Dump saved to '/ext/nfc/dump-20260929-163820.nfc'

Author checklist (Fill this out)

  • I've read the contribution guidelines and my PR follows them.
  • I own the code I'm submitting or have code owner's permission (or code license allows redistribution) to submit it.
  • I have performed a self-review of my own code.
  • I have commented my code, particularly in hard-to-understand areas.

AI usage disclosure (Fill this out)

Partially AI assisted:

  • UI files
  • Created scaffolding for NFC/header files
  • Aligning the dumper implementation with existing NFC protocols
  • Final code audit
  • Grammar check for code and PR description

Reviewer Checklist (Don't fill this out, and don't remove it from the template)

  • PR has description of feature/bug or link to GitHub Project task.
  • Description contains actions to verify feature/bugfix.
  • I've built this code, uploaded it to the device and verified feature/bugfix.

@kormax
kormax force-pushed the feature/askctx-poller branch from 6d16cfe to c72ccb0 Compare October 28, 2026 22:33

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant