diff options
authorPhilipp Maier <pmaier@sysmocom.de>2022-05-20 10:49:43 +0200
committerPhilipp Maier <pmaier@sysmocom.de>2022-05-20 11:21:28 +0200
commit0077008963c5d76d0cfed23cfba4d4a5c589b35f (patch)
parentca9dc62e6038af7cd5f238b79d20a4260602a7cb (diff)
pySim-shell: match SW in apdu command
The apdu command has no option to match the resulting SW. Lets add a new option for this. Change-Id: Ic5a52d7cf533c51d111850eb6d8147011a48ae6c
1 files changed, 5 insertions, 1 deletions
diff --git a/pySim-shell.py b/pySim-shell.py
index d1ed506..083594c 100755
--- a/pySim-shell.py
+++ b/pySim-shell.py
@@ -40,7 +40,7 @@ from pySim.exceptions import *
from pySim.commands import SimCardCommands
from pySim.transport import init_reader, ApduTracer, argparse_add_reader_args
from pySim.cards import card_detect, SimCard
-from pySim.utils import h2b, swap_nibbles, rpad, b2h, h2s, JsonEncoder, bertlv_parse_one
+from pySim.utils import h2b, swap_nibbles, rpad, b2h, h2s, JsonEncoder, bertlv_parse_one, sw_match
from pySim.utils import dec_st, sanitize_pin_adm, tabulate_str_list, is_hex, boxed_heading_str
from pySim.card_handler import CardHandler, CardHandlerAuto
@@ -246,6 +246,7 @@ class PysimApp(cmd2.Cmd):
apdu_cmd_parser = argparse.ArgumentParser()
apdu_cmd_parser.add_argument('APDU', type=str, help='APDU as hex string')
+ apdu_cmd_parser.add_argument('--expect_sw', help='expect a specified status word', type=str, default=None)
def do_apdu(self, opts):
@@ -258,6 +259,9 @@ class PysimApp(cmd2.Cmd):
self.poutput("SW: %s, RESP: %s" % (sw, data))
self.poutput("SW: %s" % sw)
+ if opts.expect_sw:
+ if not sw_match(sw, opts.expect_sw):
+ raise SwMatchError(sw, opts.expect_sw)
class InterceptStderr(list):
def __init__(self):