From b6b17eff2fdb41fc759726f0d34e0cd9928bdea6 Mon Sep 17 00:00:00 2001 From: Alaa Qweider Date: Mon, 6 Apr 2026 09:07:19 +0800 Subject: [PATCH] feat: add config for Iceman v4.21128, update qrc resource list Adds config_rrgv4.21128.json targeting the latest Iceman release (v4.21128 Permafrost, 2026-02-25). Based on config_rrgv4.16717.json with the following updates: - Add hf mf autopwn command (primary attack workflow since ~v4.14000) - Add hf mf fchk (fast key check) as default check command - Update config.qrc to include the new config file Addresses issues #65, #68, #38 (command syntax out of date with Iceman). --- config/config.qrc | 1 + config/config_rrgv4.21128.json | 205 +++++++++++++++++++++++++++++++++ 2 files changed, 206 insertions(+) create mode 100644 config/config_rrgv4.21128.json diff --git a/config/config.qrc b/config/config.qrc index 1dc106c..0630063 100644 --- a/config/config.qrc +++ b/config/config.qrc @@ -4,5 +4,6 @@ config_rrgv4.13441.json config_rrgv4.15864.json config_rrgv4.16717.json + config_rrgv4.21128.json diff --git a/config/config_rrgv4.21128.json b/config/config_rrgv4.21128.json new file mode 100644 index 0000000..bdff028 --- /dev/null +++ b/config/config_rrgv4.21128.json @@ -0,0 +1,205 @@ +{ + "//": "Based on Proxmark3 rrg repo v4.21128 (Permafrost), 2026-02-25", + "//": "You can change this file if the command format of client changes", + "mifare classic": { + "nested": { + "cmd": "hf mf nested -- --blk - -k ", + "static cmd": "hf mf staticnested -- --blk - -k ", + "card type": { + "mini": "mini", + "1k": "1k", + "2k": "2k", + "4k": "4k" + }, + "key type": { + "A": "a", + "B": "b" + }, + "key pattern": "\\s*\\d{3}\\s*\\|\\s*\\d{3}\\s*\\|\\s*.+?\\s*\\|\\s*.+?\\s*\\|\\s*.+?\\s*\\|\\s*.+?\\s*$", + "key A index": 2, + "key B index": 4 + }, + "autopwn": { + "cmd": "hf mf autopwn --", + "card type": { + "mini": "mini", + "1k": "1k", + "2k": "2k", + "4k": "4k" + }, + "key pattern": "\\s*\\d{3}\\s*\\|\\s*\\d{3}\\s*\\|\\s*.+?\\s*\\|\\s*.+?\\s*\\|\\s*.+?\\s*\\|\\s*.+?\\s*$", + "key A index": 2, + "key B index": 4 + }, + "check": { + "cmd": "hf mf fchk --", + "card type": { + "mini": "mini", + "1k": "1k", + "2k": "2k", + "4k": "4k" + }, + "key pattern": "\\s*\\d{3}\\s*\\|\\s*\\d{3}\\s*\\|\\s*.+?\\s*\\|\\s*.+?\\s*\\|\\s*.+?\\s*\\|\\s*.+?\\s*$", + "key A index": 2, + "key B index": 4 + }, + "info": { + "cmd": "hf 14a info -nsv", + "basic cmd": "hf 14a info" + }, + "sniff": { + "cmd": "hf sniff" + }, + "sniff 14a": { + "cmd": "hf 14a sniff" + }, + "list": { + "cmd": "trace list -t mf" + }, + "dump": { + "cmd": "hf mf dump --", + "card type": { + "mini": "mini", + "1k": "1k", + "2k": "2k", + "4k": "4k" + } + }, + "restore": { + "cmd": "hf mf restore -- --force", + "card type": { + "mini": "mini", + "1k": "1k", + "2k": "2k", + "4k": "4k" + } + }, + "emulator wipe": { + "cmd": "hf mf eclr" + }, + "Magic Card wipe": { + "cmd": "hf mf cwipe" + }, + "emulator read block": { + "cmd": "hf mf egetblk --blk ", + "data pattern": "([0-9a-fA-F]{2} ){15}[0-9a-fA-F]{2}" + }, + "Magic Card read block": { + "cmd": "hf mf cgetblk --blk ", + "data pattern": "([0-9a-fA-F]{2} ){15}[0-9a-fA-F]{2}" + }, + "normal read block": { + "cmd": "hf mf rdbl --blk - -k ", + "key type": { + "A": "a", + "B": "b" + }, + "data pattern": "([0-9a-fA-F]{2} ){15}[0-9a-fA-F]{2}" + }, + "darkside": { + "cmd": "hf mf darkside" + }, + "save sniff": { + "cmd": "trace save -f ", + "path cmd": "prefs show", + "path pattern": "trace save path\\.+\\s*(.+)$" + }, + "load sniff": { + "cmd": "trace load -f ", + "show cmd": "trace list --buffer -t mf" + }, + "hardnested": { + "cmd": "hf mf hardnested --blk - -k --tblk --t", + "known key type": { + "A": "a", + "B": "b" + }, + "target key type": { + "A": "a", + "B": "b" + } + }, + "normal read sector": { + "cmd": "hf mf rdsc --sec - -k ", + "key type": { + "A": "a", + "B": "b" + }, + "data pattern": "([0-9a-fA-F]{2} ){15}[0-9a-fA-F]{2}" + }, + "Magic Card read sector": { + "cmd": "hf mf cgetsc --sec ", + "data pattern": "([0-9a-fA-F]{2} ){15}[0-9a-fA-F]{2}" + }, + "normal write block": { + "cmd": "hf mf wrbl --blk - -k -d --force", + "key type": { + "A": "a", + "B": "b" + }, + "failed flag": ["fail", "error"] + }, + "Magic Card write block": { + "cmd": "hf mf csetblk --blk -d ", + "failed flag": ["fail", "error"] + }, + "emulator write block": { + "cmd": "hf mf esetblk --blk -d " + }, + "Magic Card lock": { + "cmd": "hf 14a raw ", + "sequence": [ + "-ak -b 7 40", + "-ak 43", + "-ak E0 00 39 F7", + "-ak E1 00 E1 EE", + "-ak 85 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 18 47", + "-a 52" + ] + }, + "Magic Card set parameter": { + "cmd": "hf mf csetuid --uid --atqa --sak " + } + }, + "lf": { + "read": { + "cmd": "lf read -v", + "show cmd": "data plot" + }, + "sniff": { + "cmd": "lf sniff -v", + "show cmd": "data plot" + }, + "search": { + "cmd": "lf search -u" + }, + "tune": { + "cmd": "lf tune --divisor " + }, + "get config": { + "cmd": "hw status", + "field start": "LF Sampling config", + "field end": "\\[#\\] \\S", + "divisor": {"flag": "divisor", "pattern": "\\d+"}, + "bits per sample": {"flag": "bits per sample", "pattern": "\\d+"}, + "decimation": {"flag": "decimation", "pattern": "\\d+"}, + "averaging": {"flag": "averaging", "pattern": "\\d+", "replace": {"yes": "1", "no": "0", "Yes": "1", "No": "0"}}, + "trigger threshold": {"flag": "trigger threshold", "pattern": "\\d+"}, + "samples to skip": {"flag": "samples to skip", "pattern": "\\d+"} + }, + "set config": { + "cmd": "lf config --divisor --bps --dec --avg --trig --skip ", + "divisor cmd": "hw setlfdivisor -d " + } + }, + "t55xx": { + "clone em410x": { + "read": "lf em 410x reader", + "successful read flag": "EM 410x ID", + "pattern": "EM 410x ID\\s*\\K[0-9a-fA-F]{10}", + "clone cmd": "lf em 410x clone --id ", + "t5555 flag": "--q5", + "t55x7 flag": "" + } + } +}