LockKnife Executive Report
Android security research, forensics, and ethical hacking
Case ID: {{ case_id }}
{% if case_title %}
Title: {{ case_title }}
{% endif %} {% if examiner %}
Examiner: {{ examiner }}
{% endif %}
Generated: {{ generated_at }}
{% set ns = namespace(total=0, critical=0, high=0, medium=0, low=0, info=0) %} {% if artifacts is sequence and artifacts is not string %} {% for a in artifacts %} {% if a is mapping %} {% set ns.total = ns.total + 1 %} {% if a.get('severity') == 'critical' %}{% set ns.critical = ns.critical + 1 %}{% endif %} {% if a.get('severity') == 'high' %}{% set ns.high = ns.high + 1 %}{% endif %} {% if a.get('severity') == 'medium' %}{% set ns.medium = ns.medium + 1 %}{% endif %} {% if a.get('severity') == 'low' %}{% set ns.low = ns.low + 1 %}{% endif %} {% if a.get('severity') == 'info' %}{% set ns.info = ns.info + 1 %}{% endif %} {% endif %} {% endfor %} {% endif %}

Total records

{{ ns.total }}
Parsed from supplied artifacts JSON

High/Critical

{{ ns.critical + ns.high }}
Priority findings

Integrity verified

{{ integrity.get('summary', {}).get('verified_count', 0) if integrity else 0 }}
Artifacts currently matching recorded hashes

Severity distribution

{% set denom = (ns.total if ns.total else 1) %}
Critical {{ ns.critical }}, High {{ ns.high }}, Medium {{ ns.medium }}, Low {{ ns.low }}, Info {{ ns.info }}
{% set c_fill = ((ns.critical * 10 / denom) | round(0, 'ceil')) %} {% set h_fill = ((ns.high * 10 / denom) | round(0, 'ceil')) %} {% set m_fill = ((ns.medium * 10 / denom) | round(0, 'ceil')) %} {% set l_fill = ((ns.low * 10 / denom) | round(0, 'ceil')) %} {% set i_fill = ((ns.info * 10 / denom) | round(0, 'ceil')) %}
Critical
{% for i in range(10) %}
{% endfor %}
High
{% for i in range(10) %}
{% endfor %}
Medium
{% for i in range(10) %}
{% endfor %}
Low
{% for i in range(10) %}
{% endfor %}
Info
{% for i in range(10) %}
{% endfor %}

Highlights

    {% for item in highlights %}
  • {{ item }}
  • {% endfor %}
{% if case_summary %}

Case workspace summary

Total artifacts{{ case_summary.get('total_artifact_count') }}Jobs{{ case_summary.get('jobs', {}).get('total') }}
Runtime sessions{{ case_summary.get('runtime_sessions', {}).get('total') }}Targets{{ case_summary.get('target_serials') | join(', ') if case_summary.get('target_serials') else 'n/a' }}
{% endif %} {% if evidence_summary %}

Evidence summary

Inventory count{{ evidence_summary.get('artifact_count') }}Payload rows{{ evidence_summary.get('artifact_payload_rows') }}
{% if evidence_summary.get('top_categories') %}
Top categories: {{ evidence_summary.get('top_categories') | tojson }}
{% endif %}
{% endif %} {% if integrity %}

Integrity status

{{ integrity.get('advisory') }}
Modified{{ integrity.get('summary', {}).get('modified_count') }}Missing{{ integrity.get('summary', {}).get('missing_count') }}
Unreadable{{ integrity.get('summary', {}).get('unreadable_count') }}Unsupported{{ integrity.get('summary', {}).get('unsupported_count') }}
{% endif %}

OWASP MASTG alignment

{% if mastg and mastg.get('mastg_ids') %}
Mapped test IDs:
{% for mid in mastg.get('mastg_ids') %} {{ mid }} {% endfor %}
{% else %}
No MASTG mappings available for the supplied artifacts.
{% endif %}
{% if report_sections %}

Report readiness

    {% for item in report_sections %}
  • {{ item.get('title') }}: {{ item.get('summary') }}
  • {% endfor %}
{% if report_preview %}
PDF backend: {{ report_preview.get('pdf_backend_status', {}).get('preferred') or 'unavailable' }}
{% endif %}
{% endif %}

Top findings (first 50 rows)

{% if artifacts is sequence and artifacts is not string %} {% for a in artifacts[:50] %} {% if a is mapping %} {% set sev = a.get('severity') %} {% set cls = 'sev-info' %} {% if sev == 'critical' %}{% set cls = 'sev-critical' %}{% endif %} {% if sev == 'high' %}{% set cls = 'sev-high' %}{% endif %} {% if sev == 'medium' %}{% set cls = 'sev-medium' %}{% endif %} {% if sev == 'low' %}{% set cls = 'sev-low' %}{% endif %} {% endif %} {% endfor %} {% else %} {% endif %}
Severity ID Title Details
{{ sev or 'unknown' }} {{ a.get('id', '') }} {{ a.get('title', '') }} {{ a.get('details', {}) | tojson }}
Artifacts are not a list of findings.
{% if evidence_inventory %}

Evidence inventory (first 50 artifacts)

{% for item in evidence_inventory[:50] %} {% endfor %}
IDCategoryStatusPath
{{ item.get('artifact_id') }} {{ item.get('category') }} {{ item.get('status') }} {{ item.get('path') }}
{% endif %}