pcsc-spy - A PC/SC spy command

NAME  SYNOPSIS  DESCRIPTION  OPTIONS  EXAMPLES  Applications linked with libpcsclite.so.1  Application loading libpcsclite.so.1  Starting the spy tool  FILES  SEE ALSO  AUTHOR 


pcsc−spy − A PC/SC spy command


pcsc-spy [−n|−−nocolor] [−d|−−diffable] [−h|−−help] [−v|−−version] [−t|−−thread] [fifo_filename]


pcsc-spy displays PC/SC calls of an application. It must be used with the libpcscspy.so library.

To be able to spy the PC/SC layer, the application flow must be modified so that all PC/SC calls are redirected. Two options are available:
− the application is linked with libpcsclite.so.1
− the application loads the libpcsclite.so.1 library using dlopen(3)


−d, −−diffable

Remove the variable parts (like handler values) from the output so that two execution can be more easily compared.

−h, −−help

Display a short help text.

−n, −−nocolor

Disable the output colorization (if you want redirect the output in a file for example).

−v, −−version

Print the version of the pcsc-spy program plus a copyright, a list of authors.

−t, −−thread

Add a thread number before each line of log to identify the calls from the same threads.


Applications linked with libpcsclite.so.1

We will use the standard "LD_PRELOAD" loader option to load our spying library.


LD_PRELOAD=/usr/lib/x86_64−linux−gnu/libpcscspy.so pcsc_scan

Application loading libpcsclite.so.1

This is the case for the PC/SC wrappers like pyscard (for Python) and pcsc-perl (for Perl). The LD_PRELOAD mechanism can’t be used. Instead we replace the libpcsclite.so.1 library by the spying one.

You may use install_spy.sh and uninstall_spy.sh to install and uninstall the spying library.

Using the spying library without pcsc-spy is not a problem but has side effects:

− a line "libpcsclite_nospy.so.1: cannot open shared object file: No such file or directory" will be displayed

− some CPU time will be lost because of the PC/SC calls redirection

Starting the spy tool


If a command argument is passed we use it instead of the default ˜/pcsc−spy FIFO file. It is then possible to record an execution log and use pcsc-spy multiple times on the same log.

To create the log file just do:

mkfifo ˜/pcsc−spy
cat ˜/pcsc−spy > logfile

and run your PC/SC application.


˜/pcsc−spy FIFO file is used by libpcsclite.so.1 to send the raw log lines




This manual page was written by Ludovic Rousseau <[email protected]>

Updated 2024-01-29 - jenkler.se | uex.se