def doInspect(message): house_global.device = frida.get_usb_device() house_global.onMessageException = '' ins_classname = message.get('ins_classname') ins_methodname = message.get('ins_methodname') if (ins_classname != None) & (ins_methodname != None): house_global.inspect_conf['classname'] = ins_classname house_global.inspect_conf['methodname'] = ins_methodname update_conf() house_global.inspect_result = 'Please wait' house_global.script_to_load = prepare_script_fragment( ins_classname, ins_methodname, "inspect") try: load_script() except Exception as e: house_global.inspect_result = "<p><code>[!] Exception: {}</code></p>".format( str(e)) print stylize("Exception caught in doInspect: {}".format(e), Info) update_inspect_result = { 'classname': house_global.inspect_conf["classname"], 'methodname': house_global.inspect_conf["methodname"], 'inspect_result': (str(house_global.inspect_result)) } cache_inspect_html() socketio.emit('update_inspect_result', update_inspect_result, namespace='/eventBus') house_global.onMessageException = ''
def genIntercept(message): ins_methodindex = message.get('intercept_index') if (ins_methodindex != None): house_global.inspect_conf['overloadIndex'] = int(ins_methodindex) else: house_global.inspect_conf['overloadIndex'] = 0 update_conf() with open('./config/intercept_conf.json') as f: intercept_conf = f.read() try: j_intercept = json.loads(intercept_conf) except Exception as e: raise e print stylize("[+]Lets do intercept", Info) clazz_name = j_intercept.get("classname") methodname = j_intercept.get("methodname") overloadIndex = j_intercept.get("overloadIndex") if overloadIndex == None: overloadIndex = 0 house_global.intercept_script = prepare_script_fragment( clazz_name, methodname, "intercept", overloadIndex) socketio.emit('update_intercept_script', {'script': house_global.intercept_script}, namespace='/eventBus')
def doInspect(message): house_global.device = frida.get_usb_device() house_global.onMessageException = '' ins_classname = message.get('ins_classname') ins_methodname = message.get('ins_methodname') if (ins_classname != None) & (ins_methodname != None): house_global.inspect_conf['classname'] = ins_classname house_global.inspect_conf['methodname'] = ins_methodname update_conf() house_global.inspect_result = 'Please wait' house_global.script_to_load = prepare_script_fragment(ins_classname, ins_methodname, "inspect") try: load_script() except Exception as e: house_global.inspect_result = "<p><code>[!] Exception: {}</code></p>".format(str(e)) print stylize("Exception caught in doInspect: {}".format(e), Info) update_inspect_result = {'classname': house_global.inspect_conf["classname"], 'methodname' : house_global.inspect_conf["methodname"], 'inspect_result': (str(house_global.inspect_result))} cache_inspect_html() socketio.emit('update_inspect_result', update_inspect_result, namespace='/eventBus') house_global.onMessageException = ''
def onMonitorMessage(message, data): house_global.onMessageException = '' if message['type'] == 'send': if (message.get('payload') != None): monitor_log = str(message.get('payload')) # monitor_log = u''.join(monitor_log).encode('utf-8').strip() else: monitor_log = "No message payload.." elif message['type'] == 'error': if (message.get('description') != None): house_global.onMessageException = cgi.escape( message.get('description')) else: house_global.onMessageException = 'No description' print( stylize( "[!]Monitor Error: {}".format(house_global.onMessageException), Error)) socketio.emit( 'new_error_message', {'data': "[!] {}".format(house_global.onMessageException)}, namespace='/eventBus') monitor_log = message.get('payload') if message.get('payload') else '' j_monitor_log = json.loads(monitor_log) mon_type = j_monitor_log.get("monitor_type") args = j_monitor_log.get("arg_dump") method = j_monitor_log.get("method_info") retval = j_monitor_log.get("retval_dump") if args != None: args = cgi.escape(args).replace(linebreak, '<br>') if method != None: method = cgi.escape(method).replace(linebreak, '<br>') if retval != None: retval = cgi.escape(retval).replace(linebreak, '<br>') monitor_entry = {"methodname": method, "args": args, "retval": retval} # "types" : ["fileIO", "HTTP", "WEBVIEW", "SQL", "IPC", "MISC", "IGNORE"] if (mon_type != None) & (mon_type != "IGNORE"): if mon_type == "fileIO": house_global.monitor_message['FILEIO'].insert(0, monitor_entry) elif mon_type == "SHAREDPREFERENCES": house_global.monitor_message['SHAREDPREFERENCES'].insert( 0, monitor_entry) elif mon_type == "HTTP": house_global.monitor_message['HTTP'].insert(0, monitor_entry) elif mon_type == "WEBVIEW": house_global.monitor_message['WEBVIEW'].insert(0, monitor_entry) elif mon_type == "SQL": house_global.monitor_message['SQL'].insert(0, monitor_entry) elif mon_type == "IPC": house_global.monitor_message['IPC'].insert(0, monitor_entry) else: # misc mon_type = "MISC" house_global.monitor_message['MISC'].insert(0, monitor_entry) # socketio.emit('update_monitor_message', {'mon_type': mon_type.upper(), 'monitor_message': house_global.monitor_message},namespace='/eventBus') house_global.monitor_queue.add(mon_type.upper())
def load_intercept_script(message): house_global.intercept_script = message.get('script') house_global.script_to_load = message.get('script') cache_script("intercept_cache", house_global.intercept_script) try: load_script() except Exception as e: house_global.intercept_exception = "[!] intercept_exception: {}".format(str(e)) socketio.emit('new_intercept', {'data': house_global.intercept_exception, 'time': house_global.new_intercept_time}, namespace='/eventBus')
def setDevice(id): house_global.device = house_global.device_manager.get_device(id) print stylize("[+]Changing Device with id {}".format(id), MightBeImportant) try: socketio.emit('show_selected_device', {'device_list': json.dumps(house_global.device_dict), 'selection': str(house_global.device.id)}, namespace='/eventBus') except Exception as e: raise e
def load_intercept_script(message): house_global.intercept_script = message.get('script') house_global.script_to_load = message.get('script') cache_script("intercept_cache", house_global.intercept_script) try: load_script() except Exception as e: house_global.intercept_exception = "[!] intercept_exception: {}".format(str(e)) socketio.emit('new_intercept', {'data': house_global.intercept_exception, 'time': house_global.new_intercept_time}, namespace='/eventBus')
def genIntercept(message): ins_methodindex = message.get('intercept_index') if (ins_methodindex != None): house_global.inspect_conf['overloadIndex'] = int(ins_methodindex) else: house_global.inspect_conf['overloadIndex'] = 0 update_conf() with open('./config/intercept_conf.json') as f: intercept_conf = f.read() try: j_intercept = json.loads(intercept_conf) except Exception as e: raise e print stylize("[+]Lets do intercept",Info) clazz_name = j_intercept.get("classname") methodname = j_intercept.get("methodname") overloadIndex = j_intercept.get("overloadIndex") if overloadIndex == None: overloadIndex = 0 house_global.intercept_script = prepare_script_fragment(clazz_name, methodname, "intercept", overloadIndex) socketio.emit('update_intercept_script', {'script': house_global.intercept_script}, namespace='/eventBus')
def getDevice(): try: print stylize("[+] Trying to get device..", Info) house_global.device_dict = {} house_global.device_manager = frida.get_device_manager() device_list = house_global.device_manager.enumerate_devices() if len(device_list) != 0: remote_device_list = [] for dv in device_list: if (str(dv.id) != 'local') & (str(dv.id) != 'tcp'): remote_device_list.append(dv) if len(remote_device_list) == 1: house_global.device = remote_device_list[0] socketio.emit('update_device', {'data': cgi.escape(str(house_global.device))}, namespace='/eventBus') elif len(remote_device_list) > 1: for dv in remote_device_list: house_global.device_dict[str(dv.id)] = str(dv) # Interact with user to select device # IPython.embed() if house_global.device == None: socketio.emit( 'select_device', {'device_list': json.dumps(house_global.device_dict)}, namespace='/eventBus') else: socketio.emit( 'show_selected_device', { 'device_list': json.dumps(house_global.device_dict), 'selection': str(house_global.device.id) }, namespace='/eventBus') else: raise Exception("No device Found!") # return str(house_global.device) except Exception as e: house_global.device = None socketio.emit('update_device', {'data': cgi.escape(str(house_global.device))}, namespace='/eventBus') print stylize(str(e), Error)
def onMessage(message, data): house_global.onMessageException = '' if message['type'] == 'send': if (message.get('payload') != None): info = message.get('payload') info = u''.join(info).encode('utf-8').strip() else: info = "No message payload.." elif message['type'] == 'error': if (message.get('description') != None): house_global.onMessageException = cgi.escape( message.get('description')) else: house_global.onMessageException = 'No description' print stylize("[!]Error: {}".format(house_global.onMessageException), Error) socketio.emit( 'new_error_message', {'data': "[!] {}".format(house_global.onMessageException)}, namespace='/eventBus') info = message.get('payload') if message.get('payload') else '' if "t3llm3mor3ab0ut1t" in info: env_info = info.replace("t3llm3mor3ab0ut1t", '') j_env_info = json.loads(env_info) if j_env_info.get("packageCodePath") != None: with open("./config/env_conf.json", 'w') as f: json.dump(j_env_info, f) socketio.emit('update_env_info', {'data': env_info}, namespace='/eventBus') # env stuff if "-hoo00ook-" in info: info = info.replace("-hoo00ook-", '') j_info = json.loads(info) args = j_info.get("arg_dump") method = j_info.get("method_info") retval = j_info.get("retval_dump") if args != None: args = args.replace(linebreak, '<br>') info_dict = {"methodname": method, "args": args, "retval": retval} house_global.messages.insert(0, info_dict) socketio.emit('new_hook_message', {'data': json.dumps(info_dict)}, namespace='/eventBus') if "-enumMmMmMmMm-" in info: enum_msg = info.replace('undefined', '').replace("-enumMmMmMmMm-", '') house_global.enum_messages.insert(0, enum_msg) socketio.emit("update_enum_messages", namespace='/eventBus') if "-t1m3f0rm1tm-" in info: intercept_msg = info.replace("-t1m3f0rm1tm-", '') if "-what1sth3t1m3n0w-" in intercept_msg: house_global.new_intercept_msg = intercept_msg.split( "-what1sth3t1m3n0w-")[0] house_global.new_intercept_time = intercept_msg.split( "-what1sth3t1m3n0w-")[1] else: house_global.new_intercept_msg = intercept_msg socketio.emit('new_intercept', { 'data': house_global.new_intercept_msg, 'time': house_global.new_intercept_time }, namespace='/eventBus') if "-whatisth1smeth0d-" in info: inspect_info = info.replace("-whatisth1smeth0d-", '') j_inspect = json.loads(inspect_info) overload_info = j_inspect['methodInfo'] overload_count = len(overload_info) inspect_class_name = house_global.inspect_conf["classname"] inspect_method_name = house_global.inspect_conf["methodname"] html_output = "" if overload_count > 1: html_output = "<p><code>{}</code></p>".format( cgi.escape(inspect_class_name) + '.' + cgi.escape(inspect_method_name)) html_output += """ <form action='/inspect' method='POST'> <div class="form-row align-items-center"> <div class="col-auto my-1"> <label class="mr-sm-2"> Overloads: </label> <select class="custom-select mr-sm-2" id="indexSelect"> """ for i in xrange(overload_count): html_output += """ <option value={}><code>{}</code></option> """.format( str(i), cgi.escape(str(json.dumps(overload_info[i]))).replace( "\\\"", "")) html_output += """ </select> </div> </div> </form> <div class="col-auto my-1"> <button class="btn btn-success" onclick="genIntercept()">Generate Script</button> <button class="btn btn-primary" class="btn btn-primary" data-toggle="modal" data-target="#intercept_history" onclick="get_intercept_history();">History Scripts</button> </div> """ elif overload_count == 1: html_output = """ <p><code>{}</code></p> <div class="radio"> <label><input type="radio" name="optradio"><code>{}</code></label> </div> <div class="col-auto my-1"> <button class="btn btn-success" onclick="genIntercept()">Generate Script</button> <button class="btn btn-primary" class="btn btn-primary" data-toggle="modal" data-target="#intercept_history" onclick="get_intercept_history();">History Scripts</button> </div> """.format( cgi.escape(inspect_class_name) + '.' + cgi.escape(inspect_method_name), str(overload_info[0])) else: html_output = "No such function you fool" house_global.inspect_result = html_output cache_inspect_html() update_inspect_result = { 'classname': house_global.inspect_conf["classname"], 'methodname': house_global.inspect_conf["methodname"], 'inspect_result': house_global.inspect_result } socketio.emit('update_inspect_result', update_inspect_result, namespace='/eventBus') if "-can1hav3ash3ll-" in info: house_global.new_repl_msg = info.replace("-can1hav3ash3ll-", '') socketio.emit('new_repl', { 'data': house_global.new_repl_msg, 'time': house_global.new_repl_time }, namespace='/eventBus')
def clear_hook_msg(): house_global.messages = [] socketio.emit("clear_hook_msg")
def onMessage(message,data): house_global.onMessageException = '' if message['type'] == 'send': if(message.get('payload') != None): info = message.get('payload') info = u''.join(info).encode('utf-8').strip() else: info = "No message payload.." elif message['type'] == 'error': if(message.get('description') != None): house_global.onMessageException = cgi.escape(message.get('description')) else: house_global.onMessageException = 'No description' print stylize("[!]Error: {}".format(house_global.onMessageException), Error) socketio.emit('new_error_message', {'data': "[!] {}".format(house_global.onMessageException)}, namespace='/eventBus') info = message.get('payload') if message.get('payload') else '' if "t3llm3mor3ab0ut1t" in info: env_info = info.replace("t3llm3mor3ab0ut1t",'') j_env_info = json.loads(env_info) if j_env_info.get("packageCodePath") != None: with open("./config/env_conf.json",'w') as f: json.dump(j_env_info,f) socketio.emit('update_env_info', {'data': env_info}, namespace='/eventBus') # env stuff if "-hoo00ook-" in info: info = info.replace("-hoo00ook-",'') j_info = json.loads(info) args = j_info.get("arg_dump") method = j_info.get("method_info") retval = j_info.get("retval_dump") if args != None: args = args.replace(linebreak,'<br>') info_dict = {"methodname":method,"args":args,"retval":retval} house_global.messages.insert(0,info_dict) socketio.emit('new_hook_message', {'data': json.dumps(info_dict)}, namespace='/eventBus') if "-enumMmMmMmMm-" in info: enum_msg = info.replace('undefined','').replace("-enumMmMmMmMm-",'') house_global.enum_messages.insert(0, enum_msg) socketio.emit("update_enum_messages",namespace='/eventBus') if "-t1m3f0rm1tm-" in info: intercept_msg = info.replace("-t1m3f0rm1tm-",'') if "-what1sth3t1m3n0w-" in intercept_msg: house_global.new_intercept_msg = intercept_msg.split("-what1sth3t1m3n0w-")[0] house_global.new_intercept_time = intercept_msg.split("-what1sth3t1m3n0w-")[1] else: house_global.new_intercept_msg = intercept_msg socketio.emit('new_intercept', {'data': house_global.new_intercept_msg, 'time': house_global.new_intercept_time}, namespace='/eventBus') if "-whatisth1smeth0d-" in info: inspect_info = info.replace("-whatisth1smeth0d-",'') j_inspect = json.loads(inspect_info) overload_info = j_inspect['methodInfo'] overload_count = len(overload_info) inspect_class_name = house_global.inspect_conf["classname"] inspect_method_name = house_global.inspect_conf["methodname"] html_output = "" if overload_count > 1: html_output = "<p><code>{}</code></p>".format(cgi.escape(inspect_class_name) + '.' + cgi.escape(inspect_method_name)) html_output += """ <form action='/inspect' method='POST'> <div class="form-row align-items-center"> <div class="col-auto my-1"> <label class="mr-sm-2"> Overloads: </label> <select class="custom-select mr-sm-2" id="indexSelect"> """ for i in xrange(overload_count): html_output += """ <option value={}><code>{}</code></option> """.format(str(i),cgi.escape(str(json.dumps(overload_info[i]))).replace("\\\"","")) html_output += """ </select> </div> </div> </form> <div class="col-auto my-1"> <button class="btn btn-success" onclick="genIntercept()">Generate Script</button> <button class="btn btn-primary" class="btn btn-primary" data-toggle="modal" data-target="#intercept_history" onclick="get_intercept_history();">History Scripts</button> </div> """ elif overload_count == 1: html_output = """ <p><code>{}</code></p> <div class="radio"> <label><input type="radio" name="optradio"><code>{}</code></label> </div> <div class="col-auto my-1"> <button class="btn btn-success" onclick="genIntercept()">Generate Script</button> <button class="btn btn-primary" class="btn btn-primary" data-toggle="modal" data-target="#intercept_history" onclick="get_intercept_history();">History Scripts</button> </div> """.format(cgi.escape(inspect_class_name) + '.' + cgi.escape(inspect_method_name), str(overload_info[0])) else: html_output = "No such function you fool" house_global.inspect_result = html_output cache_inspect_html() update_inspect_result = {'classname': house_global.inspect_conf["classname"], 'methodname' : house_global.inspect_conf["methodname"], 'inspect_result': house_global.inspect_result} socketio.emit('update_inspect_result', update_inspect_result, namespace='/eventBus') if "-can1hav3ash3ll-" in info: house_global.new_repl_msg = info.replace("-can1hav3ash3ll-",'') socketio.emit('new_repl', {'data': house_global.new_repl_msg, 'time': house_global.new_repl_time}, namespace='/eventBus')
def clear_hook_msg(): house_global.messages = [] socketio.emit("clear_hook_msg")