在網路安全的戰場上,滲透測試猶如偵察兵的秘密行動,其結果必須清晰、有效地傳達給指揮部。一份高品質的報告不僅展現了技術實力,更是後續防禦策略的根本。然而,手動編寫報告耗時費力,如何自動化這個流程,一直是我思考的重點。結合 Bash、SQLite 和 LaTeX,我開發了一套自動化方案,有效提升了報告的產出效率和品質。
graph LR D[D] A[滲透測試工具] --> B(JSON/XML 報告); B --> C[Bash & SQLite]; C --> D{資料處理與儲存}; D --> E[LaTeX]; E --> F(PDF 報告);
圖表説明: 這個流程圖簡潔地展示了整個自動化報告生成的流程:從滲透測試工具取得資料,利用 Bash 和 SQLite 進行處理和儲存,最後使用 LaTeX 生成專業的 PDF 報告。
Bash 與 SQLite:資料處理的雙劍合璧
Bash,如同瑞士刀般靈活,是我處理資料的首選工具。SQLite,輕巧與免設定,是儲存資料的理想選擇。兩者結合,威力倍增。
以下是一個 Bash 指令碼 process_data.sh
,示範如何處理資料並存入 SQLite 資料函式庫:
#!/usr/bin/env bash
DB_NAME="pentest_results.db"
# 建立資料函式庫表格(如果不存在)
sqlite3 "$DB_NAME" "CREATE TABLE IF NOT EXISTS vulnerabilities (
id INTEGER PRIMARY KEY AUTOINCREMENT,
ip TEXT NOT NULL,
port INTEGER NOT NULL,
service TEXT,
vulnerability TEXT
);"
# ... (從 Nmap、Nessus 等工具解析資料的程式碼) ...
# 將處理後的資料插入資料函式庫
while IFS= read -r line; do
ip=$(echo "$line" | cut -d ',' -f 1)
port=$(echo "$line" | cut -d ',' -f 2)
service=$(echo "$line" | cut -d ',' -f 3)
vulnerability=$(echo "$line" | cut -d ',' -f 4)
sqlite3 "$DB_NAME" "INSERT INTO vulnerabilities (ip, port, service, vulnerability)
VALUES ('$ip', '$port', '$service', '$vulnerability');"
done < processed_data.txt
echo "資料已成功匯入資料函式庫。"
這個指令碼首先建立一個名為 vulnerabilities
的表格,用於儲存漏洞資訊。接著,它會讀取 processed_data.txt
檔案,逐行解析資料,並將解析後的 IP、埠號、服務和漏洞資訊插入資料函式庫。
LaTeX:開發專業報告的利器
LaTeX,如同一位排版大師,能將資料轉化為美觀、專業的報告。以下是一個 Bash 指令碼 generate_report.sh
,示範如何使用 LaTeX 生成報告:
#!/usr/bin/env bash
DB_NAME="pentest_results.db"
# 生成 LaTeX 報告內容
generate_latex_content() {
echo "\\documentclass{article}"
echo "\\usepackage{booktabs}"
echo "\\begin{document}"
echo "\\title{滲透測試報告}"
echo "\\author{玄貓}"
echo "\\date{\\today}"
echo "\\maketitle"
# 從資料函式庫提取資料並生成表格
echo "\\section*{漏洞摘要}"
sqlite3 -header -csv "$DB_NAME" "SELECT ip, port, service, vulnerability FROM vulnerabilities;" | sed 's/\"//g' | while IFS=, read -r ip port service vulnerability; do
echo "$ip & $port & $service & $vulnerability \\\\"
done | xargs printf "\\begin{tabular}{llll} \\toprule IP & Port & Service & Vulnerability \\\\ \\midrule %s \\bottomrule \\end{tabular}\n"
echo "\\end{document}"
}
# 生成 LaTeX 檔案
generate_latex_content > pentest_report.tex
# 編譯 LaTeX 檔案為 PDF
pdflatex pentest_report.tex
echo "報告已生成: pentest_report.pdf"
這個指令碼會從資料函式庫中提取漏洞資訊,並使用 LaTeX 的表格環境生成報告內容。最後,它會使用 pdflatex
命令將 LaTeX 檔案編譯成 PDF 報告。
sequenceDiagram participant Bash participant SQLite participant LaTeX Bash->>SQLite: 查詢資料 SQLite-->>Bash: 傳回資料 Bash->>LaTeX: 傳遞資料 LaTeX->>LaTeX: 生成 PDF 報告
圖表説明: 這個序列圖清晰地展示了 Bash、SQLite 和 LaTeX 之間的互動過程,Bash 從 SQLite 查詢資料,然後將資料傳遞給 LaTeX 生成 PDF 報告。
透過這個自動化方案,我告別了手動編寫報告的煩惱,將更多時間投入到技術研究和實踐中。這不僅提升了我的工作效率,也確保了報告的品質和一致性,讓我能更好地守護網路安全。
在網路安全領域,滲透測試是一項關鍵任務。然而,測試完成後的報告撰寫卻常常耗費大量時間和精力。傳統的手動報告方式容易出錯,與難以保持一致性。為瞭解決這個問題,我開發了一套根據 Python 和 LaTeX 的自動化報告生成方案,能有效提升效率並確保報告的專業度。
import os
import sqlite3
def query_db(ip_address):
conn = sqlite3.connect('pentest_results.db')
cursor = conn.cursor()
cursor.execute("SELECT port, service, status FROM scan_results WHERE ip = ?", (ip_address,))
results = cursor.fetchall()
conn.close()
return results
def generate_latex_content(ip_addresses):
latex_content = r'''
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\title{滲透測試報告}
\author{玄貓(BlackCat)}
\date{\today}
\maketitle
'''
for ip in ip_addresses:
ports_info = query_db(ip)
latex_content += f"\\section*{{{ip} 掃描結果}}\n"
latex_content += r'''
\begin{table}[h]
\centering
\begin{tabular}{@{}lll@{}}
\toprule
埠口 & 服務 & 狀態 \\
\midrule
'''
for port, service, status in ports_info:
latex_content += f"{port} & {service} & {status} \\\\\n"
latex_content += r'''
\bottomrule
\end{tabular}
\caption{埠口掃描結果}
\end{table}
'''
latex_content += r"\end{document}"
return latex_content
ip_list = ["192.168.1.1", "192.168.1.2", "192.168.1.3"]
latex_output = generate_latex_content(ip_list)
with open("pentest_report.tex", "w") as f:
f.write(latex_output)
os.system("pdflatex pentest_report.tex")
這段程式碼的核心邏輯在於 generate_latex_content()
函式。它首先定義 LaTeX 檔案的起始結構,包括標題、作者和日期。接著,它利用迴圈迭代每個 IP 位址,並透過 query_db()
函式從資料函式庫中提取對應的埠口資訊。取得資料後,程式碼會將這些資訊動態地格式化成 LaTeX 表格,並增加到最終的 LaTeX 檔案內容中。最後,pdflatex
命令會將生成的 .tex
檔案編譯成 PDF 格式的報告。我特意選擇了 booktabs
套件來最佳化表格樣式,使其更具專業感。query_db()
函式則封裝了資料函式庫查詢的邏輯,提升程式碼的模組化和可讀性。
graph LR B[B] C[C] A[執行指令碼] --> B{查詢資料函式庫}; B --> C{生成 LaTeX 內容}; C --> D[編譯成 PDF];
圖表説明: 此流程圖清晰地展現了指令碼的執行流程,從指令碼啟動、資料函式庫查詢、LaTeX 內容生成,最終到 PDF 報告的編譯。
classDiagram class ReportGenerator{ +generate_latex_content() +query_db() }
圖表説明: 這個類別圖描述了程式碼的核心結構。ReportGenerator
類別包含兩個主要方法:generate_latex_content()
負責生成 LaTeX 內容,而 query_db()
則負責從資料函式庫中提取必要的資訊。
這個自動化方案不僅大幅提升了報告生成的效率,更重要的是,它確保了報告的一致性和準確性,減少了人為錯誤的可能性。此外,這個方案具有高度的靈活性,可以根據實際需求調整和擴充套件,例如整合到 CI/CD 流程中,實作完全自動化的滲透測試報告生成。