Metadata-Version: 2.4
Name: total-commander-ftp-password-recovery
Version: 1.0.0
Summary: Decode Total Commander wcx_ftp.ini FTP passwords from their stored hexadecimal representation.
Project-URL: Homepage, https://www.pelock.com/products/total-commander-ftp-password-recovery
Project-URL: Repository, https://github.com/PELock/Total-Commander-FTP-Password-Recovery-Tool-Python
Author: Bartosz Wójcik
License: Apache-2.0
License-File: LICENSE
Keywords: decoder,ftp,password,total-commander,wcx_ftp.ini
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Security :: Cryptography
Classifier: Typing :: Typed
Requires-Python: >=3.11
Provides-Extra: dev
Requires-Dist: pytest>=8; extra == 'dev'
Description-Content-Type: text/markdown

# Total Commander FTP password recovery (Python)

[![PyPI](https://img.shields.io/pypi/v/total-commander-ftp-password-recovery)](https://pypi.org/project/total-commander-ftp-password-recovery/)
[![Python versions](https://img.shields.io/pypi/pyversions/total-commander-ftp-password-recovery)](https://pypi.org/project/total-commander-ftp-password-recovery/)
[![License](https://img.shields.io/pypi/l/total-commander-ftp-password-recovery)](https://github.com/PELock/Total-Commander-FTP-Password-Recovery-Tool-Python/blob/main/LICENSE)
[![GitHub](https://img.shields.io/badge/source-GitHub-181717?logo=github)](https://github.com/PELock/Total-Commander-FTP-Password-Recovery-Tool-Python)

[Total Commander](https://www.ghisler.com/) (formerly known as ~~Windows Commander~~) is a classic file manager for Windows, Windows CE, Windows Phone, and now also Android.

Total Commander has a built-in FTP/FXP client and it keeps the FTP logins and encrypted passwords in **wcx_ftp.ini** configuration file.

![Total Commander FTP Password Recovery Tool](https://www.pelock.com/img/en/products/total-commander-ftp-password-recovery/total-commander-ftp-password-recovery.png "Total Commander FTP Password Recovery Tool")

I have [reverse engineered](https://www.pelock.com/services) and recreated the password decoding algorithm years ago.

It was made available by me to another [FlashFXP](https://www.flashfxp.com/) software to import FTP connection profiles from Total Commander.

I give you source codes for both the original assembly decoding algorithm and a Python implementation of this algorithm.

## Total Commander Online Password Decoder

You can either use one of the provided source codes or use my own online implementation to make things faster:

[https://www.pelock.com/products/total-commander-ftp-password-recovery](https://www.pelock.com/products/total-commander-ftp-password-recovery)

## Requirements

- Python **3.11+**.
- [pip](https://pip.pypa.io/) (and a virtual environment for local development).

## Installation

```bash
pip install total-commander-ftp-password-recovery
```

For local development from a git checkout:

```bash
pip install -e ".[dev]"
```

## Usage (library)

```python
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()` accepts flexible hex input: ASCII case is ignored and whitespace between byte pairs is allowed (useful when pasting from an `.ini` file).

## CLI

After installation via pip, use the console script:

```bash
tc-ftp-password-decode 00112233445566778899aabbccddeeff
```

From a git checkout (after `pip install -e .`), you can also run:

```bash
python -m total_commander_ftp_password.cli 00112233445566778899aabbccddeeff
```

## Examples

- `examples/basic_usage.py` — minimal decrypt script.

## Tests

```bash
pip install -e ".[dev]"
pytest
```

## References

- [Total Commander FTP Password Recovery (article / online tool)](https://www.pelock.com/products/total-commander-ftp-password-recovery)
- [Source code recovery / reverse engineering services](https://www.pelock.com/services)

## Author

Bartosz Wójcik

- Visit my site at — [https://www.pelock.com](https://www.pelock.com)
- X — [https://x.com/PELock](https://x.com/PELock)
- GitHub — [https://github.com/PELock](https://github.com/PELock)

