mirror of
https://github.com/weyne85/PentestGPT.git
synced 2025-10-29 16:58:59 +00:00
feat: 🎸 add logging feature for report generation
This commit is contained in:
42
utils/report_generator.py
Normal file
42
utils/report_generator.py
Normal file
@@ -0,0 +1,42 @@
|
||||
# a quick report generation script that converts the saved logs file into a pdf.
|
||||
import json, os, sys
|
||||
import datetime, time
|
||||
|
||||
|
||||
def main(file_name):
|
||||
# load the file into json
|
||||
with open(file_name, "r") as f:
|
||||
logs = json.load(f)
|
||||
user_inputs = logs["user"]
|
||||
bot_responses = logs["pentestGPT"]
|
||||
# merge the two list into one. Sort based on the first element (timestamp in str), and add a flag to show source
|
||||
merged_list = []
|
||||
for user_input in user_inputs:
|
||||
merged_list.append([user_input[0], user_input[1], "user"])
|
||||
for bot_response in bot_responses:
|
||||
merged_list.append([bot_response[0], bot_response[1], "pentestGPT"])
|
||||
merged_list.sort(key=lambda x: x[0])
|
||||
|
||||
# now print the conversation
|
||||
output = ""
|
||||
for element in merged_list:
|
||||
# convert the timestamp to a human readable format
|
||||
timestamp = datetime.datetime.fromtimestamp(int(element[0])).strftime(
|
||||
"%Y-%m-%d %H:%M:%S"
|
||||
)
|
||||
output += f"{timestamp} [{element[2]}]: {element[1]}\n"
|
||||
# add an additional line break if the element is from bot
|
||||
if element[2] == "pentestGPT":
|
||||
output += "----------------------------------------\n\n"
|
||||
# print the output
|
||||
print("Conversation log: ")
|
||||
|
||||
print(output)
|
||||
|
||||
if __name__ == "__main__":
|
||||
# default filename = "../logs/sample_pentestGPT_log.txt"
|
||||
if len(sys.argv) == 1:
|
||||
file_name = "logs/sample_pentestGPT_log.txt"
|
||||
else:
|
||||
file_name = sys.argv[1]
|
||||
main(file_name)
|
||||
Reference in New Issue
Block a user