shell: Add 'status' command to issue STATUS APDU

This can be used to get the FCP of the currently selected file.

Change-Id: I65c97adadd831ca2daa5a0dbb52a37999f8514fd
This commit is contained in:
Harald Welte
2021-05-25 22:03:13 +02:00
parent 8dfd6d070f
commit 34b05d3707
3 changed files with 14 additions and 0 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -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.