Ошибка 6F00 при удалении апплета из javacard - PullRequest
1 голос
/ 07 февраля 2020

Я использую NXP J2A040 JavaCard (с JCOP 2.4.1, J C 2.2.2, GP 2.1.1., T = 1, SCP02) и устанавливаю модифицированный ISOApplet (https://github.com/philipWendland/IsoApplet) на карточке. Апплет может работать хорошо, когда я его устанавливаю. После запуска некоторое время апплет всегда возвращает 6a86 / 6a82, когда я выбираю файлы (даже 3F00), и та же команда работала раньше. Кроме того, я не могу удалить пакет или апплет с карты. Я использую GlobalPlatformPro, но он всегда возвращает 6F00:

>gp --delete 010203040506070809 -d
GlobalPlatformPro 19.06.16-6-g9b08a1a-dirty
Running on Mac OS X 10.15.3 x86_64, Java 11.0.5 by Oracle Corporation
# Detected readers from JNA2PCSC
[*] ACS ACR38U
SCardConnect("ACS ACR38U", T=*) -> T=1, 3BFA1300008131FE458031A073BE211367432008
SCardBeginTransaction("ACS ACR38U")
A>> T=1 (4+0000) 00A40400 00
A<< (0094+2) (203ms) 6F5C8408A000000003000000A550734A06072A864886FC6B01600C060A2A864886FC6B02020101630906072A864886FC6B03640B06092A864886FC6B040255650B06092B8510864864020103660C060A2B060104012A026E01029F6501FF 9000
[TRACE] GPSession -  [6F]
[TRACE] GPSession -      [84] A000000003000000
[TRACE] GPSession -      [A5]
[TRACE] GPSession -          [73]
[TRACE] GPSession -              [06] 2A864886FC6B01
[TRACE] GPSession -              [60]
[TRACE] GPSession -                  [06] 2A864886FC6B02020101
[TRACE] GPSession -              [63]
[TRACE] GPSession -                  [06] 2A864886FC6B03
[TRACE] GPSession -              [64]
[TRACE] GPSession -                  [06] 2A864886FC6B040255
[TRACE] GPSession -              [65]
[TRACE] GPSession -                  [06] 2B8510864864020103
[TRACE] GPSession -              [66]
[TRACE] GPSession -                  [06] 2B060104012A026E0102
[TRACE] GPSession -          [9F65] FF
[DEBUG] GPSession - Auto-detected ISD: A000000003000000
Warning: no keys given, using default test key 404142434445464748494A4B4C4D4E4F
[WARN] PlaintextKeys - Don't know how to calculate KCV, defaulting to SCP02
[WARN] PlaintextKeys - Don't know how to calculate KCV, defaulting to SCP02
[WARN] PlaintextKeys - Don't know how to calculate KCV, defaulting to SCP02
[INFO] GPSession - Using card master keys: ENC=404142434445464748494A4B4C4D4E4F (KCV: 8BAF47) MAC=404142434445464748494A4B4C4D4E4F (KCV: 8BAF47) DEK=404142434445464748494A4B4C4D4E4F (KCV: 8BAF47) for null
[TRACE] GPSession - Generated host challenge: 57B1A9A20D500076
A>> T=1 (4+0008) 80500000 08 57B1A9A20D500076 00
A<< (0028+2) (34ms) 00000179C4001394AF85FF020054546A7D6BCADB6060020EA77AB757 9000
[DEBUG] GPSession - Host challenge: 57B1A9A20D500076
[DEBUG] GPSession - Card challenge: 0054546A7D6BCADB
[DEBUG] GPSession - Card reports SCP02 with key version 255 (0xFF)
[INFO] GPSession - Diversified card keys: ENC=404142434445464748494A4B4C4D4E4F (KCV: 8BAF47) MAC=404142434445464748494A4B4C4D4E4F (KCV: 8BAF47) DEK=404142434445464748494A4B4C4D4E4F (KCV: 8BAF47) for SCP02
[INFO] GPSession - Session keys: ENC=334D1555AC05F46C38E25F6BA7FB6556 MAC=A2EACAD1000FE407B17BB58C54817F49 RMAC=E3D3F305501201FE18AEFB19B3D40E6C, card keys=ENC=404142434445464748494A4B4C4D4E4F (KCV: 8BAF47) MAC=404142434445464748494A4B4C4D4E4F (KCV: 8BAF47) DEK=404142434445464748494A4B4C4D4E4F (KCV: 8BAF47) for SCP02
[DEBUG] GPSession - Verified card cryptogram: 6060020EA77AB757
[DEBUG] GPSession - Calculated host cryptogram: BAE8230B5D772802
[TRACE] SCP02Wrapper - MAC input: 8482010010BAE8230B5D772802
A>> T=1 (4+0016) 84820100 10 BAE8230B5D772802FDFC1525F3B78074
A<< (0000+2) (74ms) 9000
[TRACE] SCP02Wrapper - MAC input: 84F280020A4F00
A>> T=1 (4+0010) 84F28002 0A 4F00C88596C7D2029959 00
A<< (0019+2) (20ms) E3114F08A0000000030000009F700101C5019E 9000
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] A000000003000000
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -      [C5] 9E
[TRACE] SCP02Wrapper - MAC input: 84F240020A4F00
A>> T=1 (4+0010) 84F24002 0A 4F001C34D3A90627E254 00
A<< (0000+2) (72ms) 6A88
[TRACE] SCP02Wrapper - MAC input: 84F210020A4F00
A>> T=1 (4+0010) 84F21002 0A 4F008D3BB1EC56F5A430 00
A<< (0235+2) (147ms) E3174F07A00000000353509F7001018408A000000003535041E31F4F07A00000000043499F7001018407A000000000AA058407A000000000AA06E3184F0891560000140300019F70010184089156000014020001E31B4F05315041592E9F700101840E315041592E5359532E4444463031E3154F06A000000333019F7001018407A0000003330101E3434F07A00000000043489F7001018407A000000000AA0A8407A000000000AA048407A000000000AA098407A000000000AA018407A000000000AA028407A000000000AA0BE31C4F090102030405060708099F700101840B0102030405060708090102 9000
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] A0000000035350
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -      [84] A000000003535041
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] A0000000004349
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -      [84] A000000000AA05
[TRACE] GPRegistry -      [84] A000000000AA06
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] 9156000014030001
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -      [84] 9156000014020001
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] 315041592E
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -      [84] 315041592E5359532E4444463031
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] A00000033301
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -      [84] A0000003330101
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] A0000000004348
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -      [84] A000000000AA0A
[TRACE] GPRegistry -      [84] A000000000AA04
[TRACE] GPRegistry -      [84] A000000000AA09
[TRACE] GPRegistry -      [84] A000000000AA01
[TRACE] GPRegistry -      [84] A000000000AA02
[TRACE] GPRegistry -      [84] A000000000AA0B
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] 010203040506070809
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -      [84] 0102030405060708090102
[TRACE] SCP02Wrapper - MAC input: 84F220020A4F00
A>> T=1 (4+0010) 84F22002 0A 4F0021E3341FF04ED98C 00
A<< (0105+2) (91ms) E30D4F07A00000000353509F700101E30D4F07A00000000043499F700101E30E4F0891560000140300019F700101E30B4F05315041592E9F700101E30C4F06A000000333019F700101E30D4F07A00000000043489F700101E30F4F090102030405060708099F700101 9000
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] A0000000035350
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] A0000000004349
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] 9156000014030001
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] 315041592E
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] A00000033301
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] A0000000004348
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] 010203040506070809
[TRACE] GPRegistry -      [9F70] 01
[DEBUG] GPRegistry - Registry already contains PKG: A0000000035350, 1
[DEBUG] GPRegistry - Registry already contains PKG: A0000000004349, 1
[DEBUG] GPRegistry - Registry already contains PKG: 9156000014030001, 1
[DEBUG] GPRegistry - Registry already contains PKG: 315041592E, 1
[DEBUG] GPRegistry - Registry already contains PKG: A00000033301, 1
[DEBUG] GPRegistry - Registry already contains PKG: A0000000004348, 1
[DEBUG] GPRegistry - Registry already contains PKG: 010203040506070809, 1
[TRACE] DMTokenGenerator - No private key for token generation provided
[TRACE] GPSession - TLV payload:
[TRACE] GPSession -  [4F] 010203040506070809
[TRACE] SCP02Wrapper - MAC input: 84E40080134F09010203040506070809
A>> T=1 (4+0019) 84E40080 13 4F090102030405060708092FE68F12A06B9A11
A<< (0000+2) (73ms) 6F00
Could not delete AID: 010203040506070809
DELETE failed: 0x6F00

Теперь я не могу установить или удалить апплет на этой карте. Я искал и пробовал разные способы, такие как добавление «-deletedeps» к команде gp (что, по-моему, для старых инструментов gp, у текущего нет этого параметра). Есть ли другой способ, как я могу удалить этот апплет со своей карты или сбросить карту до пустой?

Возможная причина заключается в том, что я пишу функцию трассировки, которая может записывать APDU, работающий на карточка следующим образом. На моем тестовом симуляторе нет ошибок, и он также может хорошо работать на карте. Причинет ли это опасную утечку памяти или ошибки после отслеживания большого количества записей?

private byte[] everything =  new byte[256];
private short ins_length = 0;
private boolean startRecord = false;
...
public void process(APDU apdu) {
        byte buffer[] = apdu.getBuffer();
        byte ins = buffer[ISO7816.OFFSET_INS];
        byte[] cmdSplit = { (byte) 0x01, (byte) 0x23, (byte) 0x45, (byte) 0x67, (byte) 0x89};
        short traceLen = 20;

        if(startRecord){
            Util.arrayCopy(buffer, (short) 0, everything, ins_length, traceLen);
            ins_length += traceLen;
            if (ins_length > 230){
                ins_length = 0;
            }
            Util.arrayCopy(cmdSplit, (short) 0, everything, ins_length, (short) 5);
        }
        ...
        if(apdu.isISOInterindustryCLA()) {
            switch (ins) {
                ...
                case INS_START_RECORD: //0x97
                    startRecord = !startRecord;
                    break;
                case INS_CLEAR_TRACE: //0x98
                    everything = new byte[256];
                    ins_length = 0;
                    break;
                case INS_GET_EVERYTHING: //0x99
                    short le = apdu.setOutgoing();
                    byte[] fileData = everything;
                    short maxle = (short)(fileData.length);
                    if(le > maxle) {
                        le = maxle;
                    }
                    apdu.setOutgoingLength(le);
                    apdu.sendBytesLong(fileData, (short) 0, le);
                    break;
                default:
                    ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...