コード例 #1
0
def _persoForZYT(card):
    aid = 'A00000033301010600030800005A5954'
    apdu = APDU(card)
    apdu.selectAID(aid)
    apdu.gpInit('404142434445464748494A4B4C4D4E4F', '404142434445464748494A4B4C4D4E4F', '404142434445464748494A4B4C4D4E4F', '0C')        
    apdu.gpAuth()
    path = os.getcwd()
    persoFp = open(path + '\\'+ "zytPerso.idf",'r')
    l = persoFp.readlines()
    l = [e.replace('\n','')for e in l]
    i = 0
    for e in l:
        i = i+1
        if 'DGI' in e:
            li =  e.split('=')
            dgi = li[0][3:]
            apduB = li[1]
            if i == len(l):
                last  = True
            else:
                last = False
            if (int(dgi,16)&0x8000 ) == 0x8000:
                encrypt = False
            else :
                encrypt = False
            apdu.gpStoreData(apduB, last, encrypt)
コード例 #2
0
ファイル: defaultSelect.py プロジェクト: YinGithub/DemoWallet
def _defaultSelect():
    card = Card.Card()
    apdu = APDU(card)
    apdu.selectFID('1001')
    assert apdu.sw == '9000'
    apdu.getBalance(True)
    assert apdu.sw == '9000'
コード例 #3
0
ファイル: TestScript.py プロジェクト: YinGithub/DemoWallet
def _parseAndRun(sList):
    card = Card.Card()
    apdu = APDU(card)
    import  re 
    apduList  = []
    for e in sList:
        cmd = e[1]
        p1 = re.compile('\(\w.*?\)')
        brckList  = p1.findall(cmd)
        for f in brckList:
            if d.has_key(f[1:-1]):
                cmd  = cmd.replace(f,d[f[1:-1]])
            elif f[1:-1] == 'MAC':
                if '8052' in cmd:
                    mac  = _CalcMac(type= 'load',res = apdu.res)
                else:
                    mac = _CalcMac(type= 'purchase',res = apdu.res)
                cmd= cmd.replace(f,mac)
                    
            else:    
                print f
                assert 0,'Unknow ELement!'
        p = re.compile('\(.*\)')
        brckList = p.findall(cmd)
        if len(brckList)> 0:
            cmd = cmd.replace(brckList[0],brckList[0][1:-1])
        if '#' in  cmd:
            cmd = cmd.replace('#','%02X'%(len(cmd[cmd.index('#'):])/2))
        apduList.append(cmd)
        apdu.send(cmd)
        assert apdu.sw == '9000'
コード例 #4
0
ファイル: TestScript.py プロジェクト: YinGithub/DemoWallet
def _parseAndRun(sList):
    card = Card.Card()
    apdu = APDU(card)
    import re
    apduList = []
    for e in sList:
        cmd = e[1]
        p1 = re.compile('\(\w.*?\)')
        brckList = p1.findall(cmd)
        for f in brckList:
            if d.has_key(f[1:-1]):
                cmd = cmd.replace(f, d[f[1:-1]])
            elif f[1:-1] == 'MAC':
                if '8052' in cmd:
                    mac = _CalcMac(type='load', res=apdu.res)
                else:
                    mac = _CalcMac(type='purchase', res=apdu.res)
                cmd = cmd.replace(f, mac)

            else:
                print f
                assert 0, 'Unknow ELement!'
        p = re.compile('\(.*\)')
        brckList = p.findall(cmd)
        if len(brckList) > 0:
            cmd = cmd.replace(brckList[0], brckList[0][1:-1])
        if '#' in cmd:
            cmd = cmd.replace('#', '%02X' % (len(cmd[cmd.index('#'):]) / 2))
        apduList.append(cmd)
        apdu.send(cmd)
        assert apdu.sw == '9000'
コード例 #5
0
ファイル: setOPENParam.py プロジェクト: YinGithub/DemoWallet
def _setOPEN():
    card = Card.Card()
    apdu = APDU(card)
    apdu.send('00A4040000')
    assert apdu.sw == '9000'
    gp = GP.GP('404142434445464748494A4B4C4D4E4F', '404142434445464748494A4B4C4D4E4F', '404142434445464748494A4B4C4D4E4F', '0C')
    gp.Authentication(card, '01')
    gp.Send('80E64000'+LV('00000000'+LV('EF'+LV('A0'+LV('86'+LV('A0'+LV('80'+LV('0411223344')+'81'+LV('20')+'82'+LV('0800')+'83'+LV('02535A')+'84'+LV('C0')+'85'+LV('01')+'86'+LV('020200'))))))+'00'),card,'9000')
コード例 #6
0
def _setOPEN():
    card = Card.Card()
    apdu = APDU(card)
    apdu.send('00A4040000')
    assert apdu.sw == '9000'
    gp = GP.GP('404142434445464748494A4B4C4D4E4F',
               '404142434445464748494A4B4C4D4E4F',
               '404142434445464748494A4B4C4D4E4F', '0C')
    gp.Authentication(card, '01')
    gp.Send(
        '80E64000' + LV('00000000' + LV('EF' + LV('A0' + LV('86' + LV(
            'A0' + LV('80' + LV('0411223344') + '81' + LV('20') + '82' +
                      LV('0800') + '83' + LV('02535A') + '84' + LV('C0') +
                      '85' + LV('01') + '86' + LV('020200')))))) + '00'), card,
        '9000')
コード例 #7
0
def ReadLog(aid):
    card = Card.Card()
    apdu = APDU(card)
    apdu.selectAID(aid)
    apdu.selectFID('1001')
    for i in range(1, 20):
        sfi = '18'
        apdu.updateRecord('00', sfi, 23 * '00', mode='04')
        #apdu.readRecord('%02X'%i, sfi,'00')
        assert apdu.sw == '9000'
コード例 #8
0
ファイル: InstallPPSE.py プロジェクト: YinGithub/DemoWallet
def _installPPSE(card):
    card.Transmit('00A4040000') 
    gp = GP.GP('404142434445464748494A4B4C4D4E4F', '404142434445464748494A4B4C4D4E4F', '404142434445464748494A4B4C4D4E4F', '0C')
    gp.Authentication(card, '01')
    aid = '325041592e5359532e4444463031'
   
    gp.Delete(aid,card)
    p = 'C900' + 'EF'+ LV('A0'+LV('A5038201C0810101'))
    P = 'C9038FF000EF0AA008810101A5038201C0'
    gp.Install(PKG_AID, MDL_AID, aid, card,p)
    apdu = APDU(card)
    apdu.selectAID(PPSE_AID)
    apdu.gpInit('404142434445464748494A4B4C4D4E4F', '404142434445464748494A4B4C4D4E4F', '404142434445464748494A4B4C4D4E4F', '0C')        
    apdu.gpAuth()
    DGI9102_PPSE = '9102'+LV('A5'+LV81('BF0C'+LV('61'+LV('4F'+LV('A00000033301010600030800005A5954')+'50'+LV('50424F435F437265646974')+'870101'))))

    apdu.gpStoreData(DGI9102_PPSE, last = True)
コード例 #9
0
ファイル: ReadLog.py プロジェクト: YinGithub/DemoWallet
def ReadLog(aid):
    card = Card.Card()
    apdu = APDU(card)
    apdu.selectAID(aid)
    apdu.selectFID("1001")
    for i in range(1, 20):
        sfi = "18"
        apdu.updateRecord("00", sfi, 23 * "00", mode="04")
        # apdu.readRecord('%02X'%i, sfi,'00')
        assert apdu.sw == "9000"
コード例 #10
0
ファイル: defaultSelect.py プロジェクト: YinGithub/DemoWallet
def _defaultSelect():
    card = Card.Card()
    apdu = APDU(card)
    apdu.selectFID('1001')
    assert apdu.sw == '9000'
    apdu.getBalance(True)
    assert apdu.sw == '9000'
コード例 #11
0
ファイル: uploadAll.py プロジェクト: YinGithub/DemoWallet
def load(card,loadAll = False):
    apdu = APDU(card)
    dirList = os.listdir(pkg_path)
    itemList = LoadELFDict.keys()
    for e in dirList:
        for x in itemList:
            import re
            if re.search(x[:5]+'.*'+x[5:]+'$', e[:-4]):
                LoadELFDict[x][1] = e
    apdu.selectAID(SD_AID)
    
    gp = GP.GP('404142434445464748494A4B4C4D4E4F', '404142434445464748494A4B4C4D4E4F', '404142434445464748494A4B4C4D4E4F', '0C')
    gp.Authentication(card, '01')
    if loadAll:
        for e in DeleteSeq:
            gp.Delete(LoadELFDict[e][0] ,card,related=True)
        for e in InstallSeq:
  
            gp.load(SD_AID,pkg_path+ "\\" + LoadELFDict[e][1],card)
    else:
        gp.Delete(LoadELFDict['0010'][0] ,card,related=True)
        gp.load(SD_AID,pkg_path+ "\\" + LoadELFDict['0010'][1],card)
コード例 #12
0
ファイル: InstallPPSE.py プロジェクト: YinGithub/DemoWallet
def _installPPSE(card):
    card.Transmit('00A4040000')
    gp = GP.GP('404142434445464748494A4B4C4D4E4F',
               '404142434445464748494A4B4C4D4E4F',
               '404142434445464748494A4B4C4D4E4F', '0C')
    gp.Authentication(card, '01')
    aid = '325041592e5359532e4444463031'

    gp.Delete(aid, card)
    p = 'C900' + 'EF' + LV('A0' + LV('A5038201C0810101'))
    P = 'C9038FF000EF0AA008810101A5038201C0'
    gp.Install(PKG_AID, MDL_AID, aid, card, p)
    apdu = APDU(card)
    apdu.selectAID(PPSE_AID)
    apdu.gpInit('404142434445464748494A4B4C4D4E4F',
                '404142434445464748494A4B4C4D4E4F',
                '404142434445464748494A4B4C4D4E4F', '0C')
    apdu.gpAuth()
    DGI9102_PPSE = '9102' + LV('A5' + LV81('BF0C' + LV(
        '61' + LV('4F' + LV('A00000033301010600030800005A5954') + '50' +
                  LV('50424F435F437265646974') + '870101'))))

    apdu.gpStoreData(DGI9102_PPSE, last=True)
コード例 #13
0
ファイル: ActiveCard.py プロジェクト: YinGithub/DemoWallet
def _activeCard(aid):
    card = Card.Card()
    apdu = APDU(card)
    apdu.selectAID(ProxyInstanceAID)
    card.Transmit('80F0008000')
    card.Transmit('80F00001'+LV('4F'+LV(aid)), '9000')
コード例 #14
0
ファイル: ActiveCard.py プロジェクト: YinGithub/DemoWallet
def _activeCard(aid):
    card = Card.Card()
    apdu = APDU(card)
    apdu.selectAID(ProxyInstanceAID)
    card.Transmit('80F0008000')
    card.Transmit('80F00001' + LV('4F' + LV(aid)), '9000')
コード例 #15
0
ファイル: SELECTppsE.py プロジェクト: YinGithub/DemoWallet
def _defaultSelect():
    card = Card.Card()
    apdu = APDU(card)
    apdu.selectAID('325041592E5359532E4444463031')
    apdu.selectAID('A00000033301010600030800005A5954')
    apdu.selectAID('A0000003335342540000000D')
    apdu.selectFID('1001')
    for aid in l:
        apdu.selectAID(aid)
コード例 #16
0
ファイル: SELECTppsE.py プロジェクト: YinGithub/DemoWallet
def _defaultSelect():
    card = Card.Card()
    apdu = APDU(card)
    apdu.selectAID('325041592E5359532E4444463031')
    apdu.selectAID('A00000033301010600030800005A5954')
    apdu.selectAID('A0000003335342540000000D')
    apdu.selectFID('1001')
    for aid in l:
        apdu.selectAID(aid)