From 37fa225d95e118a5f241eb46adaded5dba6c12e0 Mon Sep 17 00:00:00 2001 From: Davide Depau Date: Tue, 1 Dec 2020 00:55:26 +0100 Subject: [PATCH] Cloud password has to be MD5 --- src/main/java/ktx.kt | 4 +++- src/main/java/main.kt | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/ktx.kt b/src/main/java/ktx.kt index ebd90bd..f593828 100644 --- a/src/main/java/ktx.kt +++ b/src/main/java/ktx.kt @@ -62,4 +62,6 @@ fun InputStream.readNBytesCompat(len: Int): ByteArray? { @Throws(IOException::class) fun InputStream.readAllBytesCompat(): ByteArray? { return readNBytesCompat(Int.MAX_VALUE) -} \ No newline at end of file +} + +fun ByteArray.toHexString() = joinToString("") { "%02X".format(it) } \ No newline at end of file diff --git a/src/main/java/main.kt b/src/main/java/main.kt index 755123b..9bb2a0b 100644 --- a/src/main/java/main.kt +++ b/src/main/java/main.kt @@ -3,6 +3,8 @@ import com.xenomachina.argparser.default import com.xenomachina.argparser.mainBody import org.fusesource.jansi.internal.CLibrary.STDIN_FILENO import org.fusesource.jansi.internal.CLibrary.isatty +import java.nio.charset.Charset +import java.security.MessageDigest import kotlin.system.exitProcess class Args(parser: ArgParser) { @@ -44,10 +46,18 @@ fun main(args: Array) = mainBody { exitProcess(1) } + val hashedPassword: String? = cloudPassword?.let { + MessageDigest + .getInstance("MD5") + .apply { update(it.toByteArray(Charset.forName("UTF-8"))) } + .digest() + .toHexString() + } + val aes = if (keyExchange != null) { - StreamAesUtils.generateFromExchangeKeyAndSuperSecretKey(keyExchange, cloudPassword) + StreamAesUtils.generateFromExchangeKeyAndSuperSecretKey(keyExchange, hashedPassword) } else { - StreamAesUtils.fromUserNonceSuperSecretKey(username, nonce, cloudPassword) + StreamAesUtils.fromUserNonceSuperSecretKey(username, nonce, hashedPassword) } val output = if (encrypt) {