Autarch/web/routes/forensics.py
DigiJ 2322f69516 v2.2.0 — Full arsenal expansion: 16 new security modules
Add WiFi Audit, API Fuzzer, Cloud Scanner, Threat Intel, Log Correlator,
Steganography, Anti-Forensics, BLE Scanner, Forensics, RFID/NFC, Malware
Sandbox, Password Toolkit, Web Scanner, Report Engine, Net Mapper, and
C2 Framework. Each module includes CLI interface, Flask routes, and web
UI template. Also includes Go DNS server source + binary, IP Capture
service, SYN Flood, Gone Fishing mail server, and hack hijack modules
from v2.0 work.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 05:20:39 -08:00

72 lines
2.2 KiB
Python

"""Forensics Toolkit routes."""
from flask import Blueprint, request, jsonify, render_template
from web.routes.auth_routes import login_required
forensics_bp = Blueprint('forensics', __name__, url_prefix='/forensics')
def _get_engine():
from modules.forensics import get_forensics
return get_forensics()
@forensics_bp.route('/')
@login_required
def index():
return render_template('forensics.html')
@forensics_bp.route('/hash', methods=['POST'])
@login_required
def hash_file():
data = request.get_json(silent=True) or {}
return jsonify(_get_engine().hash_file(data.get('file', ''), data.get('algorithms')))
@forensics_bp.route('/verify', methods=['POST'])
@login_required
def verify_hash():
data = request.get_json(silent=True) or {}
return jsonify(_get_engine().verify_hash(
data.get('file', ''), data.get('hash', ''), data.get('algorithm')
))
@forensics_bp.route('/image', methods=['POST'])
@login_required
def create_image():
data = request.get_json(silent=True) or {}
return jsonify(_get_engine().create_image(data.get('source', ''), data.get('output')))
@forensics_bp.route('/carve', methods=['POST'])
@login_required
def carve_files():
data = request.get_json(silent=True) or {}
return jsonify(_get_engine().carve_files(
data.get('source', ''), data.get('file_types'), data.get('max_files', 100)
))
@forensics_bp.route('/metadata', methods=['POST'])
@login_required
def extract_metadata():
data = request.get_json(silent=True) or {}
return jsonify(_get_engine().extract_metadata(data.get('file', '')))
@forensics_bp.route('/timeline', methods=['POST'])
@login_required
def build_timeline():
data = request.get_json(silent=True) or {}
return jsonify(_get_engine().build_timeline(
data.get('directory', ''), data.get('recursive', True), data.get('max_entries', 10000)
))
@forensics_bp.route('/evidence')
@login_required
def list_evidence():
return jsonify(_get_engine().list_evidence())
@forensics_bp.route('/carved')
@login_required
def list_carved():
return jsonify(_get_engine().list_carved())
@forensics_bp.route('/custody')
@login_required
def custody_log():
return jsonify(_get_engine().get_custody_log())