Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- $ python z13_poc_1.py
- MATCHING CIPHER LINE
- >VUZ5-+|c.3zBK(Op^.fMqG2RcT+L16C<+
- MATCHING CIPHER LINE MIRRORED
- <VUZ5-+|C.4zbk(OP^.FMQG2rCT+l16c>+
- MATCHING CIPHER LINE MIRRORED DECIPHERED
- I O S R V S H E Y N E A E I T A I O N F O Q T M r Y R H A R D E N H
- """
- import re
- import numpy as np
- left_right = {
- None: "Z",
- "!": "!",
- "#": "#",
- "%": "*",
- "&": None,
- "(": "(",
- ")": ")",
- "*": "%",
- "+": "+",
- "-": "-",
- ".": ".",
- "/": "\\",
- "0": None,
- "1": "1",
- "2": "2",
- "3": "4",
- "4": "3",
- "5": "5",
- "6": "6",
- "7": "7",
- "8": "8",
- "9": "9",
- ":": ";",
- ";": ":",
- "<": ">",
- "=": "=",
- ">": "<",
- "?": "?",
- "@": "@",
- "A": "A",
- "B": "b",
- "C": "c",
- "D": "d",
- "E": "e",
- "F": "f",
- "G": None,
- "H": "H",
- "I": "I",
- "J": None,
- "K": "k",
- "L": "l",
- "M": "M",
- "N": None,
- "O": "O",
- "P": "p",
- "Q": "q",
- "R": "r",
- "S": None,
- "T": "T",
- "U": None,
- "V": "V",
- "W": "W",
- "X": "X",
- "Y": "y",
- "Z": None,
- "\\": "/",
- "b": "B",
- "c": "C",
- "d": "D",
- "e": "E",
- "f": "F",
- "k": "K",
- "l": "L",
- "p": "P",
- "q": "Q",
- "r": "R",
- "y": "Y",
- }
- z340_key = {
- "A": ["K", "*", "z", "O", "l"],
- "B": ["f", "_"],
- "C": ["p"],
- "D": ["S", "A", "6"],
- "E": ["|", "B", "b", "4", "c", "N"],
- "F": ["F"],
- "G": ["L"],
- "H": ["+"],
- "I": ["H", "k", "<", "P", "y"],
- "J": [],
- "K": [],
- "L": ["d", "7", "t"],
- "M": ["2"],
- "N": [".", "9", ">", "D", "Y"],
- "O": ["M", "V", "R", "^"],
- "P": ["8", "j"],
- "Q": [],
- "R": ["E", "Z", "1", "T"],
- "S": ["U", "&", "J", "-"],
- "T": ["(", "#", "G", "%", ";", ":"],
- "U": ["@", "/", "q"],
- "V": ["5"],
- "W": ["W", ")"],
- "X": [],
- "Y": ["C", "3", "X"],
- "Z": [],
- }
- def load_z340(fix=True):
- z340 = r"""
- HER>pl^VPk|1LTG2d
- Np+B(#O%DWY.<*Kf)
- By:cM+UZGW()L#zHJ
- Spp7^l8*V3pO++RK2
- _9M+ztjd|5FP+&4k/
- p8R^FlO-*dCkF>2D(
- #5+Kq%;2UcXGV.zL|
- (G2Jfj#O+_NYz+@L9
- d<M+b+ZR2FBcyA64K
- -zlUV+^J+Op7<FBy-
- U+R/5tE|DYBpbTMKO
- 2<clRJ|*5T4M.+&BF
- z69Sy#+N|5FBc(;8R
- lGFN^f524b.cV4t++
- yBX1*:49CE>VUZ5-+
- |c.3zBK(Op^.fMqG2
- RcT+L16C<+FlWB|)L
- ++)WCzWcPOSHT/()p
- |FkdW<7tB_YOB*-Cc
- >MDHNpkSzZO8A|K;+
- """
- lines = [list(y) for y in (x.strip() for x in z340.split("\n")) if y]
- if fix:
- lines[14] = list("yBX+1*:49CE>VUZ5-")
- return np.array(lines)
- def substitute(key, alias):
- for letter, aliases in key.items():
- if alias in aliases:
- return letter
- def find_z13_pattern(cipher):
- z13_pattern = re.compile(".{13}K.{6}M.{13}")
- return z13_pattern.findall("".join(cipher.flatten()))
- def demo():
- z340 = load_z340(fix=False)
- matching_lines = find_z13_pattern(cipher=z340)
- second_line = matching_lines[1]
- plaintext = []
- line_mirror = []
- print("MATCHING CIPHER LINE")
- print(second_line, "\n")
- for char in second_line:
- char_mirror = left_right.get(char) or char
- line_mirror.append(char_mirror)
- print("MATCHING CIPHER LINE MIRRORED")
- print("".join(line_mirror), "\n")
- for char_mirror in line_mirror:
- char_plain = substitute(key=z340_key, alias=char_mirror) or char_mirror
- plaintext.append(char_plain)
- plaintext = " ".join(plaintext)
- print("MATCHING CIPHER LINE MIRRORED DECIPHERED")
- print(plaintext)
- assert "T M r Y R H A R D E N" in plaintext
- if __name__ == "__main__":
- demo()
Advertisement
Add Comment
Please, Sign In to add comment