Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/aarch64

2018-01-13 Thread OBS Notification
Visit 
https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/aarch64

Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/aarch64

Check out the package for editing:
  osc checkout network:osmocom:nightly osmo-trx

Last lines of build log:
[  431s] case the test suite provides a good starting point.  Its output may
[  431s] be found below `tests/testsuite.dir'.
[  431s] 
[  431s] Makefile:678: recipe for target 'check-local' failed
[  431s] make[4]: *** [check-local] Error 1
[  431s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests'
[  431s] Makefile:538: recipe for target 'check-am' failed
[  431s] make[3]: *** [check-am] Error 2
[  431s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests'
[  431s] Makefile:390: recipe for target 'check-recursive' failed
[  431s] make[2]: *** [check-recursive] Error 1
[  431s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests'
[  431s] Makefile:500: recipe for target 'check-recursive' failed
[  431s] make[1]: *** [check-recursive] Error 1
[  431s] make[1]: Leaving directory '/usr/src/packages/BUILD'
[  431s] dh_auto_test: make -j1 check VERBOSE=1 returned exit code 2
[  431s] debian/rules:6: recipe for target 'build' failed
[  431s] make: *** [build] Error 2
[  431s] dpkg-buildpackage: error: debian/rules build gave error exit status 2
[  431s] 
[  431s] obs-arm-3 failed "build osmo-trx_0.2.0.20180113.dsc" at Sat Jan 13 
20:11:02 UTC 2018.
[  431s] 
[  431s] ### VM INTERACTION START ###
[  434s] [  409.560513] sysrq: SysRq : Power Off
[  434s] [  409.563523] reboot: Power down
[  434s] ### VM INTERACTION END ###
[  434s] 
[  434s] obs-arm-3 failed "build osmo-trx_0.2.0.20180113.dsc" at Sat Jan 13 
20:11:06 UTC 2018.
[  434s] 

-- 
Configure notifications at https://build.opensuse.org/user/notifications
openSUSE Build Service (https://build.opensuse.org/)


Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/i586

2018-01-13 Thread OBS Notification
Visit 
https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/i586

Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/i586

Check out the package for editing:
  osc checkout network:osmocom:nightly osmo-trx

Last lines of build log:
[  211s] You may investigate any problem if you feel able to do so, in which
[  211s] case the test suite provides a good starting point.  Its output may
[  211s] be found below `tests/testsuite.dir'.
[  211s] 
[  211s] Makefile:678: recipe for target 'check-local' failed
[  211s] make[4]: *** [check-local] Error 1
[  211s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests'
[  211s] Makefile:538: recipe for target 'check-am' failed
[  211s] make[3]: *** [check-am] Error 2
[  211s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests'
[  211s] Makefile:390: recipe for target 'check-recursive' failed
[  211s] make[2]: *** [check-recursive] Error 1
[  211s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests'
[  211s] Makefile:500: recipe for target 'check-recursive' failed
[  211s] make[1]: *** [check-recursive] Error 1
[  211s] make[1]: Leaving directory '/usr/src/packages/BUILD'
[  211s] dh_auto_test: make -j1 check VERBOSE=1 returned exit code 2
[  211s] debian/rules:6: recipe for target 'build' failed
[  211s] make: *** [build] Error 2
[  211s] dpkg-buildpackage: error: debian/rules build gave error exit status 2
[  211s] 
[  211s] lamb27 failed "build osmo-trx_0.2.0.20180113.dsc" at Sat Jan 13 
19:54:15 UTC 2018.
[  211s] 
[  211s] ### VM INTERACTION START ###
[  214s] [  203.884801] reboot: Power down
[  214s] ### VM INTERACTION END ###
[  214s] 
[  214s] lamb27 failed "build osmo-trx_0.2.0.20180113.dsc" at Sat Jan 13 
19:54:19 UTC 2018.
[  214s] 

-- 
Configure notifications at https://build.opensuse.org/user/notifications
openSUSE Build Service (https://build.opensuse.org/)


Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.04/i586

2018-01-13 Thread OBS Notification
Visit 
https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.04/i586

Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.04/i586

Check out the package for editing:
  osc checkout network:osmocom:nightly osmo-trx

Last lines of build log:
[  193s] You may investigate any problem if you feel able to do so, in which
[  193s] case the test suite provides a good starting point.  Its output may
[  193s] be found below `tests/testsuite.dir'.
[  193s] 
[  193s] Makefile:678: recipe for target 'check-local' failed
[  193s] make[4]: *** [check-local] Error 1
[  193s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests'
[  193s] Makefile:538: recipe for target 'check-am' failed
[  193s] make[3]: *** [check-am] Error 2
[  193s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests'
[  193s] Makefile:390: recipe for target 'check-recursive' failed
[  193s] make[2]: *** [check-recursive] Error 1
[  193s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests'
[  193s] Makefile:500: recipe for target 'check-recursive' failed
[  193s] make[1]: *** [check-recursive] Error 1
[  193s] make[1]: Leaving directory '/usr/src/packages/BUILD'
[  193s] dh_auto_test: make -j1 check returned exit code 2
[  193s] debian/rules:6: recipe for target 'build' failed
[  193s] make: *** [build] Error 2
[  193s] dpkg-buildpackage: error: debian/rules build gave error exit status 2
[  193s] 
[  193s] lamb22 failed "build osmo-trx_0.2.0.20180113.dsc" at Sat Jan 13 
19:53:51 UTC 2018.
[  193s] 
[  193s] ### VM INTERACTION START ###
[  196s] [  187.861742] reboot: Power down
[  196s] ### VM INTERACTION END ###
[  196s] 
[  196s] lamb22 failed "build osmo-trx_0.2.0.20180113.dsc" at Sat Jan 13 
19:53:54 UTC 2018.
[  196s] 

-- 
Configure notifications at https://build.opensuse.org/user/notifications
openSUSE Build Service (https://build.opensuse.org/)


Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.10/i586

2018-01-13 Thread OBS Notification
Visit 
https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.10/i586

Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.10/i586

Check out the package for editing:
  osc checkout network:osmocom:nightly osmo-trx

Last lines of build log:
[  182s] You may investigate any problem if you feel able to do so, in which
[  182s] case the test suite provides a good starting point.  Its output may
[  182s] be found below `tests/testsuite.dir'.
[  182s] 
[  182s] Makefile:678: recipe for target 'check-local' failed
[  182s] make[4]: *** [check-local] Error 1
[  182s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests'
[  182s] Makefile:538: recipe for target 'check-am' failed
[  182s] make[3]: *** [check-am] Error 2
[  182s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests'
[  182s] Makefile:390: recipe for target 'check-recursive' failed
[  182s] make[2]: *** [check-recursive] Error 1
[  182s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests'
[  182s] Makefile:500: recipe for target 'check-recursive' failed
[  182s] make[1]: *** [check-recursive] Error 1
[  182s] make[1]: Leaving directory '/usr/src/packages/BUILD'
[  182s] dh_auto_test: make -j1 check VERBOSE=1 returned exit code 2
[  182s] debian/rules:6: recipe for target 'build' failed
[  182s] make: *** [build] Error 2
[  182s] dpkg-buildpackage: error: debian/rules build gave error exit status 2
[  182s] 
[  182s] lamb56 failed "build osmo-trx_0.2.0.20180113.dsc" at Sat Jan 13 
19:53:42 UTC 2018.
[  182s] 
[  182s] ### VM INTERACTION START ###
[  185s] [  175.612340] reboot: Power down
[  185s] ### VM INTERACTION END ###
[  185s] 
[  185s] lamb56 failed "build osmo-trx_0.2.0.20180113.dsc" at Sat Jan 13 
19:53:45 UTC 2018.
[  185s] 

-- 
Configure notifications at https://build.opensuse.org/user/notifications
openSUSE Build Service (https://build.opensuse.org/)


Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_17.04/i586

2018-01-13 Thread OBS Notification
Visit 
https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_17.04/i586

Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_17.04/i586

Check out the package for editing:
  osc checkout network:osmocom:nightly osmo-trx

Last lines of build log:
[  185s] You may investigate any problem if you feel able to do so, in which
[  185s] case the test suite provides a good starting point.  Its output may
[  185s] be found below `tests/testsuite.dir'.
[  185s] 
[  185s] Makefile:678: recipe for target 'check-local' failed
[  185s] make[4]: *** [check-local] Error 1
[  185s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests'
[  185s] Makefile:538: recipe for target 'check-am' failed
[  185s] make[3]: *** [check-am] Error 2
[  185s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests'
[  185s] Makefile:390: recipe for target 'check-recursive' failed
[  185s] make[2]: *** [check-recursive] Error 1
[  185s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests'
[  185s] Makefile:500: recipe for target 'check-recursive' failed
[  185s] make[1]: *** [check-recursive] Error 1
[  185s] make[1]: Leaving directory '/usr/src/packages/BUILD'
[  185s] dh_auto_test: make -j1 check VERBOSE=1 returned exit code 2
[  185s] debian/rules:6: recipe for target 'build' failed
[  185s] make: *** [build] Error 2
[  185s] dpkg-buildpackage: error: debian/rules build gave error exit status 2
[  185s] 
[  185s] lamb22 failed "build osmo-trx_0.2.0.20180113.dsc" at Sat Jan 13 
19:53:38 UTC 2018.
[  185s] 
[  185s] ### VM INTERACTION START ###
[  188s] [  177.829321] reboot: Power down
[  188s] ### VM INTERACTION END ###
[  188s] 
[  188s] lamb22 failed "build osmo-trx_0.2.0.20180113.dsc" at Sat Jan 13 
19:53:42 UTC 2018.
[  188s] 

-- 
Configure notifications at https://build.opensuse.org/user/notifications
openSUSE Build Service (https://build.opensuse.org/)


Build failure of network:osmocom:nightly/osmo-trx in Debian_8.0/i586

2018-01-13 Thread OBS Notification
Visit 
https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_8.0/i586

Package network:osmocom:nightly/osmo-trx failed to build in Debian_8.0/i586

Check out the package for editing:
  osc checkout network:osmocom:nightly osmo-trx

Last lines of build log:
[  185s] case the test suite provides a good starting point.  Its output may
[  185s] be found below `tests/testsuite.dir'.
[  185s] 
[  185s] Makefile:664: recipe for target 'check-local' failed
[  185s] make[4]: *** [check-local] Error 1
[  185s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests'
[  185s] Makefile:526: recipe for target 'check-am' failed
[  185s] make[3]: *** [check-am] Error 2
[  185s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests'
[  185s] Makefile:378: recipe for target 'check-recursive' failed
[  185s] make[2]: *** [check-recursive] Error 1
[  185s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests'
[  185s] Makefile:488: recipe for target 'check-recursive' failed
[  185s] make[1]: *** [check-recursive] Error 1
[  185s] make[1]: Leaving directory '/usr/src/packages/BUILD'
[  185s] dh_auto_test: make -j1 check returned exit code 2
[  185s] debian/rules:6: recipe for target 'build' failed
[  185s] make: *** [build] Error 2
[  185s] dpkg-buildpackage: error: debian/rules build gave error exit status 2
[  185s] 
[  185s] lamb28 failed "build osmo-trx_0.2.0.20180113.dsc" at Sat Jan 13 
19:53:46 UTC 2018.
[  185s] 
[  185s] ### VM INTERACTION START ###
[  187s] Powering off.
[  187s] [  178.236351] reboot: Power down
[  187s] ### VM INTERACTION END ###
[  187s] 
[  187s] lamb28 failed "build osmo-trx_0.2.0.20180113.dsc" at Sat Jan 13 
19:53:48 UTC 2018.
[  187s] 

-- 
Configure notifications at https://build.opensuse.org/user/notifications
openSUSE Build Service (https://build.opensuse.org/)


pysim[master]: pySim-prog: Replace magic numbers with a readable EF file name.

2018-01-13 Thread Alexander Chemeris

Patch Set 2: Verified+1

-- 
To view, visit https://gerrit.osmocom.org/5720
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ibda7d5a4132971e884f6d760baf20cd33025a2af
Gerrit-PatchSet: 2
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Vadim Yanitskiy 
Gerrit-HasComments: No


[MERGED] pysim[master]: Add methods to get ATR for a card or a link.

2018-01-13 Thread Alexander Chemeris
Alexander Chemeris has submitted this change and it was merged.

Change subject: Add methods to get ATR for a card or a link.
..


Add methods to get ATR for a card or a link.

Implemented for both serial and PCSC readers.

Change-Id: Ic12e4b115d24a8b7e483a5603dd6cec90ad289cc
---
M pySim/commands.py
M pySim/transport/pcsc.py
M pySim/transport/serial.py
3 files changed, 19 insertions(+), 2 deletions(-)

Approvals:
  Vadim Yanitskiy: Looks good to me, but someone else must approve
  Alexander Chemeris: Verified
  Harald Welte: Looks good to me, approved



diff --git a/pySim/commands.py b/pySim/commands.py
index 777dd24..eba915c 100644
--- a/pySim/commands.py
+++ b/pySim/commands.py
@@ -31,6 +31,9 @@
self._cla_byte = "a0"
self.sel_ctrl = ""
 
+   def get_atr(self):
+   return self._tp.get_atr()
+
@property
def cla_byte(self):
return self._cla_byte
diff --git a/pySim/transport/pcsc.py b/pySim/transport/pcsc.py
index dc040c5..47c4185 100644
--- a/pySim/transport/pcsc.py
+++ b/pySim/transport/pcsc.py
@@ -56,6 +56,9 @@
except NoCardException:
raise NoCardError()
 
+   def get_atr(self):
+   return self._con.getATR()
+
def disconnect(self):
self._con.disconnect()
 
diff --git a/pySim/transport/serial.py b/pySim/transport/serial.py
index 825c458..5b15b2f 100644
--- a/pySim/transport/serial.py
+++ b/pySim/transport/serial.py
@@ -46,6 +46,7 @@
)
self._rst_pin = rst
self._debug = debug
+   self._atr = None
 
def __del__(self):
self._sl.close()
@@ -91,6 +92,9 @@
def connect(self):
self.reset_card()
 
+   def get_atr(self):
+   return self._atr
+
def disconnect(self):
pass # Nothing to do really ...
 
@@ -102,6 +106,7 @@
raise ProtocolError()
 
def _reset_card(self):
+   self._atr = None
rst_meth_map = {
'rts': self._sl.setRTS,
'dtr': self._sl.setDTR,
@@ -133,18 +138,24 @@
return -1
t0 = ord(b)
self._dbg_print("T0: 0x%x" % t0)
+   self._atr = [0x3b, ord(b)]
 
for i in range(4):
if t0 & (0x10 << i):
-   self._dbg_print("T%si = %x" % (chr(ord('A')+i), 
ord(self._rx_byte(
+   b = self._rx_byte()
+   self._atr.apend(ord(b))
+   self._dbg_print("T%si = %x" % (chr(ord('A')+i), 
ord(b)))
 
for i in range(0, t0 & 0xf):
-   self._dbg_print("Historical = %x" % 
ord(self._rx_byte()))
+   b = self._rx_byte()
+   self._atr.apend(ord(b))
+   self._dbg_print("Historical = %x" % ord(b))
 
while True:
x = self._rx_byte()
if not x:
break
+   self._atr.apend(ord(x))
self._dbg_print("Extra: %x" % ord(x))
 
return 1

-- 
To view, visit https://gerrit.osmocom.org/5717
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic12e4b115d24a8b7e483a5603dd6cec90ad289cc
Gerrit-PatchSet: 2
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Vadim Yanitskiy 


[MERGED] pysim[master]: Make derive_milenage_opc and calculate_luhn publicly availab...

2018-01-13 Thread Alexander Chemeris
Alexander Chemeris has submitted this change and it was merged.

Change subject: Make derive_milenage_opc and calculate_luhn publicly available 
through utils.py
..


Make derive_milenage_opc and calculate_luhn publicly available through utils.py

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

Approvals:
  Alexander Chemeris: Verified
  Harald Welte: Looks good to me, approved



diff --git a/pySim-prog.py b/pySim-prog.py
index 44ca1fd..c08f43b 100755
--- a/pySim-prog.py
+++ b/pySim-prog.py
@@ -39,7 +39,7 @@
 
 from pySim.commands import SimCardCommands
 from pySim.cards import _cards_classes
-from pySim.utils import h2b, swap_nibbles, rpad
+from pySim.utils import h2b, swap_nibbles, rpad, derive_milenage_opc, 
calculate_luhn
 
 
 def parse_options():
@@ -233,24 +233,6 @@
out.append(chr(x))
 
return ''.join(out)
-
-def calculate_luhn(cc):
-   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 derive_milenage_opc(ki_hex, op_hex):
-   """
-   Run the milenage algorithm.
-   """
-   from Crypto.Cipher import AES
-   from Crypto.Util.strxor import strxor
-   from pySim.utils import b2h
-
-   # We pass in hex string and now need to work on bytes
-   aes = AES.new(h2b(ki_hex))
-   opc_bytes = aes.encrypt(h2b(op_hex))
-   return b2h(strxor(opc_bytes, h2b(op_hex)))
 
 def gen_parameters(opts):
"""Generates Name, ICCID, MCC, MNC, IMSI, SMSP, Ki, PIN-ADM from the
diff --git a/pySim/utils.py b/pySim/utils.py
index 43d52dd..17dc693 100644
--- a/pySim/utils.py
+++ b/pySim/utils.py
@@ -92,3 +92,24 @@
if hplmn_disp: byte1 = byte1|0x01
if oplmn_disp: byte1 = byte1|0x02
return i2h([byte1])+s2h(name)
+
+def derive_milenage_opc(ki_hex, op_hex):
+   """
+   Run the milenage algorithm to calculate OPC from Ki and OP
+   """
+   from Crypto.Cipher import AES
+   from Crypto.Util.strxor import strxor
+   from pySim.utils import b2h
+
+   # We pass in hex string and now need to work on bytes
+   aes = AES.new(h2b(ki_hex))
+   opc_bytes = aes.encrypt(h2b(op_hex))
+   return b2h(strxor(opc_bytes, h2b(op_hex)))
+
+def calculate_luhn(cc):
+   """
+   Calculate Luhn checksum used in e.g. ICCID and IMEI
+   """
+   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

-- 
To view, visit https://gerrit.osmocom.org/5745
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I2effc85fd55da0981de0ada74dcb28b7e8e56a01
Gerrit-PatchSet: 1
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 


[MERGED] pysim[master]: cards: Implement card type autodetection based on ATR.

2018-01-13 Thread Alexander Chemeris
Alexander Chemeris has submitted this change and it was merged.

Change subject: cards: Implement card type autodetection based on ATR.
..


cards: Implement card type autodetection based on ATR.

Change-Id: I1099a96626c0ce74243b47a8fdfa25b0d76a1ef3
---
M pySim/cards.py
1 file changed, 21 insertions(+), 2 deletions(-)

Approvals:
  Vadim Yanitskiy: Looks good to me, but someone else must approve
  Alexander Chemeris: Verified
  Harald Welte: Looks good to me, approved



diff --git a/pySim/cards.py b/pySim/cards.py
index db63d2b..046766e 100644
--- a/pySim/cards.py
+++ b/pySim/cards.py
@@ -25,6 +25,7 @@
 
 from pySim.ts_51_011 import EF, DF
 from pySim.utils import *
+from smartcard.util import toBytes
 
 class Card(object):
 
@@ -418,7 +419,12 @@
 
@classmethod
def autodetect(kls, scc):
-   # TODO: look for ATR 3B 7D 94 00 00 55 55 53 0A 74 86 93 0B 24 
7C 4D 54 68
+   try:
+   # Look for ATR
+   if scc.get_atr() == toBytes("3B 7D 94 00 00 55 55 53 0A 
74 86 93 0B 24 7C 4D 54 68"):
+   return kls(scc)
+   except:
+   return None
return None
 
def program(self, p):
@@ -494,7 +500,12 @@
 
@classmethod
def autodetect(kls, scc):
-   # TODO: look for ATR 3B 9F 96 80 1F C7 80 31 A0 73 BE 21 13 67 
43 20 07 18 00 00 01 A5
+   try:
+   # Look for ATR
+   if scc.get_atr() == toBytes("3B 9F 96 80 1F C7 80 31 A0 
73 BE 21 13 67 43 20 07 18 00 00 01 A5"):
+   return kls(scc)
+   except:
+   return None
return None
 
def program(self, p):
@@ -537,3 +548,11 @@
# In order for autodetection ...
 _cards_classes = [ FakeMagicSim, SuperSim, MagicSim, GrcardSim,
   SysmoSIMgr1, SysmoSIMgr2, SysmoUSIMgr1, SysmoUSIMSJS1 ]
+
+def card_autodetect(scc):
+   for kls in _cards_classes:
+   card = kls.autodetect(scc)
+   if card is not None:
+   card.reset()
+   return card
+   return None

-- 
To view, visit https://gerrit.osmocom.org/5721
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I1099a96626c0ce74243b47a8fdfa25b0d76a1ef3
Gerrit-PatchSet: 2
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Vadim Yanitskiy 


[MERGED] pysim[master]: pySim-prog: ADM code can be longer 8 digits, it's implementa...

2018-01-13 Thread Alexander Chemeris
Alexander Chemeris has submitted this change and it was merged.

Change subject: pySim-prog: ADM code can be longer 8 digits, it's 
implementation specific.
..


pySim-prog: ADM code can be longer 8 digits, it's implementation specific.

E.g. Fairwaves SIM cards have longer ADM codes.

Change-Id: I87d61764eeba4bcf7525ee4778cb8f244930db9b
---
M pySim-prog.py
1 file changed, 3 insertions(+), 4 deletions(-)

Approvals:
  Vadim Yanitskiy: Looks good to me, but someone else must approve
  Alexander Chemeris: Verified
  Harald Welte: Looks good to me, approved



diff --git a/pySim-prog.py b/pySim-prog.py
index 728949e..2177d8c 100755
--- a/pySim-prog.py
+++ b/pySim-prog.py
@@ -379,10 +379,9 @@
opc = ''.join(['%02x' % random.randrange(0,256) for i in 
range(16)])
 
if opts.pin_adm is not None:
-   if len(opts.pin_adm) > 8:
-   raise ValueError("PIN-ADM needs to be <=8 digits")
-   pin_adm = ''.join(['%02x'%(ord(x)) for x in opts.pin_adm])
-   pin_adm = rpad(pin_adm, 16)
+   pin_adm = opts.pin_adm
+   if not re.match('^([0-9a-fA-F][0-9a-fA-F])+$', pin_adm):
+   raise ValueError('ADM pin needs to be in hex format 
(even number of hex digits)')
else:
pin_adm = None
 

-- 
To view, visit https://gerrit.osmocom.org/5719
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I87d61764eeba4bcf7525ee4778cb8f244930db9b
Gerrit-PatchSet: 2
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Vadim Yanitskiy 


[MERGED] pysim[master]: cards: Add Fairwaves SIM implementation.

2018-01-13 Thread Alexander Chemeris
Alexander Chemeris has submitted this change and it was merged.

Change subject: cards: Add Fairwaves SIM implementation.
..


cards: Add Fairwaves SIM implementation.

Change-Id: Ia10ac433d3b0482bdf727c31f65a10042152797b
---
M pySim/cards.py
1 file changed, 145 insertions(+), 2 deletions(-)

Approvals:
  Vadim Yanitskiy: Looks good to me, but someone else must approve
  Alexander Chemeris: Verified
  Harald Welte: Looks good to me, approved



diff --git a/pySim/cards.py b/pySim/cards.py
index 046766e..e324857 100644
--- a/pySim/cards.py
+++ b/pySim/cards.py
@@ -539,15 +539,158 @@
r = self._scc.select_file(['3f00', '7f10'])
data, sw = self._scc.update_record('6f42', 1, lpad(p['smsp'], 
104), force_len=True)
 
+   def erase(self):
+   return
+
+
+class FairwavesSIM(Card):
+   """
+   FairwavesSIM
+
+   The SIM card is operating according to the standard.
+   For Ki/OP/OPC programming the following files are additionally open for 
writing:
+   3F00/7F20/FF01 – OP/OPC:
+   byte 1 = 0x01, bytes 2-17: OPC;
+   byte 1 = 0x00, bytes 2-17: OP;
+   3F00/7F20/FF02: Ki
+   """
+
+   name = 'Fairwaves SIM'
+   # Propriatary files
+   _EF_num = {
+   'Ki': 'FF02',
+   'OP/OPC': 'FF01',
+   }
+   _EF = {
+   'Ki': DF['GSM']+[_EF_num['Ki']],
+   'OP/OPC': DF['GSM']+[_EF_num['OP/OPC']],
+   }
+
+   def __init__(self, ssc):
+   super(FairwavesSIM, self).__init__(ssc)
+   self._adm_chv_num = 0x11
+   self._adm2_chv_num = 0x12
+
+
+   @classmethod
+   def autodetect(kls, scc):
+   try:
+   # Look for ATR
+   if scc.get_atr() == toBytes("3B 9F 96 80 1F C7 80 31 A0 
73 BE 21 13 67 44 22 06 10 00 00 01 A9"):
+   return kls(scc)
+   except:
+   return None
+   return None
+
+
+   def verify_adm2(self, key):
+   '''
+   Authenticate with ADM2 key.
+
+   Fairwaves SIM cards support hierarchical key structure and ADM2 
key
+   is a key which has access to proprietary files (Ki and OP/OPC).
+   That said, ADM key inherits permissions of ADM2 key and thus we 
rarely
+   need ADM2 key per se.
+   '''
+   (res, sw) = self._scc.verify_chv(self._adm2_chv_num, key)
+   return sw
+
+
+   def read_ki(self):
+   """
+   Read Ki in proprietary file.
+
+   Requires ADM1 access level
+   """
+   return self._scc.read_binary(self._EF['Ki'])
+
+
+   def update_ki(self, ki):
+   """
+   Set Ki in proprietary file.
+
+   Requires ADM1 access level
+   """
+   data, sw = self._scc.update_binary(self._EF['Ki'], ki)
+   return sw
+
+
+   def read_op_opc(self):
+   """
+   Read Ki in proprietary file.
+
+   Requires ADM1 access level
+   """
+   (ef, sw) = self._scc.read_binary(self._EF['OP/OPC'])
+   type = 'OP' if ef[0:2] == '00' else 'OPC'
+   return ((type, ef[2:]), sw)
+
+
+   def update_op(self, op):
+   """
+   Set OP in proprietary file.
+
+   Requires ADM1 access level
+   """
+   content = '00' + op
+   data, sw = self._scc.update_binary(self._EF['OP/OPC'], content)
+   return sw
+
+
+   def update_opc(self, opc):
+   """
+   Set OPC in proprietary file.
+
+   Requires ADM1 access level
+   """
+   content = '01' + opc
+   data, sw = self._scc.update_binary(self._EF['OP/OPC'], content)
+   return sw
+
+
+   def program(self, p):
+   # authenticate as ADM1
+   if not p['pin_adm']:
+   raise ValueError("Please provide a PIN-ADM as there is 
no default one")
+   sw = self.verify_adm(h2b(p['pin_adm']))
+   if sw != '9000':
+   raise RuntimeError('Failed to authenticate with ADM key 
%s'%(p['pin_adm'],))
+
+   # TODO: Set operator name
+   if p.get('smsp') is not None:
+   sw = self.update_smsp(p['smsp'])
+   if sw != '9000':
+   print("Programming SMSP failed with code %s"%sw)
+   # This SIM doesn't support changing ICCID
+   if p.get('mcc') is not None and p.get('mnc') is not None:
+   sw = self.update_hplmn_act(p['mcc'], p['mnc'])
+   if sw != '9000':
+   print("Programming 

pysim[master]: cards: Implement card type autodetection based on ATR.

2018-01-13 Thread Alexander Chemeris

Patch Set 2: Verified+1

-- 
To view, visit https://gerrit.osmocom.org/5721
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I1099a96626c0ce74243b47a8fdfa25b0d76a1ef3
Gerrit-PatchSet: 2
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Vadim Yanitskiy 
Gerrit-HasComments: No


[MERGED] pysim[master]: cards: Extend Card class with access functions for some of t...

2018-01-13 Thread Alexander Chemeris
Alexander Chemeris has submitted this change and it was merged.

Change subject: cards: Extend Card class with access functions for some of the 
standard EF files.
..


cards: Extend Card class with access functions for some of the standard EF 
files.

Change-Id: Icb7227fa7ebc837fccab456cbfad529f6ee81a28
---
M pySim/cards.py
1 file changed, 67 insertions(+), 2 deletions(-)

Approvals:
  Vadim Yanitskiy: Looks good to me, but someone else must approve
  Alexander Chemeris: Verified
  Harald Welte: Looks good to me, approved



diff --git a/pySim/cards.py b/pySim/cards.py
index 9f678ab..db63d2b 100644
--- a/pySim/cards.py
+++ b/pySim/cards.py
@@ -7,6 +7,7 @@
 #
 # Copyright (C) 2009-2010  Sylvain Munaut 
 # Copyright (C) 2011  Harald Welte 
+# Copyright (C) 2017 Alexander.Chemeris 
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -22,17 +23,81 @@
 # along with this program.  If not, see .
 #
 
-from pySim.utils import b2h, h2b, swap_nibbles, rpad, lpad, enc_imsi, 
enc_iccid, enc_plmn
-
+from pySim.ts_51_011 import EF, DF
+from pySim.utils import *
 
 class Card(object):
 
def __init__(self, scc):
self._scc = scc
+   self._adm_chv_num = 4
 
def reset(self):
self._scc.reset_card()
 
+   def verify_adm(self, key):
+   '''
+   Authenticate with ADM key
+   '''
+   (res, sw) = self._scc.verify_chv(self._adm_chv_num, key)
+   return sw
+
+   def read_iccid(self):
+   (res, sw) = self._scc.read_binary(EF['ICCID'])
+   if sw == '9000':
+   return (dec_iccid(res), sw)
+   else:
+   return (None, sw)
+
+   def read_imsi(self):
+   (res, sw) = self._scc.read_binary(EF['IMSI'])
+   if sw == '9000':
+   return (dec_imsi(res), sw)
+   else:
+   return (None, sw)
+
+   def update_imsi(self, imsi):
+   data, sw = self._scc.update_binary(EF['IMSI'], enc_imsi(imsi))
+   return sw
+
+   def update_acc(self, acc):
+   data, sw = self._scc.update_binary(EF['ACC'], lpad(acc, 4))
+   return sw
+
+   def update_hplmn_act(self, mcc, mnc, access_tech=''):
+   """
+   Update Home PLMN with access technology bit-field
+
+   See Section "10.3.37 EFHPLMNwAcT (HPLMN Selector with Access 
Technology)"
+   in ETSI TS 151 011 for the details of the access_tech field 
coding.
+   Some common values:
+   access_tech = '0080' # Only GSM is selected
+   access_tech = '' # All technologues selected, even Reserved 
for Future Use ones
+   """
+   # get size and write EF.HPLMNwAcT
+   r = self._scc.select_file(EF['HPLMNwAcT'])
+   size = int(r[-1][4:8], 16)
+   hplmn = enc_plmn(mcc, mnc)
+   content = hplmn + access_tech
+   data, sw = self._scc.update_binary(EF['HPLMNwAcT'], content + 
'ff' * (size/5-1))
+   return sw
+
+   def update_smsp(self, smsp):
+   data, sw = self._scc.update_record(EF['SMSP'], 1, rpad(smsp, 
84))
+   return sw
+
+   def read_spn(self):
+   (spn, sw) = self._scc.read_binary(EF['SPN'])
+   if sw == '9000':
+   return (dec_spn(spn), sw)
+   else:
+   return (None, sw)
+
+   def update_spn(self, name, hplmn_disp=False, oplmn_disp=False):
+   content = enc_spn(name, hplmn_disp, oplmn_disp)
+   data, sw = self._scc.update_binary(EF['SPN'], rpad(content, 32))
+   return sw
+
 
 class _MagicSimBase(Card):
"""

-- 
To view, visit https://gerrit.osmocom.org/5718
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Icb7227fa7ebc837fccab456cbfad529f6ee81a28
Gerrit-PatchSet: 2
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Vadim Yanitskiy 


pysim[master]: Make derive_milenage_opc and calculate_luhn publicly availab...

2018-01-13 Thread Alexander Chemeris

Patch Set 1: Verified+1

-- 
To view, visit https://gerrit.osmocom.org/5745
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I2effc85fd55da0981de0ada74dcb28b7e8e56a01
Gerrit-PatchSet: 1
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-HasComments: No


[MERGED] pysim[master]: pySim-prog: Replace magic numbers with a readable EF file name.

2018-01-13 Thread Alexander Chemeris
Alexander Chemeris has submitted this change and it was merged.

Change subject: pySim-prog: Replace magic numbers with a readable EF file name.
..


pySim-prog: Replace magic numbers with a readable EF file name.

Change-Id: Ibda7d5a4132971e884f6d760baf20cd33025a2af
---
M pySim-prog.py
1 file changed, 1 insertion(+), 1 deletion(-)

Approvals:
  Vadim Yanitskiy: Looks good to me, but someone else must approve
  Alexander Chemeris: Verified
  Harald Welte: Looks good to me, approved



diff --git a/pySim-prog.py b/pySim-prog.py
index 2177d8c..44ca1fd 100755
--- a/pySim-prog.py
+++ b/pySim-prog.py
@@ -618,7 +618,7 @@
# Connect transport
print "Insert card now (or CTRL-C to 
cancel)"
sl.wait_for_card(newcardonly=not first)
-   (res,_) = scc.read_binary(['3f00', '7f20', 
'6f07'])
+   (res,_) = scc.read_binary(EF['IMSI'])
imsi = swap_nibbles(res)[3:]
else:
imsi = opts.imsi

-- 
To view, visit https://gerrit.osmocom.org/5720
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ibda7d5a4132971e884f6d760baf20cd33025a2af
Gerrit-PatchSet: 2
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Vadim Yanitskiy 


pysim[master]: Add methods to get ATR for a card or a link.

2018-01-13 Thread Alexander Chemeris

Patch Set 2: Verified+1

-- 
To view, visit https://gerrit.osmocom.org/5717
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ic12e4b115d24a8b7e483a5603dd6cec90ad289cc
Gerrit-PatchSet: 2
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Vadim Yanitskiy 
Gerrit-HasComments: No


pysim[master]: cards: Extend Card class with access functions for some of t...

2018-01-13 Thread Alexander Chemeris

Patch Set 2: Verified+1

-- 
To view, visit https://gerrit.osmocom.org/5718
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Icb7227fa7ebc837fccab456cbfad529f6ee81a28
Gerrit-PatchSet: 2
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Vadim Yanitskiy 
Gerrit-HasComments: No


osmo-ci[master]: README: also hint at /n/home/dub8/.config/jenkins_job_builde...

2018-01-13 Thread Harald Welte

Patch Set 1: Code-Review+2

-- 
To view, visit https://gerrit.osmocom.org/5774
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I8bb6792ab061edd3d688e387fa69cd8637617dee
Gerrit-PatchSet: 1
Gerrit-Project: osmo-ci
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Max 
Gerrit-HasComments: No


pysim[master]: Add methods to get ATR for a card or a link.

2018-01-13 Thread Harald Welte

Patch Set 2: Code-Review+2

-- 
To view, visit https://gerrit.osmocom.org/5717
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ic12e4b115d24a8b7e483a5603dd6cec90ad289cc
Gerrit-PatchSet: 2
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Vadim Yanitskiy 
Gerrit-HasComments: No


pysim[master]: utils: Fix documentation. 3+3=6 digits equals 3 bytes, not 6

2018-01-13 Thread Alexander Chemeris

Patch Set 1: Verified+1

-- 
To view, visit https://gerrit.osmocom.org/5716
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I2722d788a69976e1c64a9caf6cf3049af27f9a30
Gerrit-PatchSet: 1
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Vadim Yanitskiy 
Gerrit-HasComments: No


[MERGED] pysim[master]: utils: Functions to encode/decode EF SPN.

2018-01-13 Thread Alexander Chemeris
Alexander Chemeris has submitted this change and it was merged.

Change subject: utils: Functions to encode/decode EF SPN.
..


utils: Functions to encode/decode EF SPN.

According to TS 51 011.

Change-Id: Ida184bc5c81cc8c228b8981b703f77d017e53334
---
M pySim/utils.py
1 file changed, 19 insertions(+), 0 deletions(-)

Approvals:
  Alexander Chemeris: Verified
  Harald Welte: Looks good to me, approved



diff --git a/pySim/utils.py b/pySim/utils.py
index 84b613f..8463581 100644
--- a/pySim/utils.py
+++ b/pySim/utils.py
@@ -34,6 +34,12 @@
 def i2h(s):
return ''.join(['%02x'%(x) for x in s])
 
+def h2s(s):
+   return ''.join([chr((int(x,16)<<4)+int(y,16)) for x,y in zip(s[0::2], 
s[1::2]) if not (x == 'f' and y == 'f') ])
+
+def s2h(s):
+   return b2h(s)
+
 def swap_nibbles(s):
return ''.join([x+y for x,y in zip(s[1::2], s[0::2])])
 
@@ -73,3 +79,16 @@
 def enc_plmn(mcc, mnc):
"""Converts integer MCC/MNC into 6 bytes for EF"""
return swap_nibbles(lpad('%d' % mcc, 3) + lpad('%d' % mnc, 3))
+
+def dec_spn(ef):
+   byte1 = int(ef[0:2])
+   hplmn_disp = (byte1&0x01 == 0x01)
+   oplmn_disp = (byte1&0x02 == 0x02)
+   name = h2s(ef[2:])
+   return (name, hplmn_disp, oplmn_disp)
+
+def enc_spn(name, hplmn_disp=False, oplmn_disp=False):
+   byte1 = 0x00
+   if hplmn_disp: byte1 = byte1|0x01
+   if oplmn_disp: byte1 = byte1|0x02
+   return i2h([byte1])+s2h(name)

-- 
To view, visit https://gerrit.osmocom.org/5715
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ida184bc5c81cc8c228b8981b703f77d017e53334
Gerrit-PatchSet: 1
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 


[MERGED] pysim[master]: utils: Fix documentation. 3+3=6 digits equals 3 bytes, not 6

2018-01-13 Thread Alexander Chemeris
Alexander Chemeris has submitted this change and it was merged.

Change subject: utils: Fix documentation. 3+3=6 digits equals 3 bytes, not 6
..


utils: Fix documentation. 3+3=6 digits equals 3 bytes, not 6

Change-Id: I2722d788a69976e1c64a9caf6cf3049af27f9a30
---
M pySim/utils.py
1 file changed, 1 insertion(+), 1 deletion(-)

Approvals:
  Vadim Yanitskiy: Looks good to me, but someone else must approve
  Alexander Chemeris: Verified
  Harald Welte: Looks good to me, approved



diff --git a/pySim/utils.py b/pySim/utils.py
index 8463581..43d52dd 100644
--- a/pySim/utils.py
+++ b/pySim/utils.py
@@ -77,7 +77,7 @@
return swap_nibbles(rpad(iccid, 20))
 
 def enc_plmn(mcc, mnc):
-   """Converts integer MCC/MNC into 6 bytes for EF"""
+   """Converts integer MCC/MNC into 3 bytes for EF"""
return swap_nibbles(lpad('%d' % mcc, 3) + lpad('%d' % mnc, 3))
 
 def dec_spn(ef):

-- 
To view, visit https://gerrit.osmocom.org/5716
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I2722d788a69976e1c64a9caf6cf3049af27f9a30
Gerrit-PatchSet: 1
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Vadim Yanitskiy 


pysim[master]: utils: Functions to encode/decode EF SPN.

2018-01-13 Thread Alexander Chemeris

Patch Set 1: Verified+1

-- 
To view, visit https://gerrit.osmocom.org/5715
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ida184bc5c81cc8c228b8981b703f77d017e53334
Gerrit-PatchSet: 1
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-HasComments: No


pysim[master]: ts_51_011: A file with MF/DF/EF constants from TS 51 011

2018-01-13 Thread Alexander Chemeris

Patch Set 1: Verified+1

-- 
To view, visit https://gerrit.osmocom.org/5714
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I38f5d36d16b41b5d516a6a3e2ec1d09637883932
Gerrit-PatchSet: 1
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Vadim Yanitskiy 
Gerrit-HasComments: No


[MERGED] pysim[master]: ts_51_011: A file with MF/DF/EF constants from TS 51 011

2018-01-13 Thread Alexander Chemeris
Alexander Chemeris has submitted this change and it was merged.

Change subject: ts_51_011: A file with MF/DF/EF constants from TS 51 011
..


ts_51_011: A file with MF/DF/EF constants from TS 51 011

pySim has been using magic numbers to access various files which makes it hard
to read, maintain and extend. With this file in place we can start replacing all
those magic numbers with human readable names lile EF['IMSI'] instead of
['3F00', '7F20', '6F07'].

Change-Id: I38f5d36d16b41b5d516a6a3e2ec1d09637883932
---
A pySim/ts_51_011.py
1 file changed, 251 insertions(+), 0 deletions(-)

Approvals:
  Vadim Yanitskiy: Looks good to me, but someone else must approve
  Alexander Chemeris: Verified
  Harald Welte: Looks good to me, approved



diff --git a/pySim/ts_51_011.py b/pySim/ts_51_011.py
new file mode 100644
index 000..754d57f
--- /dev/null
+++ b/pySim/ts_51_011.py
@@ -0,0 +1,251 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+""" Various constants from ETSI TS 151.011
+"""
+
+#
+# Copyright (C) 2017 Alexander.Chemeris 
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see .
+#
+
+MF_num = '3F00'
+
+DF_num = {
+'TELECOM': '7F10',
+
+'GSM': '7F20',
+'IS-41': '7F22',
+'FP-CTS': '7F23',
+
+'GRAPHICS': '5F50',
+
+'IRIDIUM': '5F30',
+'GLOBST': '5F31',
+'ICO': '5F32',
+'ACeS': '5F33',
+
+'EIA/TIA-553': '5F40',
+'CTS': '5F60',
+'SOLSA': '5F70',
+
+'MExE': '5F3C',
+}
+
+EF_num = {
+# MF
+'ICCID': '2FE2',
+'ELP': '2F05',
+
+# DF_TELECOM
+'ADN': '6F3A',
+'FDN': '6F3B',
+'SMS': '6F3C',
+'CCP': '6F3D',
+'MSISDN': '6F40',
+'SMSP': '6F42',
+'SMSS': '6F43',
+'LND': '6F44',
+'SMSR': '6F47',
+'SDN': '6F49',
+'EXT1': '6F4A',
+'EXT2': '6F4B',
+'EXT3': '6F4C',
+'BDN': '6F4D',
+'EXT4': '6F4E',
+'CMI': '6F58',
+'ECCP': '6F4F',
+
+# DF_GRAPHICS
+'IMG': '4F20',
+
+# DF_SoLSA
+'SAI': '4F30',
+'SLL': '4F31',
+
+# DF_MExE
+'MExE-ST': '4F40',
+'ORPK': '4F41',
+'ARPK': '4F42',
+'TPRPK': '4F43',
+
+# DF_GSM
+'LP': '6F05',
+'IMSI': '6F07',
+'Kc': '6F20',
+'DCK': '6F2C',
+'PLMNsel': '6F30',
+'HPPLMN': '6F31',
+'CNL': '6F32',
+'ACMmax': '6F37',
+'SST': '6F38',
+'ACM': '6F39',
+'GID1': '6F3E',
+'GID2': '6F3F',
+'PUCT': '6F41',
+'CBMI': '6F45',
+'SPN': '6F46',
+'CBMID': '6F48',
+'BCCH': '6F74',
+'ACC': '6F78',
+'FPLMN': '6F7B',
+'LOCI': '6F7E',
+'AD': '6FAD',
+'PHASE': '6FAE',
+'VGCS': '6FB1',
+'VGCSS': '6FB2',
+'VBS': '6FB3',
+'VBSS': '6FB4',
+'eMLPP': '6FB5',
+'AAeM': '6FB6',
+'ECC': '6FB7',
+'CBMIR': '6F50',
+'NIA': '6F51',
+'KcGPRS': '6F52',
+'LOCIGPRS': '6F53',
+'SUME': '6F54',
+'PLMNwAcT': '6F60',
+'OPLMNwAcT': '6F61',
+# Figure 8 names it HPLMNAcT, but in the text it's names it HPLMNwAcT
+'HPLMNAcT': '6F62',
+'HPLMNwAcT': '6F62',
+'CPBCCH': '6F63',
+'INVSCAN': '6F64',
+'PNN': '6FC5',
+'OPL': '6FC6',
+'MBDN': '6FC7',
+'EXT6': '6FC8',
+'MBI': '6FC9',
+'MWIS': '6FCA',
+'CFIS': '6FCB',
+'EXT7': '6FCC',
+'SPDI': '6FCD',
+'MMSN': '6FCE',
+'EXT8': '6FCF',
+'MMSICP': '6FD0',
+'MMSUP': '6FD1',
+'MMSUCP': '6FD2',
+}
+
+DF = {
+'TELECOM':  [MF_num, DF_num['TELECOM']],
+
+'GSM':  [MF_num, DF_num['GSM']],
+'IS-41':[MF_num, DF_num['IS-41']],
+'FP-CTS':   [MF_num, DF_num['FP-CTS']],
+
+'GRAPHICS': [MF_num, DF_num['GRAPHICS']],
+
+'IRIDIUM':  [MF_num, DF_num['IRIDIUM']],
+'GLOBST':   [MF_num, DF_num['GLOBST']],
+'ICO':  [MF_num, DF_num['ICO']],
+'ACeS': [MF_num, DF_num['ACeS']],
+
+'EIA/TIA-553': [MF_num, DF_num['EIA/TIA-553']],
+'CTS':  [MF_num, DF_num['CTS']],
+'SoLSA':[MF_num, DF_num['SOLSA']],
+
+'MExE': [MF_num, DF_num['MExE']],
+}
+
+
+EF = {
+'ICCID':  [MF_num, EF_num['ICCID']],
+'ELP':[MF_num, EF_num['ELP']],
+
+'ADN':DF['TELECOM']+[EF_num['ADN']],
+'FDN':DF['TELECOM']+[EF_num['FDN']],
+'SMS':DF['TELECOM']+[EF_num['SMS']],
+'CCP':DF['TELECOM']+[EF_num['CCP']],
+'MSISDN': DF['TELECOM']+[EF_num['MSISDN']],
+'SMSP':   DF['TELECOM']+[EF_num['SMSP']],
+'SMSS':   DF['TELECOM']+[EF_num['SMSS']],
+'LND':DF['TELECOM']+[EF_num['LND']],
+'SMSR':   DF['TELECOM']+[EF_num['SMSR']],
+'SDN':DF['TELECOM']+[EF_num['SDN']],
+'EXT1':   DF['TELECOM']+[EF_num['EXT1']],
+'EXT2':   DF['TELECOM']+[EF_num['EXT2']],
+'EXT3':   DF['TELECOM']+[EF_num['EXT3']],
+'BDN':DF['TELECOM']+[EF_num['BDN']],
+'EXT4':   DF['TELECOM']+[EF_num['EXT4']],
+'CMI':DF['TELECOM']+[EF_num['CMI']],
+'ECCP':   DF['TELECOM']+[EF_num['ECCP']],

[MERGED] pysim[master]: Fix comment: Ki -> OPC

2018-01-13 Thread Alexander Chemeris
Alexander Chemeris has submitted this change and it was merged.

Change subject: Fix comment: Ki -> OPC
..


Fix comment: Ki -> OPC

Change-Id: I566cf7bc658c730b4381c0f145bfc4f805cca42a
---
M pySim-prog.py
1 file changed, 1 insertion(+), 1 deletion(-)

Approvals:
  Vadim Yanitskiy: Looks good to me, but someone else must approve
  Harald Welte: Looks good to me, approved; Verified



diff --git a/pySim-prog.py b/pySim-prog.py
index 3df18ba..728949e 100755
--- a/pySim-prog.py
+++ b/pySim-prog.py
@@ -367,7 +367,7 @@
else:
ki = ''.join(['%02x' % random.randrange(0,256) for i in 
range(16)])
 
-   # Ki (random)
+   # OPC (random)
if opts.opc is not None:
opc = opts.opc
if not re.match('^[0-9a-fA-F]{32}$', opc):

-- 
To view, visit https://gerrit.osmocom.org/5713
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I566cf7bc658c730b4381c0f145bfc4f805cca42a
Gerrit-PatchSet: 1
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Vadim Yanitskiy