
Инструмент для восстановления паролей FTP в Total Commander на Python позволяет расшифровать информацию о паролях FTP-аккаунтов для всех версий Total Commander с FTP-плагином.
Total Commander (ранее известный как Windows Commander) — это классический файловый менеджер для Windows, Windows CE, Windows Phone, а теперь и для Android.
Total Commander имеет встроенный FTP/FXP-клиент, и он хранит FTP-логины и зашифрованные пароли в файле конфигурации wcx_ftp.ini.

Я провёл реверс-инжиниринг и воссоздал алгоритм декодирования паролей много лет назад.
Он был предоставлен мной другому программному обеспечению — FlashFXP — для импорта профилей FTP-подключений из Total Commander.
Я предоставляю вам исходные коды как оригинального алгоритма декодирования на ассемблере, так и реализации этого алгоритма на Python.
Вы можете использовать один из предоставленных исходных кодов или воспользоваться моей собственной онлайн-реализацией, чтобы ускорить процесс:
https://www.pelock.com/products/total-commander-ftp-password-recovery
pip install total-commander-ftp-password-recovery
Для локальной разработки из git-клона:
pip install -e ".[dev]"
from binascii import hexlify
from total_commander_ftp_password import TotalCommanderPasswordDecoder
cipher_hex = "00112233445566778899aabbccddeeff"
decoder = TotalCommanderPasswordDecoder()
plain = decoder.decrypt_password(cipher_hex)
if plain is None:
raise RuntimeError("Invalid ciphertext (bad hex, odd length, or too short).")
print(plain) # decoded bytes
print(hexlify(plain).decode("ascii")) # optional hex view
decrypt_password() принимает гибкий шестнадцатеричный ввод: регистр ASCII игнорируется, а пробелы между парами байтов допускаются (полезно при вставке из файла .ini).
После установки через pip используйте консольный скрипт:
tc-ftp-password-decode 00112233445566778899aabbccddeeff
Из git-клона (после pip install -e .) вы также можете запустить:
python -m total_commander_ftp_password.cli 00112233445566778899aabbccddeeff
examples/basic_usage.py — минимальный скрипт для расшифровки.pip install -e ".[dev]"
pytest
Bartosz Wójcik