From ff639737b8198b0bf12937643662a0dd0d2c1493 Mon Sep 17 00:00:00 2001 From: William Ballenthin Date: Fri, 3 Jul 2020 09:49:41 -0600 Subject: [PATCH] render: simplify metadata display closes #91 --- capa/render/default.py | 14 ++++++-------- capa/render/verbose.py | 22 ++++++++++------------ capa/render/vverbose.py | 23 ++++++++++------------- 3 files changed, 26 insertions(+), 33 deletions(-) diff --git a/capa/render/default.py b/capa/render/default.py index c46ef0cf..d7971124 100644 --- a/capa/render/default.py +++ b/capa/render/default.py @@ -17,13 +17,11 @@ def width(s, character_count): def render_meta(doc, ostream): - rows = [(rutils.bold("Capa Report for"), rutils.bold(doc["meta"]["sample"]["md5"]),)] - - for k in ("timestamp", "version"): - rows.append((width(k, 22), width(doc["meta"][k], 60))) - - for k in ("path", "md5"): - rows.append((k, doc["meta"]["sample"][k])) + rows = [] + rows.append((width("md5", 22), width(doc["meta"]["sample"]["md5"], 82))) + rows.append(("path", doc["meta"]["sample"]["path"])) + rows.append(("timestamp", doc["meta"]["timestamp"])) + rows.append(("capa version", doc["meta"]["version"])) ostream.write(tabulate.tabulate(rows, tablefmt="psql")) ostream.write("\n") @@ -99,7 +97,7 @@ def render_attack(doc, ostream): raise RuntimeError("unexpected ATT&CK spec format") rows.append((rutils.bold(tactic.upper()), "\n".join(inner_rows),)) ostream.write( - tabulate.tabulate(rows, headers=[width("ATT&CK Tactic", 20), width("ATT&CK Technique", 60)], tablefmt="psql") + tabulate.tabulate(rows, headers=[width("ATT&CK Tactic", 20), width("ATT&CK Technique", 80)], tablefmt="psql") ) ostream.write("\n") diff --git a/capa/render/verbose.py b/capa/render/verbose.py index 24e9cd3c..c2576155 100644 --- a/capa/render/verbose.py +++ b/capa/render/verbose.py @@ -23,18 +23,16 @@ import capa.render.utils as rutils def render_verbose(doc): ostream = rutils.StringIO() - rows = [(rutils.bold("Capa Report for"), rutils.bold(doc["meta"]["sample"]["md5"]),)] - for k in ("timestamp", "version"): - rows.append((k, doc["meta"][k])) - - for k in ("path", "md5", "sha1", "sha256"): - rows.append((k, doc["meta"]["sample"][k])) - - for k in ("format", "extractor"): - rows.append((k.replace("_", " "), doc["meta"]["analysis"][k])) - - rows.append(("base address", rutils.hex(doc["meta"]["analysis"]["base_address"]))) - + rows = [] + rows.append(("md5", doc["meta"]["sample"]["md5"])) + rows.append(("sha1", doc["meta"]["sample"]["sha1"])) + rows.append(("sha256", doc["meta"]["sample"]["sha256"])) + rows.append(("path", doc["meta"]["sample"]["path"])) + rows.append(("timestamp", doc["meta"]["timestamp"])) + rows.append(("capa version", doc["meta"]["version"])) + rows.append(("format", doc["meta"]["analysis"]["format"])) + rows.append(("extractor", doc["meta"]["analysis"]["extractor"])) + rows.append(("base address", hex(doc["meta"]["analysis"]["base_address"]))) ostream.writeln(tabulate.tabulate(rows, tablefmt="plain")) ostream.write("\n") diff --git a/capa/render/vverbose.py b/capa/render/vverbose.py index 2fe96367..342a9dd4 100644 --- a/capa/render/vverbose.py +++ b/capa/render/vverbose.py @@ -141,19 +141,16 @@ def render_match(ostream, match, indent=0, mode=MODE_SUCCESS): def render_vverbose(doc): ostream = rutils.StringIO() - rows = [(rutils.bold("Capa Report for"), rutils.bold(doc["meta"]["sample"]["md5"]),)] - for k in ("timestamp", "version"): - rows.append((k, doc["meta"][k])) - - for k in ("path", "md5", "sha1", "sha256"): - rows.append((k, doc["meta"]["sample"][k])) - - for k in ("format", "extractor"): - rows.append((k.replace("_", " "), doc["meta"]["analysis"][k])) - - rows.append(("base address", rutils.hex(doc["meta"]["analysis"]["base_address"]))) - - ostream.writeln(rutils.bold("Capa Report for " + doc["meta"]["sample"]["md5"])) + rows = [] + rows.append(("md5", doc["meta"]["sample"]["md5"])) + rows.append(("sha1", doc["meta"]["sample"]["sha1"])) + rows.append(("sha256", doc["meta"]["sample"]["sha256"])) + rows.append(("path", doc["meta"]["sample"]["path"])) + rows.append(("timestamp", doc["meta"]["timestamp"])) + rows.append(("capa version", doc["meta"]["version"])) + rows.append(("format", doc["meta"]["analysis"]["format"])) + rows.append(("extractor", doc["meta"]["analysis"]["extractor"])) + rows.append(("base address", hex(doc["meta"]["analysis"]["base_address"]))) ostream.writeln(tabulate.tabulate(rows, tablefmt="plain")) ostream.write("\n")