#!/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 from Crypto.Hash import MD5 from module.remote.RequestObject import RequestObject class Handler: def __init__(self): key = SHA.new("pwhere") key = MD5.new(key.hexdigest()) self.aes = AES.new(key.hexdigest(), 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" obj = RequestObject() obj.command = "exec" obj.function = "get_downloads" sock.sendall(handler.encrypt(obj)+"\n") response = sock.recv(8192) print "Received:", handler.decrypt(response).response sock.close()