From e707a2fe0b3d165ccc87d18252ecaaed10b53f8a Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 13 Jul 2024 16:52:51 +0200 Subject: [PATCH] WIP Change-Id: If7a0d6fb5e0a823530a1e24062712615fc414ce5 --- pySim/sms.py | 7 +++++++ tests/unittests/test_ota.py | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/pySim/sms.py b/pySim/sms.py index aefc8746..7ce5a300 100644 --- a/pySim/sms.py +++ b/pySim/sms.py @@ -30,6 +30,13 @@ from smpp.pdu import pdu_types, operations BytesOrHex = typing.Union[Hexstr, bytes] +# 07 +# 00 03 000201 # part 01 of 02 in reference 00 +# 70 00 + +# 05 +# 00 03 000202 + class UserDataHeader: # a single IE in the user data header ie_c = Struct('iei'/Int8ub, 'length'/Int8ub, 'value'/Bytes(this.length)) diff --git a/tests/unittests/test_ota.py b/tests/unittests/test_ota.py index fcbf3049..8cb85c00 100644 --- a/tests/unittests/test_ota.py +++ b/tests/unittests/test_ota.py @@ -74,6 +74,27 @@ class Test_SMS_AES128(unittest.TestCase): self.assertEqual(b2h(dec_tar), b2h(self.tar)) self.assertEqual(dec_spi, spi) + def test_open_channel(self): + spi = self.spi_base + tpdu = h2b('40048111227ff6407070611535007e070003000201700000781516011212000001ccda206e8b0d46304247bf00bfdc9853eed2a826f9af8dc7c2974ce2cb9bb55cc1a8577e047cc8f5d450380ba86b25354fe69f58884f671d7ace0c911f7c74830dc1d58b62cce4934568697ba1f577eecbca26c5dbfa32b0e2f0877948a9fb46a122e4214947386f467de11c') + #'40048111227ff6407070611535000a0500030002027b6abed3' + submit = SMS_DELIVER.from_bytes(tpdu) + submit.tp_udhi = True + print(submit) + #print("UD: %s" % b2h(submit.tp_ud)) + #print("len(UD)=%u, UDL=%u" % (len(submit.tp_ud), submit.tp_udl)) + udhd, data = UserDataHeader.from_bytes(submit.tp_ud) + print("UDHD: %s" % udhd) + print("DATA: %s" % b2h(data)) + tpdu2 = h2b('40048111227ff6407070611535000a0500030002027b6abed3') + submit2 = SMS_DELIVER.from_bytes(tpdu2) + print(submit2) + udhd2, data2 = UserDataHeader.from_bytes(submit2.tp_ud) + print("UDHD: %s" % udhd2) + print("DATA: %s" % b2h(data2)) + dec_tar, dec_spi, dec_apdu = self.dialect.decode_cmd(self.od, data + data2) + print(dec_apdu) + class Test_SMS_3DES(unittest.TestCase): tar = h2b('b00000')