TrailerBlock trailerBlock = readTrailerBlock(readerWriter, sectorId);
if (trailerBlock != null) {
Key keyToWrite = trailerBlock.isKeyBReadable() ? Key.A : Key.B;
for (byte[] key : knownKeys) {
try {
initTransportConfig(readerWriter, sectorId, new KeyValue(keyToWrite, key));
for (int blockId = 0; blockId < memoryLayout.getBlocksPerSector(sectorId); blockId++) {
if (!memoryLayout.isTrailerBlock(sectorId, blockId) && !(blockId == 0 && sectorId == 0)) {
log.info("Cleaning S" + sectorId + "|B" + blockId);
MfClassicAccess access = new MfClassicAccess(new KeyValue(Key.A,
MfConstants.TRANSPORT_KEY), sectorId, blockId);
readerWriter.writeBlock(access, emptyDataBlock);
}
}
log.info("Sector " + sectorId + " clear with key: " + NfcUtils.convertBinToASCII(key));