This commit is contained in:
Zeecka
2026-01-14 21:55:04 +01:00
parent af6f7ba650
commit 69edb584ac
4 changed files with 31 additions and 0 deletions
+2
View File
@@ -47,6 +47,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
binutils \ binutils \
outguess \ outguess \
pngcheck \ pngcheck \
graphicsmagick \
graphicsmagick-imagemagick-compat \
&& gem install zsteg \ && gem install zsteg \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
+26
View File
@@ -0,0 +1,26 @@
# flake8: noqa: E203,E501,W503
# pylint: disable=C0413,W0718,R0903,R0801
# mypy: disable-error-code=unused-awaitable
"""Identify Analyzer for Image Submissions."""
from pathlib import Path
from .base_analyzer import SubprocessAnalyzer
class IdentifyAnalyzer(SubprocessAnalyzer):
"""Analyzer for GraphicMagick identify command."""
def __init__(self, input_img: Path, output_dir: Path) -> None:
super().__init__("identify", input_img, output_dir)
self.cmd = ["identify", "-verbose", self.img]
def process_output(self, stdout: str, stderr: str) -> str | list[str]:
"""Process the stdout into a list of lines."""
return [line for line in stdout.split("\n") if line.strip()]
def analyze_identify(input_img: Path, output_dir: Path) -> None:
"""Analyze an image submission using GraphicMagick identify."""
analyzer = IdentifyAnalyzer(input_img, output_dir)
analyzer.analyze()
+1
View File
@@ -8,6 +8,7 @@ const TOOL_ORDER = [
"outguess", "outguess",
"pngcheck", "pngcheck",
"pcrt", "pcrt",
"identify",
"steghide", "steghide",
"jpseek", "jpseek",
"openstego", "openstego",
+2
View File
@@ -19,6 +19,7 @@ from .analyzers.decomposer import analyze_decomposer
from .analyzers.exiftool import analyze_exiftool from .analyzers.exiftool import analyze_exiftool
from .analyzers.file import analyze_file from .analyzers.file import analyze_file
from .analyzers.foremost import analyze_foremost from .analyzers.foremost import analyze_foremost
from .analyzers.identify import analyze_identify
from .analyzers.jpseek import analyze_jpseek from .analyzers.jpseek import analyze_jpseek
from .analyzers.openstego import analyze_openstego from .analyzers.openstego import analyze_openstego
from .analyzers.outguess import analyze_outguess from .analyzers.outguess import analyze_outguess
@@ -109,6 +110,7 @@ def analyze_image(submission_hash: str) -> None:
(analyze_exiftool, img_path, result_path), (analyze_exiftool, img_path, result_path),
(analyze_file, img_path, result_path), (analyze_file, img_path, result_path),
(analyze_foremost, img_path, result_path), (analyze_foremost, img_path, result_path),
(analyze_identify, img_path, result_path),
(analyze_jpseek, img_path, result_path, submission.password), (analyze_jpseek, img_path, result_path, submission.password),
(analyze_openstego, img_path, result_path, submission.password), (analyze_openstego, img_path, result_path, submission.password),
(analyze_pngcheck, img_path, result_path), (analyze_pngcheck, img_path, result_path),