This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
herlesupreeth gerrit-no-reply at lists.osmocom.orgherlesupreeth has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/16949 )
Change subject: Added support for MSISDN programming plus check for SPN length
......................................................................
Added support for MSISDN programming plus check for SPN length
Change-Id: I4399aa10a266fff0432cddfe33937b8b96ca0758
---
M pySim-prog.py
M pySim-read.py
M pySim/cards.py
3 files changed, 38 insertions(+), 11 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/49/16949/1
diff --git a/pySim-prog.py b/pySim-prog.py
index 739c7b1..14ea11d 100755
--- a/pySim-prog.py
+++ b/pySim-prog.py
@@ -266,21 +266,21 @@
# Digitize MCC/MNC (5 or 6 digits)
plmn_digits = _mcc_mnc_digits(mcc, mnc)
- if opts.name is not None and len(opts.name) > 16:
- raise ValueError('Service Provider Name must max 16 characters!');
+ name = None
+ if opts.name is not None:
+ if len(opts.name) > 16:
+ raise ValueError('Service Provider Name must max 16 characters!');
name = opts.name
- else:
- name = None
+ msisdn = None
if opts.msisdn is not None:
- if not _isnum(opts.msisdn):
- raise ValueError('MSISDN must be digits only!');
if len(opts.msisdn) > 10*2:
- # Need to support MSISDN of length > 20
+ # ToDo: Support MSISDN of length > 20 (10 Bytes)
raise ValueError('For now support for MSISDN of length <= 20 digits!');
+ if (len(opts.msisdn) % 2) != 0:
+ # ToDo: Support odd number of MSISDN digits
+ raise ValueError('For now support for only even number of MSISDN digits!');
msisdn = opts.msisdn
- else:
- msisdn = None
# ICCID (19 digits, E.118), though some phase1 vendors use 20 :(
if opts.iccid is not None:
diff --git a/pySim-read.py b/pySim-read.py
index 9e3d2f0..ff27b90 100755
--- a/pySim-read.py
+++ b/pySim-read.py
@@ -208,10 +208,14 @@
try:
# print(scc.record_size(['3f00', '7f10', '6f40']))
(res, sw) = scc.read_record(['3f00', '7f10', '6f40'], 1)
+ #print res
if sw == '9000':
x_bytes = (len(res)/2) - 14
+ #print res[(x_bytes * 2):]
bcd_len = res[(x_bytes * 2):(x_bytes * 2) + 2]
+ #print bcd_len
ton_npi = res[(x_bytes * 2) + 2:(x_bytes * 2) + 4]
+ #print ton_npi
dial_num = res[(x_bytes * 2) + 4:(x_bytes * 2) + 24]
# Refer 3GPP TS 24.008 Called party BCD number information element
print("MSISDN: %s" % (swap_nibbles(dial_num).rstrip('f')))
diff --git a/pySim/cards.py b/pySim/cards.py
index ff9c9b1..a7aa72c 100644
--- a/pySim/cards.py
+++ b/pySim/cards.py
@@ -588,8 +588,9 @@
data, sw = self._scc.update_binary('00F7', content)
# set Service Provider Name
- content = enc_spn(p['name'], True, True)
- data, sw = self._scc.update_binary('6F46', rpad(content, 32))
+ if p.get('name') is not None:
+ content = enc_spn(p['name'], True, True)
+ data, sw = self._scc.update_binary('6F46', rpad(content, 32))
# write EF.IMSI
data, sw = self._scc.update_binary('6f07', enc_imsi(p['imsi']))
@@ -628,6 +629,28 @@
r = self._scc.select_file(['3f00', '7f10'])
data, sw = self._scc.update_record('6f42', 1, lpad(p['smsp'], 104), force_len=True)
+ # EF.MSISDN
+ if p.get('msisdn') is not None:
+ msisdn = p['msisdn']
+ ton = "81"
+ if msisdn[0] == '+':
+ ton = "91"
+ msisdn = msisdn[1:]
+ l = -1
+ if not (msisdn.isdigit() and ((l== -1) or (len(msisdn) == l))):
+ raise ValueError('MSISDN must be digits only!\n \
+ Start with \'+\' for international numbers')
+ even_dig = ((len(msisdn) % 2) == 0)
+ if even_dig:
+ msisdn = '%02d' % ((len(msisdn)/2)+1,) + ton + swap_nibbles(rpad(msisdn, 24))
+ else:
+ raise ValueError('MSISDN with even number of digits are supported for now!')
+
+ msisdn = (('ff' * 20) + msisdn)
+
+ r = self._scc.select_file(['3f00', '7f10'])
+ data, sw = self._scc.update_record('6F40', 1, msisdn, force_len=True)
+
def erase(self):
return
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/16949
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I4399aa10a266fff0432cddfe33937b8b96ca0758
Gerrit-Change-Number: 16949
Gerrit-PatchSet: 1
Gerrit-Owner: herlesupreeth <herlesupreeth at gmail.com>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200120/51b06083/attachment.htm>