Decode Total Commander FTP passwords. Installable packages for PHP, Python, JavaScript (Node.js), and Rust.
The Total Commander FTP Password Recovery libraries mirror the decryption algorithm used on this site. Each package runs offline on your machine — use them to decode ciphertext from wcx_ftp.ini (hex fields) or to build your own tools and automation. Flexible hex input is supported (case ignored; spacing between byte pairs allowed), which helps when pasting directly from an .ini file.
Official releases are published to Packagist, PyPI, npm, and crates.io. Source is on GitHub.
| Language | Installation | Package | Sources |
|---|---|---|---|
![]() |
Run:
or add the following to |
Packagist | GitHub |
![]() |
pip install total-commander-ftp-password-recovery |
PyPI | GitHub |
![]() |
Run
or add the following to |
npm | GitHub |
![]() |
Run:
or add the following to |
Crates | GitHub |
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use PELock\TotalCommanderFtpPassword\TotalCommanderPasswordDecoder;
$cipherHex = '00112233445566778899aabbccddeeff';
$decoder = new TotalCommanderPasswordDecoder();
$plain = $decoder->decryptPassword($cipherHex);
if ($plain === false) {
throw new RuntimeException('Invalid ciphertext (bad hex, odd length, or too short).');
}
echo $plain;
echo bin2hex($plain);
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)
print(hexlify(plain).decode("ascii"))
import { Buffer } from 'node:buffer';
import { TotalCommanderPasswordDecoder } from 'total-commander-ftp-password-recovery';
const cipherHex = '00112233445566778899aabbccddeeff';
const decoder = new TotalCommanderPasswordDecoder();
const plain = decoder.decryptPassword(cipherHex);
if (plain === null) {
throw new Error('Invalid ciphertext (bad hex, odd length, or too short).');
}
console.log(Buffer.from(plain).toString('latin1'));
console.log(Buffer.from(plain).toString('hex'));
use total_commander_ftp_password_recovery::TotalCommanderPasswordDecoder;
let cipher_hex = "00112233445566778899aabbccddeeff";
let mut decoder = TotalCommanderPasswordDecoder::new();
let plain = decoder
.decrypt_password(cipher_hex)
.expect("Invalid ciphertext (bad hex, odd length, or too short).");
let latin1: String = plain.iter().map(|&b| char::from(b)).collect();
println!("{latin1}");
print!("hex: ");
for b in &plain {
print!("{b:02x}");
}
println!();
Each package ships a small tc-ftp-password-decode helper (via Composer vendor/bin, pip console scripts, npx, or cargo install). Example:
tc-ftp-password-decode 00112233445566778899aabbccddeeff
| PHP (Composer) | pelock/total-commander-ftp-password-recovery |
| Python (pip) | total-commander-ftp-password-recovery |
| JavaScript (npm) | total-commander-ftp-password-recovery |
| Rust (Cargo) | total-commander-ftp-password-recovery |
If you would like to ask me about Total Commander FTP Password Recovery SDKs, or something's not clear, mail me. I'll be happy to answer all of your questions.