|
|
@@ -0,0 +1,62 @@ |
|
|
|
import sys |
|
|
|
import string |
|
|
|
|
|
|
|
|
|
|
|
def rotate(x, y): |
|
|
|
return (x - y) % 26 |
|
|
|
|
|
|
|
|
|
|
|
def shift(letter, n): |
|
|
|
x = ord(letter) - ord("A") |
|
|
|
y = rotate(x, n) |
|
|
|
return chr(ord("A") + y) |
|
|
|
|
|
|
|
|
|
|
|
def rot13(message): |
|
|
|
message = "".join([x for x in message if x.isalpha()]) |
|
|
|
message = message.upper() |
|
|
|
res = "" |
|
|
|
for c in message: |
|
|
|
res += shift(c, 13) |
|
|
|
return res |
|
|
|
|
|
|
|
|
|
|
|
def decrypt(key, message): |
|
|
|
message = "".join([x for x in message if x.isalpha()]) |
|
|
|
message = message.upper() |
|
|
|
res = "" |
|
|
|
i = 0 |
|
|
|
for c in message: |
|
|
|
x = ord(key[i % len(key)]) - ord("A") |
|
|
|
res += shift(c, x) |
|
|
|
i += 1 |
|
|
|
return res |
|
|
|
|
|
|
|
|
|
|
|
def try_with_key(key, message): |
|
|
|
res = decrypt(key, message) |
|
|
|
if "PLEKSZYGLADZ" in res: |
|
|
|
return res |
|
|
|
|
|
|
|
|
|
|
|
def main(): |
|
|
|
message = sys.argv[1] |
|
|
|
print(decrypt('N', message)) |
|
|
|
|
|
|
|
""" |
|
|
|
message = sys.argv[1] |
|
|
|
letters = string.ascii_uppercase |
|
|
|
for a in letters: |
|
|
|
for b in letters: |
|
|
|
for c in letters: |
|
|
|
key = a + b + c |
|
|
|
res = try_with_key(key, message) |
|
|
|
if res: |
|
|
|
print(res) |
|
|
|
print("key:", key) |
|
|
|
return |
|
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
main() |