Add the cracking for S-DES.
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
919c28c301
commit
8cbd5d5c1f
@ -0,0 +1,56 @@
|
|||||||
|
import binascii
|
||||||
|
import time
|
||||||
|
from rich.console import Console
|
||||||
|
from rich.prompt import Prompt
|
||||||
|
|
||||||
|
from cryptography_s_des_exploring.sdes.decrypt import decrypt_block
|
||||||
|
|
||||||
|
from cryptography_s_des_exploring.sdes.blocks import decode, decode_bytes
|
||||||
|
|
||||||
|
|
||||||
|
def cast_to_key(number: int):
|
||||||
|
binary = bin(number)[2:]
|
||||||
|
return "0"*(10-len(binary)) + binary
|
||||||
|
|
||||||
|
|
||||||
|
def cracking(ciphertext):
|
||||||
|
founded = []
|
||||||
|
|
||||||
|
start = time.monotonic()
|
||||||
|
|
||||||
|
for n in range(0, 1024):
|
||||||
|
key = cast_to_key(n)
|
||||||
|
|
||||||
|
decoded = decode_bytes(ciphertext)
|
||||||
|
decrypted = list(map(lambda b: decrypt_block(key, b), decoded))
|
||||||
|
|
||||||
|
try:
|
||||||
|
decoded = decode(decrypted)
|
||||||
|
founded.append((key, decoded))
|
||||||
|
except UnicodeDecodeError as e:
|
||||||
|
continue
|
||||||
|
except binascii.Error as e:
|
||||||
|
continue
|
||||||
|
|
||||||
|
end = time.monotonic()
|
||||||
|
|
||||||
|
return start, end, founded
|
||||||
|
|
||||||
|
|
||||||
|
def cli_cracking():
|
||||||
|
console = Console()
|
||||||
|
ciphertext = Prompt.ask(f"[b]Enter the [yellow]ciphertext[/]")
|
||||||
|
|
||||||
|
console.print(f"\n[cyan b]Cracking is started.[/]")
|
||||||
|
start, end, founded = cracking(ciphertext)
|
||||||
|
|
||||||
|
console.print(f"\n[yellow b]Time spent: [/]{end-start}[yellow b] \[s][/]\n")
|
||||||
|
|
||||||
|
console.print(f"[cyan b]Found keys and messages:[/]")
|
||||||
|
for key, decoded in founded:
|
||||||
|
console.print(f"\t[cyan b]Key: [/][yellow b]{key}[/][cyan b], text:[/] \"{decoded}\"[cyan b].[/]")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
cli_cracking()
|
||||||
|
|
Loading…
Reference in new issue