Merge tid commands down one level per iceman's advice, updated docs

This commit is contained in:
klks
2026-05-25 13:37:32 +08:00
parent ad9fa0f927
commit 729c276fd3
2 changed files with 124 additions and 127 deletions
+46 -52
View File
@@ -672,7 +672,20 @@ static int CmdHFFmcosInfo(const char *Cmd) {
size_t dfname_len = 0;
const uint8_t *dfname = fmcos_tlv_find(outer, outer_len, 0x84, &dfname_len);
if (dfname != NULL) {
PrintAndLogEx(INFO, "DF Name (84): %s", sprint_hex(dfname, dfname_len));
bool name_is_ascii = true;
for (size_t i = 0; i < dfname_len; i++) {
if (dfname[i] < 0x20 || dfname[i] > 0x7E) {
name_is_ascii = false;
break;
}
}
if (name_is_ascii) {
PrintAndLogEx(INFO, "DF Name (84): %s ( " _GREEN_("%.*s") " )",
sprint_hex(dfname, dfname_len),
(int)dfname_len, (const char *)dfname);
} else {
PrintAndLogEx(INFO, "DF Name (84): %s", sprint_hex(dfname, dfname_len));
}
}
size_t prop_len = 0;
@@ -3913,9 +3926,9 @@ static const uint8_t g_fmcos_tid_mf_name[] = {
static int CmdHFFmcosTidSetCard(const char *Cmd) {
CLIParserContext *ctx;
CLIParserInit(&ctx, "hf fmcos tid setcard",
CLIParserInit(&ctx, "hf fmcos tidsetcard",
"Send the TID SET CARD configuration APDU (fixed 39-byte payload).",
"hf fmcos tid setcard");
"hf fmcos tidsetcard");
void *argtable[] = {
arg_param_begin,
arg_lit0("k", "keep", "keep field ON after command"),
@@ -3956,10 +3969,10 @@ static int CmdHFFmcosTidSetCard(const char *Cmd) {
static int CmdHFFmcosTidSetUID(const char *Cmd) {
CLIParserContext *ctx;
CLIParserInit(&ctx, "hf fmcos tid setuid",
CLIParserInit(&ctx, "hf fmcos tidsetuid",
"Program the TID card UID (4-7 bytes).",
"hf fmcos tid setuid --uid 13371337\n"
"hf fmcos tid setuid --uid 0102030405060708");
"hf fmcos tidsetuid --uid 13371337\n"
"hf fmcos tidsetuid --uid 0102030405060708");
void *argtable[] = {
arg_param_begin,
arg_str1(NULL, "uid", "<hex>", "UID bytes (4-7 bytes)"),
@@ -4009,11 +4022,11 @@ static int CmdHFFmcosTidSetUID(const char *Cmd) {
static int CmdHFFmcosTidSetAuth(const char *Cmd) {
CLIParserContext *ctx;
CLIParserInit(&ctx, "hf fmcos tid setauth",
CLIParserInit(&ctx, "hf fmcos tidsetauth",
"Write the TID internal authentication key and set the lock state.\n"
"Lock byte: 0xAA = locked (permanent), 0x55 = unlocked (default).",
"hf fmcos tid setauth --key 1122334455667788\n"
"hf fmcos tid setauth --key 1122334455667788 --lock");
"hf fmcos tidsetauth --key 1122334455667788\n"
"hf fmcos tidsetauth --key 1122334455667788 --lock");
void *argtable[] = {
arg_param_begin,
arg_str1(NULL, "key", "<hex>", "internal auth key (8 bytes)"),
@@ -4069,9 +4082,9 @@ static int CmdHFFmcosTidSetAuth(const char *Cmd) {
static int CmdHFFmcosTidErase(const char *Cmd) {
CLIParserContext *ctx;
CLIParserInit(&ctx, "hf fmcos tid erase",
CLIParserInit(&ctx, "hf fmcos tiderase",
"Erase the TID card file system (CLA=E0 INS=EC -- irreversible).",
"hf fmcos tid erase");
"hf fmcos tiderase");
void *argtable[] = {
arg_param_begin,
arg_lit0("k", "keep", "keep field ON after command"),
@@ -4112,12 +4125,12 @@ static int CmdHFFmcosTidErase(const char *Cmd) {
static int CmdHFFmcosTidProvision(const char *Cmd) {
CLIParserContext *ctx;
CLIParserInit(&ctx, "hf fmcos tid provision",
CLIParserInit(&ctx, "hf fmcos tidprovision",
"Full TID card provisioning sequence:\n"
" SET CARD -> SET UID -> SET INTERNAL AUTH -> ERASE\n"
" -> SELECT MF -> CREATE MF (3F00, 1PAY.SYS.DDF01) -> SELECT MF -> CREATE KEYFILE",
"hf fmcos tid provision --uid 13371337 --key 1122334455667788\n"
"hf fmcos tid provision --uid 13371337 --key 1122334455667788 --lock");
"hf fmcos tidprovision --uid 13371337 --key 1122334455667788\n"
"hf fmcos tidprovision --uid 13371337 --key 1122334455667788 --lock");
void *argtable[] = {
arg_param_begin,
arg_str1(NULL, "uid", "<hex>", "UID bytes (4-7 bytes)"),
@@ -4235,10 +4248,10 @@ tid_provision_fail:
static int CmdHFFmcosTidCreateDF(const char *Cmd) {
CLIParserContext *ctx;
CLIParserInit(&ctx, "hf fmcos tid createdf",
CLIParserInit(&ctx, "hf fmcos tidcreatedf",
"CREATE sub-DF using TID format (P1=01, FID in data).\n"
"Note: TID CREATE DF has a different layout from standard 'hf fmcos create dir'.",
"hf fmcos tid createdf --id 3f01 --size 0f00 --sfi 96 --name 44444630 31");
"hf fmcos tidcreatedf --id 3f01 --size 0f00 --sfi 96 --name 44444630 31");
void *argtable[] = {
arg_param_begin,
arg_str1(NULL, "id", "<4hex>", "2-byte file ID"),
@@ -4322,13 +4335,13 @@ static const CLIParserOption g_fmcos_tid_create_opts[] = {
static int CmdHFFmcosTidCreateBin(const char *Cmd) {
CLIParserContext *ctx;
CLIParserInit(&ctx, "hf fmcos tid createbin",
CLIParserInit(&ctx, "hf fmcos tidcreatebin",
"CREATE binary EF or KEYFILE using TID format (P1=02, FID in data, fixed Lc=11).\n"
"Use --type keyfile to create the fixed TID keyfile in the currently selected DF.\n"
"Note: TID CREATE EF has a different layout from standard 'hf fmcos create file'.",
"hf fmcos tid createbin --id 0001 --size 0100 --sfi 01\n"
"hf fmcos tid createbin --id 0002 --size 0040 --sfi 02 --rperm 20 --wperm f0\n"
"hf fmcos tid createbin --type keyfile");
"hf fmcos tidcreatebin --id 0001 --size 0100 --sfi 01\n"
"hf fmcos tidcreatebin --id 0002 --size 0040 --sfi 02 --rperm 20 --wperm f0\n"
"hf fmcos tidcreatebin --type keyfile");
void *argtable[] = {
arg_param_begin,
arg_str0(NULL, "type", "<type>", "file type: bin (default) or keyfile"),
@@ -4435,11 +4448,11 @@ static int CmdHFFmcosTidCreateBin(const char *Cmd) {
static int CmdHFFmcosTidCreateRec(const char *Cmd) {
CLIParserContext *ctx;
CLIParserInit(&ctx, "hf fmcos tid createrec",
CLIParserInit(&ctx, "hf fmcos tidcreaterec",
"CREATE fixed-length record EF using TID format (P1=02, subtype=01, FID in data, fixed Lc=11).\n"
"Note: TID CREATE EF has a different layout from standard 'hf fmcos create file'.",
"hf fmcos tid createrec --id 0003 --count 04 --reclen 08 --sfi 03\n"
"hf fmcos tid createrec --id 0003 --count 04 --reclen 10 --sfi 03 --rperm 20 --wperm f0");
"hf fmcos tidcreaterec --id 0003 --count 04 --reclen 08 --sfi 03\n"
"hf fmcos tidcreaterec --id 0003 --count 04 --reclen 10 --sfi 03 --rperm 20 --wperm f0");
void *argtable[] = {
arg_param_begin,
arg_str1(NULL, "id", "<4hex>", "2-byte file ID"),
@@ -4532,33 +4545,6 @@ static int CmdHFFmcosTidCreateRec(const char *Cmd) {
return (sw1 == 0x90 && sw2 == 0x00) ? PM3_SUCCESS : PM3_ESOFT;
}
static int CmdHFFmcosTidHelp(const char *Cmd);
static command_t TidCommandTable[] = {
{"help", CmdHFFmcosTidHelp, AlwaysAvailable, "This help"},
{"setcard", CmdHFFmcosTidSetCard, IfPm3Iso14443a, "SET CARD configuration block"},
{"setuid", CmdHFFmcosTidSetUID, IfPm3Iso14443a, "SET UID"},
{"setauth", CmdHFFmcosTidSetAuth, IfPm3Iso14443a, "SET INTERNAL AUTH key"},
{"erase", CmdHFFmcosTidErase, IfPm3Iso14443a, "ERASE card file system"},
{"provision", CmdHFFmcosTidProvision, IfPm3Iso14443a, "Full provisioning sequence"},
{"--------", CmdHFFmcosTidHelp, AlwaysAvailable, "--------- " _CYAN_("File creation") " ----------"},
{"createdf", CmdHFFmcosTidCreateDF, IfPm3Iso14443a, "CREATE sub-DF (TID format)"},
{"createbin", CmdHFFmcosTidCreateBin, IfPm3Iso14443a, "CREATE binary EF (TID format)"},
{"createrec", CmdHFFmcosTidCreateRec, IfPm3Iso14443a, "CREATE record EF (TID format)"},
{NULL, NULL, NULL, NULL}
};
static int CmdHFFmcosTidHelp(const char *Cmd) {
(void)Cmd;
CmdsHelp(TidCommandTable);
return PM3_SUCCESS;
}
static int CmdHFFmcosTid(const char *Cmd) {
clearCommandBuffer();
return CmdsParse(TidCommandTable, Cmd);
}
// ---------------------------------------------------------------------------
// Top-level command table
// ---------------------------------------------------------------------------
@@ -4588,8 +4574,16 @@ static command_t CommandTable[] = {
{"history", CmdHFFmcosHistory, IfPm3Iso14443a, "READ transaction history from loop EF"},
{"block", CmdHFFmcosBlock, IfPm3Iso14443a, "BLOCK card or application"},
{"unblock", CmdHFFmcosUnblock, IfPm3Iso14443a, "UNBLOCK application"},
{"--------", CmdHelp, AlwaysAvailable, "--------- " _CYAN_("TID provisioning") " ----------"},
{"tid", CmdHFFmcosTid, IfPm3Iso14443a, "{ TID card provisioning }"},
{"--------", CmdHelp, AlwaysAvailable, "--------- " _CYAN_("TID provisioning") " ----------"},
{"tidsetcard", CmdHFFmcosTidSetCard, IfPm3Iso14443a, "SET CARD configuration block"},
{"tidsetuid", CmdHFFmcosTidSetUID, IfPm3Iso14443a, "SET UID"},
{"tidsetauth", CmdHFFmcosTidSetAuth, IfPm3Iso14443a, "SET INTERNAL AUTH key"},
{"tiderase", CmdHFFmcosTidErase, IfPm3Iso14443a, "ERASE TID card file system"},
{"tidprovision", CmdHFFmcosTidProvision, IfPm3Iso14443a, "Full TID provisioning sequence"},
{"--------", CmdHelp, AlwaysAvailable, "--------- " _CYAN_("TID file creation") " ---------"},
{"tidcreatedf", CmdHFFmcosTidCreateDF, IfPm3Iso14443a, "CREATE sub-DF (TID format)"},
{"tidcreatebin", CmdHFFmcosTidCreateBin, IfPm3Iso14443a, "CREATE binary EF (TID format)"},
{"tidcreaterec", CmdHFFmcosTidCreateRec, IfPm3Iso14443a, "CREATE record EF (TID format)"},
{NULL, NULL, NULL, NULL}
};
+78 -75
View File
@@ -48,14 +48,14 @@ All commands in this family are reachable via `hf fmcos <subcommand>`.
- [Access Rights Byte](#access-rights-byte)
- [Complete Wallet Session Walkthrough](#complete-wallet-session-walkthrough)
- [TID Tag Provisioning](#tid-tag-provisioning)
- [tid setcard](#tid-setcard)
- [tid setuid](#tid-setuid)
- [tid setauth](#tid-setauth)
- [tid erase](#tid-erase)
- [tid provision](#tid-provision)
- [tid createdf](#tid-createdf)
- [tid createbin](#tid-createbin)
- [tid createrec](#tid-createrec)
- [tidsetcard](#tidsetcard)
- [tidsetuid](#tidsetuid)
- [tidsetauth](#tidsetauth)
- [tiderase](#tiderase)
- [tidprovision](#tidprovision)
- [tidcreatedf](#tidcreatedf)
- [tidcreatebin](#tidcreatebin)
- [tidcreaterec](#tidcreaterec)
- [TID Vendor Card Templates](#tid-vendor-card-templates)
---
@@ -1005,28 +1005,31 @@ When hf fmcos auth external is called with any key, the card will always return
[+] SW: 9000 - Success
[+] External authentication successful
All TID subcommands are reached via `hf fmcos tid <subcommand>`.
All TID commands are direct subcommands of `hf fmcos`, prefixed with `tid`.
| Subcommand | Description |
|------------|-------------|
| `setcard` | Write fixed card configuration block (`INS 0xEF`) |
| `setuid` | Program the ISO14443-A UID (`INS 0x85`) |
| `setauth` | Write the internal auth key and lock state (`INS 0x21`) |
| `erase` | Erase the card file system (`CLA 0xE0 INS 0xEC`) |
| `provision` | Full provisioning sequence in one command |
| Command | Description |
|---------|-------------|
| `tidsetcard` | Write fixed card configuration block (`INS 0xEF`) |
| `tidsetuid` | Program the ISO14443-A UID (`INS 0x85`) |
| `tidsetauth` | Write the internal auth key and lock state (`INS 0x21`) |
| `tiderase` | Erase the card file system (`CLA 0xE0 INS 0xEC`) |
| `tidprovision` | Full provisioning sequence in one command |
| `tidcreatedf` | CREATE sub-DF (TID format) |
| `tidcreatebin` | CREATE binary EF or KEYFILE (TID format) |
| `tidcreaterec` | CREATE record EF (TID format) |
> **Order matters.** When provisioning manually, always run `setcard` -> `setuid` -> `setauth`
> -> `erase` -> create file structure. `provision` does this automatically.
> **Order matters.** When provisioning manually, always run `tidsetcard` -> `tidsetuid` -> `tidsetauth`
> -> `tiderase` -> create file structure. `tidprovision` does this automatically.
---
### tid setcard
### tidsetcard
Send the fixed 39-byte SET CARD configuration APDU. The payload is hardcoded - there is
limited information on what the fields do. This must be sent before any other provisioning step.
```
hf fmcos tid setcard
hf fmcos tidsetcard
```
| Flag | Description |
@@ -1037,13 +1040,13 @@ hf fmcos tid setcard
---
### tid setuid
### tidsetuid
Program the card's ISO14443-A UID.
```
hf fmcos tid setuid --uid 13371337
hf fmcos tid setuid --uid 0102030405060708
hf fmcos tidsetuid --uid 13371337
hf fmcos tidsetuid --uid 0102030405060708
```
| Flag | Description |
@@ -1055,13 +1058,13 @@ hf fmcos tid setuid --uid 0102030405060708
---
### tid setauth
### tidsetauth
Write the 8-byte internal authentication key and set the lock state.
```
hf fmcos tid setauth --key 1122334455667788
hf fmcos tid setauth --key 1122334455667788 --lock
hf fmcos tidsetauth --key 1122334455667788
hf fmcos tidsetauth --key 1122334455667788 --lock
```
| Flag | Description |
@@ -1076,12 +1079,12 @@ hf fmcos tid setauth --key 1122334455667788 --lock
---
### tid erase
### tiderase
Erase the card's file system. Uses `CLA=0xE0` (not `0x80` as in standard FMCOS erase).
```
hf fmcos tid erase
hf fmcos tiderase
```
| Flag | Description |
@@ -1092,7 +1095,7 @@ hf fmcos tid erase
---
### tid provision
### tidprovision
Full provisioning sequence in a single command. Chains all steps with the RF field held on
and aborts with an error message if any step fails.
@@ -1108,8 +1111,8 @@ Steps performed:
8. CREATE KEYFILE
```
hf fmcos tid provision --uid 13371337 --key 1122334455667788
hf fmcos tid provision --uid 13371337 --key 1122334455667788 --lock
hf fmcos tidprovision --uid 13371337 --key 1122334455667788
hf fmcos tidprovision --uid 13371337 --key 1122334455667788 --lock
```
| Flag | Description |
@@ -1119,19 +1122,19 @@ hf fmcos tid provision --uid 13371337 --key 1122334455667788 --lock
| `--lock` | Lock the auth key permanently after writing |
| `-k` / `--keep` | Keep field on after completion |
After `provision`, use `tid createdf` / `tid createbin` / `tid createrec` to build
After `tidprovision`, use `tidcreatedf` / `tidcreatebin` / `tidcreaterec` to build
the file structure, then `hf fmcos write binary` / `hf fmcos write record` to populate data.
---
### tid createdf
### tidcreatedf
CREATE a sub-DF using the TID APDU format. The standard `hf fmcos create dir` uses a
different data layout (FID in P1/P2, leading `0x38` byte); this command uses the TID layout
where P1=`0x01` and the FID is the first field in the data.
```
hf fmcos tid createdf --id 3f01 --size 0f00 --sfi 96 --name 444446303133
hf fmcos tidcreatedf --id 3f01 --size 0f00 --sfi 96 --name 444446303133
```
| Flag | Description |
@@ -1146,7 +1149,7 @@ hf fmcos tid createdf --id 3f01 --size 0f00 --sfi 96 --name 444446303133
---
### tid createbin
### tidcreatebin
CREATE a binary EF or KEYFILE using the TID APDU format. The standard `hf fmcos create file --type bin`
uses a different layout (FID in P1/P2, 7-byte payload); this command uses the TID layout
@@ -1156,9 +1159,9 @@ Use `--type keyfile` to create the fixed TID keyfile (subtype `1E`) in the curre
Every sub-DF needs a keyfile before EFs can be created inside it.
```
hf fmcos tid createbin --id 0001 --size 0100 --sfi 01
hf fmcos tid createbin --id 0002 --size 0040 --sfi 02 --rperm 20 --wperm f0
hf fmcos tid createbin --type keyfile
hf fmcos tidcreatebin --id 0001 --size 0100 --sfi 01
hf fmcos tidcreatebin --id 0002 --size 0040 --sfi 02 --rperm 20 --wperm f0
hf fmcos tidcreatebin --type keyfile
```
| Flag | Description |
@@ -1177,15 +1180,15 @@ hf fmcos tid createbin --type keyfile
---
### tid createrec
### tidcreaterec
CREATE a fixed-length record EF using the TID APDU format. The standard `hf fmcos create file --type fix`
uses a different layout; this command uses the TID layout where P1=`0x02`, subtype=`0x01`,
and count+reclen replace the size field.
```
hf fmcos tid createrec --id 0003 --count 04 --reclen 08 --sfi 03
hf fmcos tid createrec --id 0003 --count 04 --reclen 10 --sfi 03 --rperm 20 --wperm f0
hf fmcos tidcreaterec --id 0003 --count 04 --reclen 08 --sfi 03
hf fmcos tidcreaterec --id 0003 --count 04 --reclen 10 --sfi 03 --rperm 20 --wperm f0
```
| Flag | Description |
@@ -1217,7 +1220,7 @@ normally provided when you buy these TID cards.
command finishes without `-k` the field drops and the card resets to MF context on the
next activation.
- Each sub-DF requires a TID-format keyfile created immediately after selecting it. Use
`hf fmcos tid createbin --type keyfile` - the standard `hf fmcos create keyfile` uses a
`hf fmcos tidcreatebin --type keyfile` - the standard `hf fmcos create keyfile` uses a
different APDU layout and cannot create TID keyfiles.
---
@@ -1231,11 +1234,11 @@ MF 3F00 "1PAY.SYS.DDF01" SFI 0x02
```
```
hf fmcos tid provision --uid 13371337 --key 0001020304050607
hf fmcos tid createdf --id 7572 --size 0200 --sfi 02 --name 390130990807 -k
hf fmcos tidprovision --uid 13371337 --key 0001020304050607
hf fmcos tidcreatedf --id 7572 --size 0200 --sfi 02 --name 390130990807 -k
hf fmcos select --id 7572 -k
hf fmcos tid createbin --type keyfile -k
hf fmcos tid createrec --id 0001 --count 06 --reclen 10 --sfi 03 -k
hf fmcos tidcreatebin --type keyfile -k
hf fmcos tidcreaterec --id 0001 --count 06 --reclen 10 --sfi 03 -k
hf fmcos write record --rec 01 --fid 03 --data 018609DD110000000000010100000000 -k
hf fmcos write record --rec 02 --fid 03 --data 00000000000000000000000000000000 -k
hf fmcos write record --rec 03 --fid 03 --data 0000000000070A0D1707120000008800 -k
@@ -1256,14 +1259,14 @@ MF 3F00 "1PAY.SYS.DDF01" SFI 0x02
```
```
hf fmcos tid provision --uid 13371337 --key 0001020304050607
hf fmcos tid createdf --id 1001 --size 0200 --sfi 02 --name A00000000386980701 -k
hf fmcos tidprovision --uid 13371337 --key 0001020304050607
hf fmcos tidcreatedf --id 1001 --size 0200 --sfi 02 --name A00000000386980701 -k
hf fmcos select --id 1001 -k
hf fmcos tid createbin --type keyfile -k
hf fmcos tid createbin --id 0018 --size 008C --sfi 18 -k
hf fmcos tidcreatebin --type keyfile -k
hf fmcos tidcreatebin --id 0018 --size 008C --sfi 18 -k
hf fmcos select --id 0018 -k
hf fmcos write binary --p1 00 --p2 00 --data 001FD921090700000001000023590000000000E0FFFFFF7F0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -k
hf fmcos tid createbin --id 0019 --size 008C --sfi 19 -k
hf fmcos tidcreatebin --id 0019 --size 008C --sfi 19 -k
hf fmcos select --id 0019 -k
hf fmcos write binary --p1 00 --p2 00 --data 001FD921090700000001000023590000FFFFFFFFFFFF010000000000E0FFFFFF0F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
```
@@ -1279,11 +1282,11 @@ MF 3F00 "1PAY.SYS.DDF01" SFI 0x02
```
```
hf fmcos tid provision --uid 13371337 --key 0001020304050607
hf fmcos tid createdf --id 4A54 --size 0300 --sfi 02 --name 6A696E00000000626FA5049F080102 -k
hf fmcos tidprovision --uid 13371337 --key 0001020304050607
hf fmcos tidcreatedf --id 4A54 --size 0300 --sfi 02 --name 6A696E00000000626FA5049F080102 -k
hf fmcos select --id 4A54 -k
hf fmcos tid createbin --type keyfile -k
hf fmcos tid createbin --id 4200 --size 0270 --sfi 01 -k
hf fmcos tidcreatebin --type keyfile -k
hf fmcos tidcreatebin --id 4200 --size 0270 --sfi 01 -k
hf fmcos select --id 4200 -k
hf fmcos write binary --p1 02 --p2 50 --data 530030FFFFFFFFFFFFFF3A2B0000000022012200002403081106000000007F00
```
@@ -1304,24 +1307,24 @@ MF 3F00 "1PAY.SYS.DDF01" SFI 0x02
```
```
hf fmcos tid provision --uid 13371337 --key 0001020304050607
hf fmcos tid createdf --id 3F01 --size 0400 --sfi 02 --name 4444463031 -k
hf fmcos tidprovision --uid 13371337 --key 0001020304050607
hf fmcos tidcreatedf --id 3F01 --size 0400 --sfi 02 --name 4444463031 -k
hf fmcos select --id 3F01 -k
hf fmcos tid createbin --type keyfile -k
hf fmcos tid createbin --id 0001 --size 0001 --sfi 01 -k
hf fmcos tid createbin --id 0003 --size 001C --sfi 03 -k
hf fmcos tidcreatebin --type keyfile -k
hf fmcos tidcreatebin --id 0001 --size 0001 --sfi 01 -k
hf fmcos tidcreatebin --id 0003 --size 001C --sfi 03 -k
hf fmcos select --id 0003 -k
hf fmcos write binary --p1 00 --p2 00 --data FE937B922D7EDEF50000000000000000000000000000000000000000 -k
hf fmcos tid createbin --id 0004 --size 0078 --sfi 04 -k
hf fmcos tidcreatebin --id 0004 --size 0078 --sfi 04 -k
hf fmcos select --id 0004 -k
hf fmcos write binary --p1 00 --p2 00 --data 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -k
hf fmcos tid createbin --id 0005 --size 0024 --sfi 05 -k
hf fmcos tidcreatebin --id 0005 --size 0024 --sfi 05 -k
hf fmcos select --id 0005 -k
hf fmcos write binary --p1 00 --p2 00 --data 6403FE9C7434FCBC6E00FC9F2802F1448F06F3BA8CF6F0B98DF7F1B84D0BF60000000000 -k
hf fmcos tid createbin --id 0006 --size 0084 --sfi 06 -k
hf fmcos tidcreatebin --id 0006 --size 0084 --sfi 06 -k
hf fmcos select --id 0006 -k
hf fmcos write binary --p1 00 --p2 00 --data 616BEACE7705FCBD7604FDBC7107F2BB7006F3BA7309F0B97208F1B84D0B09B74C0AF7494F0DF4B5B10CF5B449F0EAB3480E14B24B31E84E4A30E9B0BA33EEAF44CDEFAE473513AD4634ED534137E2ABBF36E3AA43C6E0A942381EA85D3BE6585C3AE7A6A03DE4A55E000000000000000000000000000000000000000000000000000000 -k
hf fmcos tid createbin --id 0007 --size 0066 --sfi 07 -k
hf fmcos tidcreatebin --id 0007 --size 0066 --sfi 07 -k
hf fmcos select --id 0007 -k
hf fmcos write binary --p1 00 --p2 00 --data 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
```
@@ -1339,17 +1342,17 @@ MF 3F00 "1PAY.SYS.DDF01" SFI 0x02
```
```
hf fmcos tid provision --uid 13371337 --key 0001020304050607
hf fmcos tid createdf --id D0F1 --size 0100 --sfi 02 --name 584C313233 -k
hf fmcos tidprovision --uid 13371337 --key 0001020304050607
hf fmcos tidcreatedf --id D0F1 --size 0100 --sfi 02 --name 584C313233 -k
hf fmcos select --id D0F1 -k
hf fmcos tid createbin --type keyfile -k
hf fmcos tid createbin --id 0005 --size 0040 --sfi 05 -k
hf fmcos tidcreatebin --type keyfile -k
hf fmcos tidcreatebin --id 0005 --size 0040 --sfi 05 -k
hf fmcos select --id 0005 -k
hf fmcos write binary --p1 00 --p2 00 --data 0200FC20006200000000000000000000000000272E2C6A0000000000000000080000000000000000000000000000000000000000000000000000000000000000
hf fmcos tid createdf --id D0F2 --size 0100 --sfi 02 --name 584C343536 -k
hf fmcos tidcreatedf --id D0F2 --size 0100 --sfi 02 --name 584C343536 -k
hf fmcos select --id D0F2 -k
hf fmcos tid createbin --type keyfile -k
hf fmcos tid createbin --id 0005 --size 0040 --sfi 05 -k
hf fmcos tidcreatebin --type keyfile -k
hf fmcos tidcreatebin --id 0005 --size 0040 --sfi 05 -k
hf fmcos select --id 0005 -k
hf fmcos write binary --p1 00 --p2 00 --data 0200FC20006200000000000000000000000000272E2C6A0000000000000000080000000000000000000000000000000000000000000000000000000000000000
```
@@ -1365,11 +1368,11 @@ MF 3F00 "1PAY.SYS.DDF01" SFI 0x02
```
```
hf fmcos tid provision --uid 13371337 --key 0001020304050607
hf fmcos tid createdf --id 3F01 --size 0200 --sfi 02 --name 4144463031 -k
hf fmcos tidprovision --uid 13371337 --key 0001020304050607
hf fmcos tidcreatedf --id 3F01 --size 0200 --sfi 02 --name 4144463031 -k
hf fmcos select --id 3F01 -k
hf fmcos tid createbin --type keyfile -k
hf fmcos tid createbin --id 0003 --size 00FA --sfi 03 -k
hf fmcos tidcreatebin --type keyfile -k
hf fmcos tidcreatebin --id 0003 --size 00FA --sfi 03 -k
hf fmcos select --id 0003 -k
hf fmcos write binary --p1 00 --p2 00 --data D15190D7E1E379732295C97D62A3172BE3BBA1D1B32CE32FED72CB3DCDB115E7DC2670978E241822F298C9951260FC55D54F9988C7FCAC5032F94281DFC39C973E570101764D5BBF367F84EBDA1B012ABD4568F35D5BC08BAFD76B988CA916C985692337FCF02C9FD2C8BDD583BC05EF55582C3921FA2CAFAE26308FBADE0598DB750EE1F0522D29EAB6FA5D0F3971F785692337FCF02C9FD2C8BDD583BC05EF55582C3921FA2CAFAE26308FBADE0598DB750EE1F0522D29EAB6FA5D0F3971F7EA545FC5B27B7F40DF6D0F71FCEE2A1BCED2DEDE67BB57B1C1F98C8CDA5259CC7BD83158086F215F5E1E0246EE0504760000000000 -k
hf fmcos write binary --p1 00 --p2 F5 --data 0000000000