GranularFireplace commited on
Commit
f956e55
·
verified ·
1 Parent(s): ea54715
Files changed (1) hide show
  1. app.py +5 -4
app.py CHANGED
@@ -75,8 +75,8 @@ def preprocess_yara_rules(repo_path: Path) -> Path:
75
  processed_dir.mkdir()
76
 
77
  rule_pattern = re.compile(r"rule\s+(\w+)") # Match YARA rule names
78
- seen_rules = set() # Track rule names to prevent duplicates
79
- rule_counter = 1 # Counter for renaming duplicate rules
80
 
81
  for yara_file in repo_path.glob("**/*.yara"):
82
  if yara_file.name == "misc.yara":
@@ -85,13 +85,14 @@ def preprocess_yara_rules(repo_path: Path) -> Path:
85
  new_content = []
86
  with open(yara_file, "r", encoding="utf-8") as f:
87
  for line in f:
88
- match = rule_name_pattern.match(line)
89
  if match:
90
  original_name = match.group(1)
91
  if original_name in seen_rules:
92
  seen_rules[original_name] += 1
93
  new_name = f"{original_name}_{seen_rules[original_name]}"
94
  line = line.replace(original_name, new_name, 1)
 
95
  else:
96
  seen_rules[original_name] = 0 # First occurrence
97
  new_content.append(line)
@@ -100,7 +101,7 @@ def preprocess_yara_rules(repo_path: Path) -> Path:
100
  processed_file = processed_dir / yara_file.name
101
  with open(processed_file, "w", encoding="utf-8") as f:
102
  f.writelines(new_content)
103
-
104
  return processed_dir
105
 
106
  def compile_yara_rules(repo_path: Path) -> Optional[yara.Rules]:
 
75
  processed_dir.mkdir()
76
 
77
  rule_pattern = re.compile(r"rule\s+(\w+)") # Match YARA rule names
78
+ seen_rules = {} # Track rule names to prevent duplicates
79
+ rule_counter = 0 # Counter for renaming duplicate rules
80
 
81
  for yara_file in repo_path.glob("**/*.yara"):
82
  if yara_file.name == "misc.yara":
 
85
  new_content = []
86
  with open(yara_file, "r", encoding="utf-8") as f:
87
  for line in f:
88
+ match = rule_pattern.match(line)
89
  if match:
90
  original_name = match.group(1)
91
  if original_name in seen_rules:
92
  seen_rules[original_name] += 1
93
  new_name = f"{original_name}_{seen_rules[original_name]}"
94
  line = line.replace(original_name, new_name, 1)
95
+ rule_counter += 1
96
  else:
97
  seen_rules[original_name] = 0 # First occurrence
98
  new_content.append(line)
 
101
  processed_file = processed_dir / yara_file.name
102
  with open(processed_file, "w", encoding="utf-8") as f:
103
  f.writelines(new_content)
104
+ logger.info(f"Total of {rule_counter} rule(s) are duplicates. They have been renamed.")
105
  return processed_dir
106
 
107
  def compile_yara_rules(repo_path: Path) -> Optional[yara.Rules]: