Spaces:
Sleeping
Sleeping
Fix var
Browse files
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 =
|
| 79 |
-
rule_counter =
|
| 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 =
|
| 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]:
|