laforge has uploaded this change for review.

View Change

pySim.transport: Add support for generic stdout apdu tracer

Any program using argparse_add_reader_args() will get a new
long-opt '--apdu-trace' which enables a raw APDU trace to the console.

Change-Id: I4bc3d2e023ba360f07f024d7b661a93322f87530
---
M pySim/transport/__init__.py
1 file changed, 11 insertions(+), 0 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/54/38054/1
diff --git a/pySim/transport/__init__.py b/pySim/transport/__init__.py
index 97022ce..856e86e 100644
--- a/pySim/transport/__init__.py
+++ b/pySim/transport/__init__.py
@@ -40,6 +40,12 @@
def trace_response(self, cmd, sw, resp):
pass

+class StdoutApduTracer(ApduTracer):
+ """Minimalistic APDU tracer, printing commands to stdout."""
+ def trace_response(self, cmd, sw, resp):
+ print("-> %s %s" % (cmd[:10], cmd[10:]))
+ print("<- %s: %s" % (sw, resp))
+
class ProactiveHandler(abc.ABC):
"""Abstract base class representing the interface of some code that handles
the proactive commands, as returned by the card in responses to the FETCH
@@ -239,6 +245,8 @@
PcscSimLink.argparse_add_reader_args(arg_parser)
ModemATCommandLink.argparse_add_reader_args(arg_parser)
CalypsoSimLink.argparse_add_reader_args(arg_parser)
+ arg_parser.add_argument('--apdu-trace', action='store_true',
+ help='Trace the command/response APDUs exchanged with the card')

return arg_parser

@@ -247,6 +255,9 @@
"""
Init card reader driver
"""
+ if opts.apdu_trace and not 'apdu_tracer' in kwargs:
+ kwargs['apdu_tracer'] = StdoutApduTracer()
+
if opts.pcsc_dev is not None or opts.pcsc_regex is not None:
from pySim.transport.pcsc import PcscSimLink
sl = PcscSimLink(opts, **kwargs)

To view, visit change 38054. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: newchange
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I4bc3d2e023ba360f07f024d7b661a93322f87530
Gerrit-Change-Number: 38054
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge@osmocom.org>