From 8640a29b3bffc8d3134111f604cf6c0ee587cc8e Mon Sep 17 00:00:00 2001 From: JoYo <> Date: Thu, 20 Jan 2022 12:24:33 -0500 Subject: [PATCH] results sorting --- subdisassem/disassemble.py | 3 +++ subdisassem/schema.py | 6 ++++++ subdisassem/scripts.py | 19 ++++++++++++------- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/subdisassem/disassemble.py b/subdisassem/disassemble.py index b773b9d..25f9b4b 100644 --- a/subdisassem/disassemble.py +++ b/subdisassem/disassemble.py @@ -49,6 +49,9 @@ class _CapstoneBase: def __len__(self) -> int: return len(self.disassembly) + def __lt__(self, other): + return len(self) < len(other) + @property def objdump(self) -> str: opcodes = str() diff --git a/subdisassem/schema.py b/subdisassem/schema.py index d043655..a43ffba 100644 --- a/subdisassem/schema.py +++ b/subdisassem/schema.py @@ -28,6 +28,12 @@ class Disassembly(Base): def __repr__(self): return f"" + def __len__(self) -> int: + return self.count + + def __lt__(self, other): + return len(self) < len(other) + @property def values(self) -> dict: values_dict = { diff --git a/subdisassem/scripts.py b/subdisassem/scripts.py index 49c18be..29c862f 100644 --- a/subdisassem/scripts.py +++ b/subdisassem/scripts.py @@ -116,13 +116,18 @@ def subdisassem_script(): session.commit() - count = session.query(Disassembly).order_by(desc("count")).first() - tops = ( - session.query(Disassembly) - .filter(Disassembly.count == count.count) - .order_by(desc("size")) - .all() - ) + tops = list() + + for arch in archs: + top = ( + session.query(Disassembly) + .filter(Disassembly.arch == arch.__name__) + .order_by(desc("count")) + .first() + ) + tops.append(top) + + tops = sorted(tops, key=len, reverse=True) for top in tops[:3]: logging.info(top)