Update analysers (WIP)

This commit is contained in:
Zeecka
2026-01-01 23:31:42 +01:00
parent e400f65786
commit 78f8d867ea
9 changed files with 189 additions and 526 deletions
+11 -36
View File
@@ -3,45 +3,20 @@
# mypy: disable-error-code=unused-awaitable
"""Strings Analyzer for Image Submissions."""
import subprocess
from pathlib import Path
from .utils import MAX_PENDING_TIME, update_data
from .base_analyzer import SubprocessAnalyzer
class StringsAnalyzer(SubprocessAnalyzer):
"""Analyzer for strings."""
def __init__(self, *args):
super().__init__("strings", *args)
self.cmd = ["strings", self.img]
def analyze_strings(input_img: Path, output_dir: Path) -> None:
"""Analyze an image submission using strings."""
try:
data = subprocess.run(
["strings", input_img],
capture_output=True,
text=True,
check=False,
timeout=MAX_PENDING_TIME,
)
if data.stderr:
update_data(
output_dir, {"strings": {"status": "error", "error": data.stderr}}
)
return
# strings_dir = output_dir / "strings"
# strings_dir.mkdir(parents=True, exist_ok=True)
# with open(strings_dir / "strings.txt", "w", encoding="utf-8") as f:
# subprocess.run(["strings", input_img], stdout=f, check=True)
data_strings = data.stdout.split("\n") if data else []
data_strings = [s for s in data_strings if s]
update_data(
output_dir,
{
"strings": {
"status": "ok",
"output": data_strings,
}
},
)
except Exception as e:
update_data(output_dir, {"strings": {"status": "error", "error": str(e)}})
analyzer = StringsAnalyzer(input_img, output_dir)
analyzer.analyze()