|
@@ -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"))
|