Merge pull request #277 from niveshdandyan/add-full-event-log

feat: add full event log export for all scan events
This commit is contained in:
Alexander Myasoedov
2026-02-03 18:54:09 +02:00
committed by GitHub
2 changed files with 44 additions and 0 deletions
+2
View File
@@ -423,6 +423,7 @@ async def perform_single_shot_scan(
yield ScanResult.status_msg("Scan completed.")
fuzzer_state.export_failures("failures.csv")
fuzzer_state.export_full_log("full_scan_log.csv")
async def perform_many_shot_scan(
@@ -558,6 +559,7 @@ async def perform_many_shot_scan(
yield ScanResult.status_msg("Scan completed.")
fuzzer_state.export_failures("failures.csv")
fuzzer_state.export_full_log("full_scan_log.csv")
def scan_router(
+42
View File
@@ -45,3 +45,45 @@ class FuzzerState:
failure_data, columns=["module", "prompt", "status_code", "content"]
)
df.to_csv(filename, index=False)
def export_full_log(self, filename: str = "full_scan_log.csv"):
"""Export a complete log of all events (errors, refusals, and successful outputs)"""
log_data = []
# Add errors
for module_name, prompt, status_code, error_msg in self.errors:
log_data.append({
"event_type": "error",
"module": module_name,
"prompt": prompt,
"status_code": status_code,
"content": error_msg,
"refused": None,
})
# Add refusals
for module_name, prompt, status_code, response_text in self.refusals:
log_data.append({
"event_type": "refusal",
"module": module_name,
"prompt": prompt,
"status_code": status_code,
"content": response_text,
"refused": True,
})
# Add all outputs (including successful ones)
for module_name, prompt, response_text, refused in self.outputs:
# Skip if already logged as refusal to avoid duplicates
if not refused:
log_data.append({
"event_type": "success",
"module": module_name,
"prompt": prompt,
"status_code": 200,
"content": response_text,
"refused": False,
})
df = pd.DataFrame(log_data)
df.to_csv(filename, index=False)