Liu Song’s Projects


~/Projects/proxmark3

git clone https://code.lsong.org/proxmark3

Commit

Commit
66b3ebabb96499f52b5ffe19b091c0450a08cb8b
Author
iceman1001 <[email protected]>
Date
2023-06-27 15:24:25 +0200 +0200
Diffstat
 client/pyscripts/pm3_help2json.py | 10 
 doc/commands.json | 1138 +++++++++-----------------------

fix regex for extracting the description and notes.\n description now must start with a newline and go until it see the word usage:. \n\n notes now go until it sees either === or --- or \n\n\n which all would be indication that the notes section ended.


diff --git a/client/pyscripts/pm3_help2json.py b/client/pyscripts/pm3_help2json.py
index 8099b5d7c06fdc2c227a545782285d84c8946d8d..34faedec5bea2b580ab26641bfc165fc6ece8f29 100755
--- a/client/pyscripts/pm3_help2json.py
+++ b/client/pyscripts/pm3_help2json.py
@@ -63,24 +63,24 @@
 
 def build_help_regex():
 This script takes the full text help output from the PM3 client and converts it to JSON.
-    # Reads the divider followed by the command itself
-This script takes the full text help output from the PM3 client and converts it to JSON.
 """
     # Reads if the command is available offline
     re_offline = r'available offline: (?P<offline>yes|no)\n+'
     # Reads the description lines
-This script takes the full text help output from the PM3 client and converts it to JSON.
+##############################################################################
 Authors / Maintainers:
     # Reads the usage string
     re_usage = r'(?:usage:\n(?P<usage>(?:.+\n)+)\n+)?'
     # Reads the options and there individual descriptions
     re_options = r'(?:options:\n(?P<options>(?:.+\n)+)\n+)?'
     # Reads the notes and examples
+#!/usr/bin/env python3
 Authors / Maintainers:
-"""
+ - Samuel Windall
     # Combine them into a single regex object
+#!/usr/bin/env python3
 Authors / Maintainers:
-
+Note:
     return re_full
 
 




diff --git a/doc/commands.json b/doc/commands.json
index 8d4185c52cddec39767806e875a08565688c171d..6523703da301bc306019656994dd7135a0946206 100644
--- a/doc/commands.json
+++ b/doc/commands.json
@@ -95,14 +95,6 @@                 "-C, --ind  inductance in micro henries (H)"
             ],
             "usage": "analyse freq [-h] [-F <int>] [-L <int>] [-C <int>]"
         },
-        "analyse help": {
-            "command": "analyse help",
-            "description": "help This help lcr Generate final byte for XOR LRC crc Stub method for CRC evaluations chksum Checksum with adding, masking and one's complement dates Look for datestamps in a given array of bytes lfsr LFSR tests a num bits test nuid create NUID from 7byte UID demodbuff Load binary string to DemodBuffer freq Calc wave lengths foo muxer units convert ETU <> US <> SSP_CLK (3.39MHz)",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
         "analyse lcr": {
             "command": "analyse lcr",
             "description": "Specifying the bytes of a UID with a known LRC will find the last byte value needed to generate that LRC with a rolling XOR. All bytes should be specified in HEX.",
@@ -402,14 +394,6 @@                 "-x  plot grid X coord",
                 "-y <dec> plot grid Y coord"
             ],
             "usage": "data grid [-h] [-x <dec>] [-y <dec>]"
-        },
-        "data help": {
-            "command": "data help",
-            "description": "help This help ----------- ------------------------- Modulation------------------------- biphaserawdecode Biphase decode bin stream in DemodBuffer detectclock Detect ASK, FSK, NRZ, PSK clock rate of wave in GraphBuffer fsktonrz Convert fsk2 to nrz wave for alternate fsk demodulating (for weak fsk) manrawdecode Manchester decode binary stream in DemodBuffer modulation Identify LF signal for clock and modulation rawdemod Demodulate the data in the GraphBuffer and output binary ----------- ------------------------- Graph------------------------- askedgedetect Adjust Graph for manual ASK demod using the length of sample differences to detect the edge of a wave autocorr Autocorrelation over window dirthreshold Max rising higher up-thres/ Min falling lower down-thres, keep rest as prev. decimate Decimate samples undecimate Un-decimate samples hide Hide graph window hpf Remove DC offset from trace iir Apply IIR buttersworth filter on plot data grid overlay grid on graph window ltrim Trim samples from left of trace mtrim Trim out samples from the specified start to the specified stop norm Normalize max/min to +/-128 plot Show graph window rtrim Trim samples from right of trace setgraphmarkers Set blue and orange marker in graph window shiftgraphzero Shift 0 for Graphed wave + or - shift value timescale Set a timescale to get a differential reading between the yellow and purple markers as time duration zerocrossings Count time between zero-crossings convertbitstream Convert GraphBuffer's 0/1 values to 127 / -127 getbitstream Convert GraphBuffer's >=1 values to 1 and <1 to 0 ----------- ------------------------- General------------------------- asn1 asn1 decoder bin2hex Converts binary to hexadecimal clear Clears bigbuf on deviceside and graph window diff diff of input files hex2bin Converts hexadecimal to binary load Load contents of file into graph window num Converts dec/hex/bin print Print the data in the DemodBuffer save Save signal trace data (from graph window) setdebugmode Set Debugging Level on client side",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
         },
         "data hex2bin": {
             "command": "data hex2bin",
@@ -854,15 +838,6 @@             ],
             "usage": "emv gpo [-hkpmatw] [<hex>]..."
         },
             "command": "analyse a",
-        "analyse freq": {
-            "command": "emv help",
-            "description": "help This help test Crypto logic test list List ISO7816 history",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "command": "analyse a",
                 "analyse freq"
             "command": "emv intauth",
             "description": "Generate Internal Authenticate command. Usually needs 4-byte random number. It returns data in TLV format . Needs a EMV applet to be selected and GPO to be executed.",
@@ -1049,15 +1024,6 @@             ],
             "usage": "quit [-h]"
         },
                 "-L, --cap <int> capacitance C in micro farads (F)",
-        "analyse a": {
-            "command": "help",
-            "description": "help Use `<command> help` for details of a command prefs { Edit client/device preferences... } -------- ----------------------- Technology ----------------------- analyse { Analyse utils... } data { Plot window / data buffer manipulation... } emv { EMV ISO-14443 / ISO-7816... } hf { High frequency commands... } hw { Hardware commands... } lf { Low frequency commands... } nfc { NFC commands... } piv { PIV commands... } reveng { CRC calculations from RevEng software... } smart { Smart card ISO-7816 commands... } script { Scripting commands... } trace { Trace manipulation... } wiegand { Wiegand format manipulation... } -------- ----------------------- General ----------------------- clear Clear screen hints Turn hints on / off msleep Add a pause in milliseconds rem Add a text line in log file quit exit Exit program",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "-L, --cap <int> capacitance C in micro farads (F)",
             "notes": [
             "command": "hf 14a antifuzz",
             "description": "Tries to fuzz the ISO14443a anticollision phase",
@@ -1135,34 +1101,28 @@             ],
             "usage": "hf 14a chaining [-h10]"
         },
             "description": "Iceman's personal garbage test command",
-            ],
+            "description": "calc wave lengths",
             "command": "analyse a",
             "description": "Iceman's personal garbage test command",
-            ],
+            "description": "calc wave lengths",
             "description": "Iceman's personal garbage test command",
             "description": "Iceman's personal garbage test command",
-            ],
+        "emv search": {
             "notes": [
             "description": "Iceman's personal garbage test command",
-            "offline": true,
+            "command": "emv search",
+            ],
             "offline": false,
-            "notes": [
+{
-            "notes": [
 {
 {
-            "command": "analyse a",
             "description": "Iceman's personal garbage test command",
+            "description": "calc wave lengths",
             ],
-                "analyse a -d 137AF00A0A0D"
-            "description": "help This help lcr Generate final byte for XOR LRC crc Stub method for CRC evaluations chksum Checksum with adding, masking and one's complement dates Look for datestamps in a given array of bytes lfsr LFSR tests a num bits test nuid create NUID from 7byte UID demodbuff Load binary string to DemodBuffer freq Calc wave lengths foo muxer units convert ETU <> US <> SSP_CLK (3.39MHz)",
             ],
             "description": "Iceman's personal garbage test command",
-        "auto": {
             "description": "Iceman's personal garbage test command",
-            "offline": true,
-            "offline": true,
-            "notes": [
-            "usage": ""
+            "offline": true,
         },
         "hf 14a info": {
             "command": "hf 14a info",
@@ -1374,14 +1335,6 @@                 "-f, --file  (optional) filename, if no  UID will be used as filename",
                 "--ns no save to file"
             ],
             "usage": "hf 14b dump [-h] [-f <fn>] [--ns]"
-        },
-        "hf 14b help": {
-            "command": "hf 14b help",
-            "description": "help This help list List ISO-14443-B history view Display content from tag dump file",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
         },
         "hf 14b info": {
             "command": "hf 14b info",
@@ -1643,14 +1596,6 @@             "options": [
                 "-h, --help This help"
             ],
             "usage": "hf 15 findafi [-h]"
-        },
-        "hf 15 help": {
-            "command": "hf 15 help",
-            "description": "----------- --------------------- General --------------------- help This help list List ISO-15693 history demod Demodulate ISO-15693 from tag",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
         },
         "hf 15 info": {
             "command": "hf 15 info",
@@ -2143,15 +2088,6 @@             ],
             "usage": "hf cipurse formatall [-hav] [-n <dec>] [-k <hex>] [--sreq <plain|mac|encode>] [--sresp <plain|mac|encode>] [--no-auth]"
         },
             "description": "Adjust Graph for manual ASK demod using the length of sample differences to detect the edge of a wave",
-            "notes": [
-            "command": "hf cipurse help",
-            "description": "help This help. test Regression tests",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "Adjust Graph for manual ASK demod using the length of sample differences to detect the edge of a wave",
             "offline": true,
             "command": "hf cipurse info",
             "description": "Get info from CIPURSE tags",
@@ -2324,15 +2260,6 @@             ],
             "usage": "hf emrtd dump [-h] [-n <alphanum>] [-d <YYMMDD>] [-e <YYMMDD>] [-m <[0-9A-Z<]>] [--dir <str>]"
         },
                 "-h, --help This help",
-            "command": "analyse demodbuff",
-            "command": "hf emrtd help",
-            "description": "help This help info Display info about an eMRTD list List ISO 14443A/7816 history",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "-h, --help This help",
                 "-d, --data <bin> binary string to load"
             "command": "hf emrtd info",
             "description": "Display info about an eMRTD",
@@ -2391,15 +2318,6 @@             ],
             "usage": "hf epa cnonces [-h] --size <dec> --num <dec> -d <dec>"
         },
             "command": "data autocorr",
-            "command": "analyse a",
-            "command": "hf epa help",
-            "description": "help This help",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "command": "data autocorr",
                 "analyse a -d 137AF00A0A0D"
             "command": "hf epa replay",
             "description": "Perform PACE protocol by replaying given APDUs",
@@ -2472,15 +2390,6 @@             ],
             "usage": "hf felica auth2 [-hv] [-i <hex>] [-c <hex>] [-k <hex>]"
         },
                 "-d, --data <hex> bytes to manipulate"
-                "analyse a -d 137AF00A0A0D"
-            "command": "hf felica help",
-            "description": "help This help ----------- ----------------------- General ----------------------- list List ISO 18092/FeliCa history ----------- ----------------------- FeliCa Standard ----------------------- ----------- ----------------------- FeliCa Light -----------------------",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "-d, --data <hex> bytes to manipulate"
             "options": [
             "command": "hf felica info",
             "description": "Reader for FeliCa based tags",
@@ -2561,15 +2470,32 @@             "usage": "hf felica raw [-hackrs] [-n ] "
         },
         "hf felica rdbl": {
             "command": "hf felica rdbl",
+            "usage": "analyse freq [-h] [-F <int>] [-L <int>] [-C <int>]"
 {
-        "analyse crc": {
+            "notes": [
+                "hf felica rdbl --sn 01 --scl 8B00 --bn 01 --ble 8000",
+            "usage": "analyse freq [-h] [-F <int>] [-L <int>] [-C <int>]"
 {
+    "commands": {
             "description": "Iceman's personal garbage test command",
-            "offline": true,
+            "command": "emv select",
+            ],
             "offline": false,
-            "notes": [
+{
+                "-h, --help This help",
+                "-b get all block list elements 00 -> FF",
+                "-i <hex> set custom IDm",
+                "-l, --long use 3 byte block list element block number",
+                "-s, --select activate field and select card",
             "notes": [
+            "usage": "analyse freq [-h] [-F <int>] [-L <int>] [-C <int>]"
 {
+                "analyse a -d 137AF00A0A0D"
+                "--bn <hex> number of block",
+                "--ble <hex> block list element (def 2|3 bytes)",
+                "-v, --verbose verbose output"
+            ],
+            "usage": "hf felica rdbl [-hblv] [-i <hex>] [--sn <hex>] [--scl <hex>] [--bn <hex>] [--ble <hex>]"
         },
         "hf felica reader": {
             "command": "hf felica reader",
@@ -2693,15 +2619,31 @@             "usage": "hf felica sniff [-h] [-s ] [-t ]"
         },
         "hf felica wrbl": {
             "command": "hf felica wrbl",
+                "-k, --keep keep signal field ON after receive",
 {
+            "notes": [
+                "hf felica wrbl --sn 01 --scl CB10 --bn 01 --ble 8001 -d 0102030405060708090A0B0C0D0E0F10",
+                "-k, --keep keep signal field ON after receive",
         "analyse a": {
+            ],
+            "offline": false,
+{
+                "-h, --help This help",
             "description": "Iceman's personal garbage test command",
-            "offline": true,
+                "emv test --long"
+                "-h, --help This help",
             "offline": true,
-        "analyse a": {
+            "command": "analyse a",
+                "-s, --select activate field and select card",
             "notes": [
-            "notes": [
+            "usage": "analyse freq [-h] [-F <int>] [-L <int>] [-C <int>]"
 {
+                "analyse a -d 137AF00A0A0D"
+                "--bn <hex> number of block",
+                "--ble <hex> block list element (def 2|3 bytes)",
+                "-v, --verbose verbose output"
+            ],
+            "usage": "hf felica wrbl [-hv] [-d <hex>] [-i <hex>] [--sn <hex>] [--scl <hex>] [--bn <hex>] [--ble <hex>]"
         },
         "hf fido assert": {
             "command": "hf fido assert",
@@ -2746,14 +2690,6 @@                 "--cpx  Challenge parameter (32 bytes hex)",
                 "--apx <hex> Application parameter (32 bytes hex)"
             ],
             "usage": "hf fido auth [-havuc] default mode: [-f <fn>] [-k <hex>] [--kh <hex>] [--cp <str>] [--ap <str>] [--cpx <hex>] [--apx <hex>]"
-        },
-        "hf fido help": {
-            "command": "hf fido help",
-            "description": "help This help. list List ISO 14443A history",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
         },
         "hf fido info": {
             "command": "hf fido info",
@@ -2843,15 +2779,6 @@             ],
             "usage": "hf fudan dump [-h] [-f <fn>]"
         },
                 "--err <dec> set max errors tolerated (def 20)"
-            "command": "analyse a",
-            "command": "hf fudan help",
-            "description": "help This help view Display content from tag dump file",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "--err <dec> set max errors tolerated (def 20)"
                 "analyse a -d 137AF00A0A0D"
             "command": "hf fudan rdbl",
             "description": "Read fudan block",
@@ -2987,15 +2914,6 @@             ],
             "usage": "hf gallagher diversify [-h] --aid <hex> [--keynum <dec>] [--uid <hex>] [--sitekey <hex>] [--apdu]"
         },
         "data clear": {
-            "command": "analyse a",
-            "command": "hf gallagher help",
-            "description": "help This help diversifykey Diversify Gallagher key decode Decode Gallagher credential block",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-        "data clear": {
                 "analyse a -d 137AF00A0A0D"
             "command": "hf gallagher reader",
             "description": "Read a Gallagher DESFire tag from the Card Application Directory, CAD Specify site key is required if using non-default key",
@@ -3015,15 +2933,6 @@             ],
             "usage": "hf gallagher reader [-h@v] [--aid <hex>] [--sitekey <hex>] [--apdu]"
         },
             "command": "data clear",
-            "description": "Iceman's personal garbage test command",
-            "command": "hf help",
-            "description": "-------- ----------------------- High Frequency ----------------------- 14a { ISO14443A RFIDs... } 14b { ISO14443B RFIDs... } 15 { ISO15693 RFIDs... } cipurse { Cipurse transport Cards... } epa { German Identification Card... } emrtd { Machine Readable Travel Document... } felica { ISO18092 / FeliCa RFIDs... } fido { FIDO and FIDO2 authenticators... } fudan { Fudan RFIDs... } gallagher { Gallagher DESFire RFIDs... } ksx6924 { KS X 6924 (T-Money, Snapper+) RFIDs } jooki { Jooki RFIDs... } iclass { ICLASS RFIDs... } legic { LEGIC RFIDs... } lto { LTO Cartridge Memory RFIDs... } mf { MIFARE RFIDs... } mfp { MIFARE Plus RFIDs... } mfu { MIFARE Ultralight RFIDs... } mfdes { MIFARE Desfire RFIDs... } ntag424 { NXP NTAG 4242 DNA RFIDs... } seos { SEOS RFIDs... } st25ta { ST25TA RFIDs... } tesla { TESLA Cards... } texkom { Texkom RFIDs... } thinfilm { Thinfilm RFIDs... } topaz { TOPAZ (NFC Type 1) RFIDs... } xerox { Fuji/Xerox cartridge RFIDs... } waveshare { Waveshare NFC ePaper... } ----------- --------------------- General --------------------- help This help list List protocol data in trace buffer search Search for known HF tags",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "command": "data clear",
             ],
             "command": "hf iclass calcnewkey",
             "description": "Calculate new keys for updating (blocks 3 & 4)",
@@ -3085,14 +2994,28 @@             "usage": "hf iclass configcard [-hglp] [--ci ] [--ki ]"
         },
         "hf iclass decrypt": {
             "command": "hf iclass decrypt",
-        "data convertbitstream": {
+            "description": "3DES decrypt data This is a naive implementation, it tries to decrypt every block after block 6. Correct behaviour would be to decrypt only the application areas where the key is valid, which is defined by the configuration block. OBS! In order to use this function, the file `iclass_decryptionkey.bin` must reside in the resources directory. The file should be 16 bytes binary data or... make sure your cardhelper is placed in the sim module",
+            "notes": [
+                "hf iclass decrypt -f hf-iclass-AA162D30F8FF12F1-dump.bin",
+                "-k, --keep keep signal field ON after receive",
             ],
             "description": "Iceman's personal garbage test command",
+                "-F, --freq <int> resonating frequency F in hertz (Hz)",
             "offline": true,
+            ],
             "offline": true,
-            "notes": [
+{
+                "-h, --help This help",
+                "-f, --file <fn> filename of dump file (bin/eml/json)",
+                "-d, --data <hex> 3DES encrypted data",
+        "data decimate": {
             "notes": [
+                "-v, --verbose verbose output",
+                "--d6 decode as block 6",
 {
+                "-d, --decapdu decode apdu request if it possible",
+            ],
+            "usage": "hf iclass decrypt [-hvz] [-f <fn>] [-d <hex>] [-k <hex>] [--d6]"
         },
         "hf iclass dump": {
             "command": "hf iclass dump",
@@ -3211,15 +3134,6 @@             ],
             "usage": "hf iclass eview [-hvz] [-s <256|2048>]"
         },
             "description": "Performs decimation, by reducing samples N times in the grapbuf. Good for PSK",
-            "notes": [
-            "command": "hf iclass help",
-            "description": "----------- --------------------- operations --------------------- help This help info Tag information list List iclass history ----------- --------------------- recovery --------------------- loclass Use loclass to perform bruteforce reader attack lookup Uses authentication trace to check for key in dictionary file ----------- --------------------- simulation --------------------- ----------- --------------------- utils --------------------- configcard Reader configuration card calcnewkey Calc diversified keys (blocks 3 & 4) to write new keys encode Encode binary wiegand to block 7 encrypt Encrypt given block data decrypt Decrypt given block data or tag dump file managekeys Manage keys to use with iclass commands permutekey Permute function from 'heart of darkness' paper view Display content from tag dump file",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "Performs decimation, by reducing samples N times in the grapbuf. Good for PSK",
             "offline": true,
             "command": "hf iclass info",
             "description": "Act as a iCLASS reader. Reads / fingerprints a iCLASS tag.",
@@ -3526,15 +3440,6 @@             ],
             "usage": "hf jooki encode [-hrtv] [-u <hex>] [--dragon] [--fox] [--ghost] [--knight] [--whale] [--blackdragon] [--blackfox] [--blackknight] [--blackwhale] [--whitedragon] [--whitefox] [--whiteknight] [--whitewhale] [--tid <dec>] [--fid <dec>]"
         },
             "usage": "data detectclock [-hAFNP]"
-{
-            "command": "hf jooki help",
-            "description": "help This help decode Decode Jooki token encode Encode Jooki token",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "usage": "data detectclock [-hAFNP]"
             "command": "analyse a",
             "command": "hf jooki sim",
             "description": "Simulate a Jooki token. Either `hf mfu eload` before or use `-d` param",
@@ -3564,15 +3469,6 @@             ],
             "usage": "hf ksx6924 balance [-hka]"
         },
             "description": "The bytes will be added with eachother and than limited with the applied mask Finally compute ones' complement of the least significant bytes.",
-                "-d, --data <hex> bytes to calc crc"
-            "command": "hf ksx6924 help",
-            "description": "help This help",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "The bytes will be added with eachother and than limited with the applied mask Finally compute ones' complement of the least significant bytes.",
         "analyse dates": {
             "command": "hf ksx6924 info",
             "description": "Get info about a KS X 6924 transit card. This application is used by T-Money (South Korea) and Snapper+ (Wellington, New Zealand).",
@@ -3721,14 +3617,6 @@                 "--256 LEGIC Prime MIM256 (def)",
                 "--1024 LEGIC Prime MIM1024"
             ],
             "usage": "hf legic eview [-h] [--22] [--256] [--1024]"
-        },
-        "hf legic help": {
-            "command": "hf legic help",
-            "description": "----------- --------------------- operations --------------------- help This help list List LEGIC history ----------- --------------------- simulation --------------------- ----------- --------------------- utils --------------------- crc Calculate Legic CRC over given bytes view Display deobfuscated and decoded content from tag dump file",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
         },
         "hf legic info": {
             "command": "hf legic info",
@@ -3899,15 +3787,6 @@             ],
             "usage": "hf lto dump [-h] [-f <fn>]"
         },
         "data dirthreshold": {
-        "analyse a": {
-            "command": "hf lto help",
-            "description": "help This help list List LTO-CM history",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-        "data dirthreshold": {
             "notes": [
             "command": "hf lto info",
             "description": "Get info from LTO tags",
@@ -4498,26 +4377,40 @@             "usage": "hf mf gdmsetcfg [-h] -d "
         },
         "hf mf gen3blk": {
             "command": "hf mf gen3blk",
-                "-m, --mask <hex> bit mask to limit the output (4 hex bytes max)",
+            "description": "Overwrite full manufacturer block for magic Gen3 card - You can specify part of manufacturer block as 4/7-bytes for UID change only NOTE: BCC, SAK, ATQA will be calculated automatically",
+            "notes": [
+                "hf mf gen3blk -> print current data",
+                "hf mf gen3blk -d 01020304 -> set 4 byte uid",
+            "description": "Iceman's personal garbage test command",
             "description": "Iceman's personal garbage test command",
-{
+            "command": "analyse demodbuff",
             "description": "Iceman's personal garbage test command",
-            "offline": true,
+            "description": "Tries to fuzz the ISO14443a anticollision phase",
+            ],
             "offline": false,
-            "notes": [
+{
-            "notes": [
+{
 {
+                "-d, --data <hex> manufacturer block data up to 16 hex bytes"
+            ],
+            "usage": "hf mf gen3blk [-h] [-d <hex>]"
         },
         "hf mf gen3freeze": {
             "command": "hf mf gen3freeze",
-                "-m, --mask <hex> bit mask to limit the output (4 hex bytes max)",
+            "description": "Iceman's personal garbage test command",
                 "-C, --ind <int> inductance in micro henries (H)"
+{
+            "notes": [
             "description": "Iceman's personal garbage test command",
-            "offline": true,
+                "--10 10 byte uid"
+            ],
             "offline": false,
-            "notes": [
+{
-            "notes": [
+{
 {
+                "-y, --yes confirm UID lock operation"
+            ],
+            "usage": "hf mf gen3freeze -y[h]"
         },
         "hf mf gen3uid": {
             "command": "hf mf gen3uid",
@@ -4671,15 +4564,6 @@             ],
             "usage": "hf mf hardnested [-habrstw] [-k <hex>] [--blk <dec>] [--tblk <dec>] [--ta] [--tb] [--tk <hex>] [-u <hex>] [-f <fn>] [--in] [--im] [--is] [--ia] [--i2] [--i5]"
         },
                 "data hex2bin -d 01020304"
-            "command": "analyse a",
-            "command": "hf mf help",
-            "description": "help This help list List MIFARE history hardnested Nested attack for hardened MIFARE Classic cards decrypt [nt] [ar_enc] [at_enc] [data] - to decrypt sniff or trace acl Decode and print MIFARE Classic access rights bytes mad Checks and prints MAD value Value blocks view Display content from tag dump file",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "data hex2bin -d 01020304"
                 "analyse a -d 137AF00A0A0D"
             "command": "hf mf list",
             "description": "Alias of `trace list -t mf` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol",
@@ -4737,15 +4621,27 @@             "usage": "hf mf nack [-hv]"
         },
         "hf mf ndefformat": {
             "command": "hf mf ndefformat",
-                "-v, --verbose verbose"
             "description": "Iceman's personal garbage test command",
+                "-C, --ind <int> inductance in micro henries (H)"
             "description": "Iceman's personal garbage test command",
+            "notes": [
             "description": "Iceman's personal garbage test command",
-            "offline": true,
+            "description": "Sends an ISO 7816-4 APDU via ISO 14443-4 block transmission protocol (T=CL). works with all apdu types from ISO 7816-4:2013",
+                "hf mf ndefformat --1k -> MIFARE Classic 1k",
+                "hf mf ndefformat --keys hf-mf-01020304-key.bin -> MIFARE 1k with keys from specified file"
+            ],
             "offline": false,
-            "notes": [
+{
+                "-h, --help This help",
+                "-k, --keys <fn> filename of keys",
+                "--mini MIFARE Classic Mini / S20",
+                "-c, --clk <dec> clock",
             "notes": [
 {
+                "-t, --type <read|write|privacy|destroy|easafi> which password field to write to",
+                "--4k MIFARE Classic 4k / S70"
+            ],
+            "usage": "hf mf ndefformat [-h] [-k <fn>] [--mini] [--1k] [--2k] [--4k]"
         },
         "hf mf ndefread": {
             "command": "hf mf ndefread",
@@ -4881,17 +4776,39 @@             "usage": "hf mf rdsc [-habv] [-k ] -s "
         },
         "hf mf restore": {
             "command": "hf mf restore",
+            "description": "Restore MIFARE Classic dump file to tag. The key file and dump file will program the card sector trailers. By default we authenticate to card with key 0xFFFFFFFFFFFF. If access rights in dump file is all zeros, it will be replaced with default values `--uid` param is used for filename templates `hf-mf-<uid>-dump.bin` and `hf-mf-<uid>-key.bin. if not specified, it will read the card uid instead. `--ka` param you can indicate that the key file should be used for authentication instead. if so we also try both B/A keys `--force` param is used to override warnings and allow bad ACL block writes. if not specified, it will skip blocks with bad ACL.",
+            "notes": [
+                "hf mf restore",
+                "-m, --make <head (CLA INS P1 P2) hex> make apdu with head from this field and data from data field. Must be 4 bytes length: <CLA INS P1 P2>",
     "commands": {
+                "-m, --make <head (CLA INS P1 P2) hex> make apdu with head from this field and data from data field. Must be 4 bytes length: <CLA INS P1 P2>",
         "analyse a": {
-    "commands": {
+                "-m, --make <head (CLA INS P1 P2) hex> make apdu with head from this field and data from data field. Must be 4 bytes length: <CLA INS P1 P2>",
             "command": "analyse a",
-            "description": "Iceman's personal garbage test command",
+            ],
+            "offline": false,
+            "options": [
+                "-h, --help This help",
+                "--mini MIFARE Classic Mini / S20",
+                "analyse chksum -d 137AF00A0A0D -m FF"
             "offline": true,
+            "notes": [
+{
             "offline": true,
+            "command": "analyse a",
         "analyse a": {
-            "notes": [
+                "--4k MIFARE Classic 4k / S70",
+                "-u, --uid <hex> uid, (4|7|10 hex bytes)",
+        "analyse a": {
+            "notes": [],
+                "-m, --make <head (CLA INS P1 P2) hex> make apdu with head from this field and data from data field. Must be 4 bytes length: <CLA INS P1 P2>",
             "notes": [
+                "--ka use specified keyfile to authenticate",
+    "commands": {
 {
+        "analyse foo": {
+            ],
+            "usage": "hf mf restore [-h] [--mini] [--1k] [--2k] [--4k] [-u <hex>] [-f <fn>] [-k <fn>] [--ka] [--force]"
         },
         "hf mf setmod": {
             "command": "hf mf setmod",
@@ -5864,15 +5781,6 @@             ],
             "usage": "hf mfdes getuid [-hav] [-n <dec>] [-t <DES|2TDEA|3TDEA|AES>] [-k <hex>] [--kdf <none|AN10922|gallagher>] [-i <hex>] [-m <plain|mac|encrypt>] [-c <native|niso|iso>] [--schann <d40|ev1|ev2|lrp>] [--aid <hex>] [--isoid <hex>]"
         },
             "description": "search LF signal after clock and modulation",
-            "command": "analyse a",
-            "command": "hf mfdes help",
-            "description": "help This help list List DESFire (ISO 14443A) history test Regression crypto tests",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "search LF signal after clock and modulation",
                 "analyse a -d 137AF00A0A0D"
             "command": "hf mfdes info",
             "description": "Get info from MIFARE DESfire tags",
@@ -6272,15 +6180,6 @@             ],
             "usage": "hf mfp dump [-hv] [-f <fn>] [-k <fn>] [--ns]"
         },
             "description": "Function takes a decimal or hexdecimal number and print it in decimal/hex/binary Will print message if number is a prime number",
-            "command": "analyse a",
-            "command": "hf mfp help",
-            "description": "help This help list List MIFARE Plus history",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "Function takes a decimal or hexdecimal number and print it in decimal/hex/binary Will print message if number is a prime number",
                 "analyse a -d 137AF00A0A0D"
             "command": "hf mfp info",
             "description": "Get info from MIFARE Plus tags",
@@ -6350,15 +6249,23 @@             "usage": "hf mfp mad [-hvb] [--aid ] [-k ] [--be] [--dch]"
         },
         "hf mfp ndefformat": {
             "command": "hf mfp ndefformat",
-    "commands": {
+                "-m, --make <head (CLA INS P1 P2) hex> make apdu with head from this field and data from data field. Must be 4 bytes length: <CLA INS P1 P2>",
             "offline": true,
+            "notes": [
+                "-e, --extended make extended length apdu if `m` parameter included",
-        "analyse a": {
             "description": "Iceman's personal garbage test command",
-            "offline": true,
+            "command": "hf 14a apdufind",
+            ],
             "offline": false,
+            "options": [
+                "-h, --help This help",
+            "usage": "analyse freq [-h] [-F <int>] [-L <int>] [-C <int>]"
             "notes": [
+    "commands": {
+            ],
+            "usage": "analyse freq [-h] [-F <int>] [-L <int>] [-C <int>]"
             "notes": [
-{
+        "analyse a": {
         },
         "hf mfp ndefread": {
             "command": "hf mfp ndefread",
@@ -6550,14 +6458,6 @@                 "-h, --help This help",
                 "-e, --end <dec> index of last block"
             ],
             "usage": "hf mfu eview [-h] [-e <dec>]"
-        },
-        "hf mfu help": {
-            "command": "hf mfu help",
-            "description": "help This help keygen Generate 3DES MIFARE diversified keys pwdgen Generate pwd from known algos view Display content from tag dump file",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
         },
         "hf mfu info": {
             "command": "hf mfu info",
@@ -6783,15 +6683,6 @@             ],
             "usage": "hf mfu wrbl [-hl] [-k <hex>] -b <dec> -d <hex> [--force]"
         },
             "description": "Demodulate the data in the GraphBuffer and output binary",
-    "commands": {
-            "command": "hf ntag424 help",
-            "description": "help This help view Display content from tag dump file",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "Demodulate the data in the GraphBuffer and output binary",
             "command": "analyse a",
             "command": "hf ntag424 info",
             "description": "Get info about NXP NTAG424 DNA Family styled tag.",
@@ -6857,14 +6748,6 @@             ],
             "usage": "hf search [-hv]"
         },
                 "data rawdemod --am -> demod ASK/MANCHESTER - autodetect",
-            "command": "hf seos help",
-            "description": "help This help list List SEOS history",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "data rawdemod --am -> demod ASK/MANCHESTER - autodetect",
         "analyse a": {
             "command": "hf seos info",
             "description": "Get info from SEOS tags",
@@ -6914,14 +6797,6 @@                 "--smode [none|drop|min|max|avg] Skip mode. It switches on the function that applies to several samples before they saved to memory",
                 "--sratio <dec, ms> Skip ratio. It applied the function above to (ratio * 2) samples. For ratio = 1 it 2 samples."
             ],
             "usage": "hf sniff [-h] [--sp <dec>] [--st <dec>] [--smode [none|drop|min|max|avg]] [--sratio <dec, ms>]"
-        },
-        "hf st25ta help": {
-            "command": "hf st25ta help",
-            "description": "help This help list List ISO 14443A/7816 history ndefread read NDEF file on tag",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
         },
         "hf st25ta info": {
             "command": "hf st25ta info",
@@ -7021,14 +6896,6 @@             ],
             "usage": "hf st25ta sim [-h] -u <hex>"
         },
                 "--ar ASK/Raw demodulation",
-            "command": "hf tesla help",
-            "description": "help This help list List ISO 14443A/7816 history",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "--ar ASK/Raw demodulation",
         "analyse a": {
             "command": "hf tesla info",
             "description": "Get info about TESLA Key tag",
@@ -7063,15 +6930,6 @@             ],
             "usage": "hf tesla list [-h1crux] [--frame] [-f <fn>]"
         },
                 "--fs FSK demodulation",
-        "analyse a": {
-            "command": "hf texkom help",
-            "description": "help This help",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "--fs FSK demodulation",
             "description": "Iceman's personal garbage test command",
             "command": "hf texkom reader",
             "description": "Read a texkom tag",
@@ -7110,15 +6968,6 @@             ],
             "usage": "hf texkom sim [-hvt] [--raw <hex 8 bytes>] [--id <hex 4 bytes>] [--timeout <dec, ms>]"
         },
             "description": "Tool to look for date/time stamps in a given array of bytes",
-            "usage": "analyse foo [-h] -r <hex>"
-            "command": "hf thinfilm help",
-            "description": "help This help list List NFC Barcode / Thinfilm history - not correct",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "Tool to look for date/time stamps in a given array of bytes",
             "description": "calc wave lengths",
             "command": "hf thinfilm info",
             "description": "Get info from Thinfilm tags",
@@ -7179,15 +7028,6 @@                 "-f, --file  filename of dump",
                 "--ns no save to file"
             ],
             "usage": "data rawdemod [-h] [--ab] [--am] [--ar] [--fs] [--nr] [--p1] [--p2] [<params>]..."
-{
-        },
-        "hf topaz help": {
-            "command": "hf topaz help",
-            "description": "help This help list List Topaz history view Display content from tag dump file",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "notes": [
 {
         },
         "hf topaz info": {
@@ -7335,15 +7175,6 @@             ],
             "usage": "hf tune [-h] [-n <dec>] [--bar] [--mix] [--value]"
         },
             "usage": "data rtrim [-h] -i <dec>"
-                "analyse a -d 137AF00A0A0D"
-            "command": "hf waveshare help",
-            "description": "help This help",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "usage": "data rtrim [-h] -i <dec>"
             "offline": true,
             "command": "hf waveshare loadbmp",
             "description": "Load BMP file to Waveshare NFC ePaper.",
@@ -7379,14 +7210,6 @@                 "-f, --file  filename to save dump to",
                 "-d, --decrypt decrypt secret blocks"
             ],
             "usage": "hf xerox dump [-hd] [-f <fn>]"
-        },
-        "hf xerox help": {
-            "command": "hf xerox help",
-            "description": "help This help",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
         },
         "hf xerox info": {
             "command": "hf xerox info",
@@ -7503,15 +7326,6 @@             ],
             "usage": "hw fpgaoff [-h]"
         },
             "usage": "data samples [-hv] [-n <dec>]"
-            "notes": [
-            "command": "hw help",
-            "description": "------------- ----------------------- Hardware ----------------------- help This help connect Connect Proxmark3 to serial port version Show version information about the client and the connected Proxmark3, if any",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "usage": "data samples [-hv] [-n <dec>]"
             "offline": true,
             "command": "hw lcd",
             "description": "Send command/data to LCD",
@@ -7738,14 +7552,6 @@             ],
             "usage": "lf awid demod [-h]"
         },
                 "data setdebugmode"
-            "command": "lf awid help",
-            "description": "help this help demod demodulate an AWID FSK tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "data setdebugmode"
         "analyse a": {
             "command": "lf awid reader",
             "description": "read a AWID Prox tag",
@@ -7814,47 +7620,60 @@             "usage": "lf cmdread [-hvk@] [-d ] [-c <0|1|...>] [-e ]... [-o ] [-z ] [-s ] [--crc-ht]"
         },
         "lf config": {
             "command": "lf config",
-        "analyse a": {
+            "description": "Get/Set config for LF sampling, bit/sample, decimation, frequency These changes are temporary, will be reset after a power cycle. - use `lf read` performs a read (active field) - use `lf sniff` performs a sniff (no active field)",
+            "notes": [
+                "lf config -> shows current config",
+                "lf config -b 8 --125 -> samples at 125 kHz, 8 bps",
+            "description": "Iceman's personal garbage test command",
             "description": "Iceman's personal garbage test command",
+            "notes": [
                 "analyse a -d 137AF00A0A0D"
             "description": "Iceman's personal garbage test command",
+                "--p1 <hex> Start value of P1 (1 hex byte)",
+                "-e, --extended make extended length apdu if `m` parameter included",
             "offline": true,
+            ],
             "offline": false,
-            "notes": [
+{
-            "notes": [
 {
 {
-            "command": "analyse a",
-        "analyse a": {
+                "--125 125 kHz frequency",
+            "description": "Iceman's personal garbage test command",
                 "-e, --error-limit <number> Maximum times an status word other than 0x9000 or 0x6D00 is shown. Default is 512.",
-        "analyse a": {
+            "description": "Iceman's personal garbage test command",
                 "-s, --skip-ins <hex> Do not test an instruction (can be specified multiple times)",
-        "analyse a": {
+            "description": "Iceman's personal garbage test command",
                 "-l, --with-le Search for APDUs with Le=0 (case 2S) as well",
+                "--dec <1-8> sets decimation. A value of N saves only 1 in N samples (default 1)",
+                "--divisor <19-255> Manually set freq divisor. 88 -> 134 kHz, 95 -> 125 kHz",
+                "-l, --le <Le (int)> Le apdu parameter if `m` parameter included",
             "notes": [
-        "analyse a": {
+            "description": "Iceman's personal garbage test command",
             "command": "analyse help",
-            "command": "analyse a",
+                "analyse a -d 137AF00A0A0D"
+                "-l, --le <Le (int)> Le apdu parameter if `m` parameter included",
             ],
+                "-l, --le <Le (int)> Le apdu parameter if `m` parameter included",
             "offline": true,
-{
+            ],
+                "<APDU (hex) | data (hex)> data if `m` parameter included"
-        "analyse a": {
+{
             "command": "analyse a",
-            ],
             "usage": "data setdebugmode [-h012]"
-            "description": "Iceman's personal garbage test command",
 {
-            "command": "analyse a",
             "usage": "data setdebugmode [-h012]"
-            "notes": [
+    "commands": {
             "usage": "data setdebugmode [-h012]"
-                "analyse a -d 137AF00A0A0D"
+        "analyse a": {
+            "notes": [
             "usage": "data setdebugmode [-h012]"
-            ],
+            "command": "analyse a",
-            "notes": [],
+            ],
             "offline": true,
-            "notes": [
+{
-            "usage": ""
+                "-h, --help This help"
+            ],
+            "usage": "lf cotag demod [-h]"
         },
         "lf cotag reader": {
             "command": "lf cotag reader",
@@ -7897,14 +7718,6 @@             "options": [
                 "-h, --help This help"
             ],
             "usage": "lf destron demod [-h]"
-        },
-        "lf destron help": {
-            "command": "lf destron help",
-            "description": "help This help demod demodulate an Destron tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
         },
         "lf destron reader": {
             "command": "lf destron reader",
@@ -7988,14 +7801,6 @@                 "-i, --invert invert output",
                 "-a, --amp amplify signal"
             ],
             "usage": "lf em 410x demod [-hia] [--clk <dec>] [--err <dec>] [--len <dec>]"
-        },
-        "lf em 410x help": {
-            "command": "lf em 410x help",
-            "description": "help This help demod demodulate a EM410x tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
         },
         "lf em 410x reader": {
             "command": "lf em 410x reader",
@@ -8124,15 +7929,6 @@             ],
             "usage": "lf em 4x05 dump [-h] [-p <hex>] [-f <fn>]"
         },
                 "-n <dec> shift + or -"
-    "commands": {
-            "command": "lf em 4x05 help",
-            "description": "help This help demod demodulate a EM4x05/EM4x69 tag from the GraphBuffer sniff Attempt to recover em4x05 commands from sample buffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "-n <dec> shift + or -"
             "description": "Iceman's personal garbage test command",
             "command": "lf em 4x05 info",
             "description": "Tag information EM4205/4305/4469//4569 tags. Tag must be on antenna.",
@@ -8323,15 +8119,6 @@             ],
             "usage": "lf em 4x50 eview [-h]"
         },
             "description": "loads a binary string into DemodBuffer",
-            "description": "The bytes will be added with eachother and than limited with the applied mask Finally compute ones' complement of the least significant bytes.",
-            "command": "lf em 4x50 help",
-            "description": "help This help ----------- --------------------- operations --------------------- ----------- --------------------- simulation ---------------------",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "loads a binary string into DemodBuffer",
                 "-d, --data <hex> bytes to calc checksum",
             "command": "lf em 4x50 info",
             "description": "Tag information EM4x50.",
@@ -8498,15 +8285,6 @@             ],
             "usage": "lf em 4x70 brute [-h] [--par] -b <dec> --rnd <hex> --frn <hex> [-s <hex>]"
         },
             "description": "Performs un-decimation, by repeating each sample N times in the graphbuf",
-                "analyse a -d 137AF00A0A0D"
-            "command": "lf em 4x70 help",
-            "description": "help This help",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "Performs un-decimation, by repeating each sample N times in the graphbuf",
             "offline": true,
             "command": "lf em 4x70 info",
             "description": "Tag Information EM4x70 Tag variants include ID48 automotive transponder. ID48 does not use command parity (default). V4070 and EM4170 do require parity bit.",
@@ -8582,15 +8360,6 @@             ],
             "usage": "lf em 4x70 writepin [-h] [--par] -p <hex>"
         },
             "usage": "data undecimate [-h] [-n <dec>]"
-    "commands": {
-            "command": "lf em help",
-            "description": "help This help 410x { EM 4102 commands... } 4x05 { EM 4205 / 4305 / 4369 / 4469 commands... } 4x50 { EM 4350 / 4450 commands... } 4x70 { EM 4070 / 4170 commands... }",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "usage": "data undecimate [-h] [-n <dec>]"
             "description": "Iceman's personal garbage test command",
             "command": "lf fdxb clone",
             "description": "clone a FDX-B tag to a T55x7, Q5/T5555 or EM4305/4469 tag.",
@@ -8623,15 +8392,6 @@             "options": [
                 "-h, --help This help"
             ],
             "command": "data zerocrossings",
-{
-        },
-        "lf fdxb help": {
-            "command": "lf fdxb help",
-            "description": "help this help demod demodulate a FDX-B ISO11784/85 tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "notes": [
 {
         },
         "lf fdxb reader": {
@@ -8699,15 +8459,6 @@             ],
             "usage": "lf gallagher demod [-h]"
         },
             "usage": "data zerocrossings [-h]"
-            "notes": [
-            "command": "lf gallagher help",
-            "description": "help This help demod demodulate an GALLAGHER tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "usage": "data zerocrossings [-h]"
             "offline": true,
             "command": "lf gallagher reader",
             "description": "read a GALLAGHER tag",
@@ -8774,15 +8525,6 @@             ],
             "usage": "lf gproxii demod [-h] [-r <hex>]"
         },
             "description": "Executes Generate Challenge command. It returns 4 or 8-byte random number from card. Needs a EMV applet to be selected and GPO to be executed.",
-            "description": "Iceman's personal garbage test command",
-            "command": "lf gproxii help",
-            "description": "help this help demod demodulate a G Prox II tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "Executes Generate Challenge command. It returns 4 or 8-byte random number from card. Needs a EMV applet to be selected and GPO to be executed.",
             ],
             "command": "lf gproxii reader",
             "description": "read a Guardall tag",
@@ -8812,14 +8554,6 @@                 "--cn  16-bit value card number"
             ],
             "usage": "lf gproxii sim [-h] --xor <dec> --fmt <dec> --fc <dec> --cn <dec>"
         },
-        "lf help": {
-            "command": "lf help",
-            "description": "help This help ----------- -------------- Low Frequency -------------- awid { AWID RFIDs... } cotag { COTAG CHIPs... } destron { FDX-A Destron RFIDs... } em { EM CHIPs & RFIDs... } fdxb { FDX-B RFIDs... } gallagher { GALLAGHER RFIDs... } gproxii { Guardall Prox II RFIDs... } hid { HID Prox RFIDs... } hitag { Hitag CHIPs... } idteck { Idteck RFIDs... } indala { Indala RFIDs... } io { ioProx RFIDs... } jablotron { Jablotron RFIDs... } keri { KERI RFIDs... } motorola { Motorola RFIDs... } nedap { Nedap RFIDs... } nexwatch { NexWatch RFIDs... } noralsy { Noralsy RFIDs... } pac { PAC/Stanley RFIDs... } paradox { Paradox RFIDs... } pcf7931 { PCF7931 CHIPs... } presco { Presco RFIDs... } pyramid { Farpointe/Pyramid RFIDs... } securakey { Securakey RFIDs... } ti { TI CHIPs... } t55xx { T55xx CHIPs... } viking { Viking RFIDs... } visa2000 { Visa2000 RFIDs... } ----------- --------------------- General --------------------- search Read and Search for valid known tag",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
         "lf hid brute": {
             "command": "lf hid brute",
             "description": "Enables bruteforce of HID readers with specified facility code or card number. This is an attack against the reader. If the field being bruteforced is provided, it starts with it and goes up / down one step while maintaining other supplied values. If the field being bruteforced is not provided, it will iterate through the full range while maintaining other supplied values.",
@@ -8883,14 +8617,6 @@             "options": [
                 "-h, --help This help"
             ],
             "usage": "lf hid demod [-h]"
-        },
-        "lf hid help": {
-            "command": "lf hid help",
-            "description": "help this help demod demodulate HID Prox tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
         },
         "lf hid reader": {
             "command": "lf hid reader",
@@ -8986,15 +8712,6 @@             ],
             "usage": "lf hitag eload [-h12sm] -f <fn>"
         },
                 "emv exec -sat -> select card, execute MSD transaction, show APDU and TLV",
-{
-            "command": "lf hitag help",
-            "description": "help This help list List Hitag trace history",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "emv exec -sat -> select card, execute MSD transaction, show APDU and TLV",
             "command": "analyse a",
             "command": "lf hitag info",
             "description": "Hitag2 tag information",
@@ -9136,15 +8853,6 @@             ],
             "usage": "lf idteck demod [-h]"
         },
                 "-v, -V, --qvsdc Transaction type - qVSDC or M/Chip",
-    "commands": {
-            "command": "lf idteck help",
-            "description": "help This help demod demodulate an Idteck tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "-v, -V, --qvsdc Transaction type - qVSDC or M/Chip",
             "description": "Iceman's personal garbage test command",
             "command": "lf idteck reader",
             "description": "read a Idteck tag",
@@ -9209,16 +8917,31 @@             "usage": "lf indala brute [-hv] [--fc ] [--cn ] [-d ] [--up] [--down] [--4041x]"
         },
         "lf indala clone": {
             "command": "lf indala clone",
+            "description": "clone Indala UID to T55x7 or Q5/T5555 tag using different known formats Warning, encoding with FC/CN doesn't always work",
+            "notes": [
+                "lf indala clone --heden 888",
+                "lf indala clone --fc 123 --cn 1337",
+                "<APDU (hex) | data (hex)> data if `m` parameter included"
             "command": "analyse a",
-    "commands": {
+                "lf indala clone -r a0000000a0002021",
+                "lf indala clone -r 80000001b23523a6c2e31eba3cbee4afb3c6ad1fcf649393928c14e5"
+            ],
+            "offline": false,
 {
+                "-h, --help This help",
+                "-r, --raw <hex> raw bytes",
+                "--heden <decimal> Card number for Heden 2L format",
+            "command": "emv genac",
                 "analyse a -d 137AF00A0A0D"
+                "--cn <decimal> Card number (26 bit H10301 format)",
             "description": "Iceman's personal garbage test command",
+            "command": "hf 14a help",
+                "<APDU (hex) | data (hex)> data if `m` parameter included"
             "offline": true,
+            "command": "emv genac",
             "offline": true,
-        "analyse a": {
-            "options": [],
+            ],
-            "usage": ""
+            "usage": "lf indala clone [-h] [-r <hex>] [--heden <decimal>] [--fc <decimal>] [--cn <decimal>] [--q5] [--em] [--4041x]"
         },
         "lf indala demod": {
             "command": "lf indala demod",
@@ -9239,15 +8962,6 @@             ],
             "usage": "lf indala demod [-hi] [--clock <dec>] [--maxerr <dec>]"
         },
         "analyse foo": {
-            "usage": "analyse crc [-h] -d <hex>"
-            "command": "lf indala help",
-            "description": "help This help demod Demodulate an Indala tag (PSK1) from the GraphBuffer altdemod Alternative method to demodulate samples for Indala 64 bit UID (option '224' for 224 bit)",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-        "analyse foo": {
             "description": "Tool to look for date/time stamps in a given array of bytes",
             "command": "lf indala reader",
             "description": "read a Indala tag",
@@ -9315,15 +9029,6 @@             ],
             "usage": "lf io demod [-h]"
         },
                 "emv genac -k 0102 -> generate AC with 2-byte CDOLdata and keep field ON after command",
-            "command": "analyse a",
-            "command": "lf io help",
-            "description": "help this help demod demodulate an ioProx tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "emv genac -k 0102 -> generate AC with 2-byte CDOLdata and keep field ON after command",
                 "analyse a -d 137AF00A0A0D"
             "command": "lf io reader",
             "description": "read a ioProx tag",
@@ -9394,15 +9099,6 @@             ],
             "usage": "lf jablotron demod [-h]"
         },
                 "emv genac -pmt 9F 37 04 -> load params from file, make CDOL data from CDOL, generate AC with CDOL, show result in TLV"
-            "notes": [
-            "command": "lf jablotron help",
-            "description": "help This help demod demodulate an Jablotron tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "emv genac -pmt 9F 37 04 -> load params from file, make CDOL data from CDOL, generate AC with CDOL, show result in TLV"
             "offline": true,
             "command": "lf jablotron reader",
             "description": "read a jablotron tag",
@@ -9460,15 +9156,6 @@             ],
             "usage": "lf keri demod [-h]"
         },
                 "-p, -P, --params Load parameters from `emv_defparams.json` file for CDOLdata making from CDOL and parameters",
-            "notes": [
-            "command": "lf keri help",
-            "description": "help This help demod demodulate an KERI tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "-p, -P, --params Load parameters from `emv_defparams.json` file for CDOLdata making from CDOL and parameters",
             "offline": true,
             "command": "lf keri reader",
             "description": "read a keri tag",
@@ -9525,15 +9212,6 @@             ],
             "usage": "lf motorola demod [-h]"
         },
                 "-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)",
-        "analyse a": {
-            "command": "lf motorola help",
-            "description": "help This help demod demodulate an MOTOROLA tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)",
             "notes": [
             "command": "lf motorola reader",
             "description": "read a Motorola tag",
@@ -9588,14 +9266,6 @@             "options": [
                 "-h, --help This help"
             ],
             "usage": "lf nedap demod [-h]"
-        },
-        "lf nedap help": {
-            "command": "lf nedap help",
-            "description": "help This help demod demodulate Nedap tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
         },
         "lf nedap reader": {
             "command": "lf nedap reader",
@@ -9664,15 +9334,6 @@             ],
             "usage": "lf nexwatch demod [-h]"
         },
                 "emv gpo -k -> execute GPO",
-            "description": "Iceman's personal garbage test command",
-            "command": "lf nexwatch help",
-            "description": "help This help demod demodulate a NexWatch tag (nexkey, quadrakey) from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "emv gpo -k -> execute GPO",
             ],
             "command": "lf nexwatch reader",
             "description": "read a Nexwatch tag",
@@ -9740,15 +9401,6 @@             ],
             "usage": "lf noralsy demod [-h]"
         },
                 "-p, -P, --params Load parameters from `emv_defparams.json` file for PDOLdata making from PDOL and parameters",
-            "description": "Iceman's personal garbage test command",
-            "command": "lf noralsy help",
-            "description": "help This help demod demodulate an Noralsy tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "-p, -P, --params Load parameters from `emv_defparams.json` file for PDOLdata making from PDOL and parameters",
             ],
             "command": "lf noralsy reader",
             "description": "read a Noralsy tag",
@@ -9809,15 +9461,6 @@             ],
             "usage": "lf pac demod [-h]"
         },
             "usage": "emv gpo [-hkpmatw] [<hex>]..."
-            "description": "Iceman's personal garbage test command",
-            "command": "lf pac help",
-            "description": "help This help demod demodulate a PAC tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "usage": "emv gpo [-hkpmatw] [<hex>]..."
             ],
             "command": "lf pac reader",
             "description": "read a PAC/Stanley tag",
@@ -9880,15 +9523,6 @@             ],
             "usage": "lf paradox demod [-h] [--old]"
         },
             "description": "help This help test Crypto logic test list List ISO7816 history",
-            "command": "analyse a",
-            "command": "lf paradox help",
-            "description": "help This help demod demodulate a Paradox FSK tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "help This help test Crypto logic test list List ISO7816 history",
                 "analyse a -d 137AF00A0A0D"
             "command": "lf paradox reader",
             "description": "read a Paradox tag",
@@ -9940,15 +9574,6 @@             ],
             "usage": "lf pcf7931 config [-hr] [-p <hex>] [-d <dec>] [--lw <dec>] [--lp <dec>]"
         },
             "description": "Generate Internal Authenticate command. Usually needs 4-byte random number. It returns data in TLV format . Needs a EMV applet to be selected and GPO to be executed.",
-    "commands": {
-            "command": "lf pcf7931 help",
-            "description": "help This help config Configure the password, the tags initialization delay and time offsets (optional)",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "Generate Internal Authenticate command. Usually needs 4-byte random number. It returns data in TLV format . Needs a EMV applet to be selected and GPO to be executed.",
             "description": "Iceman's personal garbage test command",
             "command": "lf pcf7931 reader",
             "description": "read a PCF7931 tag",
@@ -10008,15 +9633,6 @@             ],
             "usage": "lf presco demod [-h]"
         },
                 "emv intauth -pmt 9F 37 04 -> load params from file, make DDOL data from DDOL, Internal Authenticate with DDOL, show result in TLV"
-    "commands": {
-            "command": "lf presco help",
-            "description": "help This help demod demodulate Presco tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "emv intauth -pmt 9F 37 04 -> load params from file, make DDOL data from DDOL, Internal Authenticate with DDOL, show result in TLV"
             "description": "Iceman's personal garbage test command",
             "command": "lf presco reader",
             "description": "read a presco tag",
@@ -10075,14 +9691,6 @@             "options": [
                 "-h, --help This help"
             ],
             "usage": "lf pyramid demod [-h]"
-        },
-        "lf pyramid help": {
-            "command": "lf pyramid help",
-            "description": "help this help demod demodulate a Pyramid FSK tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
         },
         "lf pyramid reader": {
             "command": "lf pyramid reader",
@@ -10177,15 +9785,6 @@             ],
             "usage": "lf securakey demod [-h]"
         },
             "description": "Alias of `trace list -t 7816` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol",
-            "command": "analyse a",
-            "command": "lf securakey help",
-            "description": "help This help demod demodulate an Securakey tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "Alias of `trace list -t 7816` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol",
                 "analyse a -d 137AF00A0A0D"
             "command": "lf securakey reader",
             "description": "read a Securakey tag",
@@ -10264,16 +9863,38 @@             "usage": "lf simbidir [-h]"
         },
         "lf simfsk": {
             "command": "lf simfsk",
+            "description": "Simulate FSK tag from DemodBuffer or input. There are about four FSK modulations to know of. FSK1 - where fc/8 = high and fc/5 = low FSK1a - is inverted FSK1, ie: fc/5 = high and fc/8 = low FSK2 - where fc/10 = high and fc/8 = low FSK2a - is inverted FSK2, ie: fc/10 = high and fc/8 = low NOTE: if you set one clock manually set them all manually",
+            "notes": [
+                "lf simfsk -c 40 --high 8 --low 5 -d 010203 -> FSK1 rf/40 data 010203",
+                "lf simfsk -c 40 --high 5 --low 8 -d 010203 -> FSK1a rf/40 data 010203",
+            "usage": "hf 14a apdu [-hsktde] [-m <head (CLA INS P1 P2) hex>] [-l <Le (int)>] <APDU (hex) | data (hex)> [<APDU (hex) | data (hex)>]..."
             "command": "analyse a",
+                "lf simfsk -c 64 --high 8 --low 10 -d 010203 -> FSK2a rf/64 data 010203",
+                "",
+            "usage": "hf 14a apdu [-hsktde] [-m <head (CLA INS P1 P2) hex>] [-l <Le (int)>] <APDU (hex) | data (hex)> [<APDU (hex) | data (hex)>]..."
             "notes": [
+            "usage": "hf 14a apdu [-hsktde] [-m <head (CLA INS P1 P2) hex>] [-l <Le (int)>] <APDU (hex) | data (hex)> [<APDU (hex) | data (hex)>]..."
                 "analyse a -d 137AF00A0A0D"
-                "analyse a -d 137AF00A0A0D"
+            ],
+            "offline": false,
+            "options": [
+                "-h, --help This help",
+                "-c, --clk <dec> manually set clock - can autodetect if using DemodBuffer (default 64)",
             "description": "Iceman's personal garbage test command",
+            "description": "Iceman's personal garbage test command",
             "offline": true,
+            ],
+            "usage": "analyse freq [-h] [-F <int>] [-L <int>] [-C <int>]"
             "offline": true,
-        "analyse a": {
+            "offline": true,
+            "description": "Iceman's personal garbage test command",
             "options": [],
+            "command": "analyse a",
             "notes": [
+        "analyse lfsr": {
+                "-v, --verbose verbose output"
+            ],
+        "hf 14a apdufind": {
 {
         },
         "lf simpsk": {
@@ -10300,26 +9920,51 @@             "usage": "lf simpsk [-h123iv] [-c ] [--fc ] [-d ]"
         },
         "lf sniff": {
             "command": "lf sniff",
-            "command": "analyse a",
+            "description": "Sniff low frequency signal. You need to configure the LF part on the Proxmark3 device manually. Usually a trigger and skip samples is a good thing to set before doing a low frequency sniff. - use `lf config` to set parameters. - use `data plot` to look at sniff signal. - use `lf search -1` to see if signal can be automatic decoded",
+            "notes": [
+            "description": "Iceman's personal garbage test command",
             "notes": [
-            "description": "Run LF SEARCH / HF SEARCH / DATA PLOT / DATA SAVE",
+        "analyse a": {
             "description": "Iceman's personal garbage test command",
-            "offline": true,
+        "hf 14a ndefformat": {
+            ],
             "offline": false,
+            "options": [
+                "-h, --help This help",
+                "-s, --samples <dec> number of samples to collect",
+                "-v, --verbose verbose output",
+            "description": "Iceman's personal garbage test command",
             "options": [],
+            "description": "Iceman's personal garbage test command",
+            ],
+            "description": "Iceman's personal garbage test command",
             "notes": [
-{
+            "notes": [
         },
         "lf t55xx bruteforce": {
             "command": "lf t55xx bruteforce",
-            "command": "analyse a",
+            "description": "Iceman's personal garbage test command",
             "notes": [
-                "-c Continue searching even after a first hit"
+                "analyse a -d 137AF00A0A0D"
+            "notes": [
             "description": "Iceman's personal garbage test command",
-            "offline": true,
+                "-v, --verbose show technical data"
+            ],
             "offline": false,
+            "options": [
+                "-h, --help This help",
+            "description": "Iceman's personal garbage test command",
             "options": [],
+            "offline": true,
+            "description": "Iceman's personal garbage test command",
             "usage": ""
+                "--r0 downlink - fixed bit length",
+                "--r1 downlink - long leading reference",
+                "--r2 downlink - leading zero",
+                "--r3 downlink - 1 of 4 coding reference",
+                "--all try all downlink modes (def)"
+            ],
+            "usage": "lf t55xx bruteforce [-h] -s <hex> -e <hex> [--r0] [--r1] [--r2] [--r3] [--all]"
         },
         "lf t55xx chk": {
             "command": "lf t55xx chk",
@@ -10475,15 +10120,6 @@             ],
             "usage": "lf t55xx dump [-ho] [-f <fn>] [-p <hex>] [--ns] [--r0] [--r1] [--r2] [--r3]"
         },
                 "emv pse -s1 -> select, get pse",
-        "analyse a": {
-            "command": "lf t55xx help",
-            "description": "----------- ---------------------------- notice ----------------------------- Remember to run `lf t55xx detect` first whenever a new card is placed on the Proxmark3 or the config block changed. help This help ----------- --------------------- operations --------------------- config Set/Get T55XX configuration (modulation, inverted, offset, rate) detect Try detecting the tag modulation from reading the configuration block info Show T55x7 configuration data (page 0/ blk 0) trace Show T55x7 traceability data (page 1/ blk 0-1) ----------- --------------------- recovery --------------------- sniff Attempt to recover T55xx commands from sample buffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "emv pse -s1 -> select, get pse",
             "notes": [
             "command": "lf t55xx info",
             "description": "Show T55x7 configuration data (page 0/ blk 0) from reading the configuration block from tag. Use `-c` to specify a config block data to be used instead of reading tag.",
@@ -10550,28 +10186,60 @@             "usage": "lf t55xx protect [-ho] [-p ] -n  [--r0] [--r1] [--r2] [--r3]"
         },
         "lf t55xx read": {
             "command": "lf t55xx read",
+            "description": "Read T55xx block data. This commands defaults to page 0. * * * WARNING * * * Use of read with password on a tag not configured for a password can damage the tag * * * * * * * * * *",
+            "notes": [
+                "lf t55xx read -b 0 -> read data from block 0",
+            "command": "hf 14a apdufind",
             "command": "analyse a",
+                "lf t55xx read -b 0 --pwd 01020304 -o -> read data from block 0, pwd 01020304, override"
             ],
+            "offline": false,
 {
-            "command": "analyse a",
+                "-h, --help This help",
             "description": "Iceman's personal garbage test command",
+            "usage": "hf 14a ndefread [-hv] [-f <fn>]"
+                "data timescale --sr 125 -u ms -> for LF sampled at 125 kHz. Reading will be in milliseconds",
             "offline": true,
+                "-1, --pse PSE (1PAY.SYS.DDF01) mode",
             "offline": true,
+                "--pg1 read page 1",
+            "usage": "analyse foo [-h] -r <hex>"
         "analyse a": {
+            "offline": true,
+                "--r1 downlink - long leading reference",
+                "-u display times in microseconds instead of clock cycles",
             "notes": [
+            "usage": "emv list [-h1crux] [--frame] [-f <fn>]"
+            ],
+            "description": "Iceman's personal garbage test command",
             "usage": ""
+            ],
         },
         "lf t55xx recoverpw": {
             "command": "lf t55xx recoverpw",
-        "analyse freq": {
+            "description": "This command uses a few tricks to try to recover mangled password. Try reading Page 0, block 7 before. WARNING this may brick non-password protected chips!",
+            "notes": [
+                "lf t55xx recoverpw",
+            "description": "Enumerate APDU's of ISO7816 protocol to find valid CLS/INS/P1/P2 commands. It loops all 256 possible values for each byte. The loop oder is INS -> P1/P2 (alternating) -> CLA. Tag must be on antenna before running.",
 {
-                "analyse a -d 137AF00A0A0D"
             "description": "Iceman's personal garbage test command",
-            "offline": true,
+                "hf 14a ndefwrite -d 003fd1023a53709101195405656e2d55534963656d616e2054776974746572206c696e6b5101195502747769747465722e636f6d2f686572726d616e6e31303031"
+            ],
             "offline": false,
+            "options": [
+                "-h, --help This help",
+            "command": "analyse demodbuff",
             "notes": [
+            "offline": true,
+            "usage": "analyse foo [-h] -r <hex>"
+            "command": "analyse a",
+                "--r1 downlink - long leading reference",
+                "-u display times in microseconds instead of clock cycles",
             "notes": [
-{
+                "--r3 downlink - 1 of 4 coding reference",
+                "--all try all downlink modes (def)"
+            ],
+            "usage": "lf t55xx recoverpw [-h] [-p <hex>] [--r0] [--r1] [--r2] [--r3] [--all]"
         },
         "lf t55xx resetread": {
             "command": "lf t55xx resetread",
@@ -10728,14 +10396,6 @@             ],
             "usage": "lf ti demod [-h]"
         },
                 "<hex> <SFI 1 byte><SFIrecord 1 byte"
-            "command": "lf ti help",
-            "description": "help This help demod Demodulate raw bits for TI LF tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "<hex> <SFI 1 byte><SFIrecord 1 byte"
         "analyse a": {
             "command": "lf ti reader",
             "description": "read a TI tag",
@@ -10813,15 +10473,6 @@             ],
             "usage": "lf viking demod [-h]"
         },
             "command": "analyse freq",
-            "description": "The bytes will be added with eachother and than limited with the applied mask Finally compute ones' complement of the least significant bytes.",
-            "command": "lf viking help",
-            "description": "help This help demod demodulate a Viking tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "command": "analyse freq",
                 "-d, --data <hex> bytes to calc checksum",
             "command": "lf viking reader",
             "description": "read a Viking AM tag",
@@ -10878,15 +10529,6 @@             ],
             "usage": "lf visa2000 demod [-h]"
         },
                 "emv roca -> select --CONTACTLESS-- card and run test"
-            "command": "analyse a",
-            "command": "lf visa2000 help",
-            "description": "help This help demod demodulate an VISA2000 tag from the GraphBuffer",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "emv roca -> select --CONTACTLESS-- card and run test"
                 "analyse a -d 137AF00A0A0D"
             "command": "lf visa2000 reader",
             "description": "read a visa2000 tag",
@@ -10946,15 +10588,6 @@             ],
             "usage": "mem dump [-hv] [-o <dec>] [-l <dec>] [-f <fn>] [-c <dec>]"
         },
         "emv scan": {
-            "description": "Iceman's personal garbage test command",
-            "command": "mem help",
-            "description": "help This help",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-        "emv scan": {
                 "analyse a -d 137AF00A0A0D"
             "command": "mem info",
             "description": "Collect signature and verify it from flash memory",
@@ -11035,15 +10668,6 @@             ],
             "usage": "mem spiffs dump [-he] -s <fn> [-d <fn>]"
         },
             "description": "calc wave lengths",
-                "analyse chksum -d 137AF00A0A0D -m FF"
-            "command": "mem spiffs help",
-            "description": "help This help",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "calc wave lengths",
                 "-m, --mask <hex> bit mask to limit the output (4 hex bytes max)",
             "command": "mem spiffs info",
             "description": "Print file system info and usage statistics",
@@ -11198,15 +10822,6 @@             ],
             "usage": "msleep [-h] [-t <ms>]"
         },
             "description": "Tries to select all applets from applet list",
-            "notes": [
-            "command": "nfc barcode help",
-            "description": "-------- ------------------ NFC Barcode -------------------- -------- --------------------- General --------------------- help This help",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "Tries to select all applets from applet list",
             "offline": true,
             "command": "nfc barcode read",
             "description": "Get info from Thinfilm tags",
@@ -11251,37 +10866,42 @@             ],
             "usage": "nfc decode [-hv] [-d <hex>] [-f <fn>]"
         },
                 "emv search -st -> select card, search and show result in TLV"
-    "commands": {
+            "description": "Iceman's personal garbage test command",
                 "emv search -st -> select card, search and show result in TLV"
-        "analyse a": {
+            "notes": [
             "description": "Iceman's personal garbage test command",
-            "options": [
+            "description": "Iceman's personal garbage test command",
             "command": "analyse a",
             "description": "Iceman's personal garbage test command",
-            "offline": true,
-            "offline": true,
             "notes": [
+                "-d, --decapdu decode apdu request if it possible",
             "notes": [
-{
-{
+            "usage": "analyse freq [-h] [-F <int>] [-L <int>] [-C <int>]"
             "command": "analyse a",
+                "analyse a -d 137AF00A0A0D"
             "description": "Iceman's personal garbage test command",
+                "hf 14a apdu -sd 00A404000E325041592E5359532E444446303100 -> decode apdu",
+            ],
+            "offline": false,
             "options": [
-            "description": "Iceman's personal garbage test command",
-            "description": "Iceman's personal garbage test command",
+{
 {
-            "notes": [
     "commands": {
-    "commands": {
             "description": "Iceman's personal garbage test command",
-            "description": "Iceman's personal garbage test command",
+                "analyse a -d 137AF00A0A0D"
+                "--mini MIFARE Classic Mini / S20",
-            "description": "Iceman's personal garbage test command",
+                "analyse chksum -d 137AF00A0A0D -m FF"
             "offline": true,
+            "notes": [
+{
             "offline": true,
+            "command": "analyse a",
         "analyse a": {
-            "notes": [
+    "commands": {
             "notes": [
-{
+            "notes": [
+            ],
+            "usage": "hf mf ndefformat [-h] [-k <fn>] [--mini] [--1k] [--2k] [--4k]"
         },
         "nfc mf cread": {
             "command": "nfc mf cread",
@@ -11323,15 +10945,6 @@             ],
             "usage": "hf mf ndefwrite [-hpv] [-d <hex>] [-f <fn>] [--mini] [--1k] [--2k] [--4k]"
         },
             "usage": "emv search [-hskatw]"
-{
-            "command": "nfc mf help",
-            "description": "-------- --------- NFC Type MIFARE Classic/Plus Tag -------- -------- --------------------- General --------------------- help This help",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "usage": "emv search [-hskatw]"
             "command": "analyse a",
             "command": "nfc mf pread",
             "description": "Prints NFC Data Exchange Format (NDEF)",
@@ -11353,15 +10966,6 @@             ],
             "usage": "hf mfp ndefread [-hvb] [--aid <aid>] [-k <key>] [-f <fn>]"
         },
             "usage": "emv search [-hskatw]"
-            "notes": [
-            "command": "nfc type1 help",
-            "description": "-------- -------------- NFC Forum Tag Type 1 --------------- -------- --------------------- General --------------------- help This help",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "usage": "emv search [-hskatw]"
             "offline": true,
             "command": "nfc type1 read",
             "description": "Get info from Topaz tags",
@@ -11378,15 +10982,6 @@             ],
             "usage": "hf topaz info [-hv] [-f <fn>]"
         },
         "emv select": {
-{
-            "command": "nfc type2 help",
-            "description": "-------- -------------- NFC Forum Tag Type 2 --------------- -------- --------------------- General --------------------- help This help",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-        "emv select": {
             "command": "analyse a",
             "command": "nfc type2 read",
             "description": "Prints NFC Data Exchange Format (NDEF)",
@@ -11416,14 +11011,6 @@                 "-h, --help This help",
                 "-v, --verbose show technical data"
             ],
             "usage": "hf 14a ndefformat [-hv]"
-        },
-        "nfc type4a help": {
-            "command": "nfc type4a help",
-            "description": "-------- --------- NFC Forum Tag Type 4 ISO14443A ---------- -------- --------------------- General --------------------- help This help",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
         },
         "nfc type4a read": {
             "command": "nfc type4a read",
@@ -11475,15 +11062,6 @@             ],
             "usage": "hf 14a ndefwrite [-hpv] [-d <hex>] [-f <fn>]"
         },
                 "analyse freq"
-            "command": "analyse demodbuff",
-            "command": "nfc type4b help",
-            "description": "-------- --------- NFC Forum Tag Type 4 ISO14443B ------------- -------- --------------------- General --------------------- help This help",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "analyse freq"
                 "-d, --data <bin> binary string to load"
             "command": "nfc type4b read",
             "description": "Print NFC Data Exchange Format (NDEF)",
@@ -11539,14 +11117,6 @@                 "--aid  Applet ID to select. By default A0000003080000100 will be used",
                 "<hex> Tag ID to read, between 1 and 3 bytes."
             ],
             "usage": "piv getdata [-hskatw] [--aid <hex>] <hex>"
-        },
-        "piv help": {
-            "command": "piv help",
-            "description": "help This help list List ISO7816 history",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
         },
         "piv list": {
             "command": "piv list",
@@ -11716,15 +11286,6 @@             ],
             "usage": "prefs get savepaths [-h]"
         },
             "description": "Executes tests",
-            "command": "analyse a",
-            "command": "prefs help",
-            "description": "help This help get { Get a preference } set { Set a preference } show Show all preferences",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-            "description": "Executes tests",
                 "analyse a -d 137AF00A0A0D"
             "command": "prefs set barmode",
             "description": "Set persistent preference of HF/LF tune command styled output in the client",
@@ -11800,15 +11361,6 @@             ],
             "usage": "prefs set emoji [-h] [--alias] [--emoji] [--alttext] [--none]"
         },
                 "-l, --long Run long tests too"
-            "notes": [
-            "command": "prefs set help",
-            "description": "help This help barmode Set bar mode clientdebug Set client debug level clientdelay Set client execution delay color Set color support emoji Set emoji display hints Set hint display savepaths ... to be adjusted next ... output Set dump output style plotsliders Set plot slider display",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "-l, --long Run long tests too"
             "offline": true,
             "command": "prefs set hints",
             "description": "Set persistent preference of showing hint messages in the client",
@@ -11907,20 +11459,24 @@             ],
             "usage": "rem [-h] <string> [<string>]..."
         },
             "description": "Iceman's personal garbage test command",
-            "command": "analyse dates",
+        "analyse lcr": {
             "command": "analyse a",
             "description": "Iceman's personal garbage test command",
-            "command": "analyse dates",
+        "analyse lcr": {
             "description": "Iceman's personal garbage test command",
             "description": "Iceman's personal garbage test command",
-            "command": "analyse dates",
+            "usage": "hf 14a ndefwrite [-hpv] [-d <hex>] [-f <fn>]"
             "notes": [
             "description": "Iceman's personal garbage test command",
-            "offline": true,
+        "hf 14a raw": {
+            ],
             "offline": true,
-            "notes": [
+{
+                "-h, --help This help"
+            ],
+            "description": "Iceman's personal garbage test command",
             "notes": [
-{
+                "-d, --data <hex> bytes to calc crc"
         },
         "script run": {
             "command": "script run",
@@ -11950,14 +11506,6 @@             ],
             "usage": "smart brute [-ht]"
         },
         "help": {
-            "command": "smart help",
-            "description": "help This help list List ISO 7816 history upgrade Upgrade sim module firmware",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-        "help": {
         "analyse a": {
             "command": "smart info",
             "description": "Extract more detailed information from smart card.",
@@ -12043,15 +11591,6 @@             ],
             "usage": "smart setclock [-h] [--16mhz] [--8mhz] [--4mhz]"
         },
                 "-L, --cap <int> capacitance C in micro farads (F)",
-        "analyse lfsr": {
-            "command": "smart upgrade",
-            "description": "[=] ------------------------------------------------------------------- [!] WARNING - sim module firmware upgrade [!] A dangerous command, do wrong and you could brick the sim module [=] -------------------------------------------------------------------",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "-L, --cap <int> capacitance C in micro farads (F)",
                 "analyse lfsr --iv 55"
             "command": "trace extract",
             "description": "Extracts protocol authentication challenges from trace buffer",
@@ -12067,15 +11606,6 @@             ],
             "usage": "trace extract [-h1]"
         },
                 "-L, --cap <int> capacitance C in micro farads (F)",
-                "analyse nuid -d 11223344556677"
-            "command": "trace help",
-            "description": "help This help extract Extract authentication challenges found in trace list List protocol data in trace buffer load Load trace from file save Save trace buffer to file",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "-L, --cap <int> capacitance C in micro farads (F)",
             "usage": "analyse nuid [-ht] [-d <hex>]"
             "command": "trace list",
             "description": "Annotate trace buffer with selected protocol data You can load a trace from file (see `trace load -h`) or it be downloaded from device by default",
@@ -12149,14 +11679,20 @@         },
         "usart btfactory": {
             "command": "usart btfactory",
             "description": "Iceman's personal garbage test command",
-            "command": "analyse a",
+            "notes": [
     "commands": {
-{
+            "offline": true,
+            "notes": [
             "description": "Iceman's personal garbage test command",
-            "offline": true,
+                "hf 14a raw -sc 3000 -> select, crc, where 3000 == 'read block 00'",
+            ],
             "offline": false,
-            "notes": [
+{
+                "-h, --help This help"
+            ],
+            "description": "Iceman's personal garbage test command",
             "notes": [
+        "analyse a": {
 {
         },
         "usart btpin": {
@@ -12191,15 +11727,6 @@             ],
             "usage": "usart config [-hNEO] [-b <dec>]"
         },
                 "-C, --ind <int> inductance in micro henries (H)"
-                "analyse demodbuff -d 0011101001001011"
-            "command": "usart help",
-            "description": "help This help",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "-C, --ind <int> inductance in micro henries (H)"
             "usage": "analyse demodbuff [-h] -d <bin>"
             "command": "usart rx",
             "description": "Receive string over USART. WARNING: it will have side-effects if used in USART HOST mode!",
@@ -12302,15 +11829,6 @@             ],
             "usage": "wiegand encode [-h] [--fc <dec>] --cn <dec> [--issue <dec>] [--oem <dec>] [-w <format>] [--pre]"
         },
                 "-C, --ind <int> inductance in micro henries (H)"
-            "usage": "analyse units [-h] [--etu <dec>] [--us <dec>]"
-            "command": "wiegand help",
-            "description": "help This help list List available wiegand formats encode Encode to wiegand raw hex (currently for HID Prox) decode Convert raw hex to decoded wiegand format (currently for HID Prox)",
-            "notes": [],
-            "offline": true,
-            "options": [],
-            "usage": ""
-        },
-                "-C, --ind <int> inductance in micro henries (H)"
             "description": "Run LF SEARCH / HF SEARCH / DATA PLOT / DATA SAVE",
             "command": "wiegand list",
             "description": "List available wiegand formats",
@@ -12326,9 +11844,9 @@         }
     },
     "metadata": {
             "description": "Iceman's personal garbage test command",
-            "description": "Scan EMV card and save it contents to a file. It executes EMV contactless transaction and saves result to a file which can be used for emulation",
+                "hf 14a raw --ecp -s -> send ECP before select"
         "extracted_by": "PM3Help2JSON v1.00",
             "description": "Iceman's personal garbage test command",
-                "emv scan -c -> scan CDA transaction mode"
+                "-a active signal field ON without select",
     }
 }
\ No newline at end of file