Forum Replies Created

  • Re: Reply To: Reading Mifare Plus mix mode card

    7. September 2020 at 5:31
    in reply to: Reading Mifare Plus mix mode card
    Hi TapLinux,

    Unfortunately, I'm working with a vendor whose cards are running in MixedMode with a specific sector operating in SL3 mode which requires AES authentication.

    Can you please provide either the ADPU command structure or provide guidance on how to access the information via TapLinx.

    Thanks,

    Johnny





    + 0  |  - 0

    Re: Reply To: Reading Mifare Plus mix mode card

    21. August 2020 at 9:10
    in reply to: Reading Mifare Plus mix mode card
    Sample code below:

    `private void readSL3Sector(IPlusEV1SL1 plusEV1SL1) {

    KeyData keyData = new KeyData();
    keyData.setKey(new SecretKeySpec(SampleAppKeys.KEY_AES128, "AES"));
    try {
    IPlus.CardDetails cardDetails = plusEV1SL1.getSL3SectorHelper().getCardDetails();
    System.out.println("UID: " + Utilities.byteToHexString(cardDetails.uid));
    System.out.println("SL: " + cardDetails.securityLevel);
    System.out.println("VENDOR: " + cardDetails.vendorID);
    System.out.println("SAK: " + cardDetails.sak);

    byte[] bytes = plusEV1SL1.activateLayer4();
    System.out.println("RATS: " + Utilities.byteToHexString(bytes));

    int sector = 6;
    byte[] byPcdCaps = new byte[6];
    try {
    System.out.println(sector + " STARTING AUTHENTICATION");

    //Get the memory address from sector
    int memoryaddress = plusEV1SL1.getSL3SectorHelper().sectorNumberToBlockNumberForAESKeys((byte) sector);
    System.out.println(sector + " SECTOR MEMORY ADDRESS: " + memoryaddress);

    plusEV1SL1.getSL3SectorHelper().authenticateFirst(memoryaddress, keyData, byPcdCaps);
    System.out.println(sector + " Authentication result: " + Utilities.byteToHexString(byPcdCaps));

    byte[] read = plusEV1SL1.getSL3SectorHelper().read(IPlusSL3.ReadMode.Plain_ResponseMACed_CommandMACed, 0);
    System.out.println(sector + " Block Data BYTES: " + Utilities.dumpBytes(read));
    System.out.println(sector + " Block Data HEX: " + Utilities.byteToHexString(read));
    }catch(Exception ex){
    System.out.println(sector + " READ FAILED (" + ex.getMessage() + ")");
    System.out.println(sector + " PCD CAPS (" + Utilities.byteToHexString(byPcdCaps) + ")");
    ex.printStackTrace();
    showMessage(ex.getMessage(), PRINT);
    }
    } catch (Exception ex) {
    System.out.println("CONNECT FAILED (" + ex.getMessage() + ")");
    ex.printStackTrace();
    showMessage(ex.getMessage(), PRINT);
    }
    }
    `

    Responses Received is either: 'Not Acknowledge 0' or 'Not Acknowledge 4'
    + 0  |  - 0
Viewing 2 posts - 1 through 2 (of 2 total)