diff --git a/client/src/cmdhffmcos.c b/client/src/cmdhffmcos.c index 44f1138bc..646b3a244 100644 --- a/client/src/cmdhffmcos.c +++ b/client/src/cmdhffmcos.c @@ -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", "", "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", "", "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", "", "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", "", "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} }; diff --git a/doc/fmcos.md b/doc/fmcos.md index 5d65b1845..1eb2047d6 100644 --- a/doc/fmcos.md +++ b/doc/fmcos.md @@ -48,14 +48,14 @@ All commands in this family are reachable via `hf fmcos `. - [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 `. +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