+int usage_hf14_mifare(void){\r
+ PrintAndLog("Usage: hf mf mifare [h] <block number> <A|B>");\r
+ PrintAndLog("options:");\r
+ PrintAndLog(" h this help");\r
+ PrintAndLog(" <block number> (Optional) target other block");\r
+ PrintAndLog(" <A|B> (optional) target key type");\r
+ PrintAndLog("samples:");\r
+ PrintAndLog(" hf mf mifare");\r
+ PrintAndLog(" hf mf mifare 16");\r
+ PrintAndLog(" hf mf mifare 16 B");\r
+ return 0;\r
+}\r
+int usage_hf14_mf1ksim(void){\r
+ PrintAndLog("Usage: hf mf sim [h] u <uid> n <numreads> [i] [x] [e] [v]");\r
+ PrintAndLog("options:");\r
+ PrintAndLog(" h this help");\r
+ PrintAndLog(" u (Optional) UID 4,7 or 10bytes. If not specified, the UID 4b from emulator memory will be used");\r
+ PrintAndLog(" n (Optional) Automatically exit simulation after <numreads> blocks have been read by reader. 0 = infinite");\r
+ PrintAndLog(" i (Optional) Interactive, means that console will not be returned until simulation finishes or is aborted");\r
+ PrintAndLog(" x (Optional) Crack, performs the 'reader attack', nr/ar attack against a reader");\r
+ PrintAndLog(" e (Optional) Fill simulator keys from found keys");\r
+ PrintAndLog(" v (Optional) Verbose");\r
+ PrintAndLog("samples:");\r
+ PrintAndLog(" hf mf sim u 0a0a0a0a");\r
+ PrintAndLog(" hf mf sim u 11223344556677");\r
+ PrintAndLog(" hf mf sim u 112233445566778899AA"); \r
+ PrintAndLog(" hf mf sim u 11223344 i x"); \r
+ return 0;\r
+}\r
+int usage_hf14_dbg(void){\r
+ PrintAndLog("Usage: hf mf dbg [h] <debug level>");\r
+ PrintAndLog("options:");\r
+ PrintAndLog(" h this help"); \r
+ PrintAndLog(" <debug level> (Optional) see list for valid levels");\r
+ PrintAndLog(" 0 - no debug messages");\r
+ PrintAndLog(" 1 - error messages");\r
+ PrintAndLog(" 2 - plus information messages");\r
+ PrintAndLog(" 3 - plus debug messages");\r
+ PrintAndLog(" 4 - print even debug messages in timing critical functions");\r
+ PrintAndLog(" Note: this option therefore may cause malfunction itself");\r
+ PrintAndLog("samples:");\r
+ PrintAndLog(" hf mf dbg 3");\r
+ return 0;\r
+}\r
+int usage_hf14_sniff(void){\r
+ PrintAndLog("It continuously gets data from the field and saves it to: log, emulator, emulator file.");\r
+ PrintAndLog("Usage: hf mf sniff [h] [l] [d] [f]");\r
+ PrintAndLog("options:");\r
+ PrintAndLog(" h this help");\r
+ PrintAndLog(" l save encrypted sequence to logfile `uid.log`");\r
+ PrintAndLog(" d decrypt sequence and put it to log file `uid.log`");\r
+// PrintAndLog(" n/a e decrypt sequence, collect read and write commands and save the result of the sequence to emulator memory");\r
+ PrintAndLog(" f decrypt sequence, collect read and write commands and save the result of the sequence to emulator dump file `uid.eml`");\r
+ PrintAndLog("sample:");\r
+ PrintAndLog(" hf mf sniff l d f");\r
+ return 0;\r
+}\r
+int usage_hf14_nested(void){\r
+ PrintAndLog("Usage:");\r
+ PrintAndLog(" all sectors: hf mf nested <card memory> <block number> <key A/B> <key (12 hex symbols)> [t,d]");\r
+ PrintAndLog(" one sector: hf mf nested o <block number> <key A/B> <key (12 hex symbols)>");\r
+ PrintAndLog(" <target block number> <target key A/B> [t]");\r
+ PrintAndLog("options:");\r
+ PrintAndLog(" h this help");\r
+ PrintAndLog(" card memory - 0 - MINI(320 bytes), 1 - 1K, 2 - 2K, 4 - 4K, <other> - 1K");\r
+ PrintAndLog(" t transfer keys into emulator memory");\r
+ PrintAndLog(" d write keys to binary file");\r
+ PrintAndLog(" ");\r
+ PrintAndLog("samples:");\r
+ PrintAndLog(" hf mf nested 1 0 A FFFFFFFFFFFF ");\r
+ PrintAndLog(" hf mf nested 1 0 A FFFFFFFFFFFF t ");\r
+ PrintAndLog(" hf mf nested 1 0 A FFFFFFFFFFFF d ");\r
+ PrintAndLog(" hf mf nested o 0 A FFFFFFFFFFFF 4 A");\r
+ return 0;\r
+}\r
+int usage_hf14_hardnested(void){\r
+ PrintAndLog("Usage:");\r
+ PrintAndLog(" hf mf hardnested <block number> <key A|B> <key (12 hex symbols)>");\r
+ PrintAndLog(" <target block number> <target key A|B> [known target key (12 hex symbols)] [w] [s]");\r
+ PrintAndLog(" or hf mf hardnested r [known target key]");\r
+ PrintAndLog(" ");\r
+ PrintAndLog("options:");\r
+ PrintAndLog(" h this help"); \r
+ PrintAndLog(" w acquire nonces and write them to binary file nonces.bin");\r
+ PrintAndLog(" s slower acquisition (required by some non standard cards)");\r
+ PrintAndLog(" r read nonces.bin and start attack");\r
+ PrintAndLog(" t tests?");\r
+ PrintAndLog(" ");\r
+ PrintAndLog("samples:");\r
+ PrintAndLog(" hf mf hardnested 0 A FFFFFFFFFFFF 4 A");\r
+ PrintAndLog(" hf mf hardnested 0 A FFFFFFFFFFFF 4 A w");\r
+ PrintAndLog(" hf mf hardnested 0 A FFFFFFFFFFFF 4 A w s");\r
+ PrintAndLog(" hf mf hardnested r");\r
+ PrintAndLog(" hf mf hardnested r a0a1a2a3a4a5");\r
+ PrintAndLog(" ");\r
+ PrintAndLog("Add the known target key to check if it is present in the remaining key space:");\r
+ PrintAndLog(" sample5: hf mf hardnested 0 A A0A1A2A3A4A5 4 A FFFFFFFFFFFF");\r
+ return 0;\r
+}\r
+int usage_hf14_chk(void){\r
+ PrintAndLog("Usage: hf mf chk <block number>|<*card memory> <key type (A/B/?)> [t|d] [<key (12 hex symbols)>] [<dic (*.dic)>]");\r
+ PrintAndLog("options:");\r
+ PrintAndLog(" h this help"); \r
+ PrintAndLog(" * all sectors based on card memory, other values then below defaults to 1k");\r
+ PrintAndLog(" 0 - MINI(320 bytes)");\r
+ PrintAndLog(" 1 - 1K");\r
+ PrintAndLog(" 2 - 2K");\r
+ PrintAndLog(" 4 - 4K");\r
+ PrintAndLog(" d write keys to binary file");\r
+ PrintAndLog(" t write keys to emulator memory\n");\r
+ PrintAndLog(" ");\r
+ PrintAndLog("samples:");\r
+ PrintAndLog(" hf mf chk 0 A 1234567890ab keys.dic -- target block 0, Key A");\r
+ PrintAndLog(" hf mf chk *1 ? t -- target all blocks, all keys, 1K, write to emul");\r
+ PrintAndLog(" hf mf chk *1 ? d -- target all blocks, all keys, 1K, write to file");\r
+ return 0;\r
+}\r
+int usage_hf14_keybrute(void){\r
+ PrintAndLog("J_Run's 2nd phase of multiple sector nested authentication key recovery");\r
+ PrintAndLog("You have a known 4 last bytes of a key recovered with mf_nonce_brute tool.");\r
+ PrintAndLog("First 2 bytes of key will be bruteforced");\r
+ PrintAndLog("");\r
+ PrintAndLog("Usage: hf mf keybrute [h] <block number> <A|B> <key>");\r
+ PrintAndLog("options:");\r
+ PrintAndLog(" h this help");\r
+ PrintAndLog(" <block number> target block number");\r
+ PrintAndLog(" <A|B> target key type");\r
+ PrintAndLog(" <key> candidate key from mf_nonce_brute tool");\r
+ PrintAndLog("samples:");\r
+ PrintAndLog(" hf mf keybrute 1 A 000011223344");\r
+ return 0;\r
+}\r