#!/usr/bin/env python # -'- coding: utf-8 -*. """ authored by: RaNaN script only for socket testing """ import base64 import cPickle import random import string from Crypto.Cipher import AES from Crypto.Hash import SHA class handler: def __init__(self): key = SHA.new("pwhere") self.aes = AES.new(key.hexdigest()[:32], AES.MODE_ECB) def proceed(self, data): return self.decrypt(self.encrypt(str(("lol","mehrlol","pff")))) def decrypt(self, dec_str): try: dec_str = base64.standard_b64decode(dec_str) dec_str = self.aes.decrypt(dec_str) dec_str = dec_str[:-(int(dec_str[-1],16)+1)] obj = cPickle.loads(dec_str) except: obj = None return obj def encrypt(self, obj): enc_str = cPickle.dumps(obj, 1) padding = len(enc_str) % 16 padding = 16 - padding p_str = "" for i in range(padding - 1): p_str += random.choice(string.letters+string.digits) p_str += hex(len(p_str)).replace("0x","") enc_str += p_str enc_str = self.aes.encrypt(enc_str) enc_str = base64.standard_b64encode(enc_str) return enc_str import socket handler = handler() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(('localhost', 7272)) print "Connected to server" data = """A few lines of data to test the operation of both server and client. Und noch eine Zeile""" for line in data.splitlines(): sock.sendall(line+'\n') print "Sent:", line response = sock.recv(8192) print "Received:", handler.decrypt(response) sock.close()