8 #define prnt PrintAndLog
16 uint8_t block_writelock
;
26 picopass_conf_block conf
;
30 uint8_t app_issuer_area
[8];
36 /*void prnt(char *fmt,...)
39 va_start(argptr, fmt);
41 printf(" "); // cleaning prompt
46 uint8_t isset(uint8_t val
, uint8_t mask
)
51 uint8_t notset(uint8_t val
, uint8_t mask
){
55 void fuse_config(const picopass_hdr
*hdr
)
57 uint8_t fuses
= hdr
->conf
.fuses
;
59 if (isset(fuses
,FUSE_FPERS
))prnt(" Mode: Personalization [Programmable]");
60 else prnt(" Mode: Application [Locked]");
62 if (isset(fuses
, FUSE_CODING1
))
66 if( isset( fuses
, FUSE_CODING0
)) prnt(" Coding: ISO 14443-2 B/ISO 15693");
67 else prnt(" Coding: ISO 14443B only");
69 if( isset (fuses
,FUSE_CRYPT1
| FUSE_CRYPT0
)) prnt(" Crypt: Secured page, keys not locked");
70 if( isset (fuses
,FUSE_CRYPT1
) && notset( fuses
, FUSE_CRYPT0
)) prnt(" Crypt: Secured page, keys not locked");
71 if( notset (fuses
,FUSE_CRYPT1
) && isset( fuses
, FUSE_CRYPT0
)) prnt(" Crypt: Non secured page");
72 if( notset (fuses
,FUSE_CRYPT1
) && notset( fuses
, FUSE_CRYPT0
)) prnt(" Crypt: No auth possible. Read only if RA is enabled");
74 if( isset( fuses
, FUSE_RA
)) prnt(" RA: Read access enabled");
75 else prnt(" RA: Read access not enabled");
77 void mem_config(const picopass_hdr
*hdr
)
79 uint8_t mem
= hdr
->conf
.mem_config
;
80 if( isset (mem
, 0x80)) prnt(" Mem: 16KBits (255 * 8 bytes)");
81 else prnt(" Mem: 2 KBits ( 32 * 8 bytes)");
84 void applimit_config(const picopass_hdr
*hdr
)
86 uint8_t applimit
= hdr
->conf
.app_limit
;
87 prnt(" AA1: blocks 6-%d", applimit
);
88 prnt(" AA2: blocks %d-", (applimit
+1));
90 void print_picopass_info(const picopass_hdr
*hdr
)
96 void printIclassDumpInfo(uint8_t* iclass_dump
)
99 // memcpy(&hdr, iclass_dump, sizeof(picopass_hdr));
100 print_picopass_info((picopass_hdr
*) iclass_dump
);
106 picopass_hdr hdr = {0x27,0xaf,0x48,0x01,0xf9,0xff,0x12,0xe0,0x12,0xff,0xff,0xff,0x7f,0x1f,0xff,0x3c};
107 prnt("Picopass configuration:");
108 print_picopass_info(&hdr);
110 int main(int argc, char *argv[])