# this should be a start, it still needs output all permutations of the cipher applied over all possible substrings in the ciphertext because not all parts may have the same cipher applied and it also needs to brute force a salt up to a reasonable length to precede&#x2F;follow the output text since salting passwords with a memorized constant is common.<p>def ceasar_permutations(ciphertext):<p><pre><code>    alpabets = [ascii_lowercase, ascii_uppercase,&#x27;0123456789&#x27;,&#x27; ~!@#$%^&amp;*()_+``-=[]{}:&quot;;\\\&lt;&gt;?,.&#x2F;]&#x27;]

    for perm in permutations(alpabets):

        alphabet = &quot;&quot;

        for p in perm: 

            alphabet+=p  

            for i in range(0, alphabet.__len__()):

                shifted_alphabet = alphabet[i:] + alphabet[:i]

                table = str.maketrans(alphabet, shifted_alphabet)

                print( ciphertext.translate(table))</code></pre>