Skip to main content

DESFire library for python

Project description

Documentation Status License: MIT GitHub issues GitHub release (latest by date) GitHub top language pre-commit.ci status

Python DESFire

Full documentation is available at read the docs.

The MIFARE DESFire product provides high security RFID key tokens than can be used for contactless identity, access control or payment applications.

This package provides a simple interface of interacting with DESFire chips using pure Python. It currently supports managing keys, applications and file operations, which should cover the majority of use cases. AES-128 is fully supported both, DES/3DES currently only receives limited testing up to the extend that is needed to change the default key and create applications.

Both PC/SC readers as well as the popular PN532 reader (only UART, no SPI or I2C as of today) is supported. Please make sure to install the correct extra dependencies.

Core features:

  • Compatible with all PC/SC readers supported by pyscard or PN532 reader using UART (using pyserial as only additional dependency)
  • Support for AES and ISO authentication (DES, 2K3DES and 3K3DES). No support for legacy authentication.
  • Full crypto support including CMAC and CRC validation on all commands that require it
  • Key management change and create keys on PICC and application leven
  • Application management create and delete applications
  • File management support for standard data files is implemented, other file types are currently not available

Currently, the library has been used and tested with EV1 cards and CSL USB Reader, but other PC/SC compatible readers should work the same. It is also tested using PN532 readers, although I recommend using the Adafruit reader for better compatibility.

[!IMPORTANT] Note that NXP does not release the DESFire documentation to the public, NDA signature is required to obtain this information. The author of this package has not signed this NDA, nor does he have access to the documentation. This package has been created based on other open source work, see the Credits section below for details.

This also means that there is very limited ability to guarantee a correct implementation of all commands. The package has mainly been tested using DES and AES-128 keys. If you encounter any issues, please feel free to raise a ticket and/or submit an MR.

Documentation Sources and Credits

This library would not be possible without other amazing open source contributions that served as source of information when creating this package. Credits go to the creators and maintainers of the following repositories, in no particular order:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_desfire-0.1.2.tar.gz (29.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_desfire-0.1.2-py3-none-any.whl (34.8 kB view details)

Uploaded Python 3

File details

Details for the file python_desfire-0.1.2.tar.gz.

File metadata

  • Download URL: python_desfire-0.1.2.tar.gz
  • Upload date:
  • Size: 29.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for python_desfire-0.1.2.tar.gz
Algorithm Hash digest
SHA256 baa1d085a1f98f450a8df9d7fbe4a9984f4aa28f49454d3e7eabef8fc4569a50
MD5 6235fc14cb1d35f3cb355a2c3c32a5ab
BLAKE2b-256 ffe876c5fcfa71ba0a5750efd96715ec989544233e80453378a55c6fb1b13c30

See more details on using hashes here.

File details

Details for the file python_desfire-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: python_desfire-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 34.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for python_desfire-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0d9fbdb42e6dc02c8ff22afef0ed3514943d9047e01c696c0d9f3b966b3a0bce
MD5 c420960ff141e3fd956fa610547dd62a
BLAKE2b-256 34f35a27527f317595f213aac82feccf2f76b727cf80c1ff6051b3b981deb551

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page