mirror of
https://github.com/mandiant/capa.git
synced 2025-12-17 09:57:48 -08:00
main: get_rules: remove progress bar
This commit is contained in:
@@ -585,7 +585,7 @@ class CapaExplorerForm(idaapi.PluginForm):
|
|||||||
if ida_kernwin.user_cancelled():
|
if ida_kernwin.user_cancelled():
|
||||||
raise UserCancelledError("user cancelled")
|
raise UserCancelledError("user cancelled")
|
||||||
|
|
||||||
self.ruleset_cache = capa.main.get_rules([rule_path], disable_progress=True, on_load_rule=on_load_rule)
|
self.ruleset_cache = capa.main.get_rules([rule_path], on_load_rule=on_load_rule)
|
||||||
except UserCancelledError:
|
except UserCancelledError:
|
||||||
logger.info("User cancelled analysis.")
|
logger.info("User cancelled analysis.")
|
||||||
return False
|
return False
|
||||||
|
|||||||
12
capa/main.py
12
capa/main.py
@@ -606,14 +606,12 @@ def on_load_rule_default(_path: RulePath, i: int, _total: int) -> None:
|
|||||||
|
|
||||||
def get_rules(
|
def get_rules(
|
||||||
rule_paths: List[RulePath],
|
rule_paths: List[RulePath],
|
||||||
disable_progress=False,
|
|
||||||
cache_dir=None,
|
cache_dir=None,
|
||||||
on_load_rule: Callable[[RulePath, int, int], None] = on_load_rule_default,
|
on_load_rule: Callable[[RulePath, int, int], None] = on_load_rule_default,
|
||||||
) -> RuleSet:
|
) -> RuleSet:
|
||||||
"""
|
"""
|
||||||
args:
|
args:
|
||||||
rule_paths: list of paths to rules files or directories containing rules files
|
rule_paths: list of paths to rules files or directories containing rules files
|
||||||
disable_progress: disable progress bar
|
|
||||||
cache_dir: directory to use for caching rules, or will use the default detected cache directory if None
|
cache_dir: directory to use for caching rules, or will use the default detected cache directory if None
|
||||||
on_load_rule: callback to invoke before a rule is loaded, use for progress or cancellation
|
on_load_rule: callback to invoke before a rule is loaded, use for progress or cancellation
|
||||||
"""
|
"""
|
||||||
@@ -637,14 +635,8 @@ def get_rules(
|
|||||||
|
|
||||||
rules = [] # type: List[Rule]
|
rules = [] # type: List[Rule]
|
||||||
|
|
||||||
pbar = tqdm.tqdm
|
|
||||||
if disable_progress:
|
|
||||||
# do not use tqdm to avoid unnecessary side effects when caller intends
|
|
||||||
# to disable progress completely
|
|
||||||
pbar = lambda s, *args, **kwargs: s
|
|
||||||
|
|
||||||
total_rule_count = len(rule_file_paths)
|
total_rule_count = len(rule_file_paths)
|
||||||
for i, (path, content) in pbar(list(enumerate(zip(rule_file_paths, rule_contents))), desc="loading ", unit=" rules"):
|
for i, (path, content) in enumerate(zip(rule_file_paths, rule_contents)):
|
||||||
on_load_rule(path, i, total_rule_count)
|
on_load_rule(path, i, total_rule_count)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -1066,7 +1058,7 @@ def main(argv=None):
|
|||||||
else:
|
else:
|
||||||
cache_dir = capa.rules.cache.get_default_cache_directory()
|
cache_dir = capa.rules.cache.get_default_cache_directory()
|
||||||
|
|
||||||
rules = get_rules(args.rules, disable_progress=args.quiet, cache_dir=cache_dir)
|
rules = get_rules(args.rules, cache_dir=cache_dir)
|
||||||
|
|
||||||
logger.debug(
|
logger.debug(
|
||||||
"successfully loaded %s rules",
|
"successfully loaded %s rules",
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ def main(argv=None):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
os.makedirs(args.cache, exist_ok=True)
|
os.makedirs(args.cache, exist_ok=True)
|
||||||
rules = capa.main.get_rules(args.rules, disable_progress=True, cache_dir=args.cache)
|
rules = capa.main.get_rules(args.rules, cache_dir=args.cache)
|
||||||
logger.info("successfully loaded %s rules", len(rules))
|
logger.info("successfully loaded %s rules", len(rules))
|
||||||
except (IOError, capa.rules.InvalidRule, capa.rules.InvalidRuleSet) as e:
|
except (IOError, capa.rules.InvalidRule, capa.rules.InvalidRuleSet) as e:
|
||||||
logger.error("%s", str(e))
|
logger.error("%s", str(e))
|
||||||
|
|||||||
@@ -709,7 +709,7 @@ def main(argv=None):
|
|||||||
logging.getLogger("capa2yara").setLevel(level)
|
logging.getLogger("capa2yara").setLevel(level)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
rules = capa.main.get_rules([args.rules], disable_progress=True)
|
rules = capa.main.get_rules(args.rules)
|
||||||
namespaces = capa.rules.index_rules_by_namespace(list(rules.rules.values()))
|
namespaces = capa.rules.index_rules_by_namespace(list(rules.rules.values()))
|
||||||
logger.info("successfully loaded %s rules (including subscope rules which will be ignored)", len(rules))
|
logger.info("successfully loaded %s rules (including subscope rules which will be ignored)", len(rules))
|
||||||
if args.tag:
|
if args.tag:
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ def render_dictionary(doc: rd.ResultDocument) -> Dict[str, Any]:
|
|||||||
# ==== render dictionary helpers
|
# ==== render dictionary helpers
|
||||||
def capa_details(rules_path, file_path, output_format="dictionary"):
|
def capa_details(rules_path, file_path, output_format="dictionary"):
|
||||||
# load rules from disk
|
# load rules from disk
|
||||||
rules = capa.main.get_rules([rules_path], disable_progress=True)
|
rules = capa.main.get_rules([rules_path])
|
||||||
|
|
||||||
# extract features and find capabilities
|
# extract features and find capabilities
|
||||||
extractor = capa.main.get_extractor(file_path, "auto", capa.main.BACKEND_VIV, [], False, disable_progress=True)
|
extractor = capa.main.get_extractor(file_path, "auto", capa.main.BACKEND_VIV, [], False, disable_progress=True)
|
||||||
|
|||||||
@@ -998,7 +998,7 @@ def main(argv=None):
|
|||||||
time0 = time.time()
|
time0 = time.time()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
rules = capa.main.get_rules(args.rules, disable_progress=True)
|
rules = capa.main.get_rules(args.rules)
|
||||||
logger.info("successfully loaded %s rules", len(rules))
|
logger.info("successfully loaded %s rules", len(rules))
|
||||||
if args.tag:
|
if args.tag:
|
||||||
rules = rules.filter_rules_by_meta(args.tag)
|
rules = rules.filter_rules_by_meta(args.tag)
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ def main(argv=None):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
with capa.main.timing("load rules"):
|
with capa.main.timing("load rules"):
|
||||||
rules = capa.main.get_rules(args.rules, disable_progress=True)
|
rules = capa.main.get_rules(args.rules)
|
||||||
except (IOError) as e:
|
except (IOError) as e:
|
||||||
logger.error("%s", str(e))
|
logger.error("%s", str(e))
|
||||||
return -1
|
return -1
|
||||||
|
|||||||
Reference in New Issue
Block a user