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.