From 67c0fff15b0da7a00f5bd1cdb0eaa2a1c01359f3 Mon Sep 17 00:00:00 2001 From: Philipp Maier Date: Fri, 22 Nov 2024 12:24:16 +0100 Subject: [PATCH] pySim-shell: change Prompt character to "#" after "verify_adm" Let's change the prompt from ">" to "#" when the user gains admin privilegs using verify_adm. Related: OS#6640 Change-Id: I957b9df7b5069b6fce5bf958c94e8ffda833c77f --- pySim-shell.py | 15 +++++++++++---- pySim/runtime.py | 2 ++ 2 files changed, 13 insertions(+), 4 deletions(-) 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]