Skip to main content
AutoPentestX generates professional, comprehensive PDF reports using ReportLab. This guide explains each section of the report and how to use the findings effectively.

Report Generation

Reports are automatically generated in Phase 7 of every scan:
Terminal Output
╔══════════════════════════════════════════════════════════════════╗
║ [PHASE 7] ▶ Compiling classified intelligence report...      ║
╚══════════════════════════════════════════════════════════════════╝
──────────────────────────────────────────────────────────────────
[*] Adding cover page...
[*] Adding executive summary...
[*] Adding scan details...
[*] Adding open ports table...
[*] Adding vulnerabilities...
[*] Adding risk assessment...
[*] Adding exploitation results...
[*] Adding recommendations...
[*] Adding conclusion...
[*] Adding disclaimer...
[*] Building PDF document...

============================================================
PDF REPORT GENERATED SUCCESSFULLY
============================================================
Report saved to: reports/AutoPentestX_Report_192_168_1_100_20240311_143045.pdf
File size: 147.23 KB
============================================================

Report Location

Reports are stored in the reports/ directory with timestamped filenames:
reports/
├── AutoPentestX_Report_192_168_1_100_20240311_143045.pdf
├── AutoPentestX_Report_example_com_20240310_092215.pdf
└── AutoPentestX_Report_10_0_0_1_20240309_155530.pdf

Opening Reports

xdg-open reports/AutoPentestX_Report_*.pdf

Report Sections

1. Cover Page

The first page contains:
Title
string
PENETRATION TESTING REPORT (large, centered heading)
Target Information
object
  • Target System (IP or domain)
  • Scan ID (database reference)
  • Report Date and Time
Confidentiality Notice
warning
CONFIDENTIAL notice in red text warning about sensitive information
Tester Information
object
  • Prepared by: (your name from -n flag)
  • Tool: AutoPentestX v1.0
  • Framework: Automated Penetration Testing Toolkit
Use the -n flag to customize the “Prepared by” field:
python3 main.py -t 192.168.1.100 -n "Jane Smith, Senior Security Analyst"

2. Executive Summary

Provides a high-level overview for non-technical stakeholders.

Key Metrics

Example Summary
This penetration testing report presents the findings of an automated 
security assessment conducted on the target system 192.168.1.100. The 
assessment was performed on March 11, 2026 using the AutoPentestX 
automated penetration testing toolkit.

Overall Risk Level: MEDIUM
Total Vulnerabilities Identified: 23
Critical/High Risk Items: 4
Web Vulnerabilities: 7
SQL Injection Points: 0

Risk Level Indicators

🔴 Red Text - Immediate Action RequiredCharacteristics:
  • Publicly exploitable vulnerabilities
  • SQL injection vulnerabilities
  • Default credentials accepted
  • Known backdoors detected
Sample Finding:
⚠ CRITICAL FINDING: The target system exhibits CRITICAL risk level.
Immediate remediation action is required to address identified security 
vulnerabilities before the system can be considered secure for production use.

3. Scan Details

Technical information about the scan execution:
SCAN DETAILS

Target: 192.168.1.100
Operating System: Linux Ubuntu 20.04 LTS
Scan Duration: 1247.23 seconds
Total Open Ports: 15
Scan Method: Automated comprehensive scan using Nmap, Nikto, and SQLMap

4. Open Ports and Services

Complete inventory of discovered network services:
PortProtocolStateServiceVersion
21tcpopenftpvsftpd 2.3.4
22tcpopensshOpenSSH 8.2p1 Ubuntu
80tcpopenhttpApache httpd 2.4.41
443tcpopenssl/httpnginx 1.18.0
3306tcpopenmysqlMySQL 5.7.33
8080tcpopenhttp-proxyJetty 9.4.31
The report displays up to 20 ports. View all ports in the database:
sqlite3 database/autopentestx.db "SELECT * FROM ports WHERE scan_id = 1;"

5. Vulnerabilities Identified

Detailed table of all discovered vulnerabilities:
PortVulnerabilitySeverityCVE ID
21Vulnerable FTP ServiceHIGHN/A
22Outdated SSH VersionMEDIUMCVE-2020-15778
80Missing X-Frame-Options headerMEDIUMN/A
80SQL Injection - parameter ‘id’HIGHN/A
443Weak SSL cipher suitesMEDIUMN/A
3306MySQL exposed to internetHIGHN/A

Vulnerability Categories

Found during port scanning and version detection:
  • Outdated service versions
  • Vulnerable software with known CVEs
  • Misconfigured services
  • Services with default configurations
Source: Nmap + CVE database
Found by Nikto web scanner:
  • Missing security headers
  • Directory listing enabled
  • Exposed administrative pages
  • Default files present
  • XSS indicators
Source: Nikto (unless --skip-web used)
Found by SQLMap:
  • Vulnerable GET parameters
  • Vulnerable POST parameters
  • Cookie-based injection
  • Header injection
Source: SQLMap (unless --skip-web used)Severity: ALWAYS HIGH
Matched from CVE intelligence database:
  • Known vulnerabilities for detected services
  • CVSS scores
  • Exploitability information
  • Patch availability
Source: CVE database lookup
The report displays up to 25 vulnerabilities. View all in the database:
sqlite3 database/autopentestx.db \
  "SELECT * FROM vulnerabilities WHERE scan_id = 1 ORDER BY risk_level DESC;"

6. Risk Assessment

Advanced risk scoring and analysis:
RISK ASSESSMENT

Based on the comprehensive analysis of identified vulnerabilities, their 
severity levels, exploitability, and potential impact, the overall risk 
assessment for the target system is:

Overall Risk Level: MEDIUM
Total Risk Score: 45.80
Average Risk per Port: 3.05

High Risk Items:
• Port 21: ftp - Risk Score: 8.5/10
• Port 80: http - Risk Score: 7.2/10
• Port 3306: mysql - Risk Score: 7.0/10

Risk Calculation

The risk engine (from modules/risk_engine.py) calculates scores based on:
  1. Vulnerability Severity: CRITICAL=10, HIGH=7, MEDIUM=5, LOW=3
  2. Exploitability: Known exploit (+2), CVE with CVSS 7+ (+1.5)
  3. Service Exposure: Internet-facing (+1), Authentication required (-0.5)
  4. Number of Issues: Multiple issues on same port compound risk
Overall Risk Level Thresholds:
  • CRITICAL: Total risk score > 70 OR any SQL injection
  • HIGH: Total risk score > 50 OR 3+ high-severity issues
  • MEDIUM: Total risk score > 30 OR 5+ medium-severity issues
  • LOW: Total risk score > 10
  • MINIMAL: Total risk score ≤ 10

7. Exploitation Assessment

Details about matched exploits and simulation results:
EXPLOITATION ASSESSMENT

The following exploitation scenarios were evaluated in SAFE MODE. 
No actual exploitation was performed to prevent system damage.

Total Exploits Identified: 3

• Port 21: vsftpd_234_backdoor
  Status: SIMULATED
  Description: VSFTPD v2.3.4 Backdoor Command Execution

• Port 445: ms17_010_eternalblue
  Status: SKIPPED
  Description: MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption

• Port 80: apache_mod_cgi_bash_env_exec
  Status: SIMULATED
  Description: Apache mod_cgi Bash Environment Variable Code Injection
This section only appears if exploitation phase ran (no --skip-exploit flag).
See the Exploitation Guide for detailed information about each status.

8. Security Recommendations

Prioritized remediation actions:
SECURITY RECOMMENDATIONS

Based on the identified vulnerabilities and risk assessment, the following 
remediation actions are recommended to improve the security posture of the 
target system:

CRITICAL Priority:
• Remediate SQL injection vulnerability in parameter 'id'
  Implement parameterized queries and input validation.

• Remove or secure vsftpd 2.3.4 backdoor
  Update to latest version or disable FTP service entirely.

HIGH Priority:
• Update OpenSSH to latest version
  Current version has known vulnerabilities. Update to 8.2p1 or later.

• Restrict MySQL to localhost only
  Database should not be accessible from external networks.

MEDIUM Priority:
• Add security headers to web server
  Implement X-Frame-Options, Content-Security-Policy, and HSTS headers.

• Update Apache to latest version
  Current version 2.4.41 has known issues. Update to 2.4.57+.

Recommendation Categories

Patch Management

Update outdated software to latest stable versions

Configuration Hardening

Fix misconfigurations and disable unnecessary features

Access Control

Implement proper authentication and authorization

Network Security

Use firewalls, VPNs, and network segmentation

9. Conclusion

Final summary and next steps:
CONCLUSION

This automated penetration testing assessment has identified various security 
vulnerabilities and potential risks in the target system. The findings should 
be carefully reviewed and prioritized based on the risk levels assigned.

It is strongly recommended to address all CRITICAL and HIGH severity findings 
immediately, followed by MEDIUM and LOW severity items according to available 
resources and priorities.

Regular security assessments should be conducted to maintain a strong security 
posture and protect against emerging threats.

Important Notes:
• This assessment was conducted using automated tools and may not identify all vulnerabilities
• Manual verification and testing is recommended for critical systems
• Results should be validated before taking remediation actions
• This report is confidential and should be handled securely

10. Disclaimer

Legal disclaimer and usage terms:
DISCLAIMER: This penetration testing report is provided for educational and 
authorized security assessment purposes only. The tools and techniques used 
are intended for legitimate security testing in controlled environments with 
proper authorization. Unauthorized use of these tools against systems you do 
not own or have explicit permission to test is illegal and unethical. The 
developers and users of AutoPentestX assume no liability for misuse or damage 
caused by this tool.

Customizing Report Content

Add Your Name

Use the -n or --tester-name flag:
python3 main.py -t 192.168.1.100 -n "Security Team - Q1 2026 Audit"
Appears in:
  • Cover page: “Prepared by” field
  • Page headers (if enabled)
  • Report metadata

Report Variations by Flags

python3 main.py -t 192.168.1.100
Report Includes:
  • ✅ All sections
  • ✅ Port and service inventory
  • ✅ Web vulnerabilities (Nikto)
  • ✅ SQL injection findings (SQLMap)
  • ✅ CVE intelligence
  • ✅ Exploitation assessment
  • ✅ Metasploit RC scripts referenced
Typical Page Count: 8-12 pages

Using Report Data

Share with Stakeholders

1

Prepare Report Package

Gather all relevant files:
mkdir scan-package
cp reports/AutoPentestX_Report_*.pdf scan-package/
cp exploits/*.rc scan-package/
cp database/autopentestx.db scan-package/
2

Encrypt Sensitive Data

Password-protect the PDF:
# Using qpdf
qpdf --encrypt "password" "password" 256 -- \
     input.pdf output-encrypted.pdf
3

Distribute Securely

  • Email encrypted report to authorized recipients only
  • Use secure file sharing (not public links)
  • Include remediation timeline expectations
  • Schedule a findings review meeting

Create Executive Presentation

Extract key metrics for slides:
sqlite3 database/autopentestx.db <<EOF
SELECT 
  'Overall Risk: ' || risk_score as metric,
  'Open Ports: ' || open_ports,
  'Vulnerabilities: ' || vulnerabilities_found,
  'Status: ' || status
FROM scans 
WHERE id = 1;
EOF

Track Remediation Progress

Create a tracking spreadsheet from report findings:
  1. Extract vulnerabilities from database
  2. Add columns: Status, Assigned To, Due Date, Resolution Notes
  3. Re-scan after remediation to verify fixes
  4. Generate comparison report

Report File Management

Organize Reports

# Create organized directory structure
mkdir -p reports/{2026-Q1,2026-Q2,archived}

# Move reports by date
mv reports/AutoPentestX_Report_*_202601*.pdf reports/2026-Q1/
mv reports/AutoPentestX_Report_*_202604*.pdf reports/2026-Q2/

Report Retention Policy

Recommended retention:
Active Reports
string
Keep for 1 year - Current and recent scans for comparison
Archived Reports
string
Keep for 3-7 years - Compliance and audit trail
Remediated Findings
string
Keep permanently - Proof of security improvements

Troubleshooting Report Issues

Error:
[✗] Error generating PDF report: No module named 'reportlab'
Solution:
pip install --upgrade reportlab pillow
Symptom: Report shows 0 vulnerabilities but ports were found.Possible Causes:
  • Used --skip-web flag (web vulnerabilities won’t appear)
  • No CVEs found for detected services (expected for up-to-date systems)
  • Scan was interrupted before vulnerability phase
Check database:
sqlite3 database/autopentestx.db "SELECT COUNT(*) FROM vulnerabilities WHERE scan_id = 1;"
Symptom: PDF won’t open or displays errors.Solution: Re-run the report generation from database:
# Feature coming soon - manual report regeneration
python3 regenerate_report.py --scan-id 1
Currently, you must re-run the full scan.
Symptom: Report file is several MB in size.Cause: Very large number of findings (50+ vulnerabilities).Note: Report limits tables to 20-25 entries. Full data is in the database.View all findings:
sqlite3 database/autopentestx.db "SELECT * FROM vulnerabilities WHERE scan_id = 1;"

Next Steps

CLI Reference

Complete command-line flag documentation

Database Schema

Query and analyze raw scan data

Build docs developers (and LLMs) love