From af6eea8253c24bb0f48e6de216f234930b2b9f91 Mon Sep 17 00:00:00 2001 From: Sucukdeluxe Date: Tue, 3 Mar 2026 21:55:36 +0100 Subject: [PATCH] Release v1.5.73 - Show full passwords (unmasked) in extraction logs for easier debugging Co-Authored-By: Claude Opus 4.6 --- package.json | 2 +- src/main/extractor.ts | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 8f78776..3359a1b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "real-debrid-downloader", - "version": "1.5.72", + "version": "1.5.73", "description": "Real-Debrid Downloader Desktop (Electron + React + TypeScript)", "main": "build/main/main/main.js", "author": "Sucukdeluxe", diff --git a/src/main/extractor.ts b/src/main/extractor.ts index fa411aa..eebb3f2 100644 --- a/src/main/extractor.ts +++ b/src/main/extractor.ts @@ -1266,8 +1266,8 @@ async function runExternalExtract( } logger.warn(`JVM-Extractor nicht verfügbar, nutze Legacy-Extractor: ${path.basename(archivePath)}`); } else { - const maskedPasswords = passwordCandidates.map((p) => p === "" ? '""' : `"${p.slice(0, 2)}${"*".repeat(Math.max(0, p.length - 2))}"`); - logger.info(`JVM-Extractor aktiv (${layout.rootDir}): ${path.basename(archivePath)}, ${passwordCandidates.length} Passwörter: [${maskedPasswords.join(", ")}]`); + const quotedPasswords = passwordCandidates.map((p) => p === "" ? '""' : `"${p}"`); + logger.info(`JVM-Extractor aktiv (${layout.rootDir}): ${path.basename(archivePath)}, ${passwordCandidates.length} Passwörter: [${quotedPasswords.join(", ")}]`); const jvmResult = await runJvmExtractCommand( layout, archivePath, @@ -1356,8 +1356,8 @@ async function runExternalExtractInner( const passwords = passwordCandidates; let lastError = ""; - const maskedPasswords = passwords.map((p) => p === "" ? '""' : `"${p.slice(0, 2)}${"*".repeat(Math.max(0, p.length - 2))}"`); - logger.info(`Legacy-Extractor: ${path.basename(archivePath)}, ${passwords.length} Passwörter: [${maskedPasswords.join(", ")}]`); + const quotedPasswords = passwords.map((p) => p === "" ? '""' : `"${p}"`); + logger.info(`Legacy-Extractor: ${path.basename(archivePath)}, ${passwords.length} Passwörter: [${quotedPasswords.join(", ")}]`); let announcedStart = false; let bestPercent = 0; @@ -1373,8 +1373,8 @@ async function runExternalExtractInner( onArchiveProgress?.(0); } passwordAttempt += 1; - const maskedPw = password === "" ? '""' : `"${password.slice(0, 2)}${"*".repeat(Math.max(0, password.length - 2))}"`; - logger.info(`Legacy-Passwort-Versuch ${passwordAttempt}/${passwords.length} für ${path.basename(archivePath)}: ${maskedPw}`); + const quotedPw = password === "" ? '""' : `"${password}"`; + logger.info(`Legacy-Passwort-Versuch ${passwordAttempt}/${passwords.length} für ${path.basename(archivePath)}: ${quotedPw}`); let args = buildExternalExtractArgs(command, archivePath, targetDir, conflictMode, password, usePerformanceFlags, hybridMode); let result = await runExtractCommand(command, args, (chunk) => { const parsed = parseProgressPercent(chunk);