recover_pk.py: replace secp192r1 by prime192v1
[RRG-proxmark3.git] / client / src / cmdhfmfu.h
blob37dbff558517b989bd38c1fa3beeadbac2583d1a
1 //-----------------------------------------------------------------------------
2 // Copyright (C) Proxmark3 contributors. See AUTHORS.md for details.
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // See LICENSE.txt for the text of the license.
15 //-----------------------------------------------------------------------------
16 // High frequency MIFARE ULTRALIGHT (C) commands
17 //-----------------------------------------------------------------------------
18 #ifndef CMDHFMFU_H__
19 #define CMDHFMFU_H__
21 #include "common.h"
23 #include "mifare.h" // structs
26 #define MFU_BLOCK_SIZE 0x04
27 #define MFU_MAX_BLOCKS 0xFF
28 #define MFU_MAX_BYTES (MFU_MAX_BLOCKS * MFU_BLOCK_SIZE)
30 // Old Ultralight/NTAG dump file format
31 // It is used only for converting
32 #define OLD_MFU_DUMP_PREFIX_LENGTH 48
34 typedef struct {
35 uint8_t version[8];
36 uint8_t tbo[2];
37 uint8_t tearing[3];
38 uint8_t pack[2];
39 uint8_t tbo1[1];
40 uint8_t signature[32];
41 //uint8_t counter[3];
42 uint8_t data[1024];
43 } PACKED old_mfu_dump_t;
45 typedef struct {
46 const char *name;
47 const char *model;
48 const char *version;
49 } ul_family_t;
51 uint64_t GetHF14AMfU_Type(void);
52 int ul_print_type(uint64_t tagtype, uint8_t spaces);
53 void mfu_print_dump(mfu_dump_t *card, uint16_t pages, uint8_t startpage, bool dense_output);
54 int ul_read_uid(uint8_t *uid);
55 int trace_mfuc_try_default_3des_keys(uint8_t **correct_key, int state, uint8_t (*authdata)[16]);
57 int CmdHFMFUltra(const char *Cmd);
58 int CmdHF14MfuNDEFRead(const char *Cmd);
59 int CmdHF14MfUTamper(const char *Cmd);
61 #define MFU_TT_UNKNOWN 0x0ULL
62 #define MFU_TT_UL 0x1ULL
63 #define MFU_TT_UL_C 0x2ULL
64 #define MFU_TT_UL_EV1_48 0x4ULL
65 #define MFU_TT_UL_EV1_128 0x8ULL
66 #define MFU_TT_NTAG 0x10ULL
67 #define MFU_TT_NTAG_203 0x20ULL
68 #define MFU_TT_NTAG_210 0x40ULL
69 #define MFU_TT_NTAG_212 0x80ULL
70 #define MFU_TT_NTAG_213 0x100ULL
71 #define MFU_TT_NTAG_215 0x200ULL
72 #define MFU_TT_NTAG_216 0x400ULL
73 #define MFU_TT_MY_D 0x800ULL
74 #define MFU_TT_MY_D_NFC 0x1000ULL
75 #define MFU_TT_MY_D_MOVE 0x2000ULL
76 #define MFU_TT_MY_D_MOVE_NFC 0x4000ULL
77 #define MFU_TT_MY_D_MOVE_LEAN 0x8000ULL
78 #define MFU_TT_NTAG_I2C_1K 0x10000ULL
79 #define MFU_TT_NTAG_I2C_2K 0x20000ULL
80 #define MFU_TT_NTAG_I2C_1K_PLUS 0x40000ULL
81 #define MFU_TT_NTAG_I2C_2K_PLUS 0x80000ULL
82 #define MFU_TT_FUDAN_UL 0x100000ULL
83 #define MFU_TT_MAGIC 0x200000ULL
84 #define MFU_TT_NTAG_213_F 0x400000ULL
85 #define MFU_TT_NTAG_216_F 0x800000ULL
86 #define MFU_TT_UL_EV1 0x1000000ULL
87 #define MFU_TT_UL_NANO_40 0x2000000ULL
88 #define MFU_TT_NTAG_213_TT 0x4000000ULL
89 #define MFU_TT_NTAG_213_C 0x8000000ULL
90 #define MFU_TT_MAGIC_1A 0x10000000ULL
91 #define MFU_TT_MAGIC_1B 0x20000000ULL
92 #define MFU_TT_MAGIC_NTAG 0x40000000ULL
93 #define MFU_TT_NTAG_210u 0x80000000ULL
94 #define MFU_TT_UL_AES 0x100000000ULL
95 #define MFU_TT_MAGIC_2 0x200000000ULL
96 #define MFU_TT_MAGIC_4 0x400000000ULL
97 #define MFU_TT_MAGIC_4_GDM 0x800000000ULL
98 #define MFU_TT_MAGIC_NTAG21X 0x1000000000ULL
99 #define MFU_TT_UL_MAGIC (MFU_TT_UL | MFU_TT_MAGIC)
100 #define MFU_TT_UL_C_MAGIC (MFU_TT_UL_C | MFU_TT_MAGIC)
101 // Don't forget to fill UL_TYPES_ARRAY and UL_MEMORY_ARRAY if new types are added
102 #define MFU_TT_UL_ERROR 0x7FFFFFFFULL
105 #endif