9 #define prnt PrintAndLog
17 uint8_t block_writelock
;
27 picopass_conf_block conf
;
31 uint8_t app_issuer_area
[8];
37 /*void prnt(char *fmt,...)
40 va_start(argptr, fmt);
42 printf(" "); // cleaning prompt
47 uint8_t isset(uint8_t val
, uint8_t mask
)
52 uint8_t notset(uint8_t val
, uint8_t mask
){
56 void fuse_config(const picopass_hdr
*hdr
)
58 uint8_t fuses
= hdr
->conf
.fuses
;
60 if (isset(fuses
,FUSE_FPERS
))prnt(" Mode: Personalization [Programmable]");
61 else prnt(" Mode: Application [Locked]");
63 if (isset(fuses
, FUSE_CODING1
))
67 if( isset( fuses
, FUSE_CODING0
)) prnt(" Coding: ISO 14443-2 B/ISO 15693");
68 else prnt(" Coding: ISO 14443B only");
70 if( isset (fuses
,FUSE_CRYPT1
| FUSE_CRYPT0
)) prnt(" Crypt: Secured page, keys not locked");
71 if( isset (fuses
,FUSE_CRYPT1
) && notset( fuses
, FUSE_CRYPT0
)) prnt(" Crypt: Secured page, keys not locked");
72 if( notset (fuses
,FUSE_CRYPT1
) && isset( fuses
, FUSE_CRYPT0
)) prnt(" Crypt: Non secured page");
73 if( notset (fuses
,FUSE_CRYPT1
) && notset( fuses
, FUSE_CRYPT0
)) prnt(" Crypt: No auth possible. Read only if RA is enabled");
75 if( isset( fuses
, FUSE_RA
)) prnt(" RA: Read access enabled");
76 else prnt(" RA: Read access not enabled");
78 void mem_config(const picopass_hdr
*hdr
)
80 uint8_t mem
= hdr
->conf
.mem_config
;
81 if( isset (mem
, 0x80)) prnt(" Mem: 16KBits (255 * 8 bytes)");
82 else prnt(" Mem: 2 KBits ( 32 * 8 bytes)");
85 void applimit_config(const picopass_hdr
*hdr
)
87 uint8_t applimit
= hdr
->conf
.app_limit
;
88 prnt(" AA1: blocks 6-%d", applimit
);
89 prnt(" AA2: blocks %d-", (applimit
+1));
91 void print_picopass_info(const picopass_hdr
*hdr
)
97 void printIclassDumpInfo(uint8_t* iclass_dump
)
100 // memcpy(&hdr, iclass_dump, sizeof(picopass_hdr));
101 print_picopass_info((picopass_hdr
*) iclass_dump
);
107 picopass_hdr hdr = {0x27,0xaf,0x48,0x01,0xf9,0xff,0x12,0xe0,0x12,0xff,0xff,0xff,0x7f,0x1f,0xff,0x3c};
108 prnt("Picopass configuration:");
109 print_picopass_info(&hdr);
111 int main(int argc, char *argv[])