mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
Merge branch 'master' into cherry_pick_emv
Signed-off-by: Iceman <iceman@iuse.se>
This commit is contained in:
commit
76ad5a5b51
149 changed files with 7795 additions and 2976 deletions
|
@ -161,7 +161,7 @@ typedef struct {
|
|||
uint8_t logdata_1[4];
|
||||
uint8_t nonce[4];
|
||||
|
||||
//Hitag s section
|
||||
// Hitag S section
|
||||
uint8_t mode;
|
||||
} PACKED lf_hitag_data_t;
|
||||
|
||||
|
|
|
@ -22,32 +22,32 @@
|
|||
#include "common.h"
|
||||
|
||||
// RDV40 Section
|
||||
// 256kb divided into 4k sectors.
|
||||
//
|
||||
// 0x3F000 - 1 4kb sector = signature
|
||||
// 0x3E000 - 1 4kb sector = settings
|
||||
// 0x3D000 - 1 4kb sector = default T55XX keys dictionary
|
||||
// 0x3B000 - 1 4kb sector = default ICLASS keys dictionary
|
||||
// 0x38000 - 3 4kb sectors = default MFC keys dictionary
|
||||
// 256KB divided into 4K sectors.
|
||||
// +--------+-------------+---------+--------------------------+
|
||||
// | Sector | 256KB addr* | Size | Description |
|
||||
// +--------+-------------+---------+--------------------------+
|
||||
// | N | 0x3F000 | 1 * 4KB | signature |
|
||||
// | N-1 | 0x3E000 | 1 * 4KB | reserved for future use |
|
||||
// +--------+-------------+---------+--------------------------+
|
||||
//
|
||||
// * For different memory size than 256KB the address is not valid.
|
||||
// Please instead refer to Sector number, where N is the last
|
||||
// 4KB secotr of the memory in question.
|
||||
|
||||
#ifndef FLASH_MEM_BLOCK_SIZE
|
||||
# define FLASH_MEM_BLOCK_SIZE 256
|
||||
#endif
|
||||
|
||||
#ifndef FLASH_MEM_MAX_SIZE
|
||||
# define FLASH_MEM_MAX_SIZE 0x40000 // (262144)
|
||||
#endif
|
||||
#ifndef FLASH_MEM_MAX_SIZE_P
|
||||
# define FLASH_MEM_MAX_SIZE_P(p64k) (1024 * 64 * (p64k))
|
||||
#endif
|
||||
|
||||
#ifndef FLASH_MEM_MAX_4K_SECTOR
|
||||
# define FLASH_MEM_MAX_4K_SECTOR 0x3F000
|
||||
#endif
|
||||
#ifndef FLASH_MEM_MAX_4K_SECTOR_P
|
||||
# define FLASH_MEM_MAX_4K_SECTOR_P(p64k) (FLASH_MEM_MAX_SIZE_P(p64k) - 4096)
|
||||
#endif
|
||||
|
||||
#define FLASH_RESERVED_TRAILING_4K_SECTORS 2
|
||||
|
||||
#ifndef FLASH_MEM_ID_LEN
|
||||
# define FLASH_MEM_ID_LEN 8
|
||||
#endif
|
||||
|
@ -56,10 +56,7 @@
|
|||
# define FLASH_MEM_SIGNATURE_LEN 128
|
||||
#endif
|
||||
|
||||
#ifndef FLASH_MEM_SIGNATURE_OFFSET
|
||||
// -1 for historical compatibility with already released Proxmark3 RDV4.0 devices
|
||||
# define FLASH_MEM_SIGNATURE_OFFSET (FLASH_MEM_MAX_SIZE - FLASH_MEM_SIGNATURE_LEN - 1)
|
||||
#endif
|
||||
#ifndef FLASH_MEM_SIGNATURE_OFFSET_P
|
||||
# define FLASH_MEM_SIGNATURE_OFFSET_P(p64k) (FLASH_MEM_MAX_SIZE_P(p64k) - FLASH_MEM_SIGNATURE_LEN - 1)
|
||||
#endif
|
||||
|
@ -68,42 +65,19 @@
|
|||
# define T55XX_CONFIG_LEN sizeof( t55xx_configurations_t )
|
||||
#endif
|
||||
|
||||
#ifndef T55XX_CONFIG_OFFSET
|
||||
# define T55XX_CONFIG_OFFSET (FLASH_MEM_MAX_4K_SECTOR - 0x2000)
|
||||
#endif
|
||||
#ifndef T55XX_CONFIG_OFFSET_P
|
||||
# define T55XX_CONFIG_OFFSET_P(p64k) (FLASH_MEM_MAX_4K_SECTOR_P(p64k) - 0x2000)
|
||||
#endif
|
||||
#define T55XX_CONFIG_FILE "cfg_t55xx.bin"
|
||||
|
||||
// Reserved space for T55XX PWD = 4 kb
|
||||
#ifndef DEFAULT_T55XX_KEYS_OFFSET
|
||||
# define DEFAULT_T55XX_KEYS_LEN (0x1000)
|
||||
# define DEFAULT_T55XX_KEYS_OFFSET (T55XX_CONFIG_OFFSET - DEFAULT_T55XX_KEYS_LEN)
|
||||
# define DEFAULT_T55XX_KEYS_MAX ((DEFAULT_T55XX_KEYS_LEN - 2) / 4)
|
||||
#endif
|
||||
#ifndef DEFAULT_T55XX_KEYS_OFFSET_P
|
||||
# define DEFAULT_T55XX_KEYS_OFFSET_P(p64k) (T55XX_CONFIG_OFFSET_P(p64k) - DEFAULT_T55XX_KEYS_LEN)
|
||||
#endif
|
||||
// T55XX PWD stored in spiffs
|
||||
#define T55XX_KEYS_FILE "dict_t55xx.bin"
|
||||
#define T55XX_KEY_LENGTH 4
|
||||
|
||||
// Reserved space for iClass keys = 4 kb
|
||||
#ifndef DEFAULT_ICLASS_KEYS_OFFSET
|
||||
# define DEFAULT_ICLASS_KEYS_LEN (0x1000)
|
||||
# define DEFAULT_ICLASS_KEYS_OFFSET (DEFAULT_T55XX_KEYS_OFFSET - DEFAULT_ICLASS_KEYS_LEN)
|
||||
# define DEFAULT_ICLASS_KEYS_MAX ((DEFAULT_ICLASS_KEYS_LEN - 2) / 8)
|
||||
#endif
|
||||
#ifndef DEFAULT_ICLASS_KEYS_OFFSET_P
|
||||
# define DEFAULT_ICLASS_KEYS_OFFSET_P(p64k) (DEFAULT_T55XX_KEYS_OFFSET_P(p64k) - DEFAULT_ICLASS_KEYS_LEN)
|
||||
#endif
|
||||
// iClass keys stored in spiffs
|
||||
#define ICLASS_KEYS_FILE "dict_iclass.bin"
|
||||
#define ICLASS_KEY_LENGTH 8
|
||||
|
||||
// Reserved space for MIFARE Keys = 12 kb
|
||||
#ifndef DEFAULT_MF_KEYS_OFFSET
|
||||
# define DEFAULT_MF_KEYS_LEN (0x3000)
|
||||
# define DEFAULT_MF_KEYS_OFFSET (DEFAULT_ICLASS_KEYS_OFFSET - DEFAULT_MF_KEYS_LEN)
|
||||
# define DEFAULT_MF_KEYS_MAX ((DEFAULT_MF_KEYS_LEN - 2) / 6)
|
||||
#endif
|
||||
#ifndef DEFAULT_MF_KEYS_OFFSET_P
|
||||
# define DEFAULT_MF_KEYS_OFFSET_P(p64k) (DEFAULT_ICLASS_KEYS_OFFSET_P(p64k) - DEFAULT_MF_KEYS_LEN)
|
||||
#endif
|
||||
// Mifare keys stored in spiffs
|
||||
#define MF_KEYS_FILE "dict_mf.bin"
|
||||
#define MF_KEY_LENGTH 6
|
||||
|
||||
// RDV40, validation structure to help identifying that client/firmware is talking with RDV40
|
||||
typedef struct {
|
||||
|
|
|
@ -263,20 +263,21 @@ ISO 7816-4 Basic interindustry commands. For command APDU's.
|
|||
#define MAGIC_SINGLE (MAGIC_HALT | MAGIC_INIT | MAGIC_OFF) //0x1E
|
||||
|
||||
// by CMD_HF_MIFARE_CIDENT / Flags
|
||||
#define MAGIC_FLAG_NONE 0x0000
|
||||
#define MAGIC_FLAG_GEN_1A 0x0001
|
||||
#define MAGIC_FLAG_GEN_1B 0x0002
|
||||
#define MAGIC_FLAG_GEN_2 0x0004
|
||||
#define MAGIC_FLAG_GEN_UNFUSED 0x0008
|
||||
#define MAGIC_FLAG_SUPER_GEN1 0x0010
|
||||
#define MAGIC_FLAG_SUPER_GEN2 0x0020
|
||||
#define MAGIC_FLAG_NTAG21X 0x0040
|
||||
#define MAGIC_FLAG_GEN_3 0x0080
|
||||
#define MAGIC_FLAG_GEN_4GTU 0x0100
|
||||
#define MAGIC_FLAG_GDM_AUTH 0x0200
|
||||
#define MAGIC_FLAG_QL88 0x0400
|
||||
#define MAGIC_FLAG_GDM_WUP_20 0x0800
|
||||
#define MAGIC_FLAG_GDM_WUP_40 0x1000
|
||||
#define MAGIC_FLAG_NONE 0x0000
|
||||
#define MAGIC_FLAG_GEN_1A 0x0001
|
||||
#define MAGIC_FLAG_GEN_1B 0x0002
|
||||
#define MAGIC_FLAG_GEN_2 0x0004
|
||||
#define MAGIC_FLAG_GEN_UNFUSED 0x0008
|
||||
#define MAGIC_FLAG_SUPER_GEN1 0x0010
|
||||
#define MAGIC_FLAG_SUPER_GEN2 0x0020
|
||||
#define MAGIC_FLAG_NTAG21X 0x0040
|
||||
#define MAGIC_FLAG_GEN_3 0x0080
|
||||
#define MAGIC_FLAG_GEN_4GTU 0x0100
|
||||
#define MAGIC_FLAG_GDM_AUTH 0x0200
|
||||
#define MAGIC_FLAG_QL88 0x0400
|
||||
#define MAGIC_FLAG_GDM_WUP_20 0x0800
|
||||
#define MAGIC_FLAG_GDM_WUP_40 0x1000
|
||||
#define MAGIC_FLAG_GDM_WUP_40_ZUID 0x2000
|
||||
|
||||
|
||||
// Commands for configuration of Gen4 GTU cards.
|
||||
|
@ -453,6 +454,7 @@ ISO 7816-4 Basic interindustry commands. For command APDU's.
|
|||
#define PROTO_MFPLUS 17
|
||||
#define PROTO_TEXKOM 18
|
||||
#define PROTO_XEROX 19
|
||||
#define PROTO_FMCOS20 20
|
||||
|
||||
// Picopass fuses
|
||||
#define FUSE_FPERS 0x80
|
||||
|
@ -950,5 +952,43 @@ ISO 7816-4 Basic interindustry commands. For command APDU's.
|
|||
// 0x0A = ACK
|
||||
// 0x05 = NACK
|
||||
|
||||
//FMCOS2.0
|
||||
#define FMCOS20_CMD_VERIFY_PIN 0x20
|
||||
#define FMCOS20_CMD_EXTERNAL_AUTHENTICATION 0x82
|
||||
#define FMCOS20_CMD_GET_CHALLENGE 0x84
|
||||
#define FMCOS20_CMD_INTERNAL_AUTHENTICATION 0x88
|
||||
#define FMCOS20_CMD_SELECT 0xA4
|
||||
#define FMCOS20_CMD_READ_BINARY 0xB0
|
||||
#define FMCOS20_CMD_READ_RECORD 0xB2
|
||||
#define FMCOS20_CMD_GET_RESPONSE 0xC0
|
||||
#define FMCOS20_CMD_UPDATE_BINARY 0xD6
|
||||
#define FMCOS20_CMD_UPDATE_RECORD 0xDC
|
||||
#define FMCOS20_CMD_APPEND_RECORD 0xE2
|
||||
#define FMCOS20_CMD_CARD_BLOCK 0x16
|
||||
#define FMCOS20_CMD_APP_UNBLOCK 0x18
|
||||
#define FMCOS20_CMD_APP_BLOCK 0x1E
|
||||
#define FMCOS20_CMD_PIN_UNBLOCK 0x24
|
||||
#define FMCOS20_CMD_UNBLOCK 0x2C
|
||||
#define FMCOS20_CMD_INITIALIZE_TRANSACTION 0x50
|
||||
#define FMCOS20_CMD_CREDIT_LOAD 0x52
|
||||
#define FMCOS20_CMD_PURCHASE 0x54
|
||||
#define FMCOS20_CMD_UPDATE_OVERDRAW_LIMIT 0x58
|
||||
#define FMCOS20_CMD_GET_TRANSACTION_PROOF 0x5A
|
||||
#define FMCOS20_CMD_GET_BALANCE 0x5C
|
||||
#define FMCOS20_CMD_CHANGE_PIN 0x5E
|
||||
#define FMCOS20_CMD_ERASE_DF 0x0E
|
||||
#define FMCOS20_CMD_PULL 0x30
|
||||
#define FMCOS20_CMD_CHARGE 0x32
|
||||
#define FMCOS20_CMD_WRITE_KEY 0xD4
|
||||
#define FMCOS20_CMD_CREATE_FILE 0xE0
|
||||
#define FMCOS20_CMD_WRITE_EEPROM 0x00
|
||||
#define FMCOS20_CMD_READ_EEPROM 0x04
|
||||
#define FMCOS20_CMD_INITIALIZE_EEPROM 0x02
|
||||
#define FMCOS20_CMD_READ_ROM 0x0C
|
||||
#define FMCOS20_CMD_INITIALIZE_GREY_LOCK_UNLOCK 0x7A
|
||||
#define FMCOS20_CMD_GREY_LOCK_UNLOCK 0x7C
|
||||
#define FMCOS20_CMD_DEBIT_UNLOCK 0x7E
|
||||
#define FMCOS20_CMD_CALCULATE_ROM_CRC 0x0A
|
||||
|
||||
#endif
|
||||
// PROTOCOLS_H
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue