laforge has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/pysim/+/28965 )


Change subject: pySim-shell: Use pySim.cat definitions to print decoded 
proactive cmds
......................................................................

pySim-shell: Use pySim.cat definitions to print decoded proactive cmds

Register a ProactiveHandler with pySim.transport and call the decoder
from pySim.cat to print a decoded version:

Example usage (exact data only works on my specific card due to the
encrpyted payload):

pySIM-shell (MF/ADF.USIM)> envelope_sms 
400881214365877ff6227052000000000302700000201506393535b000118dd46f4ad6b015922f62292350d60af4af191adcbbc35cf4
FETCH: 
d0378103011300820281838b2c410008812143658700f621027100001c12b000119660ebdb81be189b5e4389e9e7ab2bc0954f963ad869ed7c
SendShortMessage(CommandDetails({'command_number': 1, 'type_of_command': 19, 
'command_qualifier': 0}),DeviceIdentities({'source_dev_id': 'uicc', 
'dest_dev_id': 'network'}),SMS_TPDU({'tpdu': 
'410008812143658700f621027100001c12b000119660ebdb81be189b5e4389e9e7ab2bc0954f963ad869ed7c'}))
SW: 9000, data: 
d0378103011300820281838b2c410008812143658700f621027100001c12b000119660ebdb81be189b5e4389e9e7ab2bc0954f963ad869ed7c

Change-Id: Ia4cdf06a44f46184d0da318bdf67077bc8ac9a1a
---
M pySim-shell.py
1 file changed, 17 insertions(+), 4 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/65/28965/1

diff --git a/pySim-shell.py b/pySim-shell.py
index ce6efb8..41f6685 100755
--- a/pySim-shell.py
+++ b/pySim-shell.py
@@ -2,7 +2,7 @@
 
 # Interactive shell for working with SIM / UICC / USIM / ISIM cards
 #
-# (C) 2021 by Harald Welte <[email protected]>
+# (C) 2021-2022 by Harald Welte <[email protected]>
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -32,12 +32,14 @@
 from pathlib import Path
 from io import StringIO

+from pprint import pprint as pp
+
 from pySim.exceptions import *
 from pySim.commands import SimCardCommands
-from pySim.transport import init_reader, ApduTracer, argparse_add_reader_args
+from pySim.transport import init_reader, ApduTracer, argparse_add_reader_args, 
ProactiveHandler
 from pySim.cards import card_detect, SimCard
 from pySim.utils import h2b, swap_nibbles, rpad, b2h, JsonEncoder, 
bertlv_parse_one, sw_match
-from pySim.utils import sanitize_pin_adm, tabulate_str_list, boxed_heading_str
+from pySim.utils import sanitize_pin_adm, tabulate_str_list, 
boxed_heading_str, Hexstr
 from pySim.card_handler import CardHandler, CardHandlerAuto

 from pySim.filesystem import RuntimeState, CardDF, CardADF, CardModel
@@ -49,6 +51,7 @@
 from pySim.ara_m import CardApplicationARAM
 from pySim.global_platform import CardApplicationISD
 from pySim.gsm_r import DF_EIRENE
+from pySim.cat import ProactiveCommand

 # we need to import this module so that the SysmocomSJA2 sub-class of
 # CardModel is created, which will add the ATR-based matching and
@@ -902,6 +905,16 @@
         self._cmd.poutput(
             'Negotiated Duration: %u secs, Token: %s, SW: %s' % (duration, 
token, sw))

+class Proact(ProactiveHandler):
+    def receive_fetch(self, payload: Hexstr):
+        # parse the proactive command
+        pcmd = ProactiveCommand()
+        parsed = pcmd.from_tlv(h2b(payload))
+        # print its parsed representation
+        print(parsed)
+        # TODO: implement the basics, such as SMS Sending, ...
+
+

 option_parser = argparse.ArgumentParser(prog='pySim-shell', 
description='interactive SIM card shell',
                                         
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
@@ -942,7 +955,7 @@
         card_key_provider_register(CardKeyProviderCsv(csv_default))

     # Init card reader driver
-    sl = init_reader(opts)
+    sl = init_reader(opts, proactive_handler = Proact())
     if sl is None:
         exit(1)


--
To view, visit https://gerrit.osmocom.org/c/pysim/+/28965
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Ia4cdf06a44f46184d0da318bdf67077bc8ac9a1a
Gerrit-Change-Number: 28965
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <[email protected]>
Gerrit-MessageType: newchange

Reply via email to