Local fork of Henryk Ploetz' smardcard shell
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hploetz 48a204816c Simple tool to parse usbsnoop-logs 16 years ago
cards New AIDs, name can be None now 16 years ago
COPYING Licensed under GPL-2 or above 17 years ago
README Need crypto module 17 years ago
TLV_utils.py Leave context when encountering a structure that is not application specific or universal 16 years ago
brutefid.py More comfortable interface to brutefid 17 years ago
crypto_utils.py move cipher() to crypto_utils 16 years ago
cyberflex-shell.e3p Simple tool to parse usbsnoop-logs 16 years ago
cyberflex-shell.py Ignore colons in fancy apdus 16 years ago
parse-usbsnoop.py Simple tool to parse usbsnoop-logs 16 years ago
pycsc-0.0.3_new-pcsc.patch More instructions, and pycsc patch 17 years ago
shell.py Separate rc file and main loop 16 years ago
tlvdecoder.py TLV_utils.decode as external tool 17 years ago
utils.py make it possible to print an arbitrary offset 16 years ago


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

You will also need the Crypto module for cryptography support, see

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.

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

Have fun
-- Henryk Pl<span class="broken-code-point">&lt;F6&gt;</span>tz <henryk@ploetzli.ch>, July 2006