diff --git a/pySim-shell.py b/pySim-shell.py index f2b3ad27..d08dc215 100755 --- a/pySim-shell.py +++ b/pySim-shell.py @@ -219,18 +219,23 @@ Online manual available at https://downloads.osmocom.org/docs/pysim/master/html/ self.cmd2.poutput("<- %s: %s" % (sw, resp)) def update_prompt(self): + if self.rs and self.rs.adm_verified: + prompt_char = '#' + else: + prompt_char = '>' + if self.lchan: path_str = self.lchan.selected_file.fully_qualified_path_str(not self.numeric_path) scp = self.lchan.scc.scp if scp: - self.prompt = 'pySIM-shell (%s:%02u:%s)> ' % (str(scp), self.lchan.lchan_nr, path_str) + self.prompt = 'pySIM-shell (%s:%02u:%s)%c ' % (str(scp), self.lchan.lchan_nr, path_str, prompt_char) else: - self.prompt = 'pySIM-shell (%02u:%s)> ' % (self.lchan.lchan_nr, path_str) + self.prompt = 'pySIM-shell (%02u:%s)%c ' % (self.lchan.lchan_nr, path_str, prompt_char) else: if self.card: - self.prompt = 'pySIM-shell (no card profile)> ' + self.prompt = 'pySIM-shell (no card profile)%c ' % prompt_char else: - self.prompt = 'pySIM-shell (no card)> ' + self.prompt = 'pySIM-shell (no card)%c ' % prompt_char @cmd2.with_category(CUSTOM_CATEGORY) def do_intro(self, _): @@ -855,6 +860,8 @@ class PySimCommands(CommandSet): self._cmd.lchan.scc.verify_chv(adm_chv_num, h2b(pin_adm)) else: raise ValueError("error: cannot authenticate, no adm-pin!") + self._cmd.rs.adm_verified = True + self._cmd.update_prompt() def do_cardinfo(self, opts): """Display information about the currently inserted card""" diff --git a/pySim/runtime.py b/pySim/runtime.py index 0ee15d03..3e48f751 100644 --- a/pySim/runtime.py +++ b/pySim/runtime.py @@ -53,6 +53,7 @@ class RuntimeState: # this is a dict of card identities which different parts of the code might populate, # typically with something like ICCID, EID, ATR, ... self.identity = {} + self.adm_verified = False # make sure the class and selection control bytes, which are specified # by the card profile are used @@ -139,6 +140,7 @@ class RuntimeState: if lchan_nr == 0: continue del self.lchan[lchan_nr] + self.adm_verified = False atr = i2h(self.card.reset()) if cmd_app: cmd_app.lchan = self.lchan[0]