Hello Vadim Yanitskiy, Harald Welte, I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/7932 to look at the new patch set (#4). add support for open cells SIM cards Change-Id: I4df5681952eefd7a67f5e2b0a96a9e01c9d960d2 --- M pySim-prog.py M pySim/cards.py 2 files changed, 54 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/32/7932/4 diff --git a/pySim-prog.py b/pySim-prog.py index f27daf0..0c9f749 100755 --- a/pySim-prog.py +++ b/pySim-prog.py @@ -254,8 +254,8 @@ # ICCID (19 digits, E.118), though some phase1 vendors use 20 :( if opts.iccid is not None: iccid = opts.iccid - if not _isnum(iccid, 19): - raise ValueError('ICCID must be 19 digits !'); + if not _isnum(iccid, 19) and not _isnum(iccid, 20): + raise ValueError('ICCID must be 19 or 20 digits !'); else: if opts.num is None: diff --git a/pySim/cards.py b/pySim/cards.py index e324857..0c9c2b8 100644 --- a/pySim/cards.py +++ b/pySim/cards.py @@ -687,10 +687,60 @@ return - # In order for autodetection ... +class OpenCellsSim(Card): + """ + OpenCellsSim + + """ + + name = 'OpenCells SIM' + + def __init__(self, ssc): + super(OpenCellsSim, self).__init__(ssc) + self._adm_chv_num = 0x0A + + + @classmethod + def autodetect(kls, scc): + try: + # Look for ATR + if scc.get_atr() == toBytes("3B 9F 95 80 1F C3 80 31 E0 73 FE 21 13 57 86 81 02 86 98 44 18 A8"): + return kls(scc) + except: + return None + return None + + + def program(self, p): + if not p['pin_adm']: + raise ValueError("Please provide a PIN-ADM as there is no default one") + self._scc.verify_chv(0x0A, h2b(p['pin_adm'])) + + # select MF + r = self._scc.select_file(['3f00']) + + # write EF.ICCID + data, sw = self._scc.update_binary('2fe2', enc_iccid(p['iccid'])) + + r = self._scc.select_file(['7ff0']) + + # set Ki in proprietary file + data, sw = self._scc.update_binary('FF02', p['ki']) + + # set OPC in proprietary file + data, sw = self._scc.update_binary('FF01', p['opc']) + + # select DF_GSM + r = self._scc.select_file(['7f20']) + + # write EF.IMSI + data, sw = self._scc.update_binary('6f07', enc_imsi(p['imsi'])) + + +# In order for autodetection ... _cards_classes = [ FakeMagicSim, SuperSim, MagicSim, GrcardSim, SysmoSIMgr1, SysmoSIMgr2, SysmoUSIMgr1, SysmoUSIMSJS1, - FairwavesSIM ] + FairwavesSIM, OpenCellsSim ] def card_autodetect(scc): for kls in _cards_classes: -- To view, visit https://gerrit.osmocom.org/7932 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I4df5681952eefd7a67f5e2b0a96a9e01c9d960d2 Gerrit-PatchSet: 4 Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Owner: Todd Neal <t...@tneal.org> Gerrit-Reviewer: Harald Welte <lafo...@gnumonks.org> Gerrit-Reviewer: Todd Neal <t...@tneal.org> Gerrit-Reviewer: Vadim Yanitskiy <axilira...@gmail.com>