Skip to main content

EMV Smartcard Protocol Library

Project description

EMV for Python

Tests

A Pythonic implementation of the EMV smartcard protocol, which is used worldwide for chip-and-PIN payments. This is intended to be readable, tested, and heavily cross-referenced with the appropriate sections of the EMV Specification.

This also includes an implementation of the EMV CAP (aka Pinsentry) standard which is known to work for Barclays cards.

Installation

You'll need the pcsc smartcard libraries on your system in order to build the smartcard bindings. On Ubuntu:

sudo apt-get install build-essential swig libpcsclite-dev python-pip python-devel

Then you can install emv from pip:

sudo pip install emv

To check if everything's working, plug in a smartcard reader, put a bank card in, and run:

emvtool info

If all goes well, you should see some data about your card.

Warning

Although this tool has been relatively well tested, it's technically possible to block or even damage your card, as well as get in trouble with your card issuer, using this tool. Please make sure you understand the risks.

Commands marked in the --help output with [!] will initiate a transaction on the card, resulting in a permanent change to the card's internal state which could potentially be detected by your card issuer, particularly if you initiate many transactions.

Command Line

This library ships with emvtool - a simple command-line tool for testing and CAP password generation. To fetch some card metadata, run:

emvtool info

If you have more than one smartcard reader (or smartcard-like devices, such as a YubiKey) connected, you may have to select a specific reader. List all the readers with:

emvtool readers

Then use the -r option to select the specific reader ID, e.g.:

emvtool -r 1 info

To generate an EMV CAP one-time passcode:

emvtool -p <PIN> cap

You can also conduct CAP signing and challenge-response:

emvtool -p <PIN> cap -c <challenge>
emvtool -p <PIN> cap -c <accountno> -a <amount>

Legal Stuff

EMV is a trademark of EMVCo and is used purely for descriptive purposes. This library is not affiliated with EMVCo.

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

emv-1.0.14.tar.gz (21.0 kB view details)

Uploaded Source

Built Distribution

emv-1.0.14-py3-none-any.whl (23.9 kB view details)

Uploaded Python 3

File details

Details for the file emv-1.0.14.tar.gz.

File metadata

  • Download URL: emv-1.0.14.tar.gz
  • Upload date:
  • Size: 21.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0

File hashes

Hashes for emv-1.0.14.tar.gz
Algorithm Hash digest
SHA256 e44bd0fbc4696d6b2f14de5e5ce2062de62861152d816276691bae5546a23632
MD5 de687c4d2f9663f0fcdd4e6e03fcbc91
BLAKE2b-256 aa15e6a9f1357ba40a768c45714c959e1e3985e6af063bde151fd3974ff60e22

See more details on using hashes here.

File details

Details for the file emv-1.0.14-py3-none-any.whl.

File metadata

  • Download URL: emv-1.0.14-py3-none-any.whl
  • Upload date:
  • Size: 23.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0

File hashes

Hashes for emv-1.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 354533d9cb35ac3b658d5372292f3bd2b9246cc68dad3591e094b3bade933ac1
MD5 eb54b6eb3a6a0ee5aca412da8b2ccf0e
BLAKE2b-256 1e67bb6b387ef6d8c50ae002a9275bea7b3ac37d93b6229ef72bacf15e6142d8

See more details on using hashes here.

Supported by

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