Last active
January 9, 2020 23:28
-
-
Save redknight99/8a8f4109ae19210d18435914265f220e to your computer and use it in GitHub Desktop.
A proof of concept script for attempting to crack the remaining unsolved ciphers of Black Ops3 Zombies Revelations Map. Background: https://www.reddit.com/r/CODZombies/wiki/revelations#wiki_ciphers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
This module is a test to see if any of the remaining unsolved Black Ops 3 | |
ciphers were Rot13'd + Base64 using the Base64 alphabet / chart. | |
Base64 alphabet / chart example: https://en.wikipedia.org/wiki/Base64#Base64table . | |
The results of the test suggest that none of the remaining ciphers we're dealing | |
with are encrypted using this technique. | |
""" | |
import base64 | |
import string | |
map_letters = string.ascii_uppercase + string.ascii_lowercase + string.digits + "+/" | |
# Cipher Alias: MotD_Corkboard / Cipher #4 | |
# x = """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""" | |
# Cipher Alias: Kino_Book / Cipher #5 | |
# x = """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""" | |
# Cipher Alias: DE_bucket / Cipher #10 | |
# x = """OkEeZHnifuMdYB1IbHyAfb0g2FJzrVmfkKcSbKrpQGvhQ0/bvu76RdnGy/WtT7T3""" | |
# Cipher Alias: Origins_Trench / Cipher #6 | |
# NOTE: We converted the original hex bytes to Base64 to standardize the cipher to the others. | |
x = """ODMgQjU3QjIgQzM0MzQgNjk3RjYgRkNBM0YgOEVBRDYgNjNDNDIgQjdGMjAgMDQxQjUgQjZBMEQgQTRBRTAgQUQyNEIgOTNCMjcgRkY1NEMgNkU3OUEgMTEzNkUgMzY4NjAgQzY5QzcgMkQ0OTcgQ0RDOTggMkQ0OUMgRDI1QjMgRkNCMzYgRDkzNEMgRjBEMzEgNTEyQUYgQTc4RTYgMjZGRkQgODFDQUMgQUFFRDYgMjI2REEgQ0Q0NDkgODY3NjggM0EyRTAgQjlFNjQgNDA2QzYgMTBDMTQgMDQ5MDcgNTFBOUQgNEE1RjIgNDQ3NUMgOTFDOTEgOUFFNUUgODlENzkgNDc3REIgMkIyOUMgNTQ0NEQgRUEzNjIgNTRFOTQgQTE0QTcgNThDNDIgMDk2RkUgQkQxNzcgNzM5QjMgQTQxODUgNjI3MkEgRDlBMkYgOTU1NEYgODBFNjggNTA0RjkgMjQ1MUMgMjdEMDAgNjgwMTMgODM3M0EgRkI2QzIgOTE0MzkgRjdFODMgQTdGMTIgMUU1NkMgOTk2NDYgNzQwNDYgMjYyM0MgQ0Y4NUMgMkQ4N0EgQUJFNjMgMUY0RDMgRkFCQTcgNUUwMDMgRDY0RjQgRDRGNTAgMDQ5MTkgQ0IyQkUgNTY2RDkgNkM3RTIgRTIxMjMgN0IwRUUgRTAzMEUgQ0Y1QTcgRTM4M0MgMjE3RjAgMzU5MEEgM0RDMEEgNjE3QjEgNzc4RTcgQkQ0MzQgMEJBNjIgMjRGMjkgQjIxM0IgQzM5MEQgRUQ2OEQgN0ZCNjAgMjFCRkQgRTlDRDkgNjlDNUQgREY1N0YgMUUzQjMgRTRCRkEgRTk2MzAgN0EzQjIgRkI1NTkgNEE4RjMgNTIwQUUgQjc3NjAgMEVEODAgNkJERjQgNzZDQTEgMzE4NDQgODc5QzMgODFEQ0EgNkI5QTQgRjMxNjggNTNGNkIgMUMxNUQgRkU1OEEgOTAwN0MgQ0U3NUQgOTdDQzkgRkQ3NEQgOTVCMUUgNjY5NTcgNkNFNzggRUM5QjEgQkRCRDQgNTE3NjggRkJBOEYgRjVCMzYgMURBOTMgNzgwMEIgNzgyMkQgODMzMkUgRUIzODggNDI2MkEgQTlENTcgQzgyOUMgMzI5RjkgMkZGQUMgQkIzQUUgQTkwNDIgQ0Q2MTAgNjQ2MzEgRjNDOEIgNkIwNUYgMkRENzkgRkYzMEUgQTg0NUUgQjlBNzQgREMzREIgOUI4NkQgNUFDMTEgRjlBQ0EgQzBEODQgMzUyRUQgQzE0OUYgNUE1M0UgRTZEMTMgRkY0MDggRTY1RUMgMUI5RUMgRjI0MTMgMUMzRjkgNTQ2NDkgMjMwM0YgRTJBMUEgQTVFM0QgRThFRjQgNEZCNEUgMEM4QkQgN0ZCQkQgNURENzUgNkE4RjUgQTkyRkUgMkUzMzAgREYxMTYgN0UyQUQgMDMxNzUgNkVBNEIgMUM4NUMgMzZGNEYgOUJERTYgMDY2MjQgMkVDNzAgOUIxOTAgNkMxMjYgNzIxNzQgNUE1RjUgODgwRTggOTI2OTEgRTk4ODEgRDU5QzYgNjIyNzYgNDQwMEQgRUU0RUMgMzc1MjcgODg3NDkgNjY4NjAgQUVGNDEgNDk5RDkgNUI1RUMgRjQ1NTkgRUY2NDIgNTA0ODggOTYyRjIgRDNEMjMgMzg2MkUgRjdDMUUgNzc1NTQgNDdERTQgMjk0RTEgMUE0N0Y=""" | |
# Cipher Alias: SamsRoom_Floor / Cipher #7 | |
# x = """nee1bHowKtghExi46wfcRfcWMAFtUVkDuKBtj75XtJy0uaD4cYWtsXKmIpw7YBWFqjpHmb8kAC2UXj71""" | |
# Test a single possible rotation. | |
# shift = int(input("How far would you like to shift each letter on the Base64 chart?")) | |
# Test all 0 to 63 possible rotations | |
for shift in range(0, 64): | |
final_string = "" | |
for char in x: | |
if char != "=": | |
indexy = str(map_letters.index(char)) | |
shift_indexy = int(indexy) + shift | |
if shift_indexy > 63: | |
shift_indexy = int(shift_indexy) - 63 | |
final_string += map_letters[shift_indexy] | |
final_string += "=" | |
try: | |
base64_x = base64.b64decode(final_string) | |
print("The base64_x is: " + str(base64_x)) | |
except Exception as e: | |
print("An error occurred when we tried to b64decode that string.") | |
print("The error was: " + str(e)) | |
# input() used for manually checking the base64 decoded output. | |
# input("How it look?") | |
# TODO: Add English language detection logic. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment