shell: Add 'status' command to issue STATUS APDU

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

Change-Id: I65c97adadd831ca2daa5a0dbb52a37999f8514fd
diff --git a/pySim-shell.py b/pySim-shell.py
index 0069661..edd8112 100755
--- a/pySim-shell.py
+++ b/pySim-shell.py
@@ -443,6 +443,11 @@
 		"""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 689cbea..4640fe1 100644
--- a/pySim/commands.py
+++ b/pySim/commands.py
@@ -359,6 +359,10 @@
 			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 8cdb23e..aaf333b 100644
--- a/pySim/filesystem.py
+++ b/pySim/filesystem.py
@@ -1145,6 +1145,11 @@
 
         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.