def main():
    SERVER_IP = '127.0.0.1'
    CLIENT_IP = '127.0.0.1'
    SERVER_PORT = '8443'
    CLIENT_PORT = '53432'

    data_handler = DataHandler()

    client_hello = get_packet('test_data/data/client_hello')
    server_hello = get_packet('test_data/data/server_hello')
    key_exchange = get_packet('test_data/data/client_key_exchange')
    client_encrypted_data1 = get_packet('test_data/data/client_encrypted_data1')
    server_encrypted_data1 = get_packet('test_data/data/server_encrypted_data1')
    client_encrypted_data2 = get_packet('test_data/data/client_encrypted_data2')
    server_encrypted_data2 = get_packet('test_data/data/server_encrypted_data2')




    print("Starting Parser: ")
    Parser(client_hello, data_handler,
           CLIENT_IP, SERVER_IP, CLIENT_PORT, SERVER_PORT).parse()
    Parser(server_hello, data_handler,
           SERVER_IP, CLIENT_IP, SERVER_PORT, CLIENT_PORT).parse()
    Parser(key_exchange, data_handler,
           CLIENT_IP, SERVER_IP, CLIENT_PORT, SERVER_PORT).parse()
    Parser(client_encrypted_data1, data_handler,
           CLIENT_IP, SERVER_IP, CLIENT_PORT, SERVER_PORT).parse()
    Parser(server_encrypted_data1, data_handler,
           SERVER_IP, CLIENT_IP, SERVER_PORT, CLIENT_PORT).parse()
    Parser(client_encrypted_data2, data_handler,
           CLIENT_IP, SERVER_IP, CLIENT_PORT, SERVER_PORT).parse()
    Parser(server_encrypted_data2, data_handler,
           SERVER_IP, CLIENT_IP, SERVER_PORT, CLIENT_PORT).parse()

    print("\nStarting Key Finder:")
    KeyFinder(data_handler, '../keys/privkey.pem',
              CLIENT_IP, SERVER_IP, CLIENT_PORT, SERVER_PORT,
              MAC_KEY_LENGTH, SYMMETRIC_KEY_LENGTH, IV_LENGTH).find()

    print("Handshake Table:\n")
    print(data_handler.handshake_table)

    print("Application Data:\n")
    print(data_handler.app_data_table)

    print("\nStarting Decryptor\n")
    decryptor = Decryptor(data_handler,
                          CLIENT_IP, SERVER_IP, CLIENT_PORT, SERVER_PORT)
    output = decryptor.start('results/')

    for packet in output:
        print(f'packet {packet}\n')
    print(len(output))
Exemple #2
0
 def __init__(self):
     self.logger = Logger('.\\logs\\')
     self.CONF = Config('default.yaml', self.logger).get()['wikicrack']
     self.no_attempts = self.CONF['crawler']['max-attempts-download']
     self.start_agent = self.CONF['crawler']['agent-name']
     self.sleep_for = self.CONF['crawler']['sleep-between']
     self.max_accepted = self.CONF['cache']['limit-per-subject']
     self.accepted_length = self.CONF['output']['min-accepted-length']
     self.word_wrap = self.CONF['output']['word-wrap']
     self.decrypt = Decryptor(self.logger)
     self.cache = Cache(self.CONF, self.logger)
     self.agent = None
Exemple #3
0
 def decrypt_button(self, passwd, filename):
     response = False
     if (filename == ""):
         messagebox.showerror("Error", "Please select a file!")
     elif(passwd == ""):
         messagebox.showerror("Error", "Please enter a password!")
     else:
         response = messagebox.askyesno("Decrypt", "Are you sure?")
     if(response):
         self.key = passwd.encode('UTF-8')
         dec = Decryptor(self.key)
         dec.decrypt_file(filename)
         messagebox.showinfo("Succes", "Decryption successful")
     pass
Exemple #4
0
def main():
  print(sys.argv)
  CRT = True
  k = 6
  d = 256
  keygen = Keygen()
  decryptor = Decryptor()
  encryptor = Encryptor()
  file_processor = File_processor()
  keys = keygen.generate_keys(k,  d, CRT)
  file_processor.save_keys(keys, CRT)
  file_processor.read_keys(CRT)
  start_time = timer()
  encrypted = encryptor.encrypt(keys['public_n'], keys['public_e'], 'data/plain.txt', CRT)
  print("ENCRYPTION TIME MEASUE:")
  print(timer() - start_time) 
  start_time = timer()
  decrypted = decryptor.decrypt(keys, CRT, k, 'data/plain.txt.enc')
  print("DECRYPTION TIME MEASUE:")
  print(timer() - start_time) 
  print(decrypted)
  return 0
Exemple #5
0
 def decrypt_button(self, passwd):
     response = messagebox.askyesno("Decrypt", "Are you sure?")
     key = passwd.encode('UTF-8')
     dec = Decryptor(key)
     dec.decrypt_file(self.filename)
     pass
Exemple #6
0
    main()
  elif sys.argv[1] == 'gen':
    k, d = int(sys.argv[2]), int(sys.argv[3])
    CRT = True if int(sys.argv[4]) == 1 else False
    keygen = Keygen()
    file_processor = File_processor()
    start_time = timer()
    keys = keygen.generate_keys(k,  d, CRT)
    file_processor.save_keys(keys, CRT)
  elif sys.argv[1] == 'enc':
    CRT = True if int(sys.argv[2]) == 1 else False
    file_processor = File_processor()
    keys = file_processor.read_keys(CRT)
    encryptor = Encryptor()
    start_time = timer()
    encrypted = encryptor.encrypt(keys['public_n'], keys['public_e'], 'data/plain.txt', CRT)
    print("ENCRYPTION TIME MEASUE:")
    print(timer() - start_time) 
  elif sys.argv[1] == 'dec':
    k = int(sys.argv[2])
    CRT = True if int(sys.argv[3]) == 1 else False
    file_processor = File_processor()
    keys = file_processor.read_keys(CRT)
    decryptor = Decryptor()
    start_time = timer()
    decrypted = decryptor.decrypt(keys, CRT, k, 'data/plain.txt.enc')
    print("DECRYPTION TIME MEASUE:")
    print(timer() - start_time) 
    print(decrypted)

Exemple #7
0
    if(output_file is None):
        split_extension = encrypted_file.name.rsplit('.', 1)
        output_file = "{}_decrypted.{}".format(split_extension[0], split_extension[1])

    output_dir = output_file[:output_file.rindex('/')]

    if os.path.isdir(output_dir) is False:
        print("Invalid output file '{}' provided.".format(output_file))
        sys.exit(1)

    return output_file

def getArgs():
    arg_parser = argparse.ArgumentParser(description='File decrypter.')
    arg_parser.add_argument('file', help='Path to the encrypted file to decrypt.', type=argparse.FileType('r'))
    arg_parser.add_argument('--output_file', '-o', help='Path to save the decrypted output file to.', type=str)
    args = arg_parser.parse_args()

    args.output_file = fix_output_file(args.output_file, args.file)
    return args


if __name__ == "__main__":
    #args = getArgs()
    decryptor = Decryptor()
    result = decryptor.decrypt("Znoy oy gt ktixevzkj yktzktik zngz O gs zkyzotm cozn. Znkxk oy vatizagzout otburbkj, yotik O cgtz zu zkyz zngz oz yzorr cuxqy cozn vatizagzout.")
    if result.solution_found is True:
        print("Result: {}\nCertainty: {:.1f}%".format(result.text, result.solution_certainty*100))
    else:
        print("Did not find a solution")
Exemple #8
0
def main():
    dec = Decryptor('data.txt')
    dec.get_data_from_file()
    dec.find_key()
    dec.output()
Exemple #9
0
    inputEmail = input("Enter email address: ")
    inputPassword = input("Enter password: "******"Logging in user: "******"Enter email address: ")
        inputPassword = input("Enter password: "******"Input options: \n\t1: Send message \n\t2: Check messages \n\t3: Logout\n")
        option = input("Input choice: ")

        if(option == '1'):                                        #send message
            recipient = input("Enter recipient email: ")
            msg = input("Enter message:\t")
            encryptedMsg = myEncryptor.encrypt(msg)             #encrypt message before sending
            myClient.postMsg(chatURL, recipient, encryptedMsg)  #send encrypted message

        elif(option == '2'):                                        #check messages
            responseData = myClient.getMsg(chatURL)               #send get request
            head = responseData['Headers']                        #get headers
Exemple #10
0
class WikiCrack(object):
    url = 'https://www.wikipedia.org/wiki/'
    
    def __init__(self):
        self.logger = Logger('.\\logs\\')
        self.CONF = Config('default.yaml', self.logger).get()['wikicrack']
        self.no_attempts = self.CONF['crawler']['max-attempts-download']
        self.start_agent = self.CONF['crawler']['agent-name']
        self.sleep_for = self.CONF['crawler']['sleep-between']
        self.max_accepted = self.CONF['cache']['limit-per-subject']
        self.accepted_length = self.CONF['output']['min-accepted-length']
        self.word_wrap = self.CONF['output']['word-wrap']
        self.decrypt = Decryptor(self.logger)
        self.cache = Cache(self.CONF, self.logger)
        self.agent = None
    
    def get_valid_user_agent(self):
        # init the robots.txt parser
        parser = robotparser.RobotFileParser()
        parser.set_url(self.url + '/robots.txt')
        parser.read()
            
        # trying to get a valid agent name in less than 10 attempts
        user_agent = self.start_agent
        no_hops = 0
        while not parser.can_fetch(user_agent, self.url):
            if user_agent[-1].isdigit():
                user_agent = user_agent[:-1] + str(int(user_agent[-1]) + 1)
            else:
                user_agent = user_agent + '1'
                
            no_hops += 1
            # error in finding a valid name
            if no_hops > 9:
                return 'default-agent'
                    
        return user_agent
    
    def __download_page(self, url, user_agent):
        self.logger.log(self.__download_page, __file__,
                        'Downloading: ' + url + ' ...')
        
        page = None
        req = urllib.request.Request(url)
        req.add_header('User-agent', user_agent)
        
        tries = 0
        while tries < self.no_attempts:
            try:
                response = urllib.request.urlopen(req)
                page = response.read().decode('utf-8')
                break
            except (URLError, HTTPError, ContentTooShortError) as e:
                if hasattr(e, 'code'):
                    if not (e.code >= 500 and e.code < 600):
                        return None
                sleep(self.sleep_for)
            tries += 1
        return page    
    
    def search_for(self, term):
        self.logger.log(self.search_for, __file__, 
                        "Searching for subject: {}...".format(term))
        hits = self.cache.get_file(term)
        
        if hits == [] or len(hits) > self.max_accepted:
            # if there are no cache hits
            if not hits:
                self.logger.log(self.search_for, __file__, 
                                'Cache miss!')
            
            # check if the search term is too general for our cache
            if len(hits) > self.max_accepted:
                self.logger.log(self.search_for, __file__, 
                                'Too many cache hits! Considering it as a wrong result')
            keywords = term.split(' ')
            
            if not self.agent:
                self.agent = self.get_valid_user_agent()
            content = self.__download_page(self.url + keywords[0], self.agent)

            # prepare decryptor and get clean text from it
            self.decrypt.set_content(content)
            result = self.decrypt.get_text(wrap=self.word_wrap)
            
            # check if the text's length is reasonable
            if len(result) >= self.accepted_length:
                # add entry in cache
                self.cache.add_file(term, result)
                return result
            else:
                # content is too short and it's a great chance that we're on the  
                # 'may also refer to' page
                self.logger.log(self.search_for, __file__, 
                            'Content too short! Considering the search operation a failure.')
                return ""
        else:
            self.logger.log(self.search_for, __file__, 
                            'Cache hit! Extracting from cache...')
            with open(hits[0], 'rt') as file:
                return file.read()
Exemple #11
0
from encryptor import Encryptor
from decryptor import Decryptor
publicCertificate = "/Users/mcastro/Desktop/public.pem"
privateCertificate = "/Users/mcastro/Desktop/private.pem"
jsonFile = "/Users/mcastro/Desktop/encrypt.json"

keysize = 32  #32 bytes
blockSize = 128  #128 bits
ivSize = 16  #16 bytes

inputString = input("Input message to encrypt: ")
print("Encrypting message: ", inputString)
myEncryptor = Encryptor(keysize, blockSize, ivSize, inputString,
                        publicCertificate, jsonFile)
myEncryptor.encrypt()
print("Message encrypted")

print("\nMessasge will now be decrypted")
myDecryptor = Decryptor(keysize, blockSize, ivSize, jsonFile,
                        privateCertificate)
myDecryptor.decrypt()
from Crypto.PublicKey import RSA
from decryptor import Decryptor

with open("keys\\sprivb0n3r.pem", "rb") as f:
    private_key = RSA.import_key(f.read())
dec_key = Decryptor(private_key, "keys")
dec_key.decrypt_all()
Exemple #13
0
def main():
    with open('data.txt', 'r') as file:
        dec = Decryptor(file.read())

    print(dec.decrypt())