From 8f2b48a778ebfc9822cccf8b30c77a822ed03a17 Mon Sep 17 00:00:00 2001 From: zxkmm Date: Sat, 4 Jan 2025 21:14:20 +0800 Subject: [PATCH 1/7] add -o argument for hf mf autopwn --- client/src/cmdhfmf.c | 52 +++++++++++++++++++++++++++++--------------- doc/cheatsheet.md | 1 + 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 6c72bccbf..15a4d17f5 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2454,6 +2454,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { arg_lit0("a", NULL, "Input key A (def)"), arg_lit0("b", NULL, "Input key B"), arg_str0("f", "file", "", "filename of dictionary"), + arg_str0("o", "output", "", "filename suffix for dump and key files"), arg_lit0(NULL, "slow", "Slower acquisition (required by some non standard cards)"), arg_lit0("l", "legacy", "legacy mode (use the slow `hf mf chk`)"), arg_lit0("v", "verbose", "verbose output"), @@ -2501,29 +2502,34 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { char filename[FILE_PATH_SIZE] = {0}; CLIParamStrToBuf(arg_get_str(ctx, 5), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); - bool slow = arg_get_lit(ctx, 6); - bool legacy_mfchk = arg_get_lit(ctx, 7); - bool verbose = arg_get_lit(ctx, 8); + int outfnlen = 0; + char outfilename[FILE_PATH_SIZE] = {0}; + CLIParamStrToBuf(arg_get_str(ctx, 6), (uint8_t *)outfilename, FILE_PATH_SIZE, &outfnlen); - bool no_save = arg_get_lit(ctx, 9); - bool m0 = arg_get_lit(ctx, 10); - bool m1 = arg_get_lit(ctx, 11); - bool m2 = arg_get_lit(ctx, 12); - bool m4 = arg_get_lit(ctx, 13); + bool slow = arg_get_lit(ctx, 7); + bool legacy_mfchk = arg_get_lit(ctx, 8); + bool verbose = arg_get_lit(ctx, 9); - bool in = arg_get_lit(ctx, 14); + bool no_save = arg_get_lit(ctx, 10); + + bool m0 = arg_get_lit(ctx, 11); + bool m1 = arg_get_lit(ctx, 12); + bool m2 = arg_get_lit(ctx, 13); + bool m4 = arg_get_lit(ctx, 14); + + bool in = arg_get_lit(ctx, 15); #if defined(COMPILER_HAS_SIMD_X86) - bool im = arg_get_lit(ctx, 15); - bool is = arg_get_lit(ctx, 16); - bool ia = arg_get_lit(ctx, 17); - bool i2 = arg_get_lit(ctx, 18); + bool im = arg_get_lit(ctx, 16); + bool is = arg_get_lit(ctx, 17); + bool ia = arg_get_lit(ctx, 18); + bool i2 = arg_get_lit(ctx, 19); #endif #if defined(COMPILER_HAS_SIMD_AVX512) - bool i5 = arg_get_lit(ctx, 19); + bool i5 = arg_get_lit(ctx, 20); #endif #if defined(COMPILER_HAS_SIMD_NEON) - bool ie = arg_get_lit(ctx, 15); + bool ie = arg_get_lit(ctx, 16); #endif CLIParserFree(ctx); @@ -2691,7 +2697,13 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { } // read uid to generate a filename for the key file - char *fptr = GenerateFilename("hf-mf-", "-key.bin"); + char suffix[FILE_PATH_SIZE]; + if (outfilename[0] != '\0') { + snprintf(suffix, sizeof(suffix), "-key-%s.bin", outfilename); + } else { + snprintf(suffix, sizeof(suffix), "-key.bin"); + } + char *fptr = GenerateFilename("hf-mf-", suffix); // check if tag doesn't have static nonce int has_staticnonce = detect_classic_static_nonce(); @@ -3219,7 +3231,13 @@ all_found: } free(fptr); - fptr = GenerateFilename("hf-mf-", "-dump"); + + if (outfilename[0] != '\0') { + snprintf(suffix, sizeof(suffix), "-dump-%s", outfilename); + } else { + snprintf(suffix, sizeof(suffix), "-dump"); + } + fptr = GenerateFilename("hf-mf-", suffix); if (fptr == NULL) { free(dump); free(e_sector); diff --git a/doc/cheatsheet.md b/doc/cheatsheet.md index 0dd86c2a0..1d11df0be 100644 --- a/doc/cheatsheet.md +++ b/doc/cheatsheet.md @@ -294,6 +294,7 @@ Options: -a Input key A (def) -b Input key B -f, --file filename of dictionary +-o, --output filename for dump and key files -s, --slow Slower acquisition (required by some non standard cards) -l, --legacy legacy mode (use the slow `hf mf chk`) -v, --verbose verbose output (statistics) From 8f724b1f410ae7eb875e43643ffb0400ff25458b Mon Sep 17 00:00:00 2001 From: zxkmm Date: Sat, 4 Jan 2025 21:16:35 +0800 Subject: [PATCH 2/7] document - textual --- doc/cheatsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/cheatsheet.md b/doc/cheatsheet.md index 1d11df0be..98a0e0c61 100644 --- a/doc/cheatsheet.md +++ b/doc/cheatsheet.md @@ -294,7 +294,7 @@ Options: -a Input key A (def) -b Input key B -f, --file filename of dictionary --o, --output filename for dump and key files +-o, --output filename suffix for dump and key files -s, --slow Slower acquisition (required by some non standard cards) -l, --legacy legacy mode (use the slow `hf mf chk`) -v, --verbose verbose output (statistics) From be766fbe3b3440fb73603d0e961aa9b71ff4926b Mon Sep 17 00:00:00 2001 From: zxkmm Date: Sat, 4 Jan 2025 21:24:10 +0800 Subject: [PATCH 3/7] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75318a55e..e3096e763 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Added simulation function to `hf iclass legrec` (@antiklesys) - Added keys from Momentum firmware projects. (@onovy) - Added Dutch Statistics Agency default key (@eagle00789) +- Added cuxtom suffix for `hf mf autopwn` command. (@zxkmm) ## [Orca.4.19552][2024-11-22] - Fixed `hf_legic.lua` - removed bit32 commands from the script (@diorch1968) From 964d011b22e4c14354f7dba232ba7e5b5e5083c4 Mon Sep 17 00:00:00 2001 From: zxkmm Date: Sat, 4 Jan 2025 22:49:25 +0800 Subject: [PATCH 4/7] edit changelog per iceman request --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3096e763..5ebebd9c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,7 +26,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Added simulation function to `hf iclass legrec` (@antiklesys) - Added keys from Momentum firmware projects. (@onovy) - Added Dutch Statistics Agency default key (@eagle00789) -- Added cuxtom suffix for `hf mf autopwn` command. (@zxkmm) +- Changed hf mf autopwn - now allows for custom suffix (@zxkmm) ## [Orca.4.19552][2024-11-22] - Fixed `hf_legic.lua` - removed bit32 commands from the script (@diorch1968) From 4b5913cc7c558afff5cc39569a132acac70f3d0c Mon Sep 17 00:00:00 2001 From: zxkmm Date: Sat, 4 Jan 2025 22:52:05 +0800 Subject: [PATCH 5/7] check len instead of the actual buffer as per iceman request --- client/src/cmdhfmf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 15a4d17f5..0c94f0f68 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2698,7 +2698,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { // read uid to generate a filename for the key file char suffix[FILE_PATH_SIZE]; - if (outfilename[0] != '\0') { + if (outfnlen) { snprintf(suffix, sizeof(suffix), "-key-%s.bin", outfilename); } else { snprintf(suffix, sizeof(suffix), "-key.bin"); @@ -3232,7 +3232,7 @@ all_found: free(fptr); - if (outfilename[0] != '\0') { + if (outfnlen) { snprintf(suffix, sizeof(suffix), "-dump-%s", outfilename); } else { snprintf(suffix, sizeof(suffix), "-dump"); From 4f6bcb2198606a4f8b822f20795ad43f847a1744 Mon Sep 17 00:00:00 2001 From: zxkmm Date: Sat, 4 Jan 2025 22:56:11 +0800 Subject: [PATCH 6/7] not use long argument --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 0c94f0f68..0676d0578 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2454,7 +2454,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { arg_lit0("a", NULL, "Input key A (def)"), arg_lit0("b", NULL, "Input key B"), arg_str0("f", "file", "", "filename of dictionary"), - arg_str0("o", "output", "", "filename suffix for dump and key files"), + arg_str0("o", NULL, "", "filename suffix for dump and key files"), arg_lit0(NULL, "slow", "Slower acquisition (required by some non standard cards)"), arg_lit0("l", "legacy", "legacy mode (use the slow `hf mf chk`)"), arg_lit0("v", "verbose", "verbose output"), From b997a91cd5a385ebcb41a7c51848a806515b3a6f Mon Sep 17 00:00:00 2001 From: zxkmm Date: Sat, 4 Jan 2025 23:00:18 +0800 Subject: [PATCH 7/7] remove long name from sheet --- doc/cheatsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/cheatsheet.md b/doc/cheatsheet.md index 98a0e0c61..d9e7efcbb 100644 --- a/doc/cheatsheet.md +++ b/doc/cheatsheet.md @@ -294,7 +294,7 @@ Options: -a Input key A (def) -b Input key B -f, --file filename of dictionary --o, --output filename suffix for dump and key files +-o filename suffix for dump and key files -s, --slow Slower acquisition (required by some non standard cards) -l, --legacy legacy mode (use the slow `hf mf chk`) -v, --verbose verbose output (statistics)