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>