Flipper app for reading and emulating generic MIFARE DESFire-compatible cards/fobs, using the native DESFire command set (SelectApplication, Authenticate legacy DES / ISO 3DES / AES, ReadData).
Note: This project is a fork of Eric Betts' excellent seos_compatible Flipper Zero application. We thank bettse and other contributors for laying the groundwork for NFC credential reading and emulation on the Flipper. See also Eric Betts' Seader, a related Flipper credential-reading project. Seader is credited separately from this app's
seos_compatibleancestry.
The app uses an all-zero DES key at the PICC level by default (the
standard DESFire factory default). If you know a card's application AID,
ISO AID, key settings, authentication mode, and keys, save them as a
.dfc credential file (see example.dfc) and place it into
SD Card/apps_data/dfc/. A .dfc file is compiled to the compact binary
encoding when it is loaded; a pre-compiled .dfcb file is also accepted.
- No saved credential: the app uses the all-zero DES key at key 0, PICC
level (AID
00 00 00) for blank-card emulation. - Saved credentials (
.dfcfiles): once a card has been read (or a credential authored by hand from known keys), it's saved with its own AID, key settings, authentication mode, and per-slot keys/files — seeexample.dfc. - Blank credentials: choose Blank Card to emulate a writable blank
DESFire credential. If a reader writes data during emulation, leaving the
emulation screen prompts to save it as a
.dfccredential.
.dfc credentials must use a 7-byte UID beginning with 04.
The app stores bounded DESFire file payloads suitable for Flipper NFC emulation and uses only keys embedded in the selected credential when reading or emulating saved credentials.
DFC is an independent, third-party implementation of the MIFARE DESFire native command protocol. It is not developed, authorized, licensed, or endorsed by NXP Semiconductors. "DESFire" is used here solely to describe protocol compatibility, not to claim affiliation.
No guarantee of compatibility or functionality is made. This implementation may not work with all DESFire-enabled systems, and its performance, security, and reliability are not assured. Users assume all risks associated with its use.
MIFARE and DESFire are trademarks of NXP B.V. This software is not associated with, sponsored by, or endorsed by NXP in any way.
The portable engine is the pinned CinderSocket dfc-core
submodule at lib/core, using git@github.com:cindersocket/dfc-core.git.
Initialize the dependencies after cloning or pulling:
git submodule sync --recursive
git submodule update --init --recursiveThe SSH submodule URLs require GitHub SSH access. For an HTTPS-only checkout, use Git's per-command URL rewrite when initializing the dependencies:
git -c 'url.https://github.com/.insteadOf=git@github.com:' \
submodule update --init --recursiveRun the engine unit suites and compile checks for all supported build profiles:
make -C lib/core/tests test TINY_AES_DIR=../../tiny-AES-c TINY_DES_DIR=../../tiny-DES-cThe explicit paths also work on case-sensitive systems. Build the Flipper
application with an installed ufbt SDK:
ufbtapplication.fam compiles the engine and tiny crypto sources into the app;
port/ supplies the Flipper platform services. Host tests and host platform
implementations are excluded from the firmware build.
The Flipper build uses the full EV1 profile and the pinned tiny AES/DES backends. It retains D40, ISO 3DES and AES authentication, ISO 7816 commands, 2K/4K/8K storage profiles, and standard, backup, value and record files.
The Flipper application is AGPL v3 (AGPL-3.0-only). It inherits that
license from bettse/seos_compatible; inherited code and assets retain their
upstream notices. Original CinderSocket contributions use the same license.
See LICENSE. Seader is credited above as a related project.
The portable lib/core remains GPL-2.0-or-later under
its own license. It does not depend on Flipper firmware.
Its GPL v3 option permits combination with the AGPL v3 application without
changing the core's separate license. The two tiny crypto libraries retain
the Unlicense.
Flipper firmware/SDK code is separately licensed under GPL v3, with component
exceptions. Copied or adapted Flipper code and artwork retain their upstream
licenses and attribution. This application's license does not relicense SDK
components, artwork, logos, or trademarks. The inherited artwork in images/
comes from the official Flipper Zero firmware repository and remains under its
GPL v3 license.
See THIRD_PARTY_NOTICES.md for component notices and upstream sources. Distribute the applicable license texts, notices, and corresponding source for the application and included dependencies with a binary release, including the exact submodule revisions and build instructions.