Geocrack

pyscript_2

Sep 12th, 2022 (edited)
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.88 KB | None | 0 0
  1. <!DOCTYPE html>
  2.  
  3. <html>
  4.  
  5. <head>
  6. <meta charset="utf-8">
  7. <title>Enigma</title>
  8. <link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
  9. <script defer src="https://pyscript.net/latest/pyscript.js"></script>
  10. </head>
  11. <body>
  12. <py-script>
  13.  
  14. from js import prompt
  15. import asyncio
  16.  
  17. def default():
  18. alphabet = [[chr(i) for i in range(65, 91)], [chr(i)
  19. for i in range(65, 91)]]
  20. rotor_1, rotor_2 = rotor_update(alphabet)
  21. return alphabet, rotor_1, rotor_2
  22.  
  23. def rotor_update(alphabet):
  24. rotor_1 = [alphabet[0][7],alphabet[0][2],alphabet[0][1],alphabet[0][6],alphabet[0][10],alphabet[0][8],alphabet[0][3],alphabet[0][0],alphabet[0][5],alphabet[0][11],alphabet[0][4],alphabet[0][9],alphabet[0][15],alphabet[0][20],alphabet[0][17],alphabet[0][12],alphabet[0][18],alphabet[0][14],alphabet[0][16],alphabet[0][24],alphabet[0][13],alphabet[0][25],alphabet[0][23],alphabet[0][22],alphabet[0][19],alphabet[0][21]]
  25. rotor_2 = [alphabet[1][5],alphabet[1][3],alphabet[1][8],alphabet[1][1],alphabet[1][6],alphabet[1][0],alphabet[1][4],alphabet[1][9],alphabet[1][2],alphabet[1][7],alphabet[1][12],alphabet[1][14],alphabet[1][10],alphabet[1][16],alphabet[1][11],alphabet[1][23],alphabet[1][13],alphabet[1][18],alphabet[1][17],alphabet[1][24],alphabet[1][22],alphabet[1][25],alphabet[1][20],alphabet[1][15],alphabet[1][19],alphabet[1][21]]
  26. return rotor_1, rotor_2
  27.  
  28. def right_prompt(prompt,additional):
  29. if len(prompt) == 0:
  30.  
  31. prompt("You have to enter a letter!")
  32.  
  33. return False
  34. if len(prompt) > 1 and additional:
  35.  
  36. prompt("Please enter only 1 letter!")
  37. return False
  38. if not prompt.isalpha():
  39.  
  40. prompt("Please enter a valid letter!")
  41. return False
  42. return True
  43.  
  44. def rotor_position(alphabet):
  45. for i in range(2):
  46. position = prompt(
  47. f"Enter the position of the {i+1}. rotor (A-Z): ").upper()
  48. if not right_prompt(position,additional=True):
  49. alphabet, rotor_1, rotor_2 = default()
  50. return rotor_position(alphabet)
  51. movement = (ord(position) + 65)
  52. for _ in range(movement):
  53. alphabet[i].append(alphabet[i][0])
  54. alphabet[i].pop(0)
  55. return alphabet
  56.  
  57. def encrypt_enigma(alphabet, rotor_1, rotor_2, message):
  58. encrypted_message = ""
  59. rotor_1, rotor_2 = rotor_update(alphabet)
  60. for item in message:
  61. if item == " ":
  62. encrypted_message += " "
  63. continue
  64.  
  65. for a in range(len(alphabet[0])):
  66. if item == alphabet[0][a]:
  67. temp = rotor_1[a]
  68. break
  69.  
  70. for b in range(len(alphabet[1])):
  71. if temp == alphabet[1][b]:
  72. encrypted_message += rotor_2[b]
  73. break
  74.  
  75. for x in range(2):
  76. alphabet[x].append(alphabet[x][0])
  77. alphabet[x].pop(0)
  78. rotor_1, rotor_2 = rotor_update(alphabet)
  79.  
  80. prompt(f"Your encrypted_message is: \"{encrypted_message}\"")
  81.  
  82.  
  83. def decrypt_enigma(alphabet, rotor_1, rotor_2, message):
  84. decrypted_message = ""
  85. rotor_1, rotor_2 = rotor_update(alphabet)
  86.  
  87. for item in message:
  88. if item == " ":
  89. decrypted_message += " "
  90. continue
  91.  
  92. for a in range(len(rotor_1)):
  93. if item == alphabet[1][a]:
  94. temp = rotor_2[a]
  95. break
  96.  
  97. for b in range(len(rotor_2)):
  98. if temp == alphabet[0][b]:
  99. decrypted_message += rotor_1[b]
  100. break
  101.  
  102. for x in range(2):
  103. alphabet[x].append(alphabet[x][0])
  104. alphabet[x].pop(0)
  105. rotor_1, rotor_2 = rotor_update(alphabet)
  106.  
  107. prompt(f"Your decrypted_message is: \"{decrypted_message}\"")
  108.  
  109.  
  110. def main():
  111. while True:
  112. alphabet, rotor_1, rotor_2 = default()
  113. alphabet = rotor_position(alphabet)
  114. choice = prompt(
  115. "Do you want to encrypt, decript or leave? (E/D/X): ").upper()
  116. if not right_prompt(choice,additional=True):
  117. continue
  118.  
  119. if choice == "E":
  120.  
  121.  
  122. message = prompt("Enter the message: ").upper()
  123. if not right_prompt(message,additional=False):
  124. continue
  125. encrypt_enigma(alphabet, rotor_1, rotor_2, message)
  126. elif choice == "D":
  127.  
  128. message = prompt("Enter the message: ").upper()
  129. if not right_prompt(message,additional=False):
  130. continue
  131. decrypt_enigma(alphabet, rotor_1, rotor_2, message)
  132. elif choice == "X":
  133.  
  134. prompt("Goodbye!")
  135. break
  136. else:
  137.  
  138. prompt("Wrong prompt!")
  139.  
  140.  
  141. if __name__ == "__main__":
  142. main()
  143. </py-script>
  144. </body>
  145. </html>
Advertisement
Add Comment
Please, Sign In to add comment