From 371a01efaa9d938da3d43db96ed629904325dc6e Mon Sep 17 00:00:00 2001 From: Roman Hergenreder Date: Sun, 29 Dec 2019 21:25:52 +0100 Subject: [PATCH] Day18 fixed --- Day 18/dance/data/usr/bin/dance.id0 | Bin 139264 -> 139264 bytes Day 18/dance/data/usr/bin/dance.id1 | Bin 147456 -> 147456 bytes Day 18/dance/data/usr/bin/dance.til | Bin 1938 -> 4295 bytes Day 18/decode.py | 41 +++++----------------------- 4 files changed, 7 insertions(+), 34 deletions(-) diff --git a/Day 18/dance/data/usr/bin/dance.id0 b/Day 18/dance/data/usr/bin/dance.id0 index 3a942361c07361bfe58b6a319039e1c7d0a56037..0443968d93d1bd169de5d5397fa285fed4f1239b 100644 GIT binary patch delta 22375 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 delta 16651 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 delta 30 fcmX@EIEjCP4VO3r1A`b4JF#zcb7AKIvcLcUS=a<1 diff --git a/Day 18/decode.py b/Day 18/decode.py index 316f3d3..cc4f332 100644 --- a/Day 18/decode.py +++ b/Day 18/decode.py @@ -1,36 +1,9 @@ -unk_100007F50 = [0x03, 0x20, 0x63, 0x46, 0x61, 0xB6, 0x3C, 0xAF, 0xAA, 0x76, 0xC2, 0x7E, 0xEA, 0x00, 0xB5, 0x98] -a4 = -5678246756302764783 +from Crypto.Cipher import Salsa20 -# input = "096CD446EBC8E04D2FDE299BE44F322863F7A37C18763554EEE4C99C3FAD15" -# print(len(input), len(unk_100007F50)) +KEY = bytearray.fromhex("0320634661B63CAFAA76C27EEA00B59BFB2F7097214FD04CB257AC2904EFEE46") +NONCE = bytearray.fromhex("B132D0A8E78F4511")[::-1] +ENCRYPTED = bytearray.fromhex("096CD446EBC8E04D2FDE299BE44F322863F7A37C18763554EEE4C99C3FAD15") -def dance_words(): - pass - -def dance_block(buf, unk, const, num): - pass - -def dance(input): - if len(input) > 0: - v4 = -567824675630276478 - v5 = unk_100007F50 - v6 = len(input) - v7 = input - v8 = 0 - v9 = [0] * 64 - - while True: - - if v8 == 0: - dance_block(v9, v5, v4, 0) - - v7[v8] = ord(v7[v8]) ^ v9[0] - v8 = v8 + 1 - if v6 == v8: - break - - return v7 - -input = ["0"] * 32 -output = dance(input) -print(output) +cipher = Salsa20.new(key=KEY, nonce=NONCE) +plaintext = cipher.decrypt(ENCRYPTED) +print(plaintext.decode("UTF-8"))