More instructions, and pycsc patch
git-svn-id: svn+ssh://localhost/home/henryk/svn/cyberflex-shell/trunk@99 f711b948-2313-0410-aaa9-d29f33439f0b
This commit is contained in:
parent
6fa60ca512
commit
4280fb0731
47
README
47
README
|
@ -1,8 +1,49 @@
|
||||||
This is a simple smartcard shell that has evolved from a more convenient way
|
This is a simple smartcard shell that has evolved from a more convenient way
|
||||||
to enter APDUs (compare: pcsc-tool scriptor) through a tool to open a secure
|
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
|
channel to a cyberflex card (hence the name) to a more generic tool to act
|
||||||
on smart-cards.
|
on smart-cards.
|
||||||
|
|
||||||
It is written in Python (you might need 2.4 or up) and needs pycsc to
|
It is written in Python (you might need 2.4 or up) and needs pycsc 0.3 (or up)
|
||||||
communicate with the smart card terminal (with PC/SC, e.g. pcsc-lite).
|
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
|
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.
|
||||||
|
|
||||||
|
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ötz <henryk@ploetzli.ch>, July 2006
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
diff -u pycsc-0.0.3_/pycsc.c pycsc-0.0.3/pycsc.c
|
||||||
|
--- pycsc-0.0.3_/pycsc.c 2004-06-21 02:54:29.000000000 +0200
|
||||||
|
+++ pycsc-0.0.3/pycsc.c 2006-05-03 04:51:51.000000000 +0200
|
||||||
|
@@ -23,7 +23,7 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Internal tool */
|
||||||
|
-static LONG getReaderList(SCARDCONTEXT hContext, LPSTR* pmszReaders,
|
||||||
|
+static LONG getReaderList(SCARDCONTEXT hContext, LPTSTR* pmszReaders,
|
||||||
|
DWORD *pdwReaders);
|
||||||
|
|
||||||
|
#ifdef _WINDOWS_
|
||||||
|
@@ -256,14 +256,14 @@
|
||||||
|
BYTE pbAtr[MAX_ATR_SIZE];
|
||||||
|
DWORD dwAtrLen, dwProt=0, dwState=0;
|
||||||
|
DWORD dwReaderLen;
|
||||||
|
- LPSTR pcReaders;
|
||||||
|
+ LPTSTR pcReaders;
|
||||||
|
LONG rv;
|
||||||
|
PyObject *ret_value;
|
||||||
|
|
||||||
|
dwReaderLen = 10000;
|
||||||
|
dwAtrLen = 0;
|
||||||
|
/* Dry run to get the length of the reader name */
|
||||||
|
- rv = SCardStatus( object->hCard, (LPSTR) NULL, &dwReaderLen,
|
||||||
|
+ rv = SCardStatus( object->hCard, (LPTSTR) NULL, &dwReaderLen,
|
||||||
|
&dwState, &dwProt, NULL, &dwAtrLen );
|
||||||
|
|
||||||
|
if ( rv != SCARD_S_SUCCESS )
|
||||||
|
@@ -499,8 +499,8 @@
|
||||||
|
static PyObject * pycscobject_pycsc(PyObject *self, PyObject * args, PyObject *keywds)
|
||||||
|
{
|
||||||
|
/* No reader name in args, connect to the first reader */
|
||||||
|
- LPSTR mszReaders = NULL;
|
||||||
|
- LPSTR szRequestedReader = "";
|
||||||
|
+ LPTSTR mszReaders = NULL;
|
||||||
|
+ LPTSTR szRequestedReader = "";
|
||||||
|
DWORD dwReaders;
|
||||||
|
DWORD dwMode = SCARD_SHARE_SHARED;
|
||||||
|
DWORD eProtocol; /* effective protocol */
|
||||||
|
@@ -611,8 +611,8 @@
|
||||||
|
static PyObject * pycscobject_listReader(PyObject *self, PyObject * args)
|
||||||
|
{
|
||||||
|
SCARDCONTEXT hContext;
|
||||||
|
- LPSTR mszReaders = NULL;
|
||||||
|
- LPSTR mszReadersScan;
|
||||||
|
+ LPTSTR mszReaders = NULL;
|
||||||
|
+ LPTSTR mszReadersScan;
|
||||||
|
DWORD dwReaders;
|
||||||
|
LONG rv;
|
||||||
|
|
||||||
|
@@ -941,10 +941,10 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Internal tool */
|
||||||
|
-static LONG getReaderList(SCARDCONTEXT hContext, LPSTR* pmszReaders, DWORD *pdwReaders)
|
||||||
|
+static LONG getReaderList(SCARDCONTEXT hContext, LPTSTR* pmszReaders, DWORD *pdwReaders)
|
||||||
|
{
|
||||||
|
- LPCSTR mszGroups = 0;
|
||||||
|
- LPSTR mszReaders = NULL;
|
||||||
|
+ LPCTSTR mszGroups = 0;
|
||||||
|
+ LPTSTR mszReaders = NULL;
|
||||||
|
LONG dwReaders;
|
||||||
|
LONG rv;
|
||||||
|
|
||||||
|
diff -u pycsc-0.0.3_/setup.py pycsc-0.0.3/setup.py
|
||||||
|
--- pycsc-0.0.3_/setup.py 2004-01-19 17:09:32.000000000 +0100
|
||||||
|
+++ pycsc-0.0.3/setup.py 2006-05-03 04:48:34.000000000 +0200
|
||||||
|
@@ -31,7 +31,7 @@
|
||||||
|
include = []
|
||||||
|
else:
|
||||||
|
libs = ["pcsclite"]
|
||||||
|
- include = ["/usr/include/pcsc"]
|
||||||
|
+ include = ["/usr/include/PCSC"]
|
||||||
|
|
||||||
|
|
||||||
|
setup(name="pycsc", version="0.3",
|
Loading…
Reference in New Issue