#ifndef PROTOCOLS_H
#define PROTOCOLS_H
+#include <string.h>
+#include <stdint.h>
+#include <stdarg.h>
+
+
//The following data is taken from http://www.proxmark.org/forum/viewtopic.php?pid=13501#p13501
/*
ISO14443A (usually NFC tags)
#define TOPAZ_WRITE_NE8 0x1B // Write-no-erase (eight bytes)
+// Definetions of which protocol annotations there are available
#define ISO_14443A 0
#define ICLASS 1
#define ISO_14443B 2
#define TOPAZ 3
#define ISO_7816_4 4
#define MFDES 5
+#define LEGIC 6
//-- Picopass fuses
#define FUSE_FPERS 0x80
#define MFDES_CHANGE_KEY 0xc4
#define MFDES_GET_KEY_VERSION 0x64
#define MFDES_AUTHENTICATION_FRAME 0xAF
-
+
+// LEGIC Commands
+#define LEGIC_MIM_22 0x0D
+#define LEGIC_MIM_256 0x1D
+#define LEGIC_MIM_1024 0x3D
+#define LEGIC_ACK_22 0x19
+#define LEGIC_ACK_256 0x39
+#define LEGIC_READ 0x01
+#define LEGIC_WRITE 0x00
+
void printIclassDumpInfo(uint8_t* iclass_dump);
void getMemConfig(uint8_t mem_cfg, uint8_t chip_cfg, uint8_t *max_blk, uint8_t *app_areas, uint8_t *kb);
uint32_t GetT55xxClockBit(uint32_t clock);
+// iclass / picopass chip config structures and shared routines
+typedef struct {
+ uint8_t app_limit; //[8]
+ uint8_t otp[2]; //[9-10]
+ uint8_t block_writelock;//[11]
+ uint8_t chip_config; //[12]
+ uint8_t mem_config; //[13]
+ uint8_t eas; //[14]
+ uint8_t fuses; //[15]
+} picopass_conf_block;
+
+
+typedef struct {
+ uint8_t csn[8];
+ picopass_conf_block conf;
+ uint8_t epurse[8];
+ uint8_t key_d[8];
+ uint8_t key_c[8];
+ uint8_t app_issuer_area[8];
+} picopass_hdr;
+
+
#endif
// PROTOCOLS_H