<p>guilly@gmail.com has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/pysim/+/18737">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">utils.py add LOCI EFs decode functions<br><br>The LOCI, PSLOCI and EPSLOCI contain some info,<br> including the PLMN, added helper functions to<br>decode it<br><br>Change-Id: Ibb513ff7d1dc6d33b354ae26cbd9c390ea3c8efc<br>---<br>M pySim/ts_31_102.py<br>M pySim/utils.py<br>2 files changed, 36 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/37/18737/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/pySim/ts_31_102.py b/pySim/ts_31_102.py</span><br><span>index 473e595..215ed4c 100644</span><br><span>--- a/pySim/ts_31_102.py</span><br><span>+++ b/pySim/ts_31_102.py</span><br><span>@@ -137,6 +137,12 @@</span><br><span>       111: 'ePDG configuration Information for Emergency Service configured',</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+LOCI_STATUS_map = {</span><br><span style="color: hsl(120, 100%, 40%);">+ 0:      'updated',</span><br><span style="color: hsl(120, 100%, 40%);">+    1:      'not updated',</span><br><span style="color: hsl(120, 100%, 40%);">+        2:      'plmn not allowed',</span><br><span style="color: hsl(120, 100%, 40%);">+   3:      'locatation area not allowed'</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> EF_USIM_ADF_map = {</span><br><span>      'LI': '6F05',</span><br><span>        'ARR': '6F06',</span><br><span>diff --git a/pySim/utils.py b/pySim/utils.py</span><br><span>index 496b918..2ca6165 100644</span><br><span>--- a/pySim/utils.py</span><br><span>+++ b/pySim/utils.py</span><br><span>@@ -183,6 +183,36 @@</span><br><span>           s += "\t%s # %s\n" % (rec_data, rec_str)</span><br><span>   return s</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+def dec_loci(hexstr):</span><br><span style="color: hsl(120, 100%, 40%);">+   res = {'tmsi': '',  'mcc': 0, 'mnc': 0, 'lac': '', 'status': 0}</span><br><span style="color: hsl(120, 100%, 40%);">+       res['tmsi'] = hexstr[:8]</span><br><span style="color: hsl(120, 100%, 40%);">+      res['mcc'] = dec_mcc_from_plmn(hexstr[8:14])</span><br><span style="color: hsl(120, 100%, 40%);">+  res['mnc'] = dec_mnc_from_plmn(hexstr[8:14])</span><br><span style="color: hsl(120, 100%, 40%);">+  res['lac'] = hexstr[14:18]</span><br><span style="color: hsl(120, 100%, 40%);">+    res['status'] = h2i(hexstr[20:22])</span><br><span style="color: hsl(120, 100%, 40%);">+    return res</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def dec_psloci(hexstr):</span><br><span style="color: hsl(120, 100%, 40%);">+ res = {'p-tmsi': '', 'p-tmsi-sig': '', 'mcc': 0, 'mnc': 0, 'lac': '', 'rac': '', 'status': 0}</span><br><span style="color: hsl(120, 100%, 40%);">+ res['p-tmsi'] = hexstr[:8]</span><br><span style="color: hsl(120, 100%, 40%);">+    res['p-tmsi-sig'] = hexstr[8:14]</span><br><span style="color: hsl(120, 100%, 40%);">+      res['mcc'] = dec_mcc_from_plmn(hexstr[14:20])</span><br><span style="color: hsl(120, 100%, 40%);">+ res['mnc'] = dec_mnc_from_plmn(hexstr[14:20])</span><br><span style="color: hsl(120, 100%, 40%);">+ res['lac'] = hexstr[20:24]</span><br><span style="color: hsl(120, 100%, 40%);">+    res['rac'] = hexstr[24:26]</span><br><span style="color: hsl(120, 100%, 40%);">+    res['status'] = h2i(hexstr[26:28])</span><br><span style="color: hsl(120, 100%, 40%);">+    return res</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def dec_epsloci(hexstr):</span><br><span style="color: hsl(120, 100%, 40%);">+        res = {'guti': '', 'mcc': 0, 'mnc': 0, 'tac': '', 'status': 0}</span><br><span style="color: hsl(120, 100%, 40%);">+        res['guti'] = hexstr[:24]</span><br><span style="color: hsl(120, 100%, 40%);">+     res['tai'] = hexstr[24:34]</span><br><span style="color: hsl(120, 100%, 40%);">+    res['mcc'] = dec_mcc_from_plmn(hexstr[24:30])</span><br><span style="color: hsl(120, 100%, 40%);">+ res['mnc'] = dec_mnc_from_plmn(hexstr[24:30])</span><br><span style="color: hsl(120, 100%, 40%);">+ res['tac'] = hexstr[30:34]</span><br><span style="color: hsl(120, 100%, 40%);">+    res['status'] = h2i(hexstr[34:36])</span><br><span style="color: hsl(120, 100%, 40%);">+    return res</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> def derive_milenage_opc(ki_hex, op_hex):</span><br><span>     """</span><br><span>   Run the milenage algorithm to calculate OPC from Ki and OP</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/pysim/+/18737">change 18737</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/pysim/+/18737"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: pysim </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ibb513ff7d1dc6d33b354ae26cbd9c390ea3c8efc </div>
<div style="display:none"> Gerrit-Change-Number: 18737 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: guilly@gmail.com <guilly@gmail.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>