From 34b05d3707cc06c7ef44d4aa1d3631aee33dc5a9 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Tue, 25 May 2021 22:03:13 +0200 Subject: [PATCH] shell: Add 'status' command to issue STATUS APDU This can be used to get the FCP of the currently selected file. Change-Id: I65c97adadd831ca2daa5a0dbb52a37999f8514fd --- pySim-shell.py | 5 +++++ pySim/commands.py | 4 ++++ pySim/filesystem.py | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/pySim-shell.py b/pySim-shell.py index 0069661c..edd8112a 100755 --- a/pySim-shell.py +++ b/pySim-shell.py @@ -443,6 +443,11 @@ class Iso7816Commands(CommandSet): """Close a logical channel.""" (data, sw) = self._cmd.card._scc.manage_channel(mode='close', lchan_nr=opts.chan_nr) + def do_status(self, opts): + """Perform the STATUS command.""" + fcp_dec = self._cmd.rs.status() + self._cmd.poutput_json(fcp_dec) + option_parser = argparse.ArgumentParser(prog='pySim-shell', description='interactive SIM card shell', formatter_class=argparse.ArgumentDefaultsHelpFormatter) diff --git a/pySim/commands.py b/pySim/commands.py index 689cbeab..4640fe13 100644 --- a/pySim/commands.py +++ b/pySim/commands.py @@ -359,6 +359,10 @@ class SimCardCommands(object): ret = {'successful_3g_authentication': data} return (ret, sw) + def status(self): + """Execute a STATUS command as per TS 102 221 Section 11.1.2.""" + return self._tp.send_apdu_checksw('80F20000ff') + def deactivate_file(self): """Execute DECATIVATE FILE command as per TS 102 221 Section 11.1.14.""" return self._tp.send_apdu_constr_checksw(self.cla_byte, '04', '00', '00', None, None, None) diff --git a/pySim/filesystem.py b/pySim/filesystem.py index 8cdb23e9..aaf333be 100644 --- a/pySim/filesystem.py +++ b/pySim/filesystem.py @@ -1145,6 +1145,11 @@ class RuntimeState(object): return select_resp + def status(self): + """Request STATUS (current selected file FCP) from card.""" + (data, sw) = self.card._scc.status() + return self.selected_file.decode_select_response(data) + def read_binary(self, length:int=None, offset:int=0): """Read [part of] a transparent EF binary data.