Amount of exposed passwords found: {{ps_p}}
-
+
PAGESEARCH SITEMAP INSPECTION RESULTS
Total links amount: {{ss_l}}
From 123a92e9dc5abf1c47428ef310f10dfcd0c63784 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Thu, 7 Nov 2024 15:25:19 +0300
Subject: [PATCH 09/46] Added message about PDF report deprecation and further
removal
---
dpulse.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/dpulse.py b/dpulse.py
index 3868826..83834e8 100644
--- a/dpulse.py
+++ b/dpulse.py
@@ -89,6 +89,7 @@ def run():
print(Fore.RED + "Entered domain is not accessible. Scan is impossible" + Style.RESET_ALL)
break
case_comment = input(Fore.YELLOW + "Enter case comment >> ")
+ print(Fore.GREEN + "Be advised that PDF report support is deprecated since v1.1.4. Instead, try to work with HTML report :)\nSoon PDF report creation choice will be removed" + Style.RESET_ALL)
report_filetype = input(Fore.YELLOW + "Enter report file extension [xlsx/pdf/html] >> ")
if not report_filetype:
print(Fore.RED + "\nReport filetype cannot be empty")
From f85a66e24e13ba9fe4f052f62998a594651edbef Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Thu, 7 Nov 2024 15:26:36 +0300
Subject: [PATCH 10/46] Updated poetry.lock for v1.1.4
---
poetry.lock | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index fd28251..1cd4e33 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -371,13 +371,13 @@ wmi = ["wmi (>=1.5.1)"]
[[package]]
name = "et-xmlfile"
-version = "1.1.0"
+version = "2.0.0"
description = "An implementation of lxml.xmlfile for the standard library"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
files = [
- {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"},
- {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"},
+ {file = "et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa"},
+ {file = "et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54"},
]
[[package]]
@@ -988,23 +988,24 @@ files = [
[[package]]
name = "pypdf"
-version = "5.0.1"
+version = "5.1.0"
description = "A pure-python PDF library capable of splitting, merging, cropping, and transforming PDF files"
optional = false
python-versions = ">=3.8"
files = [
- {file = "pypdf-5.0.1-py3-none-any.whl", hash = "sha256:ff8a32da6c7a63fea9c32fa4dd837cdd0db7966adf6c14f043e3f12592e992db"},
- {file = "pypdf-5.0.1.tar.gz", hash = "sha256:a361c3c372b4a659f9c8dd438d5ce29a753c79c620dc6e1fd66977651f5547ea"},
+ {file = "pypdf-5.1.0-py3-none-any.whl", hash = "sha256:3bd4f503f4ebc58bae40d81e81a9176c400cbbac2ba2d877367595fb524dfdfc"},
+ {file = "pypdf-5.1.0.tar.gz", hash = "sha256:425a129abb1614183fd1aca6982f650b47f8026867c0ce7c4b9f281c443d2740"},
]
[package.dependencies]
typing_extensions = {version = ">=4.0", markers = "python_version < \"3.11\""}
[package.extras]
-crypto = ["PyCryptodome", "cryptography"]
+crypto = ["cryptography"]
+cryptodome = ["PyCryptodome"]
dev = ["black", "flit", "pip-tools", "pre-commit (<2.18.0)", "pytest-cov", "pytest-socket", "pytest-timeout", "pytest-xdist", "wheel"]
docs = ["myst_parser", "sphinx", "sphinx_rtd_theme"]
-full = ["Pillow (>=8.0.0)", "PyCryptodome", "cryptography"]
+full = ["Pillow (>=8.0.0)", "cryptography"]
image = ["Pillow (>=8.0.0)"]
[[package]]
From 1e3bfb338a9ed88e723c4c5a08169543c43557f8 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Sat, 9 Nov 2024 15:03:53 +0300
Subject: [PATCH 11/46] Added used API flag transfer to Report Storage DB
---
reporting_modules/html_report_creation.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/reporting_modules/html_report_creation.py b/reporting_modules/html_report_creation.py
index 1919156..b09af69 100644
--- a/reporting_modules/html_report_creation.py
+++ b/reporting_modules/html_report_creation.py
@@ -76,6 +76,7 @@ def report_assembling(short_domain, url, case_comment, data_array, report_info_a
db_creation_date = report_info_array[2]
report_folder = report_info_array[3]
report_ctime = report_info_array[6]
+ api_scan_db = report_info_array[7]
pdf_templates_path = 'service//pdf_report_templates'
@@ -144,7 +145,7 @@ def report_assembling(short_domain, url, case_comment, data_array, report_info_a
dorking_content = df.read()
robots_content, sitemap_content, sitemap_links_content, dorking_content = fp.get_db_columns(report_folder)
pdf_blob = fp.get_blob(html_report_name)
- db.insert_blob('HTML', pdf_blob, db_casename, db_creation_date, case_comment, robots_content, sitemap_content, sitemap_links_content, dorking_content)
+ db.insert_blob('HTML', pdf_blob, db_casename, db_creation_date, case_comment, robots_content, sitemap_content, sitemap_links_content, dorking_content, api_scan_db)
except Exception as e:
print(Fore.RED + 'Unable to create HTML report. See journal for details')
logging.error(f'HTML REPORT CREATION: ERROR. REASON: {e}')
From 978f800d7802075154ee3be738ea265bc0355f22 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Sat, 9 Nov 2024 15:04:38 +0300
Subject: [PATCH 12/46] Added used API flag transfer to Report Storage DB
---
datagather_modules/data_assembler.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/datagather_modules/data_assembler.py b/datagather_modules/data_assembler.py
index cff43d7..c65050f 100644
--- a/datagather_modules/data_assembler.py
+++ b/datagather_modules/data_assembler.py
@@ -252,16 +252,21 @@ def data_gathering(self, short_domain, url, report_file_type, pagesearch_flag, k
dorking_status, dorking_file_path = dp.save_results_to_txt(report_folder, table, dp.get_dorking_query(short_domain, dorking_db_path, table))
print(Fore.LIGHTMAGENTA_EX + f"\n[EXTENDED SCAN END: {dorking_flag.upper()} DORKING]\n" + Style.RESET_ALL)
+ api_scan_db = []
if used_api_flag != ['Empty']:
print(Fore.LIGHTMAGENTA_EX + f"\n[EXTENDED SCAN START: API SCANNING]\n" + Style.RESET_ALL)
if 1 in used_api_flag:
api_virustotal_check(short_domain)
+ api_scan_db.append('VirusTotal')
if 2 in used_api_flag:
api_securitytrails_check(short_domain)
+ api_scan_db.append('SecurityTrails')
print(Fore.LIGHTMAGENTA_EX + f"\n[EXTENDED SCAN END: API SCANNING]\n" + Style.RESET_ALL)
else:
+ api_scan_db.append('No')
pass
+
data_array = [ip, res, mails, subdomains, subdomains_amount, social_medias, subdomain_mails, sd_socials,
subdomain_ip, issuer, subject, notBefore, notAfter, commonName, serialNumber, mx_records,
robots_txt_result, sitemap_xml_result, sitemap_links_status,
@@ -270,6 +275,6 @@ def data_gathering(self, short_domain, url, report_file_type, pagesearch_flag, k
accessible_subdomains, emails_amount, files_counter, cookies_counter, api_keys_counter,
website_elements_counter, exposed_passwords_counter, total_links_counter, accessed_links_counter, keywords_messages_list, dorking_status, dorking_file_path]
- report_info_array = [casename, db_casename, db_creation_date, report_folder, ctime, report_file_type, report_ctime]
+ report_info_array = [casename, db_casename, db_creation_date, report_folder, ctime, report_file_type, report_ctime, api_scan_db]
logging.info(f'### THIS LOG PART FOR {casename} CASE, TIME: {ctime} ENDS HERE')
return data_array, report_info_array
From 8798355feaf60cc788028467336331d25be6c5d9 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Sat, 9 Nov 2024 15:05:29 +0300
Subject: [PATCH 13/46] Added used API flag transfer to Report Storage DB,
added new column in RSDB
---
service/db_processing.py | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/service/db_processing.py b/service/db_processing.py
index b929770..25aab24 100644
--- a/service/db_processing.py
+++ b/service/db_processing.py
@@ -27,6 +27,7 @@ def db_creation(db_path):
"robots_text" TEXT,
"sitemap_text" TEXT,
"sitemap_file" TEXT,
+ "api_scan" TEXT,
PRIMARY KEY("id" AUTOINCREMENT)
);
"""
@@ -45,7 +46,7 @@ def db_select():
rows = cursor.fetchall()
if rows:
try:
- select_query = "SELECT creation_date, report_file_extension, target, id, comment, dorks_results, robots_text, sitemap_text, sitemap_file FROM report_storage;"
+ select_query = "SELECT creation_date, report_file_extension, target, id, comment, dorks_results, robots_text, sitemap_text, sitemap_file, api_scan FROM report_storage;"
cursor.execute(select_query)
records = cursor.fetchall()
for row in records:
@@ -56,7 +57,7 @@ def db_select():
robots_presence = "In DB"
if len(row[6]) > 1:
sitemap_presence = "In DB"
- print(Fore.LIGHTBLUE_EX + f"Case ID: {row[3]} | Case name: {row[2]} | Case file extension: {row[1]} | Case comment: {row[4]} | Case creation date: {row[0]} | Dorks: {dorks_presence} | robots.txt: {robots_presence} | sitemap.xml: {sitemap_presence}" + Style.RESET_ALL)
+ print(Fore.LIGHTBLUE_EX + f"Case ID: {row[3]} | Case name: {row[2]} | Case file extension: {row[1]} | Case comment: {row[4]} | Case creation date: {row[0]} | Dorking: {dorks_presence} | robots.txt: {robots_presence} | sitemap.xml: {sitemap_presence} | API scan: {ap}" + Style.RESET_ALL)
except sqlite3.Error as e:
print(Fore.RED + "Failed to see storage database's content. Reason: {}".format(e))
sqlite_connection.close()
@@ -104,16 +105,25 @@ def db_report_recreate(extracted_folder_name, id_to_extract):
except Exception as e:
print(Fore.RED + "Error appeared when recreating report from database. Reason: {}".format(e))
-def insert_blob(report_file_type, pdf_blob, db_casename, creation_date, case_comment, robots, sitemap_xml, sitemap_links, dorking_results): #, dorking_results was removed here
+def insert_blob(report_file_type, pdf_blob, db_casename, creation_date, case_comment, robots, sitemap_xml, sitemap_links, dorking_results, api_scan_db): #, dorking_results was removed here
try:
sqlite_connection = sqlite3.connect('report_storage.db')
cursor = sqlite_connection.cursor()
print(Fore.GREEN + "Connected to report storage database")
+ if 'No' in api_scan_db:
+ api_scan_insert = 'No'
+ elif 'VirusTotal' and 'SecurityTrails' in api_scan_db:
+ api_scan_insert = 'VirusTotal and SecurityTrails'
+ elif 'VirusTotal' in api_scan_db:
+ api_scan_insert = 'VirusTotal'
+ elif 'SecurityTrails' in api_scan_db:
+ api_scan_insert = 'SecurityTrails'
+
sqlite_insert_blob_query = """INSERT INTO report_storage
- (report_file_extension, report_content, creation_date, target, comment, sitemap_file, robots_text, sitemap_text, dorks_results) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"""
+ (report_file_extension, report_content, creation_date, target, comment, sitemap_file, robots_text, sitemap_text, dorks_results, api_scan) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"""
#dorks_results was removed between comment and robots_text
- data_tuple = (report_file_type, pdf_blob, creation_date, db_casename, case_comment, sitemap_xml, robots, sitemap_links, dorking_results)
+ data_tuple = (report_file_type, pdf_blob, creation_date, db_casename, case_comment, sitemap_xml, robots, sitemap_links, dorking_results, api_scan_insert)
cursor.execute(sqlite_insert_blob_query, data_tuple)
sqlite_connection.commit()
print(Fore.GREEN + "Scanning results are successfully saved in report storage database")
From c9d0dacd73ecd10adecef130a3c42f0925aae8ef Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Sat, 9 Nov 2024 15:09:31 +0300
Subject: [PATCH 14/46] Added API scan status to show in DB CLI
---
service/db_processing.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/service/db_processing.py b/service/db_processing.py
index 25aab24..9d52973 100644
--- a/service/db_processing.py
+++ b/service/db_processing.py
@@ -57,7 +57,7 @@ def db_select():
robots_presence = "In DB"
if len(row[6]) > 1:
sitemap_presence = "In DB"
- print(Fore.LIGHTBLUE_EX + f"Case ID: {row[3]} | Case name: {row[2]} | Case file extension: {row[1]} | Case comment: {row[4]} | Case creation date: {row[0]} | Dorking: {dorks_presence} | robots.txt: {robots_presence} | sitemap.xml: {sitemap_presence} | API scan: {ap}" + Style.RESET_ALL)
+ print(Fore.LIGHTBLUE_EX + f"Case ID: {row[3]} | Case name: {row[2]} | Case file extension: {row[1]} | Case comment: {row[4]} | Case creation date: {row[0]} | Dorking: {dorks_presence} | robots.txt: {robots_presence} | sitemap.xml: {sitemap_presence} | API scan: {row[-1]}" + Style.RESET_ALL)
except sqlite3.Error as e:
print(Fore.RED + "Failed to see storage database's content. Reason: {}".format(e))
sqlite_connection.close()
From c24f420d3daee184cb992eab0aec99ab56c87cce Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 00:46:28 +0300
Subject: [PATCH 15/46] Disabled function calls to generate PDF report
Also rewritten all "None" selectors for just "N"
---
dpulse.py | 45 +++++++++++++--------------------------------
1 file changed, 13 insertions(+), 32 deletions(-)
diff --git a/dpulse.py b/dpulse.py
index 83834e8..43f9505 100644
--- a/dpulse.py
+++ b/dpulse.py
@@ -89,18 +89,18 @@ def run():
print(Fore.RED + "Entered domain is not accessible. Scan is impossible" + Style.RESET_ALL)
break
case_comment = input(Fore.YELLOW + "Enter case comment >> ")
- print(Fore.GREEN + "Be advised that PDF report support is deprecated since v1.1.4. Instead, try to work with HTML report :)\nSoon PDF report creation choice will be removed" + Style.RESET_ALL)
- report_filetype = input(Fore.YELLOW + "Enter report file extension [xlsx/pdf/html] >> ")
+ print(Fore.GREEN + "Be advised that PDF report support is deprecated since v1.1.4. Instead, try to work with HTML report :)" + Style.RESET_ALL)
+ report_filetype = input(Fore.YELLOW + "Enter report file extension [XLSX/HTML] >> ")
if not report_filetype:
print(Fore.RED + "\nReport filetype cannot be empty")
- if report_filetype.lower() not in ['pdf', 'xlsx', 'html']:
- print(Fore.RED + '\nYou need to choose between PDF, XLSX or HTML report file types')
+ if report_filetype.lower() not in ['xlsx', 'html']:
+ print(Fore.RED + '\nYou need to choose between XLSX or HTML report file types')
else:
print(Fore.GREEN + "[!] SI mode suppose you to have sitemap_links.txt file in report folder [!]\n[!] It'll visit every link from this file [!]")
- pagesearch_flag = input(Fore.YELLOW + "Would you like to use PageSearch function? [Y/N/SI] >> ")
+ pagesearch_flag = input(Fore.YELLOW + "Would you like to use PageSearch function? [Y/SI/N (for No)] >> ")
if pagesearch_flag.lower() == 'y':
- keywords_input = input(Fore.YELLOW + "Enter keywords (separate by comma) to search in files during PageSearch process (or write None if you don't need it) >> ")
- if keywords_input.lower() != "none":
+ keywords_input = input(Fore.YELLOW + "Enter keywords (separate by comma) to search in files during PageSearch process (or write N if you don't need it) >> ")
+ if keywords_input.lower() != "n":
if len(keywords_input.lower()) > 0:
keywords_list = [keyword.strip() for keyword in keywords_input.split(',')]
keywords_flag = 1
@@ -115,9 +115,9 @@ def run():
elif pagesearch_flag.lower() == 'si':
keywords_list = None
keywords_flag = 0
- if report_filetype.lower() == 'pdf' or report_filetype.lower() == 'xlsx' or report_filetype.lower() == 'html':
- dorking_flag = input(Fore.YELLOW + "Select Dorking mode [Basic/IoT/Files/Admins/Web/Custom/None] >> ")
- api_flag = input(Fore.YELLOW + "Would you like to use 3rd party API in scan? [Y/N] >> ")
+ if report_filetype.lower() == 'xlsx' or report_filetype.lower() == 'html':
+ dorking_flag = input(Fore.YELLOW + "Select Dorking mode [Basic/IoT/Files/Admins/Web/Custom/N (for None)] >> ")
+ api_flag = input(Fore.YELLOW + "Would you like to use 3rd party API in scan? [Y/N (for No)] >> ")
if api_flag.lower() == 'y':
print(Fore.GREEN + "\nSupported APIs and your keys:\n")
db.select_api_keys('printing')
@@ -146,8 +146,8 @@ def run():
pagesearch_ui_mark = 'Yes, in Sitemap Inspection mode'
else:
pagesearch_ui_mark = 'Yes, without keywords search'
- if dorking_flag.lower() not in ['basic', 'iot', 'none', 'admins', 'files', 'web', 'custom']:
- print(Fore.RED + "\nInvalid Dorking mode. Please select mode among Basic/IoT/Files/Web/Admins/Custom or None")
+ if dorking_flag.lower() not in ['basic', 'iot', 'n', 'admins', 'files', 'web', 'custom']:
+ print(Fore.RED + "\nInvalid Dorking mode. Please select mode among Basic/IoT/Files/Web/Admins/Custom or N")
break
else:
dorking_ui_mark = 'No'
@@ -170,26 +170,7 @@ def run():
print(Fore.LIGHTMAGENTA_EX + "[BASIC SCAN START]\n" + Style.RESET_ALL)
spinner_thread = ProgressBar()
spinner_thread.start()
- if report_filetype.lower() == 'pdf':
- try:
- if pagesearch_flag.lower() == 'y':
- start = time()
- data_array, report_info_array = data_processing.data_gathering(short_domain, url, report_filetype.lower(), pagesearch_flag.lower(), keywords_list, keywords_flag, dorking_flag.lower(), used_api_flag)
- end = time() - start
- elif pagesearch_flag.lower() == 'si':
- start = time()
- data_array, report_info_array = data_processing.data_gathering(short_domain, url, report_filetype.lower(), pagesearch_flag.lower(), keywords_list, keywords_flag, dorking_flag.lower(), used_api_flag)
- end = time() - start
- else:
- start = time()
- data_array, report_info_array = data_processing.data_gathering(short_domain, url, report_filetype.lower(), pagesearch_flag.lower(), '', keywords_flag, dorking_flag.lower(), used_api_flag)
- end = time() - start
- endtime_string = time_processing(end)
- pdf_rc.report_assembling(short_domain, url, case_comment, data_array, report_info_array, pagesearch_ui_mark, pagesearch_flag.lower(), endtime_string)
- finally:
- spinner_thread.do_run = False
- spinner_thread.join()
- elif report_filetype.lower() == 'xlsx':
+ if report_filetype.lower() == 'xlsx':
try:
if pagesearch_flag.lower() == 'y':
start = time()
From 350385ad950cb162b231ea2b640278ca0dbf886f Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 00:48:29 +0300
Subject: [PATCH 16/46] Removed PDF report creation module
---
reporting_modules/pdf_report_creation.py | 185 -----------------------
1 file changed, 185 deletions(-)
delete mode 100644 reporting_modules/pdf_report_creation.py
diff --git a/reporting_modules/pdf_report_creation.py b/reporting_modules/pdf_report_creation.py
deleted file mode 100644
index 0e9fc71..0000000
--- a/reporting_modules/pdf_report_creation.py
+++ /dev/null
@@ -1,185 +0,0 @@
-import sys
-
-sys.path.append('service')
-
-from logs_processing import logging
-import db_processing as db
-import files_processing as fp
-
-try:
- from datetime import datetime
- from jinja2 import Environment, FileSystemLoader
- from xhtml2pdf import pisa
- import os
- from io import BytesIO
- from colorama import Fore, Style
- import sqlite3
-except ImportError as e:
- print(Fore.RED + "Import error appeared. Reason: {}".format(e) + Style.RESET_ALL)
- sys.exit()
-
-
-short_domain = ''
-search_query = []
-
-def create_pdf(template_src, output_dst, context_data):
- env = Environment(loader=FileSystemLoader('.'))
- template = env.get_template(template_src)
- rendered_html = template.render(context_data)
- with open(output_dst, "w+b") as result_file:
- pdf = pisa.pisaDocument(BytesIO(rendered_html.encode('UTF-8')), result_file, encoding='utf-8')
- if pdf.err:
- return False
- return True
-
-def report_assembling(short_domain, url, case_comment, data_array, report_info_array, pagesearch_ui_mark, pagesearch_keyword, end):
- try:
- ip = data_array[0]
- res = data_array[1]
- mails = data_array[2]
- subdomains = data_array[3]
- subdomains_amount = data_array[4]
- social_medias = data_array[5]
- subdomain_mails = data_array[6]
- subdomain_ip = data_array[8]
- issuer = data_array[9]
- subject = data_array[10]
- notBefore = data_array[11]
- notAfter = data_array[12]
- commonName = data_array[13]
- serialNumber = data_array[14]
- mx_records = data_array[15]
- robots_txt_result = data_array[16]
- sitemap_xml_result = data_array[17]
- sitemap_links_status = data_array[18]
- web_servers = data_array[19]
- cms = data_array[20]
- programming_languages = data_array[21]
- web_frameworks = data_array[22]
- analytics = data_array[23]
- javascript_frameworks = data_array[24]
- ports = data_array[25]
- hostnames = data_array[26]
- cpes = data_array[27]
- tags = data_array[28]
- vulns = data_array[29]
- #dorking_status = data_array[30]
- common_socials = data_array[30]
- total_socials = data_array[31]
- ps_emails_return = data_array[32]
- accessible_subdomains = data_array[33]
- emails_amount = data_array[34]
- files_counter = data_array[35]
- cookies_counter = data_array[36]
- api_keys_counter = data_array[37]
- website_elements_counter = data_array[38]
- exposed_passwords_counter = data_array[39]
- total_links_counter = data_array[40]
- accessed_links_counter = data_array[41]
- keywords_messages_list = data_array[42]
- dorking_status = data_array[43]
- dorking_file_path = data_array[44]
- casename = report_info_array[0]
- db_casename = report_info_array[1]
- db_creation_date = report_info_array[2]
- report_folder = report_info_array[3]
- report_ctime = report_info_array[6]
-
- pdf_templates_path = 'service//pdf_report_templates'
-
- if len(ps_emails_return) > 0:
- subdomain_mails += ps_emails_return
- subdomain_mails = list(set(subdomain_mails))
- subdomain_mails_cleaned = []
- substrings = ['m=Base64', 'Ë','Á','Æ','Å','Ä','Ò','Á','ó','ð','É','ë','â']
- for substring in substrings:
- if any(substring in s for s in subdomain_mails):
- subdomain_mails.remove(next(s for s in subdomain_mails if substring in s))
- for email in subdomain_mails:
- new_emails = email.split(', ')
- subdomain_mails_cleaned.extend(new_emails)
- else:
- subdomain_mails = list(set(subdomain_mails))
- subdomain_mails_cleaned = []
- substrings = ['m=Base64', 'Ë','Á','Æ','Å','Ä','Ò','Á','ó','ð','É','ë','â']
- for substring in substrings:
- if any(substring in s for s in subdomain_mails):
- subdomain_mails.remove(next(s for s in subdomain_mails if substring in s))
- for email in subdomain_mails:
- new_emails = email.split(', ')
- subdomain_mails_cleaned.extend(new_emails)
-
- if pagesearch_keyword == 'n':
- template_path = pdf_templates_path + '//default_report_temp.html'
- context = {'sh_domain': short_domain, 'full_url': url, 'ip_address': ip, 'registrar': res['registrar'],
- 'creation_date': res['creation_date'],'expiration_date': res['expiration_date'],
- 'name_servers': ', '.join(res['name_servers']),'org': res['org'],
- 'mails': mails, 'subdomain_mails': subdomain_mails_cleaned, 'subdomain_socials': social_medias,
- 'subdomain_ip': subdomain_ip,
- 'subdomains': subdomains, 'fb_links': common_socials['Facebook'],
- 'tw_links': common_socials['Twitter'], 'inst_links': common_socials['Instagram'],
- 'tg_links': common_socials['Telegram'], 'tt_links': common_socials['TikTok'],
- 'li_links': common_socials['LinkedIn'], 'vk_links': common_socials['VKontakte'],
- 'yt_links': common_socials['YouTube'], 'wc_links': common_socials['WeChat'],
- 'ok_links': common_socials['Odnoklassniki'], 'robots_txt_result': robots_txt_result, 'sitemap_xml_result': sitemap_xml_result,
- 'sitemap_links': sitemap_links_status, 'web_servers': web_servers, 'cms': cms, 'programming_languages': programming_languages, 'web_frameworks': web_frameworks, 'analytics': analytics,
- 'javascript_frameworks': javascript_frameworks,
- 'ctime': report_ctime, 'a_tsf': subdomains_amount, 'mx_records': mx_records, 'issuer': issuer, 'subject': subject, 'notBefore': notBefore, 'notAfter': notAfter,
- 'commonName': commonName, 'serialNumber': serialNumber, 'ports': ports, 'hostnames': hostnames, 'cpes': cpes,
- 'tags': tags, 'vulns': vulns, 'a_tsm': total_socials, 'pagesearch_ui_mark': pagesearch_ui_mark, 'dorking_status': dorking_status}
-
- elif pagesearch_keyword == 'y':
- template_path = pdf_templates_path + '//ps_report_temp.html'
- context = {'sh_domain': short_domain, 'full_url': url, 'ip_address': ip, 'registrar': res['registrar'],
- 'creation_date': res['creation_date'],'expiration_date': res['expiration_date'],
- 'name_servers': ', '.join(res['name_servers']),'org': res['org'],
- 'mails': mails, 'subdomain_mails': subdomain_mails_cleaned, 'subdomain_socials': social_medias,
- 'subdomain_ip': subdomain_ip,
- 'subdomains': subdomains, 'fb_links': common_socials['Facebook'],
- 'tw_links': common_socials['Twitter'], 'inst_links': common_socials['Instagram'],
- 'tg_links': common_socials['Telegram'], 'tt_links': common_socials['TikTok'],
- 'li_links': common_socials['LinkedIn'], 'vk_links': common_socials['VKontakte'],
- 'yt_links': common_socials['YouTube'], 'wc_links': common_socials['WeChat'],
- 'ok_links': common_socials['Odnoklassniki'], 'robots_txt_result': robots_txt_result, 'sitemap_xml_result': sitemap_xml_result,
- 'sitemap_links': sitemap_links_status, 'web_servers': web_servers, 'cms': cms, 'programming_languages': programming_languages, 'web_frameworks': web_frameworks, 'analytics': analytics,
- 'javascript_frameworks': javascript_frameworks,
- 'ctime': report_ctime, 'a_tsf': subdomains_amount, 'mx_records': mx_records, 'issuer': issuer, 'subject': subject, 'notBefore': notBefore, 'notAfter': notAfter,
- 'commonName': commonName, 'serialNumber': serialNumber, 'ports': ports, 'hostnames': hostnames, 'cpes': cpes,
- 'tags': tags, 'vulns': vulns, 'a_tsm': total_socials, 'pagesearch_ui_mark': pagesearch_ui_mark,
- 'acc_sd': accessible_subdomains, 'add_mails': emails_amount, 'extr_files': files_counter, 'cookies': cookies_counter, 'apis': api_keys_counter,
- 'wpe': website_elements_counter, 'exp_pass': exposed_passwords_counter, 'kml': keywords_messages_list, 'dorking_status': dorking_status}
-
- elif pagesearch_keyword == 'si':
- template_path = pdf_templates_path + '//si_report_temp.html'
- context = {'sh_domain': short_domain, 'full_url': url, 'ip_address': ip, 'registrar': res['registrar'],
- 'creation_date': res['creation_date'],'expiration_date': res['expiration_date'],
- 'name_servers': ', '.join(res['name_servers']),'org': res['org'],
- 'mails': mails, 'subdomain_mails': subdomain_mails_cleaned, 'subdomain_socials': social_medias,
- 'subdomain_ip': subdomain_ip,
- 'subdomains': subdomains, 'fb_links': common_socials['Facebook'],
- 'tw_links': common_socials['Twitter'], 'inst_links': common_socials['Instagram'],
- 'tg_links': common_socials['Telegram'], 'tt_links': common_socials['TikTok'],
- 'li_links': common_socials['LinkedIn'], 'vk_links': common_socials['VKontakte'],
- 'yt_links': common_socials['YouTube'], 'wc_links': common_socials['WeChat'],
- 'ok_links': common_socials['Odnoklassniki'], 'robots_txt_result': robots_txt_result, 'sitemap_xml_result': sitemap_xml_result,
- 'sitemap_links': sitemap_links_status, 'web_servers': web_servers, 'cms': cms, 'programming_languages': programming_languages, 'web_frameworks': web_frameworks, 'analytics': analytics,
- 'javascript_frameworks': javascript_frameworks,
- 'ctime': report_ctime, 'a_tsf': subdomains_amount, 'mx_records': mx_records, 'issuer': issuer, 'subject': subject, 'notBefore': notBefore, 'notAfter': notAfter,
- 'commonName': commonName, 'serialNumber': serialNumber, 'ports': ports, 'hostnames': hostnames, 'cpes': cpes,
- 'tags': tags, 'vulns': vulns, 'a_tsm': total_socials, 'pagesearch_ui_mark': pagesearch_ui_mark,
- 'a_sml': total_links_counter, 'acc_sml': accessed_links_counter, 'add_mails': emails_amount, 'dorking_status': dorking_status}
-
- pdf_report_name = report_folder + '//' + casename
- if create_pdf(template_path, pdf_report_name, context):
- print(Fore.GREEN + "PDF report for {} case was created at {}".format(''.join(short_domain), report_ctime) + Style.RESET_ALL)
- print(Fore.GREEN + f"Scan elapsed time: {end}" + Style.RESET_ALL)
- if dorking_status != 'Google Dorking mode was not selected for this scan':
- with open(dorking_file_path, 'r') as df:
- dorking_content = df.read()
- robots_content, sitemap_content, sitemap_links_content, dorking_content = fp.get_db_columns(report_folder) #, dorking_content was removed here
- pdf_blob = fp.get_blob(pdf_report_name)
- db.insert_blob('PDF', pdf_blob, db_casename, db_creation_date, case_comment, robots_content, sitemap_content, sitemap_links_content, dorking_content) #, dorking_content was removed here
- except Exception as e:
- print(Fore.RED + 'Unable to create PDF report. See journal for details')
- logging.error(f'PDF REPORT CREATION: ERROR. REASON: {e}')
-
From 18b290ae75e8c36b21ea7110323f762f903e47d2 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 00:51:28 +0300
Subject: [PATCH 17/46] Removed deprecated HTML report template
---
.../pdf_report_templates/ps_report_temp.html | 221 ------------------
1 file changed, 221 deletions(-)
delete mode 100644 service/pdf_report_templates/ps_report_temp.html
diff --git a/service/pdf_report_templates/ps_report_temp.html b/service/pdf_report_templates/ps_report_temp.html
deleted file mode 100644
index 7efb843..0000000
--- a/service/pdf_report_templates/ps_report_temp.html
+++ /dev/null
@@ -1,221 +0,0 @@
-
-
-
-
-
-
- Open Source Information Research Report
- {{org}}
-
- GENERAL SCAN INFORMATION
- Total subdomains found: {{a_tsf}}
- Total social media links found: {{a_tsm}}
- Status of robots.txt extraction: {{robots_txt_result}}
- Status of sitemap.xml extraction: {{sitemap_xml_result}}
- Status of sitemap.xml links extraction: {{sitemap_links}}
- Google Dorking status: {{dorking_status}}
- PageSearch conduction: {{pagesearch_ui_mark}}
- Report creation time: {{ctime}}
-
- Since user chose to conduct PageSearch, you are presented with following additional information:
- Total subdomains checked: {{a_tsf}}
- Amount of accessible subdomains: {{acc_sd}}
- Amount of additional e-mails found: {{add_mails}}
- Amount of extracted files: {{extr_files}}
- Found cookies with values: {{cookies}}
- Found API keys: {{apis}}
- Found different web page elements: {{wpe}}
- Found exposed passwords: {{exp_pass}}
- You can find more PageSearch scan results in the end of this report
-
-
-
- WHOIS INFORMATION
- Domain: {{sh_domain}}
- Full URL: {{full_url}}
- IP address: {{ip_address}}
- Registrar: {{registrar}}
- Creation date: {{creation_date}}
- Expiration date: {{expiration_date}}
- Organization name: {{org}}
- Contact e-mails: {{mails}}
-
-
- SOCIAL MEDIAS SEARCH RESULTS
-
-
- FACEBOOK:
- {% for link in fb_links %}
- - => {{ link }}
- {% endfor %}
- TWITTER:
-
- {% for link in tw_links %}
- - => {{ link }}
- {% endfor %}
-
- INSTAGRAM:
-
- {% for link in inst_links %}
- - => {{ link }}
- {% endfor %}
-
- TELEGRAM:
-
- {% for link in tg_links %}
- - => {{ link }}
- {% endfor %}
-
- TIKTOK:
-
- {% for link in tt_links %}
- - => {{ link }}
- {% endfor %}
-
- LINKEDIN:
-
- {% for link in li_links %}
- - => {{ link }}
- {% endfor %}
-
- VKONTAKTE:
-
- {% for link in vk_links %}
- - => {{ link }}
- {% endfor %}
-
- YOUTUBE:
-
- {% for link in yt_links %}
- - => {{ link }}
- {% endfor %}
-
- ODNOKLASSNIKI:
-
- {% for link in ok_links %}
- - => {{ link }}
- {% endfor %}
-
- WECHAT:
-
- {% for link in wc_links %}
- - => {{ link }}
- {% endfor %}
-
-
-
- SUBDOMAINS ANALYSIS RESULTS
- Found subdomains:
-
- {% for sd in subdomains %}
- - => {{ sd }}
- {% endfor %}
-
- Subdomains IP addresses:
-
- {% for sdip in subdomain_ip %}
- - => {{ sdip }}
- {% endfor %}
-
- Subdomains e-mails:
-
- {% for smails in subdomain_mails %}
- - => {{ smails }}
- {% endfor %}
-
-
-
- DNS SCAN RESULTS
- Name servers: {{name_servers}}
- MX addresses: {{mx_records}}
-
- SSL CERTIFICATE INFORMATION
- Issuer: {{issuer}}
- Subject: {{subject}}
- Not before: {{notBefore}}
- Not after: {{notAfter}}
- Certificate name: {{commonName}}
- Certificate serial number: {{serialNumber}}
-
-
- INTERNETDB API SEARCH RESULTS
- Open ports:
-
- {% for op in ports %}
- - => {{ op }}
- {% endfor %}
-
Hostnames:
-
- {% for hn in hostnames %}
- - => {{ hn }}
- {% endfor %}
-
Tags:
-
- {% for tag in tags %}
- - => {{ tag }}
- {% endfor %}
-
Potential vulnerabilities:
-
- {% for vuln in vulns %}
- - => {{ vuln }}
- {% endfor %}
-
Common Platform Enumeration:
-
- {% for cpe in cpes %}
- - => {{ cpe }}
- {% endfor %}
-
- WEBSITE TECHNOLOGIES SEARCH RESULTS
- Web servers:
-
- {% for ws in web_servers %}
- - => {{ ws }}
- {% endfor %}
-
- CMS:
-
- {% for cm in cms %}
- - => {{ cm }}
- {% endfor %}
-
- Used programming languages:
-
- {% for pl in programming_languages %}
- - => {{ pl }}
- {% endfor %}
-
- Used web frameworks:
-
- {% for wf in web_frameworks %}
- - => {{ wf }}
- {% endfor %}
-
- Analytics service:
-
- {% for analytic in analytics %}
- - => {{ analytic }}
- {% endfor %}
-
- Used JavaScript frameworks:
-
- {% for jsf in javascript_frameworks %}
- - => {{ jsf }}
- {% endfor %}
-
-
-
-
- PAGESEARCH SCAN RESULTS
- Found keywords in PDFs:
-
- {% for km in kml %}
- - => {{ km }}
- {% endfor %}
-
-
- Created using DPULSE software by OSINT-TECHNOLOGIES
- Visit our web-pages:
-
- - https://github.com/OSINT-TECHNOLOGIES
- - https://pypi.org/project/dpulse/
-
From 88533c8c79540a4f610e3c17247c1d294008aca2 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 00:51:50 +0300
Subject: [PATCH 18/46] Removed deprecated HTML report template
---
.../pdf_report_templates/si_report_temp.html | 208 ------------------
1 file changed, 208 deletions(-)
delete mode 100644 service/pdf_report_templates/si_report_temp.html
diff --git a/service/pdf_report_templates/si_report_temp.html b/service/pdf_report_templates/si_report_temp.html
deleted file mode 100644
index 4262fbb..0000000
--- a/service/pdf_report_templates/si_report_temp.html
+++ /dev/null
@@ -1,208 +0,0 @@
-
-
-
-
-
-
- Open Source Information Research Report
- {{org}}
-
- GENERAL SCAN INFORMATION
- Total subdomains found: {{a_tsf}}
- Total social media links found: {{a_tsm}}
- Status of robots.txt extraction: {{robots_txt_result}}
- Status of sitemap.xml extraction: {{sitemap_xml_result}}
- Status of sitemap.xml links extraction: {{sitemap_links}}
- Google Dorking status: {{dorking_status}}
- PageSearch conduction: {{pagesearch_ui_mark}}
- Report creation time: {{ctime}}
-
- Since user chose to conduct PageSearch Sitemap Inspection, you are presented with following additional information:
- Total sitemap links checked: {{a_sml}}
- Amount of accessible sitemap links: {{acc_sml}}
- Amount of additional e-mails found: {{add_mails}}
-
-
- WHOIS INFORMATION
- Domain: {{sh_domain}}
- Full URL: {{full_url}}
- IP address: {{ip_address}}
- Registrar: {{registrar}}
- Creation date: {{creation_date}}
- Expiration date: {{expiration_date}}
- Organization name: {{org}}
- Contact e-mails: {{mails}}
-
-
- SOCIAL MEDIAS SEARCH RESULTS
-
-
- FACEBOOK:
- {% for link in fb_links %}
- - => {{ link }}
- {% endfor %}
- TWITTER:
-
- {% for link in tw_links %}
- - => {{ link }}
- {% endfor %}
-
- INSTAGRAM:
-
- {% for link in inst_links %}
- - => {{ link }}
- {% endfor %}
-
- TELEGRAM:
-
- {% for link in tg_links %}
- - => {{ link }}
- {% endfor %}
-
- TIKTOK:
-
- {% for link in tt_links %}
- - => {{ link }}
- {% endfor %}
-
- LINKEDIN:
-
- {% for link in li_links %}
- - => {{ link }}
- {% endfor %}
-
- VKONTAKTE:
-
- {% for link in vk_links %}
- - => {{ link }}
- {% endfor %}
-
- YOUTUBE:
-
- {% for link in yt_links %}
- - => {{ link }}
- {% endfor %}
-
- ODNOKLASSNIKI:
-
- {% for link in ok_links %}
- - => {{ link }}
- {% endfor %}
-
- WECHAT:
-
- {% for link in wc_links %}
- - => {{ link }}
- {% endfor %}
-
-
-
- SUBDOMAINS ANALYSIS RESULTS
- Found subdomains:
-
- {% for sd in subdomains %}
- - => {{ sd }}
- {% endfor %}
-
- Subdomains IP addresses:
-
- {% for sdip in subdomain_ip %}
- - => {{ sdip }}
- {% endfor %}
-
- Subdomains e-mails:
-
- {% for smails in subdomain_mails %}
- - => {{ smails }}
- {% endfor %}
-
-
-
- DNS SCAN RESULTS
- Name servers: {{name_servers}}
- MX addresses: {{mx_records}}
-
- SSL CERTIFICATE INFORMATION
- Issuer: {{issuer}}
- Subject: {{subject}}
- Not before: {{notBefore}}
- Not after: {{notAfter}}
- Certificate name: {{commonName}}
- Certificate serial number: {{serialNumber}}
-
-
- INTERNETDB API SEARCH RESULTS
- Open ports:
-
- {% for op in ports %}
- - => {{ op }}
- {% endfor %}
-
Hostnames:
-
- {% for hn in hostnames %}
- - => {{ hn }}
- {% endfor %}
-
Tags:
-
- {% for tag in tags %}
- - => {{ tag }}
- {% endfor %}
-
Potential vulnerabilities:
-
- {% for vuln in vulns %}
- - => {{ vuln }}
- {% endfor %}
-
Common Platform Enumeration:
-
- {% for cpe in cpes %}
- - => {{ cpe }}
- {% endfor %}
-
- WEBSITE TECHNOLOGIES SEARCH RESULTS
- Web servers:
-
- {% for ws in web_servers %}
- - => {{ ws }}
- {% endfor %}
-
- CMS:
-
- {% for cm in cms %}
- - => {{ cm }}
- {% endfor %}
-
- Used programming languages:
-
- {% for pl in programming_languages %}
- - => {{ pl }}
- {% endfor %}
-
- Used web frameworks:
-
- {% for wf in web_frameworks %}
- - => {{ wf }}
- {% endfor %}
-
- Analytics service:
-
- {% for analytic in analytics %}
- - => {{ analytic }}
- {% endfor %}
-
- Used JavaScript frameworks:
-
- {% for jsf in javascript_frameworks %}
- - => {{ jsf }}
- {% endfor %}
-
-
-
-
-
-
- Created using DPULSE software by OSINT-TECHNOLOGIES
- Visit our web-pages:
-
- - https://github.com/OSINT-TECHNOLOGIES
- - https://pypi.org/project/dpulse/
-
From 0e1ddf611b8e151fe5c533f786580e69f8ff2bdb Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 00:52:28 +0300
Subject: [PATCH 19/46] Removed PDF report mention in README
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 38e20a6..81558dc 100644
--- a/README.md
+++ b/README.md
@@ -78,7 +78,7 @@ DPULSE is a software solution for conducting OSINT research in relation to a cer
5. ***API scan:*** extended domain research function with prepared functions for 3rd party APIs usage. Currently DPULSE supports VirusTotal API (for brief domain information gathering) and SecurityTrails API (deep subdomains and DNS enumeration)
-Finally, DPULSE compiles all found data into an easy-to-read PDF, HTML or XLSX report by category. It also saves all information about scan in local report storage database, which can be restored later.
+Finally, DPULSE compiles all found data into an easy-to-read HTML or XLSX report by category. It also saves all information about scan in local report storage database, which can be restored later.
# How to install and run DPULSE
From 040592a3a5c230b6a08c6dc56ee9751a5b71d998 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 00:53:37 +0300
Subject: [PATCH 20/46] Removed PDF report handling
---
service/db_processing.py | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/service/db_processing.py b/service/db_processing.py
index 9d52973..2a49167 100644
--- a/service/db_processing.py
+++ b/service/db_processing.py
@@ -76,10 +76,7 @@ def db_report_recreate(extracted_folder_name, id_to_extract):
blob_data = blob[0]
cursor.execute("SELECT report_file_extension FROM report_storage WHERE id=?", (id_to_extract,))
report_file_extension = (cursor.fetchone())[0]
- if str(report_file_extension) == 'PDF':
- with open(extracted_folder_name + '//report_extracted.pdf', 'wb') as file:
- file.write(blob_data)
- elif str(report_file_extension) == 'XLSX':
+ if str(report_file_extension) == 'XLSX':
with open(extracted_folder_name + '//report_extracted.xlsx', 'wb') as file:
file.write(blob_data)
elif str(report_file_extension) == 'HTML':
From a5a456db3bbf5540985932b365c046357207f831 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 00:54:34 +0300
Subject: [PATCH 21/46] Removed xhtml2pdf requirement
---
requirements.txt | 1 -
1 file changed, 1 deletion(-)
diff --git a/requirements.txt b/requirements.txt
index d631f4c..8a6b94d 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -15,6 +15,5 @@ MechanicalSoup==1.3.0
builtwith==1.3.4
dnspython==2.6.1
lxml==5.2.2
-xhtml2pdf==0.2.16
openpyxl==3.1.2
PyMuPDF==1.24.7
From e907af58fd7822beb696452904baf83e29c77a3a Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 00:55:07 +0300
Subject: [PATCH 22/46] Removed xhtml2pdf requirement
---
pyproject.toml | 1 -
1 file changed, 1 deletion(-)
diff --git a/pyproject.toml b/pyproject.toml
index e2a5d3f..a44d03b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -40,7 +40,6 @@ builtwith = "1.3.4"
dnspython = "2.6.1"
lxml = "5.2.2"
openpyxl = "3.1.2"
-xhtml2pdf = "0.2.16"
PyMuPDF = "1.24.7"
[tool.poetry.scripts]
From a5dc85175623523ad317d7a4277dfc8d2e0a8d7d Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 00:55:46 +0300
Subject: [PATCH 23/46] Re-generated poetry.lock without xhtml2pdf requirement
---
poetry.lock | 775 +---------------------------------------------------
1 file changed, 1 insertion(+), 774 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index 1cd4e33..8f6def7 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,30 +1,5 @@
# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
-[[package]]
-name = "arabic-reshaper"
-version = "3.0.0"
-description = "Reconstruct Arabic sentences to be used in applications that do not support Arabic"
-optional = false
-python-versions = "*"
-files = [
- {file = "arabic_reshaper-3.0.0-py3-none-any.whl", hash = "sha256:3f71d5034bb694204a239a6f1ebcf323ac3c5b059de02259235e2016a1a5e2dc"},
- {file = "arabic_reshaper-3.0.0.tar.gz", hash = "sha256:ffcd13ba5ec007db71c072f5b23f420da92ac7f268512065d49e790e62237099"},
-]
-
-[package.extras]
-with-fonttools = ["fonttools (>=4.0)"]
-
-[[package]]
-name = "asn1crypto"
-version = "1.5.1"
-description = "Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP"
-optional = false
-python-versions = "*"
-files = [
- {file = "asn1crypto-1.5.1-py2.py3-none-any.whl", hash = "sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67"},
- {file = "asn1crypto-1.5.1.tar.gz", hash = "sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c"},
-]
-
[[package]]
name = "beautifulsoup4"
version = "4.12.2"
@@ -67,96 +42,6 @@ files = [
{file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"},
]
-[[package]]
-name = "cffi"
-version = "1.17.1"
-description = "Foreign Function Interface for Python calling C code."
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"},
- {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"},
- {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"},
- {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"},
- {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"},
- {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"},
- {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"},
- {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"},
- {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"},
- {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"},
- {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"},
- {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"},
- {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"},
- {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"},
- {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"},
- {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"},
- {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"},
- {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"},
- {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"},
- {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"},
- {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"},
- {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"},
- {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"},
- {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"},
- {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"},
- {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"},
- {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"},
- {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"},
- {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"},
- {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"},
- {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"},
- {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"},
- {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"},
- {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"},
- {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"},
- {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"},
- {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"},
- {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"},
- {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"},
- {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"},
- {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"},
- {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"},
- {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"},
- {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"},
- {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"},
- {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"},
- {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"},
- {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"},
- {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"},
- {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"},
- {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"},
- {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"},
- {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"},
- {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"},
- {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"},
- {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"},
- {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"},
- {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"},
- {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"},
- {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"},
- {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"},
- {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"},
- {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"},
- {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"},
- {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"},
- {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"},
- {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"},
-]
-
-[package.dependencies]
-pycparser = "*"
-
-[[package]]
-name = "chardet"
-version = "5.2.0"
-description = "Universal encoding detector for Python 3"
-optional = false
-python-versions = ">=3.7"
-files = [
- {file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"},
- {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"},
-]
-
[[package]]
name = "charset-normalizer"
version = "3.3.2"
@@ -256,20 +141,6 @@ files = [
{file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
]
-[[package]]
-name = "click"
-version = "8.1.7"
-description = "Composable command line interface toolkit"
-optional = false
-python-versions = ">=3.7"
-files = [
- {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
- {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
-]
-
-[package.dependencies]
-colorama = {version = "*", markers = "platform_system == \"Windows\""}
-
[[package]]
name = "colorama"
version = "0.4.6"
@@ -281,74 +152,6 @@ files = [
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
]
-[[package]]
-name = "cryptography"
-version = "43.0.3"
-description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
-optional = false
-python-versions = ">=3.7"
-files = [
- {file = "cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e"},
- {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e"},
- {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e1ce50266f4f70bf41a2c6dc4358afadae90e2a1e5342d3c08883df1675374f"},
- {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:443c4a81bb10daed9a8f334365fe52542771f25aedaf889fd323a853ce7377d6"},
- {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:74f57f24754fe349223792466a709f8e0c093205ff0dca557af51072ff47ab18"},
- {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9762ea51a8fc2a88b70cf2995e5675b38d93bf36bd67d91721c309df184f49bd"},
- {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:81ef806b1fef6b06dcebad789f988d3b37ccaee225695cf3e07648eee0fc6b73"},
- {file = "cryptography-43.0.3-cp37-abi3-win32.whl", hash = "sha256:cbeb489927bd7af4aa98d4b261af9a5bc025bd87f0e3547e11584be9e9427be2"},
- {file = "cryptography-43.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:f46304d6f0c6ab8e52770addfa2fc41e6629495548862279641972b6215451cd"},
- {file = "cryptography-43.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ac43ae87929a5982f5948ceda07001ee5e83227fd69cf55b109144938d96984"},
- {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5"},
- {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4"},
- {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7"},
- {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405"},
- {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16"},
- {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73"},
- {file = "cryptography-43.0.3-cp39-abi3-win32.whl", hash = "sha256:d56e96520b1020449bbace2b78b603442e7e378a9b3bd68de65c782db1507995"},
- {file = "cryptography-43.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362"},
- {file = "cryptography-43.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d03b5621a135bffecad2c73e9f4deb1a0f977b9a8ffe6f8e002bf6c9d07b918c"},
- {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a2a431ee15799d6db9fe80c82b055bae5a752bef645bba795e8e52687c69efe3"},
- {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:281c945d0e28c92ca5e5930664c1cefd85efe80e5c0d2bc58dd63383fda29f83"},
- {file = "cryptography-43.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f18c716be16bc1fea8e95def49edf46b82fccaa88587a45f8dc0ff6ab5d8e0a7"},
- {file = "cryptography-43.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4a02ded6cd4f0a5562a8887df8b3bd14e822a90f97ac5e544c162899bc467664"},
- {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:53a583b6637ab4c4e3591a15bc9db855b8d9dee9a669b550f311480acab6eb08"},
- {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1ec0bcf7e17c0c5669d881b1cd38c4972fade441b27bda1051665faaa89bdcaa"},
- {file = "cryptography-43.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2ce6fae5bdad59577b44e4dfed356944fbf1d925269114c28be377692643b4ff"},
- {file = "cryptography-43.0.3.tar.gz", hash = "sha256:315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805"},
-]
-
-[package.dependencies]
-cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""}
-
-[package.extras]
-docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"]
-docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"]
-nox = ["nox"]
-pep8test = ["check-sdist", "click", "mypy", "ruff"]
-sdist = ["build"]
-ssh = ["bcrypt (>=3.1.5)"]
-test = ["certifi", "cryptography-vectors (==43.0.3)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"]
-test-randomorder = ["pytest-randomly"]
-
-[[package]]
-name = "cssselect2"
-version = "0.7.0"
-description = "CSS selectors for Python ElementTree"
-optional = false
-python-versions = ">=3.7"
-files = [
- {file = "cssselect2-0.7.0-py3-none-any.whl", hash = "sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969"},
- {file = "cssselect2-0.7.0.tar.gz", hash = "sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a"},
-]
-
-[package.dependencies]
-tinycss2 = "*"
-webencodings = "*"
-
-[package.extras]
-doc = ["sphinx", "sphinx_rtd_theme"]
-test = ["flake8", "isort", "pytest"]
-
[[package]]
name = "dnspython"
version = "2.6.1"
@@ -380,27 +183,6 @@ files = [
{file = "et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54"},
]
-[[package]]
-name = "html5lib"
-version = "1.1"
-description = "HTML parser based on the WHATWG HTML specification"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-files = [
- {file = "html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d"},
- {file = "html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"},
-]
-
-[package.dependencies]
-six = ">=1.9"
-webencodings = "*"
-
-[package.extras]
-all = ["chardet (>=2.2)", "genshi", "lxml"]
-chardet = ["chardet (>=2.2)"]
-genshi = ["genshi"]
-lxml = ["lxml"]
-
[[package]]
name = "idna"
version = "3.7"
@@ -721,123 +503,6 @@ files = [
[package.dependencies]
et-xmlfile = "*"
-[[package]]
-name = "oscrypto"
-version = "1.3.0"
-description = "TLS (SSL) sockets, key generation, encryption, decryption, signing, verification and KDFs using the OS crypto libraries. Does not require a compiler, and relies on the OS for patching. Works on Windows, OS X and Linux/BSD."
-optional = false
-python-versions = "*"
-files = [
- {file = "oscrypto-1.3.0-py2.py3-none-any.whl", hash = "sha256:2b2f1d2d42ec152ca90ccb5682f3e051fb55986e1b170ebde472b133713e7085"},
- {file = "oscrypto-1.3.0.tar.gz", hash = "sha256:6f5fef59cb5b3708321db7cca56aed8ad7e662853351e7991fcf60ec606d47a4"},
-]
-
-[package.dependencies]
-asn1crypto = ">=1.5.1"
-
-[[package]]
-name = "pillow"
-version = "11.0.0"
-description = "Python Imaging Library (Fork)"
-optional = false
-python-versions = ">=3.9"
-files = [
- {file = "pillow-11.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:6619654954dc4936fcff82db8eb6401d3159ec6be81e33c6000dfd76ae189947"},
- {file = "pillow-11.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b3c5ac4bed7519088103d9450a1107f76308ecf91d6dabc8a33a2fcfb18d0fba"},
- {file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a65149d8ada1055029fcb665452b2814fe7d7082fcb0c5bed6db851cb69b2086"},
- {file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88a58d8ac0cc0e7f3a014509f0455248a76629ca9b604eca7dc5927cc593c5e9"},
- {file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c26845094b1af3c91852745ae78e3ea47abf3dbcd1cf962f16b9a5fbe3ee8488"},
- {file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:1a61b54f87ab5786b8479f81c4b11f4d61702830354520837f8cc791ebba0f5f"},
- {file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:674629ff60030d144b7bca2b8330225a9b11c482ed408813924619c6f302fdbb"},
- {file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:598b4e238f13276e0008299bd2482003f48158e2b11826862b1eb2ad7c768b97"},
- {file = "pillow-11.0.0-cp310-cp310-win32.whl", hash = "sha256:9a0f748eaa434a41fccf8e1ee7a3eed68af1b690e75328fd7a60af123c193b50"},
- {file = "pillow-11.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:a5629742881bcbc1f42e840af185fd4d83a5edeb96475a575f4da50d6ede337c"},
- {file = "pillow-11.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:ee217c198f2e41f184f3869f3e485557296d505b5195c513b2bfe0062dc537f1"},
- {file = "pillow-11.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1c1d72714f429a521d8d2d018badc42414c3077eb187a59579f28e4270b4b0fc"},
- {file = "pillow-11.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:499c3a1b0d6fc8213519e193796eb1a86a1be4b1877d678b30f83fd979811d1a"},
- {file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8b2351c85d855293a299038e1f89db92a2f35e8d2f783489c6f0b2b5f3fe8a3"},
- {file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f4dba50cfa56f910241eb7f883c20f1e7b1d8f7d91c750cd0b318bad443f4d5"},
- {file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5ddbfd761ee00c12ee1be86c9c0683ecf5bb14c9772ddbd782085779a63dd55b"},
- {file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:45c566eb10b8967d71bf1ab8e4a525e5a93519e29ea071459ce517f6b903d7fa"},
- {file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b4fd7bd29610a83a8c9b564d457cf5bd92b4e11e79a4ee4716a63c959699b306"},
- {file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cb929ca942d0ec4fac404cbf520ee6cac37bf35be479b970c4ffadf2b6a1cad9"},
- {file = "pillow-11.0.0-cp311-cp311-win32.whl", hash = "sha256:006bcdd307cc47ba43e924099a038cbf9591062e6c50e570819743f5607404f5"},
- {file = "pillow-11.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:52a2d8323a465f84faaba5236567d212c3668f2ab53e1c74c15583cf507a0291"},
- {file = "pillow-11.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:16095692a253047fe3ec028e951fa4221a1f3ed3d80c397e83541a3037ff67c9"},
- {file = "pillow-11.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2c0a187a92a1cb5ef2c8ed5412dd8d4334272617f532d4ad4de31e0495bd923"},
- {file = "pillow-11.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:084a07ef0821cfe4858fe86652fffac8e187b6ae677e9906e192aafcc1b69903"},
- {file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8069c5179902dcdce0be9bfc8235347fdbac249d23bd90514b7a47a72d9fecf4"},
- {file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f02541ef64077f22bf4924f225c0fd1248c168f86e4b7abdedd87d6ebaceab0f"},
- {file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fcb4621042ac4b7865c179bb972ed0da0218a076dc1820ffc48b1d74c1e37fe9"},
- {file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:00177a63030d612148e659b55ba99527803288cea7c75fb05766ab7981a8c1b7"},
- {file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8853a3bf12afddfdf15f57c4b02d7ded92c7a75a5d7331d19f4f9572a89c17e6"},
- {file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3107c66e43bda25359d5ef446f59c497de2b5ed4c7fdba0894f8d6cf3822dafc"},
- {file = "pillow-11.0.0-cp312-cp312-win32.whl", hash = "sha256:86510e3f5eca0ab87429dd77fafc04693195eec7fd6a137c389c3eeb4cfb77c6"},
- {file = "pillow-11.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:8ec4a89295cd6cd4d1058a5e6aec6bf51e0eaaf9714774e1bfac7cfc9051db47"},
- {file = "pillow-11.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:27a7860107500d813fcd203b4ea19b04babe79448268403172782754870dac25"},
- {file = "pillow-11.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcd1fb5bb7b07f64c15618c89efcc2cfa3e95f0e3bcdbaf4642509de1942a699"},
- {file = "pillow-11.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e038b0745997c7dcaae350d35859c9715c71e92ffb7e0f4a8e8a16732150f38"},
- {file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ae08bd8ffc41aebf578c2af2f9d8749d91f448b3bfd41d7d9ff573d74f2a6b2"},
- {file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d69bfd8ec3219ae71bcde1f942b728903cad25fafe3100ba2258b973bd2bc1b2"},
- {file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:61b887f9ddba63ddf62fd02a3ba7add935d053b6dd7d58998c630e6dbade8527"},
- {file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:c6a660307ca9d4867caa8d9ca2c2658ab685de83792d1876274991adec7b93fa"},
- {file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:73e3a0200cdda995c7e43dd47436c1548f87a30bb27fb871f352a22ab8dcf45f"},
- {file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fba162b8872d30fea8c52b258a542c5dfd7b235fb5cb352240c8d63b414013eb"},
- {file = "pillow-11.0.0-cp313-cp313-win32.whl", hash = "sha256:f1b82c27e89fffc6da125d5eb0ca6e68017faf5efc078128cfaa42cf5cb38798"},
- {file = "pillow-11.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:8ba470552b48e5835f1d23ecb936bb7f71d206f9dfeee64245f30c3270b994de"},
- {file = "pillow-11.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:846e193e103b41e984ac921b335df59195356ce3f71dcfd155aa79c603873b84"},
- {file = "pillow-11.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4ad70c4214f67d7466bea6a08061eba35c01b1b89eaa098040a35272a8efb22b"},
- {file = "pillow-11.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6ec0d5af64f2e3d64a165f490d96368bb5dea8b8f9ad04487f9ab60dc4bb6003"},
- {file = "pillow-11.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c809a70e43c7977c4a42aefd62f0131823ebf7dd73556fa5d5950f5b354087e2"},
- {file = "pillow-11.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:4b60c9520f7207aaf2e1d94de026682fc227806c6e1f55bba7606d1c94dd623a"},
- {file = "pillow-11.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1e2688958a840c822279fda0086fec1fdab2f95bf2b717b66871c4ad9859d7e8"},
- {file = "pillow-11.0.0-cp313-cp313t-win32.whl", hash = "sha256:607bbe123c74e272e381a8d1957083a9463401f7bd01287f50521ecb05a313f8"},
- {file = "pillow-11.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c39ed17edea3bc69c743a8dd3e9853b7509625c2462532e62baa0732163a904"},
- {file = "pillow-11.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:75acbbeb05b86bc53cbe7b7e6fe00fbcf82ad7c684b3ad82e3d711da9ba287d3"},
- {file = "pillow-11.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2e46773dc9f35a1dd28bd6981332fd7f27bec001a918a72a79b4133cf5291dba"},
- {file = "pillow-11.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2679d2258b7f1192b378e2893a8a0a0ca472234d4c2c0e6bdd3380e8dfa21b6a"},
- {file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eda2616eb2313cbb3eebbe51f19362eb434b18e3bb599466a1ffa76a033fb916"},
- {file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ec184af98a121fb2da42642dea8a29ec80fc3efbaefb86d8fdd2606619045d"},
- {file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:8594f42df584e5b4bb9281799698403f7af489fba84c34d53d1c4bfb71b7c4e7"},
- {file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:c12b5ae868897c7338519c03049a806af85b9b8c237b7d675b8c5e089e4a618e"},
- {file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:70fbbdacd1d271b77b7721fe3cdd2d537bbbd75d29e6300c672ec6bb38d9672f"},
- {file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5178952973e588b3f1360868847334e9e3bf49d19e169bbbdfaf8398002419ae"},
- {file = "pillow-11.0.0-cp39-cp39-win32.whl", hash = "sha256:8c676b587da5673d3c75bd67dd2a8cdfeb282ca38a30f37950511766b26858c4"},
- {file = "pillow-11.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:94f3e1780abb45062287b4614a5bc0874519c86a777d4a7ad34978e86428b8dd"},
- {file = "pillow-11.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:290f2cc809f9da7d6d622550bbf4c1e57518212da51b6a30fe8e0a270a5b78bd"},
- {file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1187739620f2b365de756ce086fdb3604573337cc28a0d3ac4a01ab6b2d2a6d2"},
- {file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fbbcb7b57dc9c794843e3d1258c0fbf0f48656d46ffe9e09b63bbd6e8cd5d0a2"},
- {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d203af30149ae339ad1b4f710d9844ed8796e97fda23ffbc4cc472968a47d0b"},
- {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21a0d3b115009ebb8ac3d2ebec5c2982cc693da935f4ab7bb5c8ebe2f47d36f2"},
- {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:73853108f56df97baf2bb8b522f3578221e56f646ba345a372c78326710d3830"},
- {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e58876c91f97b0952eb766123bfef372792ab3f4e3e1f1a2267834c2ab131734"},
- {file = "pillow-11.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:224aaa38177597bb179f3ec87eeefcce8e4f85e608025e9cfac60de237ba6316"},
- {file = "pillow-11.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5bd2d3bdb846d757055910f0a59792d33b555800813c3b39ada1829c372ccb06"},
- {file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:375b8dd15a1f5d2feafff536d47e22f69625c1aa92f12b339ec0b2ca40263273"},
- {file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:daffdf51ee5db69a82dd127eabecce20729e21f7a3680cf7cbb23f0829189790"},
- {file = "pillow-11.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7326a1787e3c7b0429659e0a944725e1b03eeaa10edd945a86dead1913383944"},
- {file = "pillow-11.0.0.tar.gz", hash = "sha256:72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739"},
-]
-
-[package.extras]
-docs = ["furo", "olefile", "sphinx (>=8.1)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"]
-fpx = ["olefile"]
-mic = ["olefile"]
-tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
-typing = ["typing-extensions"]
-xmp = ["defusedxml"]
-
-[[package]]
-name = "pycparser"
-version = "2.22"
-description = "C parser in Python"
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"},
- {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"},
-]
-
[[package]]
name = "pyfiglet"
version = "1.0.2"
@@ -863,64 +528,6 @@ files = [
[package.extras]
windows-terminal = ["colorama (>=0.4.6)"]
-[[package]]
-name = "pyhanko"
-version = "0.25.1"
-description = "Tools for stamping and signing PDF files"
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "pyHanko-0.25.1-py3-none-any.whl", hash = "sha256:045a0999c5e3b22caad86e4fa11ef488c3fd7f5b5886c045ca11ffa24254c33c"},
- {file = "pyhanko-0.25.1.tar.gz", hash = "sha256:8718d9046d442589eef6dd6973110fa5e385555cc4a6b2b1aeca3c2f3b6742e9"},
-]
-
-[package.dependencies]
-asn1crypto = ">=1.5.1"
-click = ">=8.1.3"
-cryptography = ">=42.0.1"
-pyhanko-certvalidator = ">=0.26.2,<0.27"
-pyyaml = ">=6.0"
-qrcode = ">=7.3.1"
-requests = ">=2.31.0"
-tzlocal = ">=4.3"
-
-[package.extras]
-async-http = ["aiohttp (>=3.9.0,<3.10.0)"]
-docs = ["sphinx", "sphinx-rtd-theme"]
-etsi = ["xsdata (>=24.4,<25.0)"]
-extra-pubkey-algs = ["oscrypto (>=1.2.1)"]
-image-support = ["Pillow (>=7.2.0)", "python-barcode (==0.15.1)"]
-live-test = ["certomancer-csc-dummy (==0.3.0)", "certomancer[web-api] (==0.12.*)", "pyHanko[async-http,extra-pubkey-algs,testing-basic,xmp]", "pytest-aiohttp (>=1.0.4,<1.1.0)", "pytest-cov (>=4.0,<5.1)"]
-mypy = ["pyHanko[async-http,etsi,extra-pubkey-algs,image-support,opentype,pkcs11,xmp]", "types-PyYAML", "types-python-dateutil", "types-requests", "types-tzlocal"]
-opentype = ["fonttools (>=4.33.3)", "uharfbuzz (>=0.25.0,<0.40.0)"]
-pkcs11 = ["python-pkcs11 (>=0.7.0,<0.8.0)"]
-testing = ["certomancer-csc-dummy (==0.3.0)", "pyHanko[async-http,extra-pubkey-algs,image-support,opentype,pkcs11,testing-basic,xmp]", "pyHanko[etsi]", "pytest-aiohttp (>=1.0.4,<1.1.0)"]
-testing-basic = ["backports.zoneinfo[tzdata]", "certomancer (==0.12.*)", "freezegun (>=1.1.0)", "pytest (>=6.1.1)", "pytest-asyncio (==0.23.8)", "pytest-cov (>=4.0,<5.1)", "requests-mock (>=1.8.0)"]
-xmp = ["defusedxml (>=0.7.1,<0.8.0)"]
-
-[[package]]
-name = "pyhanko-certvalidator"
-version = "0.26.3"
-description = "Validates X.509 certificates and paths; forked from wbond/certvalidator"
-optional = false
-python-versions = ">=3.7"
-files = [
- {file = "pyhanko-certvalidator-0.26.3.tar.gz", hash = "sha256:47fba8e9dbf846d766f2e0a453572dd4b25b2f1397847a31fe892c8eb00391f5"},
- {file = "pyhanko_certvalidator-0.26.3-py3-none-any.whl", hash = "sha256:e386c87e202ff1caacf5fd941da6c3509e79db54dbd7b43c6550ceebe5e67077"},
-]
-
-[package.dependencies]
-asn1crypto = ">=1.5.1"
-cryptography = ">=41.0.5"
-oscrypto = ">=1.1.0"
-requests = ">=2.31.0"
-uritools = ">=3.0.1"
-
-[package.extras]
-async-http = ["aiohttp (>=3.8,<3.10)"]
-mypy = ["pyhanko-certvalidator[testing]", "types-requests"]
-testing = ["aiohttp (>=3.8,<3.10)", "freezegun (>=1.1.0)", "pyhanko-certvalidator[async-http]", "pytest (>=6.1.1)", "pytest-aiohttp (>=1.0.4,<1.1.0)", "pytest-cov (>=4.0,<4.2)"]
-
[[package]]
name = "pymupdf"
version = "1.24.7"
@@ -986,161 +593,6 @@ files = [
{file = "PyMuPDFb-1.24.6.tar.gz", hash = "sha256:f5a40b1732d65a1e519916d698858b9ce7473e23edf9001ddd085c5293d59d30"},
]
-[[package]]
-name = "pypdf"
-version = "5.1.0"
-description = "A pure-python PDF library capable of splitting, merging, cropping, and transforming PDF files"
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "pypdf-5.1.0-py3-none-any.whl", hash = "sha256:3bd4f503f4ebc58bae40d81e81a9176c400cbbac2ba2d877367595fb524dfdfc"},
- {file = "pypdf-5.1.0.tar.gz", hash = "sha256:425a129abb1614183fd1aca6982f650b47f8026867c0ce7c4b9f281c443d2740"},
-]
-
-[package.dependencies]
-typing_extensions = {version = ">=4.0", markers = "python_version < \"3.11\""}
-
-[package.extras]
-crypto = ["cryptography"]
-cryptodome = ["PyCryptodome"]
-dev = ["black", "flit", "pip-tools", "pre-commit (<2.18.0)", "pytest-cov", "pytest-socket", "pytest-timeout", "pytest-xdist", "wheel"]
-docs = ["myst_parser", "sphinx", "sphinx_rtd_theme"]
-full = ["Pillow (>=8.0.0)", "cryptography"]
-image = ["Pillow (>=8.0.0)"]
-
-[[package]]
-name = "python-bidi"
-version = "0.6.3"
-description = "Python Bidi layout wrapping the Rust crate unicode-bidi"
-optional = false
-python-versions = "*"
-files = [
- {file = "python_bidi-0.6.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:7e2a62d7ebb4af9831c85921063154ab4067c73768ad04f466dff1359e6f2650"},
- {file = "python_bidi-0.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6b8035f02c3fcb52d372bfe51db00a0c95a3fdd6f0504a32e70d4f799809070d"},
- {file = "python_bidi-0.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:854edec3ef1ef50c49f689b44900fb6c51d35f277e10b4749755d053f405a44a"},
- {file = "python_bidi-0.6.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fe4c4ab61701a5e3b916c6b63811c6fd708539a3f189ec6ca6bd22948a125af0"},
- {file = "python_bidi-0.6.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:855a4dc2d237587a734babc6179130f9e7b7c028651cdead6ec5b162115ac112"},
- {file = "python_bidi-0.6.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c0635bf46ddd56cf3f71d0711fbc160fd90c36fd3176b3e91b0bf7447e549f1"},
- {file = "python_bidi-0.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a4b7b6e458173614348db8e4a4406e468338c13ecc7b74d1e208d38d0d1d264"},
- {file = "python_bidi-0.6.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25a39a3b61851506ed489867c69f3580ba75063195bf4b00f1983de88e02bf30"},
- {file = "python_bidi-0.6.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:24ea5c9f5cf9f3919d81669d24a1405709f4d66c82c3ffa7f982fcece856b325"},
- {file = "python_bidi-0.6.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:631d32fd1414d4795348122b820dadbff1ddaa6e53a70c1ee9d5a84911cc3c2d"},
- {file = "python_bidi-0.6.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:205aac547f8166005e041b33069da2c8a345171b0d7c8177c3d16408acde9acd"},
- {file = "python_bidi-0.6.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a05249eac27e983a103babb9a2812726312bd8f685fdc3264f78b8ff8124d09a"},
- {file = "python_bidi-0.6.3-cp310-none-win32.whl", hash = "sha256:44023d51ae78ae119ef11043b5fb8f3dfc5de5ec04d937d7c5abc4da8cba1770"},
- {file = "python_bidi-0.6.3-cp310-none-win_amd64.whl", hash = "sha256:866865bbbc97a144e74508e2513373bb590d38fca3b6e52b6905de54b34ddbd9"},
- {file = "python_bidi-0.6.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a656b91c74b77a5b005e6dac092947f00d546cce5d0ca70b6b6741b93f7705bf"},
- {file = "python_bidi-0.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4cb80856ce1e3f24c0d878fc85ab767c201ab8891a68f41d8da87eaf39c827de"},
- {file = "python_bidi-0.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ad3f50925a5943d244c6ca05e0553922e917b3cc415580460d86af6a385ee23"},
- {file = "python_bidi-0.6.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:22f293338ec7d44e02991787d306d39e02f0b145810eef60802abd7833b6c2d0"},
- {file = "python_bidi-0.6.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12b1d522cbd0af85094ccce8ae95c57a6a9d4f98e85f3e7c1ad1fb5d1c2cd09e"},
- {file = "python_bidi-0.6.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da00726ebf17f857d458b310e868cae4b3bac668396cd5e874e17809894417e5"},
- {file = "python_bidi-0.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1204f2aa62ac6226f11dd1bee250d428abb128046cf1999317b3f303c70ea2"},
- {file = "python_bidi-0.6.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7c99881440b2a4d8de7c2d7f3ac23e5f0a0ee0c5ae652f53188a21e9b0911f2d"},
- {file = "python_bidi-0.6.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:10f7c23dbb23dd0d2b0f67f7d4c2ba59eb42f777e1749ed9e13dbc8c4d28ea75"},
- {file = "python_bidi-0.6.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:d7527247a9d8e0aa9d2d4ecd24cbd8216bc4e3e89e77f9c833eedf278d9761cc"},
- {file = "python_bidi-0.6.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5d6829865ff94925280af066c8536ff9595a6e40d300f9fc0e6ca4ebbf3bc306"},
- {file = "python_bidi-0.6.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0e0d574c22fbab1ea996ddb1ebb3eabae521f5d129d7c699445cad81e81bc351"},
- {file = "python_bidi-0.6.3-cp311-none-win32.whl", hash = "sha256:8c5fc9f065c24bd8058d7e9a5d42415134de3cc1aa480eebc27e2ca132919dd8"},
- {file = "python_bidi-0.6.3-cp311-none-win_amd64.whl", hash = "sha256:46ee694cf5a632a8d47cc35de6926581e586425b582216962d3e6d913aea0b88"},
- {file = "python_bidi-0.6.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:4bdc9dc1143c558ca6931d6712339a30470959f2b7eecb3d0687db7075c20a87"},
- {file = "python_bidi-0.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0775499b8037103278f05b2bf92d25bf04f40a9f77884ec3d42b01a1e52a40fe"},
- {file = "python_bidi-0.6.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb3091aa5efbfc4da6fd52a2fccbf7853c6dc253ddaf9a189bcf3c4345865aa9"},
- {file = "python_bidi-0.6.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c75a9b68b3f5a8da9a33fe37607d9b267a8a3c5806d283a4a47365256773dd1e"},
- {file = "python_bidi-0.6.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:208e09819ee0485c2ed4dc1932c39fc073dac3f2cb70b6d2ae0b7296e86831e6"},
- {file = "python_bidi-0.6.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e17b67d86cd38f2bebc4a46090f83cabb0d1da3a3c920c68efe8093ae1a8d0d1"},
- {file = "python_bidi-0.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:933a17938f767fa64a8365732eba787a81c26214d89e1b3abe87912325ba26a9"},
- {file = "python_bidi-0.6.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:772efb3e0ef17396bfd9d47da4805c74ed6c04f27cac08d7757f76602837fb9d"},
- {file = "python_bidi-0.6.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9a99114f33f8c0273a61b4afe7d4d715e098318ee4e5ce8f6bb5da8dcd3f95c7"},
- {file = "python_bidi-0.6.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b30e620d39e85a30bb42f460fd8b5274caf261517edeb853b975d9ea1939b6bd"},
- {file = "python_bidi-0.6.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bee94e3152a6c9ba731e086c9cc6203904290506ba52c505a2e59abab481eb13"},
- {file = "python_bidi-0.6.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:926164ec594e9ea9a64faf54273c711d5e3233bcc6ef8966c6eeaddfb3b3075f"},
- {file = "python_bidi-0.6.3-cp312-none-win32.whl", hash = "sha256:cea395a7daee14c7d50a7e20890d12b9ff1938d81b23eb564f1707a175c37202"},
- {file = "python_bidi-0.6.3-cp312-none-win_amd64.whl", hash = "sha256:350e6c76f942465871f2b473a2076f5002f1df06e4c7abee3029ccca5f006786"},
- {file = "python_bidi-0.6.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:617d4391b19969de725922a256599e8218fc9c1ef0ff85884f1698fff482a977"},
- {file = "python_bidi-0.6.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:81f418d54948542b21c03cd8ce622a480ead85fc53175a124c4562bdf55cec49"},
- {file = "python_bidi-0.6.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0999b77af58396cfd789c8d068bac78d2d51363265aaf1369622099be9e0eb32"},
- {file = "python_bidi-0.6.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f5a0e852e8451147d96876f8233a9db6ed28c914d9767a6696cbc899e7df00c2"},
- {file = "python_bidi-0.6.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:905e212b12c9edfaa3a916a3acd11426b89507ed0f31641257ad586467602e8d"},
- {file = "python_bidi-0.6.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:144adab8dc3a8560e294461114ce6dafec1a986cde6297994c1d31b3252f3298"},
- {file = "python_bidi-0.6.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abdbd5c265d64251798243d97228bb78441a1320fe3cf51c9a31191c56407839"},
- {file = "python_bidi-0.6.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65f824a878a593121570ce3da847d3b9ac50521782c433996d7f81f770d3ed00"},
- {file = "python_bidi-0.6.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c7dcbc7eb70a0c7c66ed5219213ee2afcc815988cb9e4b134631579c4ae46980"},
- {file = "python_bidi-0.6.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ccbf53bc71a0a1b7f77524d1c2e51b245ae23a4f16afb80728071e21c187a768"},
- {file = "python_bidi-0.6.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:702527506ca97bf549710ce03d89a2577ebe35e34c42eaecfbacb0862ba06dc6"},
- {file = "python_bidi-0.6.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1563a8d9cfaeeeb5b4fc806f52a500b19893c63652bbd497dd6ed9def7b9ee8e"},
- {file = "python_bidi-0.6.3-cp313-none-win32.whl", hash = "sha256:f9b8e024eeaddecb4ca189e3199181985fab20c224db9a1f08db48b905c9905a"},
- {file = "python_bidi-0.6.3-cp313-none-win_amd64.whl", hash = "sha256:36b3fb05ef990613a81a23822246eaf6eef29af5182f8d8cdd174be13c92d1cc"},
- {file = "python_bidi-0.6.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:3ef3c351c19348133e78aa4a05bc939f9f11d53c6733c5e8ec160a9fd78c902f"},
- {file = "python_bidi-0.6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f482f205a62c958273e40c20405141f18c2d0529abb22ba6aa440602655f43a7"},
- {file = "python_bidi-0.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:982f805714a5ee83b034b8ad6a27f37db994483b72657c7898053333737a5fe3"},
- {file = "python_bidi-0.6.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3ee410954d7dc7591106f9526c3ce9893a64345e69edf86d084fe8841e62bfa0"},
- {file = "python_bidi-0.6.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4d4a8917804a1c749e92aafb152d239cd25127cea0bb8710b99315266022009"},
- {file = "python_bidi-0.6.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:984cb68c5bc7980f9cc66ae2f9d06b7426445b7dfcce4d555ff04333c34d01a6"},
- {file = "python_bidi-0.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bedcbab3867227519e2dfee6c3ac26d7722ce6a048f5c72585cf83779b8e61f8"},
- {file = "python_bidi-0.6.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:eda3e04c6f54e0e44e55433da0fabab6776c69bcfb1965f09e4bb5b5b4446846"},
- {file = "python_bidi-0.6.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2825a720d9dbd8ff6158a458edfbdc55bfd3de3f8181a59c7126f78ef3e27b7b"},
- {file = "python_bidi-0.6.3-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:6b5f60865b4d10de024c35d9900efe371844da4a0cda1cb2a4bd35746ba69097"},
- {file = "python_bidi-0.6.3-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9f859236e69250a0cc857968b8beef749ab4f7b29164cb9a8a3150d094c318fc"},
- {file = "python_bidi-0.6.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:282c60f86f30ba6263e10427fec528ab17dde97c7a6653c0187d8e2412dec6f4"},
- {file = "python_bidi-0.6.3-cp38-none-win32.whl", hash = "sha256:5d33d011d334795ff4d5d0de57457a980f76055a338ebabe558e795f9e0fbe63"},
- {file = "python_bidi-0.6.3-cp38-none-win_amd64.whl", hash = "sha256:535069329c12ea08ad6a3b38c48cba2d912a704dee25566e7a37f2b67be9fece"},
- {file = "python_bidi-0.6.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:d0945a3f116700ebc791911797096afe3e24953927b335c9c818f56475915aef"},
- {file = "python_bidi-0.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8eb231d9ab92bfd4a9b7e7282210f02d130d7935ec8cfb1d82d6d53fa858a3de"},
- {file = "python_bidi-0.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce288cb2af08d5242b034ce4e6936e540046a4c5fbccda72610ac67d8b06b5cc"},
- {file = "python_bidi-0.6.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:304094c931a9ca45a347fa31db9e01b9cbefd48a194950b1441f20ba24ff0d17"},
- {file = "python_bidi-0.6.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3df42de54d0f0daea931439abefc97da6c642d3665bcde510cd31689230777ff"},
- {file = "python_bidi-0.6.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fc5a29d459deb7ce923cf33283de15776fa8008c55b42e1eed5ba76980cc01f3"},
- {file = "python_bidi-0.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae862fc829ee747b30cce23353b2266c706376c9b1ebfea943d63731eb1a0cbd"},
- {file = "python_bidi-0.6.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9419c87a7657b1b39497302461c7e501bbfd03442186083007e9a1627656871"},
- {file = "python_bidi-0.6.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d352154a636a243235260ecd8dcbd2b73e3e7d1f42c280fdb6802876152f1435"},
- {file = "python_bidi-0.6.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:04448d5355db4233da49c9f656b43b34fa0467f6b0c8ff766c1543eaed52f974"},
- {file = "python_bidi-0.6.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:07eb504fcefc9e9f416f03c089dce23b1ba79d0dd38e976f6f00944d8c708461"},
- {file = "python_bidi-0.6.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7e083f0e7391b5672f9e76393d8d111e1bf875f784ad3659776a4881440ebf1c"},
- {file = "python_bidi-0.6.3-cp39-none-win32.whl", hash = "sha256:a153364706cacaea4f97a63b3d5db780d56b66c0a64f1d202065d3863f782075"},
- {file = "python_bidi-0.6.3-cp39-none-win_amd64.whl", hash = "sha256:4be0d628b84c2a524d080c653726fba6e518432f33ac970db25c6366b9b71303"},
- {file = "python_bidi-0.6.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:28cd25ef6141a77e04a7fb6fef0a19cc307106f84a891777fcdd3306ae8cfc20"},
- {file = "python_bidi-0.6.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:e4eab3736a14b8d9daea3e8e638ca5a24051497152ba32fb08db9259dd77b858"},
- {file = "python_bidi-0.6.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78d12927cab0f6b8304f04c9ed72bc1a2880df8974d8596e40e7e596c6a98b2e"},
- {file = "python_bidi-0.6.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:440be542b334da05673bd94d53ba4922482b06fa3f4daca6c8fa7434afb33e8a"},
- {file = "python_bidi-0.6.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a9635ae0c9ee71b69f11cb6ab9523165c79fdb82ca53afb5afb0d401616fef80"},
- {file = "python_bidi-0.6.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ebac008620916b0c02623926fd80719f2e61e4fa9b626ed1e309a6818b57486"},
- {file = "python_bidi-0.6.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57bb5fd4d9ccad52584ce8ad1468ec2e5b535519840ab1debe05c7fe4d32b800"},
- {file = "python_bidi-0.6.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1caacb766872c54742cdb8a5c042bec1282c5a3144e4aeba6f8650ab8911d7f3"},
- {file = "python_bidi-0.6.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:584dd7c4617ea0ef39900ef7b06b8c61e6ce3ccb4b90c28ed28fa3bf770c5124"},
- {file = "python_bidi-0.6.3-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:a3bdc284cc4a1d70942ba0582b91853403c5ca7df79909b755be69089ecc5e17"},
- {file = "python_bidi-0.6.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:995ed295f2d9095facbef3025d79e209ec7ae1be0d1f385a49818edb2cb4421e"},
- {file = "python_bidi-0.6.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:a50d62f4f1e10682babd529d46e9e62236ff202d3025a223c17ead32035cb410"},
- {file = "python_bidi-0.6.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ea2898279afde47dcfec7a821abb54f7476e5584b655389aa731a50b90f8ea52"},
- {file = "python_bidi-0.6.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:fe9b6a33f281814dfbf12fe27f35b8780edd6da62ce2a034994f006d6d0184e7"},
- {file = "python_bidi-0.6.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:435579d0bf2a7e2f872bb5c7254fe89cddfdea6909ed6dc3e8af4ffe1f3f1f18"},
- {file = "python_bidi-0.6.3-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f8d76a8452c9fa1ece0a70a7be15a516861c3875bb621e125305d0141ceac8e3"},
- {file = "python_bidi-0.6.3-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbf64f5e3f19913f63f34832c0ddef5ea6a772c5dda54907a949e804c20021e3"},
- {file = "python_bidi-0.6.3-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8e226a888e13c9cf1e9f0de0a2ff5c98a50561cada19c0b0c69c76343685ee54"},
- {file = "python_bidi-0.6.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308ee73ffaa771048b1ccec37145a2735da9d67df55583c2fc2cb73d78e86a91"},
- {file = "python_bidi-0.6.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d85744ddcfeb207bbf6774b7e1a29af6e5e208ed5dbecc5853ec60ed8bc8242f"},
- {file = "python_bidi-0.6.3-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:40ab8bf2f528a28a70231ce4015d81aea6d8f0a0cdd2bdaf024e9e7849a5ee55"},
- {file = "python_bidi-0.6.3-pp38-pypy38_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:aa857199f9d797c615a92ae1dec90d443a50373caf7af2cf4e791714afc31b2a"},
- {file = "python_bidi-0.6.3-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:197fcd6cb88f021333622f83d7d68e842ab9e2df492ab04e1e84b6de8f15c698"},
- {file = "python_bidi-0.6.3-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:f832a45f05c15072edf473c6c3b9b164b25a2515f723d42c7400db848c299e59"},
- {file = "python_bidi-0.6.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3b2ee6cf7cadb5d5cc05eca4b8b55a433dab922633faf85b0d19ec2aeed9ad5b"},
- {file = "python_bidi-0.6.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:835b1d72364618fc8313bfdba2f65ce8e11bd9c1eab01fe9a3c3ec93063cb5b1"},
- {file = "python_bidi-0.6.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f92e0d6771d184bbb7b06645edb069c023f695de312bf78e35efe45e0da7f66"},
- {file = "python_bidi-0.6.3-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7a6a3e0e130a0db20c4808242470277045e921b414cd9f545cba67a8c17bb785"},
- {file = "python_bidi-0.6.3-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2b2ee73e0f799ed234ed52af258f77a72aca216477d3ef072c59303f1a938c9"},
- {file = "python_bidi-0.6.3-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:042d0ee4bb9286b605b252488501bdae6f5b249fe2422fb12e4884aa4dc316d1"},
- {file = "python_bidi-0.6.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa68ef8e955d0d63fe2d9aac4f8b8b9f47869bf98a8773c7322918312dbdd109"},
- {file = "python_bidi-0.6.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d07c491c2cede5b022356003070bc8e452a0dcf1d884db4a384e9a3383b9efd3"},
- {file = "python_bidi-0.6.3-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:6132d661a3bfac2b8cf0d301bcdd59c7cc3e2145ea090b75505816604d8118d5"},
- {file = "python_bidi-0.6.3-pp39-pypy39_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:61b8a3dc229617b2f8c15165001babf4a199af9001087cad10ded14ec0a028d4"},
- {file = "python_bidi-0.6.3-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:5bcab7ac734c5102e90b0f41274b81bdcf55009b05aaa6a653320d63304f20a7"},
- {file = "python_bidi-0.6.3-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:44560c6abcf3a512e618b52b33bce3d053eaf020c0677d3b4512167715900e66"},
- {file = "python_bidi-0.6.3.tar.gz", hash = "sha256:e12114969001a328aea859f79efc30ab9c15241befb86e07029d8961d97fae36"},
-]
-
-[package.extras]
-dev = ["pytest"]
-
[[package]]
name = "python-dateutil"
version = "2.9.0.post0"
@@ -1169,107 +621,6 @@ files = [
[package.dependencies]
python-dateutil = "*"
-[[package]]
-name = "pyyaml"
-version = "6.0.2"
-description = "YAML parser and emitter for Python"
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"},
- {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"},
- {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"},
- {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"},
- {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"},
- {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"},
- {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"},
- {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"},
- {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"},
- {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"},
- {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"},
- {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"},
- {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"},
- {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"},
- {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"},
- {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"},
- {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"},
- {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"},
- {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"},
- {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"},
- {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"},
- {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"},
- {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"},
- {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"},
- {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"},
- {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"},
- {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"},
- {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"},
- {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"},
- {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"},
- {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"},
- {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"},
- {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"},
- {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"},
- {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"},
- {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"},
- {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"},
- {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"},
- {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"},
- {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"},
- {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"},
- {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"},
- {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"},
- {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"},
- {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"},
- {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"},
- {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"},
- {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"},
- {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"},
- {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"},
- {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"},
- {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"},
- {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"},
-]
-
-[[package]]
-name = "qrcode"
-version = "8.0"
-description = "QR Code image generator"
-optional = false
-python-versions = "<4.0,>=3.9"
-files = [
- {file = "qrcode-8.0-py3-none-any.whl", hash = "sha256:9fc05f03305ad27a709eb742cf3097fa19e6f6f93bb9e2f039c0979190f6f1b1"},
- {file = "qrcode-8.0.tar.gz", hash = "sha256:025ce2b150f7fe4296d116ee9bad455a6643ab4f6e7dce541613a4758cbce347"},
-]
-
-[package.dependencies]
-colorama = {version = "*", markers = "sys_platform == \"win32\""}
-
-[package.extras]
-all = ["pillow (>=9.1.0)", "pypng"]
-pil = ["pillow (>=9.1.0)"]
-png = ["pypng"]
-
-[[package]]
-name = "reportlab"
-version = "4.2.5"
-description = "The Reportlab Toolkit"
-optional = false
-python-versions = "<4,>=3.7"
-files = [
- {file = "reportlab-4.2.5-py3-none-any.whl", hash = "sha256:eb2745525a982d9880babb991619e97ac3f661fae30571b7d50387026ca765ee"},
- {file = "reportlab-4.2.5.tar.gz", hash = "sha256:5cf35b8fd609b68080ac7bbb0ae1e376104f7d5f7b2d3914c7adc63f2593941f"},
-]
-
-[package.dependencies]
-chardet = "*"
-pillow = ">=9.0.0"
-
-[package.extras]
-accel = ["rl-accel (>=0.9.0,<1.1)"]
-pycairo = ["freetype-py (>=2.3.0,<2.4)", "rlPyCairo (>=0.2.0,<1)"]
-renderpm = ["rl-renderPM (>=4.0.3,<4.1)"]
-
[[package]]
name = "requests"
version = "2.32.3"
@@ -1331,90 +682,6 @@ files = [
{file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"},
]
-[[package]]
-name = "svglib"
-version = "1.5.1"
-description = "A pure-Python library for reading and converting SVG"
-optional = false
-python-versions = ">=3.7"
-files = [
- {file = "svglib-1.5.1.tar.gz", hash = "sha256:3ae765d3a9409ee60c0fb4d24c2deb6a80617aa927054f5bcd7fc98f0695e587"},
-]
-
-[package.dependencies]
-cssselect2 = ">=0.2.0"
-lxml = "*"
-reportlab = "*"
-tinycss2 = ">=0.6.0"
-
-[[package]]
-name = "tinycss2"
-version = "1.4.0"
-description = "A tiny CSS parser"
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"},
- {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"},
-]
-
-[package.dependencies]
-webencodings = ">=0.4"
-
-[package.extras]
-doc = ["sphinx", "sphinx_rtd_theme"]
-test = ["pytest", "ruff"]
-
-[[package]]
-name = "typing-extensions"
-version = "4.12.2"
-description = "Backported and Experimental Type Hints for Python 3.8+"
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"},
- {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"},
-]
-
-[[package]]
-name = "tzdata"
-version = "2024.2"
-description = "Provider of IANA time zone data"
-optional = false
-python-versions = ">=2"
-files = [
- {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"},
- {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"},
-]
-
-[[package]]
-name = "tzlocal"
-version = "5.2"
-description = "tzinfo object for the local timezone"
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"},
- {file = "tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"},
-]
-
-[package.dependencies]
-tzdata = {version = "*", markers = "platform_system == \"Windows\""}
-
-[package.extras]
-devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"]
-
-[[package]]
-name = "uritools"
-version = "4.0.3"
-description = "URI parsing, classification and composition"
-optional = false
-python-versions = ">=3.7"
-files = [
- {file = "uritools-4.0.3-py3-none-any.whl", hash = "sha256:bae297d090e69a0451130ffba6f2f1c9477244aa0a5543d66aed2d9f77d0dd9c"},
- {file = "uritools-4.0.3.tar.gz", hash = "sha256:ee06a182a9c849464ce9d5fa917539aacc8edd2a4924d1b7aabeeecabcae3bc2"},
-]
-
[[package]]
name = "urllib3"
version = "2.2.2"
@@ -1432,47 +699,7 @@ h2 = ["h2 (>=4,<5)"]
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
zstd = ["zstandard (>=0.18.0)"]
-[[package]]
-name = "webencodings"
-version = "0.5.1"
-description = "Character encoding aliases for legacy web content"
-optional = false
-python-versions = "*"
-files = [
- {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
- {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
-]
-
-[[package]]
-name = "xhtml2pdf"
-version = "0.2.16"
-description = "PDF generator using HTML and CSS"
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "xhtml2pdf-0.2.16-py3-none-any.whl", hash = "sha256:b37040127627aee42f76f25ebbd5798308ffc93edaf4850a4d3dd894160ebb53"},
- {file = "xhtml2pdf-0.2.16.tar.gz", hash = "sha256:7391adac12afb086561667cdc8d6ef0ac4afe5097bd97383622d42b6343dee71"},
-]
-
-[package.dependencies]
-arabic-reshaper = ">=3.0.0"
-html5lib = ">=1.1"
-Pillow = ">=8.1.1"
-pyHanko = ">=0.12.1"
-pyhanko-certvalidator = ">=0.19.5"
-pypdf = ">=3.1.0"
-python-bidi = ">=0.4.2"
-reportlab = ">=4.0.4,<5"
-svglib = ">=1.2.1"
-
-[package.extras]
-docs = ["sphinx (>=6)", "sphinx-rtd-theme (>=0.5.0)"]
-pycairo = ["reportlab[pycairo] (>=4.0.4,<5)"]
-release = ["build", "twine"]
-renderpm = ["reportlab[renderpm] (>=4.0.4,<5)"]
-test = ["coverage (>=5.3)", "tomli (>=2.0.1)", "tox"]
-
[metadata]
lock-version = "2.0"
python-versions = "^3.10"
-content-hash = "837f9889f17ed0a618901b4d21dfc6c60aa19f9c0b5e64c137cdf23d125bb27c"
+content-hash = "6b5d2a1f3f80e9d4da489516fdda4d8ae185fd01b7e936f615b11ae6232fc722"
From 480bf39b379bae170e2faf687026d8506fb62c22 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 00:58:28 +0300
Subject: [PATCH 24/46] Removed PDF report handling
---
datagather_modules/data_assembler.py | 62 ++--------------------------
1 file changed, 3 insertions(+), 59 deletions(-)
diff --git a/datagather_modules/data_assembler.py b/datagather_modules/data_assembler.py
index c65050f..88bc74d 100644
--- a/datagather_modules/data_assembler.py
+++ b/datagather_modules/data_assembler.py
@@ -82,9 +82,7 @@ def data_gathering(self, short_domain, url, report_file_type, pagesearch_flag, k
print(Fore.GREEN + 'Processing social medias gathering' + Style.RESET_ALL)
social_medias = cp.sm_gather(url)
print(Fore.GREEN + 'Processing subdomain analysis' + Style.RESET_ALL)
- if report_file_type == 'pdf':
- subdomain_mails, sd_socials, subdomain_ip = cp.domains_reverse_research(subdomains, report_file_type)
- elif report_file_type == 'xlsx':
+ if report_file_type == 'xlsx':
subdomain_urls, subdomain_mails, subdomain_ip, sd_socials = cp.domains_reverse_research(subdomains, report_file_type)
elif report_file_type == 'html':
subdomain_mails, sd_socials, subdomain_ip = cp.domains_reverse_research(subdomains, report_file_type)
@@ -95,7 +93,7 @@ def data_gathering(self, short_domain, url, report_file_type, pagesearch_flag, k
print(Fore.GREEN + 'Extracting robots.txt and sitemap.xml' + Style.RESET_ALL)
robots_txt_result = np.get_robots_txt(short_domain, robots_filepath)
sitemap_xml_result = np.get_sitemap_xml(short_domain, sitemap_filepath)
- if report_file_type == 'pdf' or report_file_type == 'html':
+ if report_file_type == 'html':
sitemap_links_status = np.extract_links_from_sitemap(sitemap_links_filepath, sitemap_filepath)
elif report_file_type == 'xlsx':
try:
@@ -113,61 +111,7 @@ def data_gathering(self, short_domain, url, report_file_type, pagesearch_flag, k
common_socials[key] = list(set(common_socials[key]))
total_socials = sum(len(values) for values in common_socials.values())
print(Fore.LIGHTMAGENTA_EX + "\n[BASIC SCAN END]\n" + Style.RESET_ALL)
-
- if report_file_type == 'pdf':
- if pagesearch_flag.lower() == 'y':
- if subdomains[0] != 'No subdomains were found':
- to_search_array = [subdomains, social_medias, sd_socials]
- print(Fore.LIGHTMAGENTA_EX + "\n[EXTENDED SCAN START: PAGESEARCH]\n" + Style.RESET_ALL)
- ps_emails_return, accessible_subdomains, emails_amount, files_counter, cookies_counter, api_keys_counter, website_elements_counter, exposed_passwords_counter, keywords_messages_list = normal_search(to_search_array, report_folder, keywords, keywords_flag)
- if len(keywords_messages_list) == 0:
- keywords_messages_list = ['No keywords were found']
- total_links_counter = accessed_links_counter = 0
- print(Fore.LIGHTMAGENTA_EX + "\n[EXTENDED SCAN END: PAGESEARCH]\n" + Style.RESET_ALL)
- else:
- print(Fore.RED + "Cant start PageSearch because no subdomains were detected")
- ps_emails_return = ""
- accessible_subdomains = files_counter = cookies_counter = api_keys_counter = website_elements_counter = exposed_passwords_counter = total_links_counter = accessed_links_counter = emails_amount = 'No data was gathered because no subdomains were found'
- keywords_messages_list = ['No data was gathered because no subdomains were found']
- pass
- elif pagesearch_flag.lower() == 'si':
- print(Fore.LIGHTMAGENTA_EX + "\n[EXTENDED SCAN START: PAGESEARCH SITEMAP INSPECTION]\n" + Style.RESET_ALL)
- ps_emails_return, total_links_counter, accessed_links_counter, emails_amount = sitemap_inspection_search(report_folder)
- accessible_subdomains = files_counter = cookies_counter = api_keys_counter = website_elements_counter = exposed_passwords_counter = keywords_messages_list = 0
- print(Fore.LIGHTMAGENTA_EX + "\n[EXTENDED SCAN END: PAGESEARCH SITEMAP INSPECTION]\n" + Style.RESET_ALL)
- elif pagesearch_flag.lower() == 'n':
- accessible_subdomains = files_counter = cookies_counter = api_keys_counter = website_elements_counter = exposed_passwords_counter = total_links_counter = accessed_links_counter = emails_amount = keywords_messages_list = 0
- ps_emails_return = ""
- pass
-
- if dorking_flag == 'none':
- dorking_status = 'Google Dorking mode was not selected for this scan'
- dorking_file_path = 'Google Dorking mode was not selected for this scan'
- else:
- dorking_db_path, table = establishing_dork_db_connection(dorking_flag.lower())
- print(Fore.LIGHTMAGENTA_EX + f"\n[EXTENDED SCAN START: {dorking_flag.upper()} DORKING]\n" + Style.RESET_ALL)
- dorking_status, dorking_file_path = dp.save_results_to_txt(report_folder, table, dp.get_dorking_query(short_domain, dorking_db_path, table))
- print(Fore.LIGHTMAGENTA_EX + f"\n[EXTENDED SCAN END: {dorking_flag.upper()} DORKING]\n" + Style.RESET_ALL)
-
- if used_api_flag != ['Empty']:
- print(Fore.LIGHTMAGENTA_EX + f"\n[EXTENDED SCAN START: API SCANNING]\n" + Style.RESET_ALL)
- if 1 in used_api_flag:
- api_virustotal_check(short_domain)
- if 2 in used_api_flag:
- api_securitytrails_check(short_domain)
- print(Fore.LIGHTMAGENTA_EX + f"\n[EXTENDED SCAN END: API SCANNING]\n" + Style.RESET_ALL)
- else:
- pass
-
- data_array = [ip, res, mails, subdomains, subdomains_amount, social_medias, subdomain_mails, sd_socials,
- subdomain_ip, issuer, subject, notBefore, notAfter, commonName, serialNumber, mx_records,
- robots_txt_result, sitemap_xml_result, sitemap_links_status,
- web_servers, cms, programming_languages, web_frameworks, analytics, javascript_frameworks, ports,
- hostnames, cpes, tags, vulns, common_socials, total_socials, ps_emails_return,
- accessible_subdomains, emails_amount, files_counter, cookies_counter, api_keys_counter,
- website_elements_counter, exposed_passwords_counter, total_links_counter, accessed_links_counter, keywords_messages_list, dorking_status, dorking_file_path]
-
- elif report_file_type == 'xlsx':
+ if report_file_type == 'xlsx':
if pagesearch_flag.lower() == 'y':
if subdomains[0] != 'No subdomains were found':
to_search_array = [subdomains, social_medias, sd_socials]
From 4396b6c9a48868752c094beeb4c79a401d80c5e2 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 01:00:40 +0300
Subject: [PATCH 25/46] Removed redundant pdf_report_creation module import
---
dpulse.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/dpulse.py b/dpulse.py
index 43f9505..f7a5506 100644
--- a/dpulse.py
+++ b/dpulse.py
@@ -66,7 +66,6 @@ def run():
choice = input(Fore.YELLOW + "Enter your choice >> ")
if choice == "1":
from misc import time_processing, domain_precheck
- import pdf_report_creation as pdf_rc
import xlsx_report_creation as xlsx_rc
import html_report_creation as html_rc
print(Fore.GREEN + "\nImported and activated reporting modules" + Style.RESET_ALL)
From 92e6d1ced8e2fcff54b83dabbc9ffb5e0f6d1479 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 01:09:18 +0300
Subject: [PATCH 26/46] Rewritten "None" dorking mark to "N"
---
datagather_modules/data_assembler.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/datagather_modules/data_assembler.py b/datagather_modules/data_assembler.py
index 88bc74d..70eeaa5 100644
--- a/datagather_modules/data_assembler.py
+++ b/datagather_modules/data_assembler.py
@@ -134,7 +134,7 @@ def data_gathering(self, short_domain, url, report_file_type, pagesearch_flag, k
accessible_subdomains = files_counter = cookies_counter = api_keys_counter = website_elements_counter = exposed_passwords_counter = total_links_counter = accessed_links_counter = emails_amount = 0
pass
- if dorking_flag == 'none':
+ if dorking_flag == 'n':
dorking_status = 'Google Dorking mode was not selected for this scan'
dorking_results = ['Google Dorking mode was not selected for this scan']
else:
@@ -187,7 +187,7 @@ def data_gathering(self, short_domain, url, report_file_type, pagesearch_flag, k
ps_emails_return = ""
pass
- if dorking_flag == 'none':
+ if dorking_flag == 'n':
dorking_status = 'Google Dorking mode was not selected for this scan'
dorking_file_path = 'Google Dorking mode was not selected for this scan'
else:
From f5124ef1e7cf38f026ff2451d16e702c0d38f282 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 01:19:35 +0300
Subject: [PATCH 27/46] Added dorking_results.txt file removal after creating
HTML report
---
reporting_modules/html_report_creation.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/reporting_modules/html_report_creation.py b/reporting_modules/html_report_creation.py
index b09af69..02dda93 100644
--- a/reporting_modules/html_report_creation.py
+++ b/reporting_modules/html_report_creation.py
@@ -146,6 +146,7 @@ def report_assembling(short_domain, url, case_comment, data_array, report_info_a
robots_content, sitemap_content, sitemap_links_content, dorking_content = fp.get_db_columns(report_folder)
pdf_blob = fp.get_blob(html_report_name)
db.insert_blob('HTML', pdf_blob, db_casename, db_creation_date, case_comment, robots_content, sitemap_content, sitemap_links_content, dorking_content, api_scan_db)
+ os.remove(report_folder + '//04-dorking_results.txt')
except Exception as e:
print(Fore.RED + 'Unable to create HTML report. See journal for details')
logging.error(f'HTML REPORT CREATION: ERROR. REASON: {e}')
From eeb216c36f69b4036971d4a0e5c183c210a6178a Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 01:22:45 +0300
Subject: [PATCH 28/46] Removed TXT results file mention
---
dorking/dorking_handler.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dorking/dorking_handler.py b/dorking/dorking_handler.py
index 51d9489..8259771 100644
--- a/dorking/dorking_handler.py
+++ b/dorking/dorking_handler.py
@@ -106,7 +106,7 @@ def save_results_to_txt(folderpath, table, queries, pages=10):
f.write("\n")
dorked_query_counter += 1
print(Fore.GREEN + f" Dorking with " + Style.RESET_ALL + Fore.LIGHTCYAN_EX + Style.BRIGHT + f"{dorked_query_counter}/{total_dorks_amount}" + Style.RESET_ALL + Fore.GREEN + " dork" + Style.RESET_ALL, end="\r")
- print(Fore.GREEN + "Google Dorking end. Results successfully saved in TXT file\n" + Style.RESET_ALL)
+ print(Fore.GREEN + "Google Dorking end. Results successfully saved in HTML report\n" + Style.RESET_ALL)
print(Fore.GREEN + f"During Google Dorking with {table.upper()}:")
for query, count in total_results:
if count == 0:
From 9944fdb7c68a4505439702e981473bce4d652419 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 01:37:02 +0300
Subject: [PATCH 29/46] Fixed bug with wrong api_scan_db handling in XLSX
report
---
datagather_modules/data_assembler.py | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/datagather_modules/data_assembler.py b/datagather_modules/data_assembler.py
index 70eeaa5..b24a769 100644
--- a/datagather_modules/data_assembler.py
+++ b/datagather_modules/data_assembler.py
@@ -143,14 +143,18 @@ def data_gathering(self, short_domain, url, report_file_type, pagesearch_flag, k
dorking_status, dorking_results = dp.transfer_results_to_xlsx(table, dp.get_dorking_query(short_domain, dorking_db_path, table))
print(Fore.LIGHTMAGENTA_EX + f"\n[EXTENDED SCAN END: {dorking_flag.upper()} DORKING]\n" + Style.RESET_ALL)
+ api_scan_db = []
if used_api_flag != ['Empty']:
print(Fore.LIGHTMAGENTA_EX + f"\n[EXTENDED SCAN START: API SCANNING]\n" + Style.RESET_ALL)
if 1 in used_api_flag:
api_virustotal_check(short_domain)
+ api_scan_db.append('VirusTotal')
if 2 in used_api_flag:
api_securitytrails_check(short_domain)
+ api_scan_db.append('SecurityTrails')
print(Fore.LIGHTMAGENTA_EX + f"\n[EXTENDED SCAN END: API SCANNING]\n" + Style.RESET_ALL)
else:
+ api_scan_db.append('No')
pass
data_array = [ip, res, mails, subdomains, subdomains_amount, social_medias, subdomain_mails, sd_socials,
From 87e48a1a2b4b0c961015e58960cf665fc9dfa7aa Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 01:37:28 +0300
Subject: [PATCH 30/46] Fixed bug with wrong api_scan_db handling in XLSX
report
---
reporting_modules/xlsx_report_creation.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/reporting_modules/xlsx_report_creation.py b/reporting_modules/xlsx_report_creation.py
index 7d3af94..1e8895d 100644
--- a/reporting_modules/xlsx_report_creation.py
+++ b/reporting_modules/xlsx_report_creation.py
@@ -66,6 +66,7 @@ def create_report(short_domain, url, case_comment, data_array, report_info_array
db_creation_date = report_info_array[2]
report_folder = report_info_array[3]
report_ctime = report_info_array[6]
+ api_scan_db = report_info_array[7]
os.makedirs(report_folder, exist_ok=True)
if len(ps_emails_return) > 0:
@@ -323,7 +324,7 @@ def create_report(short_domain, url, case_comment, data_array, report_info_array
print(Fore.GREEN + f"Scan elapsed time: {end}" + Style.RESET_ALL)
robots_content, sitemap_content, sitemap_links_content, dorking_content = fp.get_db_columns(report_folder)
xlsx_blob = fp.get_blob(report_file)
- db.insert_blob('XLSX', xlsx_blob, db_casename, db_creation_date, case_comment, robots_content, sitemap_content, sitemap_links_content, dorking_content)
+ db.insert_blob('XLSX', xlsx_blob, db_casename, db_creation_date, case_comment, robots_content, sitemap_content, sitemap_links_content, dorking_content, api_scan_db)
except Exception as e:
print(Fore.RED + 'Unable to create XLSX report. See journal for details')
logging.error(f'XLSX REPORT CREATION: ERROR. REASON: {e}')
From 408b0362978002d127d5dbfa27bda87fae7fb9d8 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 18:30:06 +0300
Subject: [PATCH 31/46] Fixed bug when trying to delete file which doesn't
exist
---
reporting_modules/html_report_creation.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/reporting_modules/html_report_creation.py b/reporting_modules/html_report_creation.py
index 02dda93..f22c281 100644
--- a/reporting_modules/html_report_creation.py
+++ b/reporting_modules/html_report_creation.py
@@ -146,8 +146,10 @@ def report_assembling(short_domain, url, case_comment, data_array, report_info_a
robots_content, sitemap_content, sitemap_links_content, dorking_content = fp.get_db_columns(report_folder)
pdf_blob = fp.get_blob(html_report_name)
db.insert_blob('HTML', pdf_blob, db_casename, db_creation_date, case_comment, robots_content, sitemap_content, sitemap_links_content, dorking_content, api_scan_db)
- os.remove(report_folder + '//04-dorking_results.txt')
+ if os.path.exists(report_folder + '//04-dorking_results.txt'):
+ os.remove(report_folder + '//04-dorking_results.txt')
+ else:
+ pass
except Exception as e:
print(Fore.RED + 'Unable to create HTML report. See journal for details')
logging.error(f'HTML REPORT CREATION: ERROR. REASON: {e}')
-
From 6fbb509970f13f6aaf9c2fd6f6f6a0c6c3eb98af Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Mon, 11 Nov 2024 20:30:30 +0300
Subject: [PATCH 32/46] Code clean-up
---
service/db_processing.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/service/db_processing.py b/service/db_processing.py
index 2a49167..fab120d 100644
--- a/service/db_processing.py
+++ b/service/db_processing.py
@@ -102,7 +102,7 @@ def db_report_recreate(extracted_folder_name, id_to_extract):
except Exception as e:
print(Fore.RED + "Error appeared when recreating report from database. Reason: {}".format(e))
-def insert_blob(report_file_type, pdf_blob, db_casename, creation_date, case_comment, robots, sitemap_xml, sitemap_links, dorking_results, api_scan_db): #, dorking_results was removed here
+def insert_blob(report_file_type, pdf_blob, db_casename, creation_date, case_comment, robots, sitemap_xml, sitemap_links, dorking_results, api_scan_db):
try:
sqlite_connection = sqlite3.connect('report_storage.db')
cursor = sqlite_connection.cursor()
@@ -118,7 +118,6 @@ def insert_blob(report_file_type, pdf_blob, db_casename, creation_date, case_com
sqlite_insert_blob_query = """INSERT INTO report_storage
(report_file_extension, report_content, creation_date, target, comment, sitemap_file, robots_text, sitemap_text, dorks_results, api_scan) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"""
- #dorks_results was removed between comment and robots_text
data_tuple = (report_file_type, pdf_blob, creation_date, db_casename, case_comment, sitemap_xml, robots, sitemap_links, dorking_results, api_scan_insert)
cursor.execute(sqlite_insert_blob_query, data_tuple)
From 0f1e80134a3544b7cd36e4c1a13359092a1d8968 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Tue, 12 Nov 2024 19:06:25 +0300
Subject: [PATCH 33/46] Delete dorking/basic_dorking.db
---
dorking/basic_dorking.db | Bin 20480 -> 0 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 dorking/basic_dorking.db
diff --git a/dorking/basic_dorking.db b/dorking/basic_dorking.db
deleted file mode 100644
index e5455fd7a3c9e9374b61bd61088c8703ade4a1a5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 20480
zcmeI)J#W)M7zgk>Uy{aw^bi7-ssgzVL!(x_ssmjhAgc;Z(>6E~ogz1Oi`CRlZAYzy
zI=}!D;yb{{fRTl7P*nnn4F-h7%YYadxNF?jeL=7i{^!`a)8ljOU$Q)ToZOkKxRIkR
z`oW47X;;Y!LMgeSX@n3a*0fl68Wo+?&OkiN@t+za7iKo{{0B+(KPCO|_$&TIbkHCG
z0SG_<0uX=z1Rwwb2teS!7MM+C21ZBed}J-OoN%=z64OTLtaco)d2pD%RWnMap_!$d
z6+=6)?}%ruIAdaF@j;RH4HOFW;o$Z$7p%~2Hf%pw4ijBv-?8*WMAt@gsxJ3$xVEmA
ztEMq&)U@i1sa5NhidL_d=jz5-ypOJ$#$6FP6rHV=r%SbYZOWJ***%(8s+%+As(9^b
zqiPmc`GyC>JPkJ=MiD@#o&&m&5UaTp;N%$uJ
z%HQ)h{OsN$<7g0o00bZa0SG_<0uX=z1Rwx`9v09iU9S^}3w$vyJFSTYtGV21YoYi~
zV&eXW2t11eP2XE|mlA#dT%${37tTGQIU+^zSe!Uz*%y`
z$O#e?FUBF;U-MeNWhX+X;#29g;{X%2`@G5+8CPF2PB
zOjg$RPxkeR?eR=TY%^(bCqHA^Y?@KZnA|D~W2)NC|F;O=;ve{1{w=wPd1w%T00bZa
z0SG_<0uX=z1Rwx`-WC{+Zvc3CRQ+FO&Ck1m{q=vDeLwzf{a
Date: Tue, 12 Nov 2024 11:06:49 -0500
Subject: [PATCH 34/46] Removed empty line in basic_dorking.db
---
dorking/basic_dorking.db | Bin 0 -> 20480 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dorking/basic_dorking.db
diff --git a/dorking/basic_dorking.db b/dorking/basic_dorking.db
new file mode 100644
index 0000000000000000000000000000000000000000..9c41a05bd1872cbf758afa053b7e2de5f0fb48d6
GIT binary patch
literal 20480
zcmeI)%}>){90%~{+0zYL9gi^@Bt%m>4=fO0!$B@OO+zMQ!0Zw^EoCj(Fxt^}fy8jo
zgC@rRLH`Urdhw5d#G4+Bi7yA^!Gq7k3X~V4SLgRBZJzRNyQiP+^6Xc*H(&8$S6>Rk
zRXf(NlT(CJa!c01>l!51D;2nR%pNS3{1Rwwb
z2tWV=5P$##AOHaf{MQ0=N^Wp$j4s6XV#|%zT4G|_h}^Y~>o*VYX7AL@l4a^v>2}4`
z4;?$|+pF%lIJ5YuNc#p01^Res=bDRlk5Uxb2Zsx$Xj8tOiqnc{S;~So1sO73<
zPMI~mI&10GdZnV*tL6E+Ii4J2sFrzOBuCP@T6v~aThOP?h0(pM>7}|gTds=No-wOd
zQ7cZc++evtiRU}+Msi1XCk}S@8>vw>uBCRAiOk=gb~SYx6CbpG`C-e8mGLdYzw-Bd
zODyO27n!3$00Izz00bZa0SG_<0uX=z1bSG&nDYEiC~ol8gzU5?7wzUsr>#fgJBi7M
zn<99T1kJ!-@|IJzB3t
z(|vtndoq_3+g!H$B)^hnlrko_nG9p9Do1E~|BvOL=_?u=qTTvGJHdu&Qvc87*@(Jd|Ci7IQ~sHVA2bL+00Izz00bZa
Y0SG_<0uX=z1bRb&Q&ym<{{x`?0%UYKP5=M^
literal 0
HcmV?d00001
From 2adcba3bbe710439a26620a0906126e22a050107 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Tue, 12 Nov 2024 19:23:21 +0300
Subject: [PATCH 35/46] Minor CLI visual improvements
---
dpulse.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dpulse.py b/dpulse.py
index f7a5506..2f9c4e7 100644
--- a/dpulse.py
+++ b/dpulse.py
@@ -219,7 +219,7 @@ def run():
elif choice_settings == '2':
import configparser
config = print_and_return_config()
- section = input(Fore.YELLOW + "Enter the section you want to update >> ")
+ section = input(Fore.YELLOW + "\nEnter the section you want to update >> ")
option = input(Fore.YELLOW + "Enter the option you want to update >> ")
value = input(Fore.YELLOW + "Enter the new value >> ")
if not config.has_section(section):
@@ -227,7 +227,7 @@ def run():
config.set(section, option, value)
with open('service//config.ini', 'w') as configfile:
config.write(configfile)
- print(Fore.GREEN + "Configuration updated successfully" + Style.RESET_ALL)
+ print(Fore.GREEN + "\nConfiguration updated successfully" + Style.RESET_ALL)
elif choice_settings == '3':
with open('journal.log', 'w'):
print(Fore.GREEN + "Journal file was successfully cleared" + Style.RESET_ALL)
From 4fc79afda0268c85a6d4b3f4f7b640db885d6a98 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Tue, 12 Nov 2024 19:24:07 +0300
Subject: [PATCH 36/46] Minor CLI visual improvements
---
service/config_processing.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/service/config_processing.py b/service/config_processing.py
index 095c7c8..2541868 100644
--- a/service/config_processing.py
+++ b/service/config_processing.py
@@ -43,5 +43,5 @@ def print_and_return_config():
print(Fore.GREEN + f"[{section}]" + Style.RESET_ALL)
for key in config[section]:
print(Fore.GREEN + f"{key} = {config[section][key]}" + Style.RESET_ALL)
- print(Fore.LIGHTMAGENTA_EX + "\n\n[CURRENT CONFIG CONTENT END]\n" + Style.RESET_ALL)
+ print(Fore.LIGHTMAGENTA_EX + "\n\n[CURRENT CONFIG CONTENT END]" + Style.RESET_ALL)
return config
From 7046dc0c4ff138fcab803b5dd7c7864cf5786395 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Tue, 12 Nov 2024 19:27:31 +0300
Subject: [PATCH 37/46] Removed double import
---
dpulse.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/dpulse.py b/dpulse.py
index 2f9c4e7..afd3c89 100644
--- a/dpulse.py
+++ b/dpulse.py
@@ -211,13 +211,12 @@ def run():
print(Fore.RED + "\nUnsupported PageSearch mode. Please choose between Y, N or SI")
elif choice == "2":
+ import configparser
cli.print_settings_menu()
choice_settings = input(Fore.YELLOW + "Enter your choice >> ")
if choice_settings == '1':
- import configparser
print_and_return_config()
elif choice_settings == '2':
- import configparser
config = print_and_return_config()
section = input(Fore.YELLOW + "\nEnter the section you want to update >> ")
option = input(Fore.YELLOW + "Enter the option you want to update >> ")
From 07304f02529e13d4d8d5b5960e66497e246c5008 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Tue, 12 Nov 2024 19:39:02 +0300
Subject: [PATCH 38/46] Improved config editing exception hanling
---
dpulse.py | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/dpulse.py b/dpulse.py
index afd3c89..82eb6d5 100644
--- a/dpulse.py
+++ b/dpulse.py
@@ -160,8 +160,7 @@ def run():
row_count = get_columns_amount(f'dorking//{db_name}', f'{dorking_flag.lower()}_dorks')
dorking_ui_mark = f'Yes, {dorking_flag.lower().replace("_", " ")} dorking ({row_count} dorks)'
elif dorking_flag.lower() == 'custom':
- custom_db_name = str(input(
- Fore.YELLOW + "Enter your custom Dorking DB name (without any file extensions) >> "))
+ custom_db_name = str(input(Fore.YELLOW + "Enter your custom Dorking DB name (without any file extensions) >> "))
row_count = get_columns_amount(f'dorking//{custom_db_name}.db', 'dorks')
dorking_ui_mark = f'Yes, Custom table dorking ({row_count} dorks)'
dorking_flag = str(dorking_flag.lower() + f"+{custom_db_name}.db")
@@ -219,14 +218,20 @@ def run():
elif choice_settings == '2':
config = print_and_return_config()
section = input(Fore.YELLOW + "\nEnter the section you want to update >> ")
- option = input(Fore.YELLOW + "Enter the option you want to update >> ")
- value = input(Fore.YELLOW + "Enter the new value >> ")
- if not config.has_section(section):
- config.add_section(section)
- config.set(section, option, value)
- with open('service//config.ini', 'w') as configfile:
- config.write(configfile)
- print(Fore.GREEN + "\nConfiguration updated successfully" + Style.RESET_ALL)
+ if not config.has_section(section.upper()):
+ print(Fore.RED + "\nSection you've entered does not exist in config file. Please verify that section name is correct")
+ pass
+ else:
+ option = input(Fore.YELLOW + "Enter the option you want to update >> ")
+ if not config.has_option(section.upper(), option):
+ print(Fore.RED + "\nOption you've entered does not exist in config file. Please verify that option name is correct")
+ pass
+ else:
+ value = input(Fore.YELLOW + "Enter the new value >> ")
+ config.set(section.upper(), option, value)
+ with open('service//config.ini', 'w') as configfile:
+ config.write(configfile)
+ print(Fore.GREEN + "\nConfiguration updated successfully" + Style.RESET_ALL)
elif choice_settings == '3':
with open('journal.log', 'w'):
print(Fore.GREEN + "Journal file was successfully cleared" + Style.RESET_ALL)
From ebc28287b5e0233f3767ac33eaee8ed522e94455 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Tue, 12 Nov 2024 19:44:07 +0300
Subject: [PATCH 39/46] Code clean up (removed unused variable)
From bf2363c851c09ac412dcc4aa509d870636ab45b0 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Tue, 12 Nov 2024 19:44:55 +0300
Subject: [PATCH 40/46] Code clean up (removed unused variable)
---
service/config_processing.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/service/config_processing.py b/service/config_processing.py
index 2541868..ae692cf 100644
--- a/service/config_processing.py
+++ b/service/config_processing.py
@@ -36,7 +36,7 @@ def read_config():
def print_and_return_config():
config = configparser.ConfigParser()
- cfg_content = config.read('service//config.ini')
+ config.read('service//config.ini')
print(Fore.LIGHTMAGENTA_EX + "\n[CURRENT CONFIG CONTENT START]" + Style.RESET_ALL)
for section in config.sections():
print('\n')
From f1abc2b2d012270e7f83c8550a99f2c00b40cfaf Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Tue, 12 Nov 2024 22:14:29 +0300
Subject: [PATCH 41/46] Fixed some typos
---
dpulse.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dpulse.py b/dpulse.py
index 82eb6d5..2b7d9d5 100644
--- a/dpulse.py
+++ b/dpulse.py
@@ -288,7 +288,7 @@ def run():
print(Fore.GREEN + "\nSuccessfully added new API key" + Style.RESET_ALL)
except:
print(Fore.RED + "Something went wrong when adding new API key. See journal for details" + Style.RESET_ALL)
- logging.error(f'KEYWORDS SEARCH IN PDF (PAGESEARCH): ERROR. REASON: {e}')
+ logging.error(f'API KEY ADDING: ERROR. REASON: {e}')
elif choice_api == '2':
import shutil
@@ -299,7 +299,7 @@ def run():
print(Fore.RED + "API Keys DB was not found")
try:
shutil.copyfile('apis//api_keys_reference.db', 'apis//api_keys.db')
- print(Fore.GREEN + "Sucessfully restored reference API Keys DB")
+ print(Fore.GREEN + "Successfully restored reference API Keys DB")
except FileNotFoundError:
print(Fore.RED + "Reference API Keys DB was not found")
else:
From e966e9f31c2150839bc69b26269da44f2ba17027 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Tue, 12 Nov 2024 22:56:21 +0300
Subject: [PATCH 42/46] Refactor / bug fixes / typos fixed
1. Fixed bug when entering "N" as a keyword for cancelling their search but program crashes
2. Unified report creation function
3. Fixed some typos
4. Minor CLI changes
---
dpulse.py | 70 ++++++++++++++++++++++---------------------------------
1 file changed, 28 insertions(+), 42 deletions(-)
diff --git a/dpulse.py b/dpulse.py
index 2b7d9d5..623e178 100644
--- a/dpulse.py
+++ b/dpulse.py
@@ -46,6 +46,28 @@
cli = cli_init.Menu()
cli.welcome_menu()
+def process_report(report_filetype, short_domain, url, case_comment, keywords_list, keywords_flag, dorking_flag, used_api_flag, pagesearch_flag, pagesearch_ui_mark, spinner_thread):
+ import xlsx_report_creation as xlsx_rc
+ import html_report_creation as html_rc
+ from misc import time_processing
+
+ try:
+ start = time()
+ if pagesearch_flag in ['y', 'si']:
+ data_array, report_info_array = data_processing.data_gathering(short_domain, url, report_filetype.lower(), pagesearch_flag.lower(), keywords_list, keywords_flag, dorking_flag.lower(), used_api_flag)
+ else:
+ data_array, report_info_array = data_processing.data_gathering(short_domain, url, report_filetype.lower(), pagesearch_flag.lower(), '', keywords_flag, dorking_flag.lower(), used_api_flag)
+ end = time() - start
+ endtime_string = time_processing(end)
+
+ if report_filetype == 'xlsx':
+ xlsx_rc.create_report(short_domain, url, case_comment, data_array, report_info_array, pagesearch_ui_mark, pagesearch_flag, endtime_string)
+ elif report_filetype == 'html':
+ html_rc.report_assembling(short_domain, url, case_comment, data_array, report_info_array, pagesearch_ui_mark, pagesearch_flag, endtime_string)
+ finally:
+ spinner_thread.do_run = False
+ spinner_thread.join()
+
class ProgressBar(threading.Thread):
def __init__(self):
super(ProgressBar, self).__init__()
@@ -65,9 +87,7 @@ def run():
domain_patter = r'^[a-zA-Z0-9-]+\.[a-zA-Z]{2,}$'
choice = input(Fore.YELLOW + "Enter your choice >> ")
if choice == "1":
- from misc import time_processing, domain_precheck
- import xlsx_report_creation as xlsx_rc
- import html_report_creation as html_rc
+ from misc import domain_precheck
print(Fore.GREEN + "\nImported and activated reporting modules" + Style.RESET_ALL)
while True:
short_domain = input(Fore.YELLOW + "\nEnter target's domain name (or 'back' to return to the menu) >> ")
@@ -106,7 +126,7 @@ def run():
else:
print(Fore.RED + "\nThis field must contain at least one keyword")
break
- elif keywords_input.lower() == "none":
+ elif keywords_input.lower() == "n":
keywords_list = None
keywords_flag = 0
elif pagesearch_flag.lower() == 'n':
@@ -168,44 +188,10 @@ def run():
print(Fore.LIGHTMAGENTA_EX + "[BASIC SCAN START]\n" + Style.RESET_ALL)
spinner_thread = ProgressBar()
spinner_thread.start()
- if report_filetype.lower() == 'xlsx':
- try:
- if pagesearch_flag.lower() == 'y':
- start = time()
- data_array, report_info_array = data_processing.data_gathering(short_domain, url, report_filetype.lower(), pagesearch_flag.lower(), keywords_list, keywords_flag, dorking_flag.lower(), used_api_flag)
- end = time() - start
- elif pagesearch_flag.lower() == 'si':
- start = time()
- data_array, report_info_array = data_processing.data_gathering(short_domain, url, report_filetype.lower(), pagesearch_flag.lower(), keywords_list, keywords_flag, dorking_flag.lower(), used_api_flag)
- end = time() - start
- else:
- start = time()
- data_array, report_info_array = data_processing.data_gathering(short_domain, url, report_filetype.lower(), pagesearch_flag.lower(), '', keywords_flag, dorking_flag.lower(), used_api_flag)
- end = time() - start
- endtime_string = time_processing(end)
- xlsx_rc.create_report(short_domain, url, case_comment, data_array, report_info_array, pagesearch_ui_mark, pagesearch_flag.lower(), endtime_string)
- finally:
- spinner_thread.do_run = False
- spinner_thread.join()
- elif report_filetype.lower() == 'html':
- try:
- if pagesearch_flag.lower() == 'y':
- start = time()
- data_array, report_info_array = data_processing.data_gathering(short_domain, url, report_filetype.lower(), pagesearch_flag.lower(), keywords_list, keywords_flag, dorking_flag.lower(), used_api_flag)
- end = time() - start
- elif pagesearch_flag.lower() == 'si':
- start = time()
- data_array, report_info_array = data_processing.data_gathering(short_domain, url, report_filetype.lower(), pagesearch_flag.lower(), keywords_list, keywords_flag, dorking_flag.lower(), used_api_flag)
- end = time() - start
- else:
- start = time()
- data_array, report_info_array = data_processing.data_gathering(short_domain, url, report_filetype.lower(), pagesearch_flag.lower(), '', keywords_flag, str(dorking_flag.lower()), used_api_flag)
- end = time() - start
- endtime_string = time_processing(end)
- html_rc.report_assembling(short_domain, url, case_comment, data_array, report_info_array, pagesearch_ui_mark, pagesearch_flag.lower(), endtime_string)
- finally:
- spinner_thread.do_run = False
- spinner_thread.join()
+ if report_filetype.lower() in ['xlsx', 'html']:
+ process_report(report_filetype, short_domain, url, case_comment,
+ keywords_list, keywords_flag, dorking_flag, used_api_flag,
+ pagesearch_flag, pagesearch_ui_mark, spinner_thread)
else:
print(Fore.RED + "\nUnsupported PageSearch mode. Please choose between Y, N or SI")
From c41444a46ff33f260ae7ed7ee0f24f1717e2960d Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Tue, 12 Nov 2024 22:56:51 +0300
Subject: [PATCH 43/46] Adapted data assembler for unified report creation
function
---
datagather_modules/data_assembler.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/datagather_modules/data_assembler.py b/datagather_modules/data_assembler.py
index b24a769..a742d46 100644
--- a/datagather_modules/data_assembler.py
+++ b/datagather_modules/data_assembler.py
@@ -116,7 +116,7 @@ def data_gathering(self, short_domain, url, report_file_type, pagesearch_flag, k
if subdomains[0] != 'No subdomains were found':
to_search_array = [subdomains, social_medias, sd_socials]
print(Fore.LIGHTMAGENTA_EX + "\n[EXTENDED SCAN START: PAGESEARCH]\n" + Style.RESET_ALL)
- ps_emails_return, accessible_subdomains, emails_amount, files_counter, cookies_counter, api_keys_counter, website_elements_counter, exposed_passwords_counter = normal_search(to_search_array, report_folder, keywords, keywords_flag)
+ ps_emails_return, accessible_subdomains, emails_amount, files_counter, cookies_counter, api_keys_counter, website_elements_counter, exposed_passwords_counter, keywords_messages_list = normal_search(to_search_array, report_folder, keywords, keywords_flag)
total_links_counter = accessed_links_counter = 0
print(Fore.LIGHTMAGENTA_EX + "\n[EXTENDED SCAN END: PAGESEARCH]\n" + Style.RESET_ALL)
else:
@@ -141,7 +141,7 @@ def data_gathering(self, short_domain, url, report_file_type, pagesearch_flag, k
dorking_db_path, table = establishing_dork_db_connection(dorking_flag.lower())
print(Fore.LIGHTMAGENTA_EX + f"\n[EXTENDED SCAN START: {dorking_flag.upper()} DORKING]\n" + Style.RESET_ALL)
dorking_status, dorking_results = dp.transfer_results_to_xlsx(table, dp.get_dorking_query(short_domain, dorking_db_path, table))
- print(Fore.LIGHTMAGENTA_EX + f"\n[EXTENDED SCAN END: {dorking_flag.upper()} DORKING]\n" + Style.RESET_ALL)
+ print(Fore.LIGHTMAGENTA_EX + f"[EXTENDED SCAN END: {dorking_flag.upper()} DORKING]\n" + Style.RESET_ALL)
api_scan_db = []
if used_api_flag != ['Empty']:
@@ -152,7 +152,7 @@ def data_gathering(self, short_domain, url, report_file_type, pagesearch_flag, k
if 2 in used_api_flag:
api_securitytrails_check(short_domain)
api_scan_db.append('SecurityTrails')
- print(Fore.LIGHTMAGENTA_EX + f"\n[EXTENDED SCAN END: API SCANNING]\n" + Style.RESET_ALL)
+ print(Fore.LIGHTMAGENTA_EX + f"[EXTENDED SCAN END: API SCANNING]\n" + Style.RESET_ALL)
else:
api_scan_db.append('No')
pass
From f9be4ccf47e3cf2176a9348b162ed0b909b26c59 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Tue, 12 Nov 2024 22:57:59 +0300
Subject: [PATCH 44/46] Adapted XLSX report for unified report creation
function
From 635874fb0d87d88bf7537bc42dea003500dbcecf Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Tue, 12 Nov 2024 23:31:34 +0300
Subject: [PATCH 45/46] Improved "About DPULSE" description
---
README.md | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 81558dc..f812b1c 100644
--- a/README.md
+++ b/README.md
@@ -74,9 +74,16 @@ DPULSE is a software solution for conducting OSINT research in relation to a cer
3. ***PageSearch Sitemap inspection scan:*** sitemap links crawler which starts in addition to basic scan and which can find even more e-mails
-4. ***Dorking scan:*** extended domain research function with prepared Google Dorking databases for different purposes, such as IoT dorking, files dorking, admin panels dorking and so on. Moreover, this mode allows you to create your own custom Google Dorking database
-
-5. ***API scan:*** extended domain research function with prepared functions for 3rd party APIs usage. Currently DPULSE supports VirusTotal API (for brief domain information gathering) and SecurityTrails API (deep subdomains and DNS enumeration)
+4. ***Dorking scan:*** extended domain research function with prepared Google Dorking databases for different purposes, such as:
+ - IoT dorking
+ - files dorking
+ - admin panels dorking
+ - web elements dorking
+ - Moreover, this mode allows you to create your own custom Google Dorking database
+
+6. ***API scan:*** extended domain research function with prepared functions for 3rd party APIs usage. Currently DPULSE supports these API:
+ - VirusTotal API (for brief domain information gathering)
+ - SecurityTrails API (deep subdomains and DNS enumeration)
Finally, DPULSE compiles all found data into an easy-to-read HTML or XLSX report by category. It also saves all information about scan in local report storage database, which can be restored later.
From 54a00f18b9e6d286b48a00745ea7557452301245 Mon Sep 17 00:00:00 2001
From: OSINT-TECHNOLOGIES
<77023667+OSINT-TECHNOLOGIES@users.noreply.github.com>
Date: Wed, 13 Nov 2024 02:30:22 +0300
Subject: [PATCH 46/46] Bumped versions
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index f812b1c..3d13088 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
-
+