//------------------------------------------------ //--- 010 Editor Binary Template // // File: Mifare1k.bt // Author: ilanyu // Version: 1.1 // Purpose: Parse MIFARE Classic 1k, NXP Card. // Category: Electronics // File Mask: // History: // 1.1 2017-9-27 ilanyu: show BCC // 1.0 2017-9-23 ilanyu: beta // // For MIFARE Classic 1k, NXP //------------------------------------------------ LittleEndian(); SetBackColor( cGray ); typedef struct { unsigned byte uid[4] ; byte bcc ; byte sak ; byte atqa[2] ; byte data[8] ; } Factor_Block ; string get_bcc(Factor_Block &factor_block) { local string bcc; SPrintf(bcc, "%X", factor_block.uid[0] ^ factor_block.uid[1] ^ factor_block.uid[2] ^ factor_block.uid[3]); return bcc; } string show_bcc(Factor_Block &factor_block) { local string bcc; SPrintf(bcc, "BCC: %X", factor_block.uid[0] ^ factor_block.uid[1] ^ factor_block.uid[2] ^ factor_block.uid[3]); return bcc; } typedef struct { byte data[16] ; } Data_Block; typedef struct { byte keyA[6] ; byte ACbits[3]; byte GPB[1] ; byte keyB[6] ; } Pass_Block; typedef struct { Data_Block data_block[3] ; Pass_Block pass_block ; } Sector; struct Sector_0 { Factor_Block factor_block ; Data_Block data_block[2] ; Pass_Block pass_block ; } sector_0 ; Sector sector ; Sector sector ; Sector sector ; Sector sector ; Sector sector ; Sector sector ; Sector sector ; Sector sector ; Sector sector ; Sector sector ; Sector sector ; Sector sector ; Sector sector ; Sector sector ; Sector sector ;