def set_up(): randomStride = random.randint(1, 20) coder = CaesarCoder(randomStride) response = requests.get( 'http://swquotesapi.digitaljedi.dk/api/SWQuote/RandomStarWarsQuote', verify=False) return [coder, response.json()["content"], randomStride]
def test_caesar_encoding(): coder = CaesarCoder(2) testString = "lukaszstachnik" assert coder.encode(testString) == "nwmcubuvcejpkm" testString = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s" assert coder.encode(testString) == "nqtgo kruwo ku ukorna fwooa vgzv qh vjg rtkpvkpi cpf vargugvvkpi kpfwuvta. nqtgo kruwo jcu dggp vjg kpfwuvta'u uvcpfctf fwooa vgzv gxgt ukpeg vjg 1500u" coder = CaesarCoder(3) testString = "lamdbanosa asdasdsa karma SKOSDASDA" assert coder.encode(testString) == "odpgedqrvd dvgdvgvd ndupd vnrvgdvgd"
def getTheLowestEntropy(inputStr: str): result = 5000 resultStride = 0 entropiesList = getAllEntropies(inputStr) for i in range(len(entropiesList)): if (entropiesList[i][1] < result): result = entropiesList[i][1] resultStride = entropiesList[i][0] coder = CaesarCoder(resultStride) print(f"Best guess 🤖: {result}") print(f"Decoded string: {coder.decode(inputStr)}")
def maunal_caesar_cracking(): dataSetup = set_up() encodedString = dataSetup[0].encode(dataSetup[1]) decodedString = dataSetup[0].decode(encodedString) guessesNumber = 0 codeCracked = False print("Encoded string ❌: " + encodedString) while codeCracked == False: print('Type in stride number for decoding: ') num = input("Stride: ") if (int(num) == dataSetup[2]): print("That's good stride. Decoded string is ✅: " + decodedString) print(f"You've cracked the code after {guessesNumber} guesses") codeCracked = True else: coder = CaesarCoder(int(num)) print( "That's not good stide. Try once more. Decoded string is ❌: " + coder.decode(encodedString)) guessesNumber += 1
def decode(stride, text): coder = CaesarCoder(stride) click.echo(coder.decode(text))
def getAllEntropies(inputStr: str): result = [] for i in range(26): coder = CaesarCoder(i) result.append([i, getEntropy(coder.decode(inputStr))]) return result
def test_stridDown(): coder = CaesarCoder(2) assert coder.strideDown('a') == 'y' assert coder.strideDown('l') == 'j' assert coder.strideDown(' ') == ' '
def test_stridUp(): coder = CaesarCoder(2) assert coder.strideUp('z') == 'b' assert coder.strideUp('a') == 'c' assert coder.strideUp(' ') == ' '