Skip to content

Commit c1441eb

Browse files
committed
autocompletion on 'script run ...'
1 parent 32a4e62 commit c1441eb

File tree

2 files changed

+127
-0
lines changed

2 files changed

+127
-0
lines changed

client/pyscripts/pm3_help2list.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import datetime
2323
import argparse
2424
import logging
25+
from pathlib import Path
26+
import subprocess
2527

2628
##############################################################################
2729
# Script version data: (Please increment when making updates)
@@ -46,6 +48,23 @@ def main():
4648
logging.info(f'{get_version()} starting...')
4749
help_text = args.input_file.read()
4850
command_data = parse_all_command_data(help_text)
51+
# Collect all git-tracked scripts
52+
paths = [('*.py', Path(__file__).parent),
53+
('*.lua', Path(__file__).parent.parent / 'luascripts'),
54+
('*.cmd', Path(__file__).parent.parent / 'cmdscripts')]
55+
try:
56+
for pattern, scripts_dir in paths:
57+
result = subprocess.run(['git', 'ls-files', pattern],
58+
cwd=scripts_dir,
59+
capture_output=True,
60+
text=True,
61+
check=True)
62+
for file_path in result.stdout.strip().split('\n'):
63+
if file_path:
64+
file = Path(file_path)
65+
command_data[file.name] = {'command': f'script run {file.name}', 'offline': False}
66+
except subprocess.CalledProcessError:
67+
print("Error, need git")
4968

5069
args.output_file.write("""//-----------------------------------------------------------------------------
5170
// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details.

client/src/pm3line_vocabulary.h

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -907,6 +907,114 @@ const static vocabulary_t vocabulary[] = {
907907
{ 1, "wiegand list" },
908908
{ 1, "wiegand encode" },
909909
{ 1, "wiegand decode" },
910+
{ 0, "script run amiibo_change_uid.py" },
911+
{ 0, "script run des_talk.py" },
912+
{ 0, "script run findbits.py" },
913+
{ 0, "script run fm11rf08s_full.py" },
914+
{ 0, "script run fm11rf08s_recovery.py" },
915+
{ 0, "script run hf_mfu_uscuid.py" },
916+
{ 0, "script run ice.py" },
917+
{ 0, "script run intertic.py" },
918+
{ 0, "script run mf_backdoor_dump.py" },
919+
{ 0, "script run parity.py" },
920+
{ 0, "script run paxton_convert.py" },
921+
{ 0, "script run paxton_net.py" },
922+
{ 0, "script run paxton_switch.py" },
923+
{ 0, "script run pm3.py" },
924+
{ 0, "script run pm3_eml2mfd.py" },
925+
{ 0, "script run pm3_eml_mfd_test.py" },
926+
{ 0, "script run pm3_help2json.py" },
927+
{ 0, "script run pm3_help2list.py" },
928+
{ 0, "script run pm3_mfd2eml.py" },
929+
{ 0, "script run pm3_nfc2eml.py" },
930+
{ 0, "script run pm3_resources.py" },
931+
{ 0, "script run spi_flash_decode.py" },
932+
{ 0, "script run theremin.py" },
933+
{ 0, "script run xorcheck.py" },
934+
{ 0, "script run data_hex_crc.lua" },
935+
{ 0, "script run data_mf_accessdecode.lua" },
936+
{ 0, "script run data_mf_bin2eml.lua" },
937+
{ 0, "script run data_mf_bin2html.lua" },
938+
{ 0, "script run data_mf_eml2bin.lua" },
939+
{ 0, "script run data_mf_eml2html.lua" },
940+
{ 0, "script run data_mfu_bin2eml.lua" },
941+
{ 0, "script run example_cmdline.lua" },
942+
{ 0, "script run example_parameters.lua" },
943+
{ 0, "script run hf_14a_aztek.lua" },
944+
{ 0, "script run hf_14a_i2crevive.lua" },
945+
{ 0, "script run hf_14a_protectimus_nfc.lua" },
946+
{ 0, "script run hf_14a_raw.lua" },
947+
{ 0, "script run hf_14a_read_ltocm.lua" },
948+
{ 0, "script run hf_14b_calypso.lua" },
949+
{ 0, "script run hf_14b_mobib.lua" },
950+
{ 0, "script run hf_15_magic.lua" },
951+
{ 0, "script run hf_i2c_plus_2k_utils.lua" },
952+
{ 0, "script run hf_legic.lua" },
953+
{ 0, "script run hf_legic_buffer2card.lua" },
954+
{ 0, "script run hf_legic_clone.lua" },
955+
{ 0, "script run hf_mf_autopwn.lua" },
956+
{ 0, "script run hf_mf_dump_luxeo.lua" },
957+
{ 0, "script run hf_mf_em_util.lua" },
958+
{ 0, "script run hf_mf_format.lua" },
959+
{ 0, "script run hf_mf_gen3_writer.lua" },
960+
{ 0, "script run hf_mf_keycheck.lua" },
961+
{ 0, "script run hf_mf_magicrevive.lua" },
962+
{ 0, "script run hf_mf_mini_dumpdecrypt.lua" },
963+
{ 0, "script run hf_mf_sim_hid.lua" },
964+
{ 0, "script run hf_mf_tnp3_clone.lua" },
965+
{ 0, "script run hf_mf_tnp3_dump.lua" },
966+
{ 0, "script run hf_mf_tnp3_sim.lua" },
967+
{ 0, "script run hf_mf_uid_downgrade.lua" },
968+
{ 0, "script run hf_mf_uidbruteforce.lua" },
969+
{ 0, "script run hf_mf_uidkeycalc.lua" },
970+
{ 0, "script run hf_mf_uidkeycalc_mizip.lua" },
971+
{ 0, "script run hf_mf_ultimatecard.lua" },
972+
{ 0, "script run hf_mf_uscuid_prog.lua" },
973+
{ 0, "script run hf_mfp_raw.lua" },
974+
{ 0, "script run hf_mfu_amiibo_restore.lua" },
975+
{ 0, "script run hf_mfu_amiibo_sim.lua" },
976+
{ 0, "script run hf_mfu_magicwrite.lua" },
977+
{ 0, "script run hf_mfu_pwdgen_italy.lua" },
978+
{ 0, "script run hf_mfu_setuid.lua" },
979+
{ 0, "script run hf_mfu_ultra.lua" },
980+
{ 0, "script run hf_ndef_dump.lua" },
981+
{ 0, "script run hf_ntag_3d.lua" },
982+
{ 0, "script run hf_ntag_bruteforce.lua" },
983+
{ 0, "script run hf_ntag_dt.lua" },
984+
{ 0, "script run init_rdv4.lua" },
985+
{ 0, "script run kybercrystals.lua" },
986+
{ 0, "script run lf_awid_bulkclone.lua" },
987+
{ 0, "script run lf_electra.lua" },
988+
{ 0, "script run lf_em4100_bulk.lua" },
989+
{ 0, "script run lf_em_tearoff.lua" },
990+
{ 0, "script run lf_em_tearoff_protect.lua" },
991+
{ 0, "script run lf_hid_bulkclone.lua" },
992+
{ 0, "script run lf_hid_bulkclone_v2.lua" },
993+
{ 0, "script run lf_ident_json.lua" },
994+
{ 0, "script run lf_ioprox_bulkclone.lua" },
995+
{ 0, "script run lf_t55xx_chk.lua" },
996+
{ 0, "script run lf_t55xx_chk_date.lua" },
997+
{ 0, "script run lf_t55xx_fix.lua" },
998+
{ 0, "script run lf_t55xx_multiwriter.lua" },
999+
{ 0, "script run lf_t55xx_reset.lua" },
1000+
{ 0, "script run mem_readpwd.lua" },
1001+
{ 0, "script run mem_spiffs_readpwd.lua" },
1002+
{ 0, "script run mfc_hammerlite.lua" },
1003+
{ 0, "script run multi_bruteforce.lua" },
1004+
{ 0, "script run ntag_clean.lua" },
1005+
{ 0, "script run ntag_getsig.lua" },
1006+
{ 0, "script run ntag_hammertime.lua" },
1007+
{ 0, "script run paxton_clone.lua" },
1008+
{ 0, "script run data_tracetest.lua" },
1009+
{ 0, "script run hf_read.lua" },
1010+
{ 0, "script run lf_t55xx_defaultask.lua" },
1011+
{ 0, "script run lf_t55xx_defaultbi.lua" },
1012+
{ 0, "script run lf_t55xx_defaultfsk.lua" },
1013+
{ 0, "script run lf_t55xx_defaultpsk.lua" },
1014+
{ 0, "script run lf_t55xx_writetest.lua" },
1015+
{ 0, "script run example.cmd" },
1016+
{ 0, "script run rdv4_init_extflash.cmd" },
1017+
{ 0, "script run test_psk_clone.cmd" },
9101018
{0, NULL}
9111019
};
9121020

0 commit comments

Comments
 (0)