Change in ...pysim[master]: pySim-prog: use functions to derive MCC/MNC from IMSI

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/.

dexter gerrit-no-reply at lists.osmocom.org
Thu Sep 12 11:09:20 UTC 2019


dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/15497


Change subject: pySim-prog: use functions to derive MCC/MNC from IMSI
......................................................................

pySim-prog: use functions to derive MCC/MNC from IMSI

In case the MCC/MNC are not supplied with a CSV file we cut out the
missing values from the IMSI string. Lets use a function to do this and
also check the input parameters.

Change-Id: I98e5bf8f9ff2a852efb190cc789edf42c5075bf8
---
M pySim-prog.py
M pySim/utils.py
2 files changed, 31 insertions(+), 2 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/97/15497/1

diff --git a/pySim-prog.py b/pySim-prog.py
index 57a24d4..974dbd1 100755
--- a/pySim-prog.py
+++ b/pySim-prog.py
@@ -43,6 +43,7 @@
 from pySim.utils import h2b, swap_nibbles, rpad, derive_milenage_opc, calculate_luhn, dec_iccid
 from pySim.ts_51_011 import EF
 from pySim.card_handler import *
+from pySim.utils import *
 
 def parse_options():
 
@@ -479,8 +480,9 @@
 def read_params_csv(opts, imsi=None, iccid=None):
 	row = _read_params_csv(opts, iccid=iccid, imsi=imsi)
 	if row is not None:
-		row['mcc'] = row.get('mcc', row['imsi'][0:3])
-		row['mnc'] = row.get('mnc', row['imsi'][3:5])
+		row['mcc'] = row.get('mcc', mcc_from_imsi(row.get('imsi')))
+		row['mnc'] = row.get('mnc', mnc_from_imsi(row.get('imsi')))
+
 		pin_adm = None
 		# We need to escape the pin_adm we get from the csv
 		if 'pin_adm' in row:
diff --git a/pySim/utils.py b/pySim/utils.py
index 65f10c5..09d4f86 100644
--- a/pySim/utils.py
+++ b/pySim/utils.py
@@ -206,3 +206,30 @@
 	num = map(int, str(cc))
 	check_digit = 10 - sum(num[-2::-2] + [sum(divmod(d * 2, 10)) for d in num[::-2]]) % 10
 	return 0 if check_digit == 10 else check_digit
+
+def mcc_from_imsi(imsi):
+        """
+        Derive the MCC (Mobile Country Code) from the first three digits of an IMSI
+        """
+	if imsi == None:
+		return None
+
+        if len(imsi) > 3:
+                return imsi[:3]
+        else:
+                return None
+
+def mnc_from_imsi(imsi, long=False):
+        """
+        Derive the MNC (Mobile Country Code) from the 4th to 6th digit of an IMSI
+        """
+	if imsi == None:
+		return None
+
+        if len(imsi) > 3:
+                if long:
+                        return imsi[3:6]
+                else:
+                        return imsi[3:5]
+        else:
+                return None

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

Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I98e5bf8f9ff2a852efb190cc789edf42c5075bf8
Gerrit-Change-Number: 15497
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190912/f42e54e1/attachment.htm>


More information about the gerrit-log mailing list