#!/usr/bin/env python __author__ = "bt3gl" import sys from telnetlib import Telnet from caesarCipher import decipher, decipher_simple from pygenere import VigCrack def solve1(msg): # Caesar Cipher # Solve the first cypher and encode back to unicode: # the method encode() returns an encoded version of the string # Both method work fine. # One is by freq. analysis or the other by rotating dec_msg = decipher(msg) #dec_msg = decipher_simple(msg) dec_msg = dec_msg.split()[-1] return dec_msg def solve2(msg): # Shift cypher, but dealing with special characters for j in range(2, len(msg)): dec_msg = ['0'] * len(msg) idec_msg,shift = 0, 0 for i in range(len(msg)): dec_msg[idec_msg] = msg[i] idec_msg += j if idec_msg >= len(msg): shift += 1 idec_msg = shift dec_msg = "".join(dec_msg) if "you" not in dec_msg: continue return dec_msg def solve3(msg): # Vigenere Cypher key = VigCrack(msg).crack_codeword() dec_msg = VigCrack(msg).crack_message() dec_msg = dec_msg.replace(" ", "") return key, dec_msg if __name__ == '__main__': PORT = 12345 HOST = '54.209.5.48' tn = Telnet(HOST ,PORT) ''' SOLVING STAGE 1 - CEASAR CIPHER ''' tn.read_until(b'psifer text: ') msg_in1 = tn.read_until(b'\n').dec_msg().strip() answer1 = solve1(msg_in1) tn.write(answer1.encode() + b'\n') print 'Message stage 1: ' + msg_in1 print print 'Answer stage 1: ' + answer1 print print ''' SOLVING STAGE 2 - SPECIAL CHARS ''' msg_in2 = tn.read_all().dec_msg() msg_in2 = (msg_in2.split(':')[1]).split("Time")[0] answer2 = solve2(msg_in2) tn.write(answer2.encode() + b'\n') print 'Message stage 2: ' + msg_in2 print print 'Answer stage 2: ' + answer2 print print ''' SOLVING STAGE 3 - VINEGERE ''' msg_in3 = tn.read_all().dec_msg() msg_in3 = (msg_in3.split(':')[1]).split("Time")[0] key, answer3 = solve3(msg_in3) tn.write(answer3.encode() + b'\n') print 'Message stage 3: ' + msg_in3 print print 'Answer stage 3: ' + answer3 print '(key: ' + key + ')'