Local fork of Henryk Ploetz' smardcard shell
Go to file
Henryk Plötz d073fc662e Implement the card request loop in connect() in the Smartcard_Reader base class and move all the gory details into _internal_connect to be implemented in the subclasses 2010-02-27 15:37:19 +01:00
cards Initial and very minimal support for ISO 14443-4 over PN532 over ISO 7816-3 T=0 on the ACR122 firmware 1.x 2010-02-26 02:27:26 +01:00
gui Add VRS application and GUI (Public transport in Koeln and Bonn) 2010-02-24 02:57:44 +01:00
COPYING Licensed under GPL-2 or above 2006-07-12 05:20:49 +00:00
README added lifecycle commands to CardOS 2008-03-10 22:54:53 +00:00
TLV_utils.py More useful OID display for the case when the exact OID is not known 2007-06-10 00:01:53 +00:00
brutefid.py + Make brutefid more gracefully accept card errors (common with my RFID reader) 2010-02-24 02:47:04 +01:00
crypto_utils.py There doesn't seem to be RC5/IDEA (any more? only in my copy?) 2010-02-26 02:27:26 +01:00
cyberflex-shell.e3p + Update E3 project file 2010-02-24 02:59:13 +01:00
cyberflex-shell.py Move all PC/SC specific stuff to a separate class structure for readers (thus preparing the way for non-PC/SC-readers) 2010-02-26 02:27:26 +01:00
fingerpass.py fix for non-rfid 2007-06-16 07:25:51 +00:00
fingerprints.txt git-svn-id: svn+ssh://localhost/home/henryk/svn/cyberflex-shell/trunk@260 f711b948-2313-0410-aaa9-d29f33439f0b 2008-06-10 03:31:30 +00:00
oids.txt Add tons of OIDs from the BSI eID specs 2010-02-24 02:48:41 +01:00
parse-usbsnoop.py Simple tool to parse usbsnoop-logs 2007-01-17 09:15:37 +00:00
pycsc-0.0.3_new-pcsc.patch Fixed transmit for 64bit systems 2007-02-10 02:08:31 +00:00
readers.py Implement the card request loop in connect() in the Smartcard_Reader base class and move all the gory details into _internal_connect to be implemented in the subclasses 2010-02-27 15:37:19 +01:00
readpass.py Enhance GUI, can now enter MRZ information and read new passport from GUI 2007-11-14 14:04:32 +00:00
shell.py Get working under Windows with http://cheeseshop.python.org/pypi/PyCSC/0.3 (with Python 2.5 for Windows) 2007-05-08 09:23:25 +00:00
tlvdecoder.py TLV_utils.decode as external tool 2006-06-14 09:11:46 +00:00
utils.py Move all PC/SC specific stuff to a separate class structure for readers (thus preparing the way for non-PC/SC-readers) 2010-02-26 02:27:26 +01:00

README

This is a simple smartcard shell that has evolved from a more convenient way
to enter APDUs (compare: pcsc-tools scriptor) through a tool to open a secure
channel to a cyberflex card (hence the name) to a more generic tool to act
on smart-cards.

It is written in Python (you might need 2.4 or up) and needs pycsc 0.3 (or up)
to communicate with the smart card terminal (with PC/SC, e.g. pcsc-lite).
You can get pycsc from http://homepage.mac.com/jlgiraud/pycsc/Pycsc.html

NOTE: pycsc might not compile out of the box with current pcsc-lite (e.g. 
1.3.*). You should use the included pycsc-0.0.3_new-pcsc.patch in that
case.

You will also need the Crypto module for cryptography support, see 
http://www.amk.ca/python/code/crypto.html

For Passive Authentication of MRTDs (Passports with BAC) M2Crypto is used, see
http://wiki.osafoundation.org/bin/view/Projects/MeTooCrypto
which in turn requires openssl
http://www.openssl.org
and swig
http://www.swig.org

The shell has only been tested on a Linux system but should be platform
independent, if you have Python, PC/SC and pycsc for your target platform.
I am however unable to give support for any platform but Linux. 

Some of the shell functionality (history, tab-completion, etc.) is
provided by python's readline module which is not available for all 
platforms, IIRC.


INSTRUCTIONS:
Simply start cyberflex-shell.py. You may also call it with parameter -l
to list all detected readers or parameter -r to select one of the readers.
Within the shell you may enter APDUs (in hex, case ignored, white space 
ignored) and press enter to send them and see the response.

Use the commands connect, disconnect or reconnect to open, close or open-
and-close the connection to a smart-card. This is especially helpful when
you want to change the card without exiting from the shell.

For some card types there are card drivers provided in the cards/ directory,
and the shell will try to automatically load the right driver(s). (I made 
the story rather complicated, see cards/__init__.py.) 
You should be able to load and unload drivers using the driver_load and 
driver_unload commands at will, but that is a new and experimental feature.

Most card drivers provide additional commands to simplify working with
the card in question. Use the help command to see the set of currently
available commands.

Note that this is an educational tool and not for security purposes. All
commands are written to the shell history (${HOME}/.cyberflex-shell.history)
so be aware that your PINs and other sensitive data might end up on your 
hard-disk.

Have fun
  -- Henryk Pl<50>tz <henryk@ploetzli.ch>, July 2006