From a7c2a4572ee305d7d81cc914c3466a1051abf84f Mon Sep 17 00:00:00 2001 From: AydinChavez Date: Tue, 22 Nov 2016 23:11:07 +0100 Subject: [PATCH 1/4] Separated traceinst and tracecall logs. Added timestamp to output file --- lib/config.py | 3 ++- peda.py | 11 ++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/config.py b/lib/config.py index 5704fc7..b486afa 100644 --- a/lib/config.py +++ b/lib/config.py @@ -29,7 +29,8 @@ "pagesize" : (25, "number of lines to display per page, 0 = disable paging"), "session" : ("peda-session-#FILENAME#.txt", "target file to save peda session"), "tracedepth": (0, "max depth for calls/instructions tracing, 0 means no limit"), - "tracelog" : ("peda-trace-#FILENAME#.txt", "target file to save tracecall output"), + "tracecalllog" : ("peda-tracecall-#FILENAME#.txt", "target file to save tracecall output"), + "traceinstlog" : ("peda-traceinst-#FILENAME#.txt", "target file to save tracecall output"), "crashlog" : ("peda-crashdump-#FILENAME#.txt", "target file to save crash dump of fuzzing"), "snapshot" : ("peda-snapshot-#FILENAME#.raw", "target file to save crash dump of fuzzing"), "autosave" : ("on", "auto saving peda session, e.g: on|off"), diff --git a/peda.py b/peda.py index 3deee3d..690c2aa 100644 --- a/peda.py +++ b/peda.py @@ -682,11 +682,16 @@ def get_config_filename(self, name): filename = peda.getpid() if not filename: filename = 'unknown' + + datetime = time.strftime("_%Y%m%d_%H%M%S"); filename = os.path.basename("%s" % filename) tmpl_name = config.Option.get(name) if tmpl_name: - return tmpl_name.replace("#FILENAME#", filename) + if name == "traceinstlog" or name == "tracecalllog": + return tmpl_name.replace("#FILENAME#", filename + datetime) + else: + return tmpl_name.replace("#FILENAME#", filename) else: return "peda-%s-%s" % (name, filename) @@ -4054,7 +4059,7 @@ def tracecall(self, *arg): inverse = 1 binname = peda.getfile() - logname = peda.get_config_filename("tracelog") + logname = peda.get_config_filename("tracecalllog") if mapname is None: mapname = binname @@ -4132,7 +4137,7 @@ def traceinst(self, *arg): instlist = insts.replace(",", " ").split() binname = peda.getfile() - logname = peda.get_config_filename("tracelog") + logname = peda.get_config_filename("traceinstlog") if mapname is None: mapname = binname From ac6f93756fc554fc78bdf25a02b5a0b8d1753863 Mon Sep 17 00:00:00 2001 From: Aydin Date: Tue, 29 Nov 2016 23:23:11 +0100 Subject: [PATCH 2/4] Add files via upload display register name in stack table --- peda.py | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/peda.py b/peda.py index 690c2aa..4d6a0b4 100644 --- a/peda.py +++ b/peda.py @@ -19,6 +19,10 @@ import traceback import codecs +#added by aydin +import logging +logging.basicConfig(filename='aydin.log',level=logging.DEBUG) + # point to absolute path of peda.py PEDAFILE = os.path.abspath(os.path.expanduser(__file__)) if os.path.islink(PEDAFILE): @@ -83,6 +87,7 @@ def execute(self, gdb_command): """ try: gdb.execute(gdb_command) + logging.debug(gdb_command) return True except Exception as e: if config.Option.get("debug") == "on": @@ -115,6 +120,7 @@ def execute_redirect(self, gdb_command, silent=False): gdb.execute('set logging redirect on') gdb.execute('set logging on') try: + logging.debug(gdb_command) gdb.execute(gdb_command) gdb.flush() gdb.execute('set logging off') @@ -4758,10 +4764,26 @@ def telescope(self, *arg): result += [peda.examine_mem_reference(value)] else: result += [None] + + regs = peda.getregs() + regs_simple = {} + for (r, v) in regs.items(): + if peda.is_address(v): + regs_simple[to_hex(v)]=r + + print(regs_simple) idx = 0 text = "" for chain in result: text += "%04d| " % (idx) + for (v, t, vn) in chain: + temp = regs_simple.get(v) + if temp is not None: + text += "%04s| " % temp + break + else: + text += " | " + break text += format_reference_chain(chain) text += "\n" idx += step @@ -5689,7 +5711,7 @@ def shellcode(self, *arg): MYNAME generate [arch/]platform type [port] [host] MYNAME search keyword (use % for any character wildcard) MYNAME display shellcodeId (shellcodeId as appears in search results) - MYNAME zsc [generate customize shellcode] + MYNAME zsc [generate customize shellcode] For generate option: default port for bindport shellcode: 16706 (0x4142) @@ -5772,7 +5794,7 @@ def list_shellcode(): return msg(res) - #OWASP ZSC API Z3r0D4y.Com + #OWASP ZSC API Z3r0D4y.Com elif mode == "zsc": 'os lists' oslist = ['linux_x86','linux_x64','linux_arm','linux_mips','freebsd_x86', From 2952995b5f5bc13e9186b373e6e76f9eb380650b Mon Sep 17 00:00:00 2001 From: Aydin Date: Tue, 29 Nov 2016 23:24:49 +0100 Subject: [PATCH 3/4] Add files via upload --- peda.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/peda.py b/peda.py index 4d6a0b4..ba2a68d 100644 --- a/peda.py +++ b/peda.py @@ -4771,7 +4771,7 @@ def telescope(self, *arg): if peda.is_address(v): regs_simple[to_hex(v)]=r - print(regs_simple) + #print(regs_simple) idx = 0 text = "" for chain in result: From e45019745c2443d1bc46840dc5bc8c1b7cad310b Mon Sep 17 00:00:00 2001 From: Aydin Date: Tue, 29 Nov 2016 23:36:01 +0100 Subject: [PATCH 4/4] Update peda.py removed debugging related logging stuff --- peda.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/peda.py b/peda.py index ba2a68d..0659e8c 100644 --- a/peda.py +++ b/peda.py @@ -19,9 +19,6 @@ import traceback import codecs -#added by aydin -import logging -logging.basicConfig(filename='aydin.log',level=logging.DEBUG) # point to absolute path of peda.py PEDAFILE = os.path.abspath(os.path.expanduser(__file__)) @@ -87,7 +84,6 @@ def execute(self, gdb_command): """ try: gdb.execute(gdb_command) - logging.debug(gdb_command) return True except Exception as e: if config.Option.get("debug") == "on": @@ -120,7 +116,6 @@ def execute_redirect(self, gdb_command, silent=False): gdb.execute('set logging redirect on') gdb.execute('set logging on') try: - logging.debug(gdb_command) gdb.execute(gdb_command) gdb.flush() gdb.execute('set logging off')