diff --git a/web/api/serializers.py b/web/api/serializers.py index 1fd0b7e91..516221607 100644 --- a/web/api/serializers.py +++ b/web/api/serializers.py @@ -44,18 +44,18 @@ def get_most_recent_scan(self, obj): return obj.get_recent_scan_id() def get_insert_date(self, obj): - return naturalday(obj.insert_date).title() + return naturalday(obj.insert_date) def get_insert_date_humanized(self, obj): - return naturaltime(obj.insert_date).title() + return naturaltime(obj.insert_date) def get_start_scan_date(self, obj): if obj.start_scan_date: - return naturalday(obj.start_scan_date).title() + return naturalday(obj.start_scan_date) def get_start_scan_date_humanized(self, obj): if obj.start_scan_date: - return naturaltime(obj.start_scan_date).title() + return naturaltime(obj.start_scan_date) class SubScanResultSerializer(serializers.ModelSerializer): diff --git a/web/celery-entrypoint.sh b/web/celery-entrypoint.sh index 6a1f7c837..7a6719953 100755 --- a/web/celery-entrypoint.sh +++ b/web/celery-entrypoint.sh @@ -1,6 +1,14 @@ #!/bin/bash python3 manage.py makemigrations + +# Hotfix for missing users migration due to swap mid-project +# Assumes PostgreSQL is the db used + +apt-get install -y postgresql-client +echo "INSERT INTO django_migrations (app, name, applied) SELECT 'users', '0001_initial', CURRENT_TIMESTAMP WHERE NOT EXISTS (SELECT app FROM django_migrations WHERE app = 'users' AND name = '0001_initial');" | python3 manage.py dbshell +echo "UPDATE django_content_type SET app_label = 'users' WHERE app_label = 'auth' and model = 'user';" | python3 manage.py dbshell + python3 manage.py migrate python3 manage.py collectstatic --no-input --clear @@ -21,6 +29,10 @@ Pin-Priority: -1 ' | tee /etc/apt/preferences.d/mozilla-firefox apt update apt install firefox -y +apt install -y gettext + +find . -type f -name "*.po" -exec sed -i 's/^#~ //g' {} + +python3 manage.py compilemessages # Temporary fix for whatportis bug - See https://github.com/yogeshojha/rengine/issues/984 sed -i 's/purge()/truncate()/g' /usr/local/lib/python3.10/dist-packages/whatportis/cli.py @@ -162,6 +174,7 @@ exec "$@" # httpx seems to have issue, use alias instead!!! echo 'alias httpx="/go/bin/httpx"' >> ~/.bashrc +pip uninstall -y httpcore # watchmedo auto-restart --recursive --pattern="*.py" --directory="/usr/src/app/reNgine/" -- celery -A reNgine.tasks worker --autoscale=10,0 -l INFO -Q scan_queue & echo "Starting Workers..." diff --git a/web/dashboard/forms.py b/web/dashboard/forms.py new file mode 100644 index 000000000..e9cb367fc --- /dev/null +++ b/web/dashboard/forms.py @@ -0,0 +1,8 @@ +from django.forms import ModelForm +from users.models import User + + +class UserSettingsForm(ModelForm): + class Meta: + model = User + fields = ["language"] \ No newline at end of file diff --git a/web/dashboard/locale/en/LC_MESSAGES/django.mo b/web/dashboard/locale/en/LC_MESSAGES/django.mo new file mode 100644 index 000000000..63c86f6db Binary files /dev/null and b/web/dashboard/locale/en/LC_MESSAGES/django.mo differ diff --git a/web/dashboard/locale/en/LC_MESSAGES/django.po b/web/dashboard/locale/en/LC_MESSAGES/django.po new file mode 100644 index 000000000..462481ac0 --- /dev/null +++ b/web/dashboard/locale/en/LC_MESSAGES/django.po @@ -0,0 +1,540 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: dashboard/templates/dashboard/admin.html:9 +#: dashboard/templates/dashboard/profile.html:7 +msgid "Profile" +msgstr "Profile" + +#: dashboard/templates/dashboard/admin.html:20 +#: dashboard/templates/dashboard/index.html:8 +#: dashboard/templates/dashboard/index.html:12 +#: dashboard/templates/dashboard/profile.html:18 +#: dashboard/templates/dashboard/projects.html:18 +msgid "Dashboard" +msgstr "Dashboard" + +#: dashboard/templates/dashboard/admin.html:21 +msgid "Admin settings" +msgstr "Admin settings" + +#: dashboard/templates/dashboard/admin.html:32 +msgid "Add User" +msgstr "Add User" + +#: dashboard/templates/dashboard/admin.html:44 +msgid "Users" +msgstr "Users" + +#: dashboard/templates/dashboard/admin.html:49 +#: dashboard/templates/dashboard/profile.html:31 +#: dashboard/templates/dashboard/profile.html:32 +msgid "Username" +msgstr "Username" + +#: dashboard/templates/dashboard/admin.html:50 +msgid "Name" +msgstr "Name" + +#: dashboard/templates/dashboard/admin.html:51 +#: dashboard/templates/dashboard/onboarding.html:48 +msgid "Role" +msgstr "Role" + +#: dashboard/templates/dashboard/admin.html:52 +msgid "Created on" +msgstr "Created on" + +#: dashboard/templates/dashboard/admin.html:53 +msgid "Last Logged in" +msgstr "Last Logged in" + +#: dashboard/templates/dashboard/admin.html:54 +msgid "Status" +msgstr "Status" + +#: dashboard/templates/dashboard/admin.html:55 +msgid "Actions" +msgstr "Actions" + +#: dashboard/templates/dashboard/admin.html:79 +#: dashboard/templates/dashboard/onboarding.html:50 +msgid "Sys Admin" +msgstr "Sys Admin" + +#: dashboard/templates/dashboard/admin.html:81 +#: dashboard/templates/dashboard/onboarding.html:52 +msgid "Auditor" +msgstr "Auditor" + +#: dashboard/templates/dashboard/admin.html:83 +#: dashboard/templates/dashboard/onboarding.html:51 +msgid "Penetration Tester" +msgstr "Penetration Tester" + +#: dashboard/templates/dashboard/admin.html:91 +msgid "Never Logged In" +msgstr "Never Logged In" + +#: dashboard/templates/dashboard/admin.html:96 +msgid "Active" +msgstr "Active" + +#: dashboard/templates/dashboard/admin.html:98 +msgid "Disabled" +msgstr "Disabled" + +#: dashboard/templates/dashboard/admin.html:104 +msgid "Disable Account" +msgstr "Disable Account" + +#: dashboard/templates/dashboard/admin.html:106 +msgid "Enable Account" +msgstr "Enable Account" + +#: dashboard/templates/dashboard/admin.html:111 +msgid "Update User Detail" +msgstr "Update User Detail" + +#: dashboard/templates/dashboard/admin.html:113 +msgid "Delete Account" +msgstr "Delete Account" + +#: dashboard/templates/dashboard/index.html:30 +msgid "Total Number of Targets/Domains" +msgstr "Total Number of Targets/Domains" + +#: dashboard/templates/dashboard/index.html:31 +msgid "Total Targets" +msgstr "Total Targets" + +#: dashboard/templates/dashboard/index.html:44 +msgid "Total Number of Subdomains discovered by reNgine across all targets." +msgstr "Total Number of Subdomains discovered by reNgine across all targets." + +#: dashboard/templates/dashboard/index.html:45 +msgid "Total Subdomains" +msgstr "Total Subdomains" + +#: dashboard/templates/dashboard/index.html:49 +msgid "Alive Subdomains:" +msgstr "Alive Subdomains:" + +#: dashboard/templates/dashboard/index.html:58 +msgid "" +"Total Endpoints/URLs discovered by reNgine across all targets & subdomains." +msgstr "" +"Total Endpoints/URLs discovered by reNgine across all targets & subdomains." + +# "Total Endpoints/URLs discovered by reNgine across all targets & subdomains." +#: dashboard/templates/dashboard/index.html:59 +msgid "Total Endpoints" +msgstr "Total Endpoints" + +#: dashboard/templates/dashboard/index.html:63 +msgid "Alive Endpoints" +msgstr "Alive Endpoints" + +#: dashboard/templates/dashboard/index.html:72 +msgid "" +"Total Vulnerabilities discovered by reNgine across all targets, subdomains & " +"endpoints." +msgstr "" +"Total Vulnerabilities discovered by reNgine across all targets, subdomains & " +"endpoints." + +#: dashboard/templates/dashboard/index.html:73 +msgid "Total Vulnerabilities" +msgstr "Total Vulnerabilities" + +#: dashboard/templates/dashboard/index.html:76 +#, python-format +msgid "" +"%(critical_count)s Critical, %(high_count)s High, %(medium_count)s Medium" +msgstr "" +"%(critical_count)s Critical, %(high_count)s High, %(medium_count)s Medium" + +#: dashboard/templates/dashboard/index.html:78 +#, python-format +msgid "" +"%(low_count)s Low, %(info_count)s Info, %(unknown_count)s Unknown " +"Vulnerabilities" +msgstr "" +"%(low_count)s Low, %(info_count)s Info, %(unknown_count)s Unknown " +"Vulnerabilities" + +#: dashboard/templates/dashboard/index.html:91 +msgid "Activity Feed" +msgstr "Activity Feed" + +#: dashboard/templates/dashboard/index.html:112 +msgid "Completed" +msgstr "Completed" + +#: dashboard/templates/dashboard/index.html:112 +msgid "Initiated" +msgstr "Initiated" + +#: dashboard/templates/dashboard/index.html:112 +msgid "Aborted" +msgstr "Aborted" + +#: dashboard/templates/dashboard/index.html:112 +msgid "for" +msgstr "for" + +#: dashboard/templates/dashboard/index.html:120 +msgid "Feed will be automatically generated while the scan is running." +msgstr "" +"Feed will be automatically generated once the vulnerability scan is running." + +#: dashboard/templates/dashboard/index.html:132 +msgid "Vulnerability Feed" +msgstr "Vulnerability Feed" + +#: dashboard/templates/dashboard/index.html:171 +msgid "Info" +msgstr "Info" + +#: dashboard/templates/dashboard/index.html:173 +msgid "Low" +msgstr "Low" + +#: dashboard/templates/dashboard/index.html:175 +msgid "Medium" +msgstr "Medium" + +#: dashboard/templates/dashboard/index.html:177 +msgid "High" +msgstr "High" + +#: dashboard/templates/dashboard/index.html:179 +msgid "Critical" +msgstr "Critical" + +#: dashboard/templates/dashboard/index.html:181 +msgid "Unknown" +msgstr "Unknown" + +#: dashboard/templates/dashboard/index.html:184 +#, python-format +msgid "detected on %(subdomain)s" +msgstr "detected on %(subdomain)s" + +#: dashboard/templates/dashboard/index.html:191 +msgid "" +"Feed will be automatically generated once the vulnerability scan is " +"completed." +msgstr "" +"Feed will be automatically generated once the vulnerability scan is " +"completed." + +#: dashboard/templates/dashboard/index.html:206 +msgid "Geographical Distribution of Assets" +msgstr "Geographical Distribution of Assets" + +#: dashboard/templates/dashboard/index.html:215 +msgid "Country" +msgstr "Country" + +#: dashboard/templates/dashboard/index.html:216 +msgid "Assets" +msgstr "Assets" + +#: dashboard/templates/dashboard/index.html:241 +msgid "Most Vulnerable Target" +msgstr "Most Vulnerable Target" + +#: dashboard/templates/dashboard/index.html:255 +msgid "Most common IP Address" +msgstr "Most common IP Address" + +#: dashboard/templates/dashboard/index.html:265 +msgid "Most common Ports" +msgstr "Most common Ports" + +#: dashboard/templates/dashboard/index.html:275 +msgid "Most common Technology" +msgstr "Most common Technology" + +#: dashboard/templates/dashboard/index.html:686 +msgid "Total Assets" +msgstr "Total Assets" + +#: dashboard/templates/dashboard/onboarding.html:8 +msgid "reNgine Onboarding" +msgstr "reNgine Onboarding" + +#: dashboard/templates/dashboard/onboarding.html:22 +#, python-format +msgid "Hey %(username)s! Welcome to reNgine" +msgstr "Hey %(username)s! Welcome to reNgine" + +#: dashboard/templates/dashboard/onboarding.html:23 +msgid "" +"You will need to create your first project before you start using reNgine. " +"Projects are now a part of reNgine 2.0!" +msgstr "" +"You will need to create your first project before you start using reNgine. " +"Projects are now a part of reNgine 2.0!" + +#: dashboard/templates/dashboard/onboarding.html:23 +msgid "Learn more about projects." +msgstr "Learn more about projects." + +#: dashboard/templates/dashboard/onboarding.html:32 +msgid "Project" +msgstr "Project" + +#: dashboard/templates/dashboard/onboarding.html:34 +msgid "Project name" +msgstr "Project name" + +#: dashboard/templates/dashboard/onboarding.html:35 +msgid "Default" +msgstr "Default" + +#: dashboard/templates/dashboard/onboarding.html:37 +msgid "Additional User" +msgstr "Additional User" + +#: dashboard/templates/dashboard/onboarding.html:38 +msgid "" +"You can add additional users and assign them roles. You may add additional " +"users and also change their roles at any point in future." +msgstr "" +"You can add additional users and assign them roles. You may add additional " +"users and also change their roles at any point in future." + +#: dashboard/templates/dashboard/onboarding.html:40 +msgid "User name" +msgstr "User name" + +#: dashboard/templates/dashboard/onboarding.html:44 +msgid "Password" +msgstr "Password" + +#: dashboard/templates/dashboard/onboarding.html:59 +msgid "Default API Keys" +msgstr "Default API Keys" + +#: dashboard/templates/dashboard/onboarding.html:60 +msgid "If you have API keys for these services, please enter them here." +msgstr "If you have API keys for these services, please enter them here." + +#: dashboard/templates/dashboard/onboarding.html:62 +msgid "Recommended" +msgstr "Recommended" + +#: dashboard/templates/dashboard/onboarding.html:62 +msgid "Experimental" +msgstr "Experimental" + +#: dashboard/templates/dashboard/onboarding.html:63 +msgid "" +"OpenAI keys will be used to generate vulnerability description, remediation, " +"impact and vulnerability report writing using ChatGPT." +msgstr "" +"OpenAI keys will be used to generate vulnerability description, remediation, " +"impact and vulnerability report writing using ChatGPT." + +#: dashboard/templates/dashboard/onboarding.html:64 +msgid "Enter OpenAI Key" +msgstr "Enter OpenAI Key" + +#: dashboard/templates/dashboard/onboarding.html:65 +msgid "This is optional but recommended." +msgstr "This is optional but recommended." + +#: dashboard/templates/dashboard/onboarding.html:69 +msgid "Netlas keys will be used to get whois information and other OSINT data." +msgstr "" +"Netlas keys will be used to get whois information and other OSINT data." + +#: dashboard/templates/dashboard/onboarding.html:70 +msgid "Enter Netlas Key" +msgstr "Enter Netlas Key" + +#: dashboard/templates/dashboard/onboarding.html:71 +msgid "This is optional" +msgstr "This is optional" + +#: dashboard/templates/dashboard/onboarding.html:74 +msgid "Proceed" +msgstr "Proceed" + +#: dashboard/templates/dashboard/profile.html:14 +#: dashboard/templates/dashboard/profile.html:19 +msgid "My Profile" +msgstr "My Profile" + +#: dashboard/templates/dashboard/profile.html:27 +#, python-format +msgid "Hi %(username)s!" +msgstr "Hi %(username)s!" + +#: dashboard/templates/dashboard/profile.html:44 +msgid "Language" +msgstr "Language" + +#: dashboard/templates/dashboard/profile.html:56 +msgid "Change Settings" +msgstr "Change Settings" + +#: dashboard/templates/dashboard/profile.html:60 +#: dashboard/templates/dashboard/profile.html:87 +msgid "Change Password" +msgstr "Change Password" + +#: dashboard/templates/dashboard/profile.html:65 +msgid "Old Password" +msgstr "Old Password" + +#: dashboard/templates/dashboard/profile.html:74 +msgid "New Password" +msgstr "New Password" + +#: dashboard/templates/dashboard/profile.html:78 +msgid "Confirm Password" +msgstr "Confirm Password" + +#: dashboard/templates/dashboard/projects.html:7 +#: dashboard/templates/dashboard/projects.html:19 +msgid "Projects" +msgstr "Projects" + +#: dashboard/templates/dashboard/projects.html:14 +msgid "All Projects" +msgstr "All Projects" + +#: dashboard/templates/dashboard/projects.html:31 +msgid "Project Name" +msgstr "Project Name" + +#: dashboard/templates/dashboard/projects.html:32 +msgid "Slug" +msgstr "Slug" + +#: dashboard/templates/dashboard/projects.html:33 +msgid "Action" +msgstr "Action" + +#: dashboard/templates/dashboard/projects.html:42 +msgid "Current Project" +msgstr "Current Project" + +#: dashboard/templates/dashboard/projects.html:51 +msgid "Current Project cannot be deleted." +msgstr "Current Project cannot be deleted." + +#: dashboard/templates/dashboard/search.html:7 +#: dashboard/templates/dashboard/search.html:18 +#: dashboard/templates/dashboard/search.html:31 +msgid "Universal Search..." +msgstr "Universal Search..." + +#: dashboard/templates/dashboard/search.html:14 +msgid "Search Results" +msgstr "Search Results" + +#: dashboard/templates/dashboard/search.html:32 +msgid "Search" +msgstr "Search" + +#: dashboard/templates/dashboard/search.html:36 +#, python-format +msgid "Search Results For \"%(query)s\"" +msgstr "Search Results For \"%(query)s\"" + +#: dashboard/templates/dashboard/search.html:55 +msgid "Subdomains" +msgstr "Subdomains" + +#: dashboard/templates/dashboard/search.html:61 +msgid "Endpoints" +msgstr "Endpoints" + +#: dashboard/templates/dashboard/search.html:67 +msgid "Vulnerabilities" +msgstr "Vulnerabilities" + +#: dashboard/templates/dashboard/search.html:73 +msgid "Others" +msgstr "Others" + +#: dashboard/views.py:190 +msgid "Your password was successfully changed!" +msgstr "Your password was successfully changed!" + +#: dashboard/views.py:199 +msgid "Your settings were successfully changed!" +msgstr "Your settings were successfully changed!" + +#: dashboard/views.py:202 +msgid "Please correct the error below." +msgstr "Please correct the error below." + +#: dashboard/views.py:248 +#, python-format +msgid "User %(username)s successfully deleted." +msgstr "User %(username)s successfully deleted." + +#: dashboard/views.py:272 +msgid "Empty passwords are not allowed" +msgstr "Empty passwords are not allowed" + +#: dashboard/views.py:293 +msgid "You have been successfully logged out. Thank you for using reNgine." +msgstr "You have been successfully logged out. Thank you for using reNgine." + +#: dashboard/views.py:301 +#, python-format +msgid "Hi @%(username)s welcome back!" +msgstr "Hi @%(username)s welcome back!" + +#: dashboard/views.py:328 +msgid "Project successfully deleted!" +msgstr "Project successfully deleted!" + +#: dashboard/views.py:334 +msgid "Oops! Project could not be deleted!" +msgstr "Oops! Project could not be deleted!" + +#: dashboard/views.py:360 +#, python-format +msgid " Could not create project, Error: %(errMsg)s" +msgstr " Could not create project, Error: %(errMsg)s" + +#: dashboard/views.py:372 +#, python-format +msgid " Could not create User, Error: %(errMsg)s" +msgstr " Could not create User, Error: %(errMsg)s" + +# Embedded JS +msgid "Important Todo" +msgstr "Important Todo" + +#, python-format +msgid "Domain: %(domainName)s, Scanned %(scannedWhen)s" +msgstr "Domain: %(domainName)s, Scanned %(scannedWhen)s" + +#, python-format +msgid "Subdomain: %(subDomainName)s" +msgstr "Subdomain: %(subDomainName)s" diff --git a/web/dashboard/locale/fr/LC_MESSAGES/django.mo b/web/dashboard/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 000000000..285e62fa3 Binary files /dev/null and b/web/dashboard/locale/fr/LC_MESSAGES/django.mo differ diff --git a/web/dashboard/locale/fr/LC_MESSAGES/django.po b/web/dashboard/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 000000000..cb93ac9c3 --- /dev/null +++ b/web/dashboard/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,532 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: dashboard/templates/dashboard/admin.html:9 +#: dashboard/templates/dashboard/profile.html:7 +msgid "Profile" +msgstr "Profil" + +#: dashboard/templates/dashboard/admin.html:20 +#: dashboard/templates/dashboard/index.html:8 +#: dashboard/templates/dashboard/index.html:12 +#: dashboard/templates/dashboard/profile.html:18 +#: dashboard/templates/dashboard/projects.html:18 +msgid "Dashboard" +msgstr "Tableau de bord" + +#: dashboard/templates/dashboard/admin.html:21 +msgid "Admin settings" +msgstr "Paramètres d'administration" + +#: dashboard/templates/dashboard/admin.html:32 +msgid "Add User" +msgstr "Ajouter un utilisateur" + +#: dashboard/templates/dashboard/admin.html:44 +msgid "Users" +msgstr "Utilisateurs" + +#: dashboard/templates/dashboard/admin.html:49 +#: dashboard/templates/dashboard/profile.html:31 +#: dashboard/templates/dashboard/profile.html:32 +msgid "Username" +msgstr "Nom d'utilisateur" + +#: dashboard/templates/dashboard/admin.html:50 +msgid "Name" +msgstr "Nom" + +#: dashboard/templates/dashboard/admin.html:51 +#: dashboard/templates/dashboard/onboarding.html:48 +msgid "Role" +msgstr "Rôle" + +#: dashboard/templates/dashboard/admin.html:52 +msgid "Created on" +msgstr "Créé le" + +#: dashboard/templates/dashboard/admin.html:53 +msgid "Last Logged in" +msgstr "Dernière connexion" + +#: dashboard/templates/dashboard/admin.html:54 +msgid "Status" +msgstr "Statut" + +#: dashboard/templates/dashboard/admin.html:55 +msgid "Actions" +msgstr "Actions" + +#: dashboard/templates/dashboard/admin.html:79 +#: dashboard/templates/dashboard/onboarding.html:50 +msgid "Sys Admin" +msgstr "Administrateur système" + +#: dashboard/templates/dashboard/admin.html:81 +#: dashboard/templates/dashboard/onboarding.html:52 +msgid "Auditor" +msgstr "Auditeur" + +#: dashboard/templates/dashboard/admin.html:83 +#: dashboard/templates/dashboard/onboarding.html:51 +msgid "Penetration Tester" +msgstr "Testeur d'intrusion" + +#: dashboard/templates/dashboard/admin.html:91 +msgid "Never Logged In" +msgstr "Jamais connecté" + +#: dashboard/templates/dashboard/admin.html:96 +msgid "Active" +msgstr "Actif" + +#: dashboard/templates/dashboard/admin.html:98 +msgid "Disabled" +msgstr "Désactivé" + +#: dashboard/templates/dashboard/admin.html:104 +msgid "Disable Account" +msgstr "Compte désactivé" + +#: dashboard/templates/dashboard/admin.html:106 +msgid "Enable Account" +msgstr "Activer le compte" + +#: dashboard/templates/dashboard/admin.html:111 +msgid "Update User Detail" +msgstr "Mettre à jour les détails de l'utilisateur" + +#: dashboard/templates/dashboard/admin.html:113 +msgid "Delete Account" +msgstr "Supprimer le compte" + +#: dashboard/templates/dashboard/index.html:30 +msgid "Total Number of Targets/Domains" +msgstr "Nombre total de cibles/domaines" + +#: dashboard/templates/dashboard/index.html:31 +msgid "Total Targets" +msgstr "Total des cibles" + +#: dashboard/templates/dashboard/index.html:44 +msgid "Total Number of Subdomains discovered by reNgine across all targets." +msgstr "" +"Nombre total de sous-domaines découverts par reNgine sur toutes les cibles." + +#: dashboard/templates/dashboard/index.html:45 +msgid "Total Subdomains" +msgstr "Total des sous-domaines" + +#: dashboard/templates/dashboard/index.html:49 +msgid "Alive Subdomains:" +msgstr "Sous-domaines actifs :" + +#: dashboard/templates/dashboard/index.html:58 +msgid "" +"Total Endpoints/URLs discovered by reNgine across all targets & subdomains." +msgstr "" +"Nombre total de points de terminaison/URL découverts par reNgine sur toutes " +"les cibles et sous-domaines." + +#: dashboard/templates/dashboard/index.html:59 +msgid "Total Endpoints" +msgstr "Total des points de terminaison" + +#: dashboard/templates/dashboard/index.html:63 +msgid "Alive Endpoints" +msgstr "Points de terminaison actifs" + +#: dashboard/templates/dashboard/index.html:72 +msgid "" +"Total Vulnerabilities discovered by reNgine across all targets, subdomains & " +"endpoints." +msgstr "" +"Nombre total de vulnérabilités découvertes par reNgine sur toutes les " +"cibles, sous-domaines et points de terminaison." + +#: dashboard/templates/dashboard/index.html:73 +msgid "Total Vulnerabilities" +msgstr "Total des vulnérabilités" + +#: dashboard/templates/dashboard/index.html:76 +#, python-format +msgid "" +"%(critical_count)s Critical, %(high_count)s High, %(medium_count)s Medium" +msgstr "" +"%(critical_count)s Critiques, %(high_count)s Élevées, %(medium_count)s " +"Modérées" + +#: dashboard/templates/dashboard/index.html:78 +#, python-format +msgid "" +"%(low_count)s Low, %(info_count)s Info, %(unknown_count)s Unknown " +"Vulnerabilities" +msgstr "" +"%(low_count)s Faibles, %(info_count)s informationnelles, %(unknown_count)s " +"inconnues" + +#: dashboard/templates/dashboard/index.html:91 +msgid "Activity Feed" +msgstr "Activité récente" + +#: dashboard/templates/dashboard/index.html:112 +msgid "Completed" +msgstr "Terminé" + +#: dashboard/templates/dashboard/index.html:112 +msgid "Initiated" +msgstr "Initié" + +#: dashboard/templates/dashboard/index.html:112 +msgid "Aborted" +msgstr "Avorté" + +#: dashboard/templates/dashboard/index.html:112 +msgid "for" +msgstr "pour" + +#: dashboard/templates/dashboard/index.html:120 +msgid "Feed will be automatically generated while the scan is running." +msgstr "Le flux sera automatiquement généré pendant l'exécution du scan." + +#: dashboard/templates/dashboard/index.html:132 +msgid "Vulnerability Feed" +msgstr "Flux de vulnérabilité" + +#: dashboard/templates/dashboard/index.html:171 +msgid "Info" +msgstr "Info" + +#: dashboard/templates/dashboard/index.html:173 +msgid "Low" +msgstr "Faible" + +#: dashboard/templates/dashboard/index.html:175 +msgid "Medium" +msgstr "Moyen" + +#: dashboard/templates/dashboard/index.html:177 +msgid "High" +msgstr "Élevé" + +#: dashboard/templates/dashboard/index.html:179 +msgid "Critical" +msgstr "Critique" + +#: dashboard/templates/dashboard/index.html:181 +msgid "Unknown" +msgstr "Inconnu" + +#: dashboard/templates/dashboard/index.html:184 +#, python-format +msgid "detected on %(subdomain)s" +msgstr "détecté sur %(subdomain)s" + +#: dashboard/templates/dashboard/index.html:191 +msgid "" +"Feed will be automatically generated once the vulnerability scan is " +"completed." +msgstr "" +"Le flux sera automatiquement généré une fois l'analyse de vulnérabilité " +"terminée." + +#: dashboard/templates/dashboard/index.html:206 +msgid "Geographical Distribution of Assets" +msgstr "Distribution géographique des actifs" + +#: dashboard/templates/dashboard/index.html:215 +msgid "Country" +msgstr "Pays" + +#: dashboard/templates/dashboard/index.html:216 +msgid "Assets" +msgstr "Actifs" + +#: dashboard/templates/dashboard/index.html:241 +msgid "Most Vulnerable Target" +msgstr "Cible la plus vulnérable" + +#: dashboard/templates/dashboard/index.html:255 +msgid "Most common IP Address" +msgstr "Adresse IP la plus courante" + +#: dashboard/templates/dashboard/index.html:265 +msgid "Most common Ports" +msgstr "Ports les plus courants" + +#: dashboard/templates/dashboard/index.html:275 +msgid "Most common Technology" +msgstr "Technologie la plus courante" + +#: dashboard/templates/dashboard/index.html:686 +msgid "Total Assets" +msgstr "Total des actifs" + +#: dashboard/templates/dashboard/onboarding.html:8 +msgid "reNgine Onboarding" +msgstr "Intégration dans reNgine" + +#: dashboard/templates/dashboard/onboarding.html:22 +#, python-format +msgid "Hey %(username)s! Welcome to reNgine" +msgstr "Salut %(username)s! Bienvenue sur reNgine" + +#: dashboard/templates/dashboard/onboarding.html:23 +msgid "" +"You will need to create your first project before you start using reNgine. " +"Projects are now a part of reNgine 2.0!" +msgstr "" +"Vous devrez créer votre premier projet avant de commencer à utiliser " +"reNgine. Les projets font maintenant partie de reNgine 2.0!" + +#: dashboard/templates/dashboard/onboarding.html:23 +msgid "Learn more about projects." +msgstr "En savoir plus sur les projets." + +#: dashboard/templates/dashboard/onboarding.html:32 +msgid "Project" +msgstr "Projet" + +#: dashboard/templates/dashboard/onboarding.html:34 +msgid "Project name" +msgstr "Nom du projet" + +#: dashboard/templates/dashboard/onboarding.html:35 +msgid "Default" +msgstr "Défaut" + +#: dashboard/templates/dashboard/onboarding.html:37 +msgid "Additional User" +msgstr "Utilisateur supplémentaire" + +#: dashboard/templates/dashboard/onboarding.html:38 +msgid "" +"You can add additional users and assign them roles. You may add additional " +"users and also change their roles at any point in future." +msgstr "" +"Vous pouvez ajouter des utilisateurs supplémentaires et leur attribuer des " +"rôles. Vous pouvez ajouter des utilisateurs supplémentaires et modifier " +"leurs rôles à tout moment à l'avenir." + +#: dashboard/templates/dashboard/onboarding.html:40 +msgid "User name" +msgstr "Nom d'utilisateur" + +#: dashboard/templates/dashboard/onboarding.html:44 +msgid "Password" +msgstr "Mot de passe" + +#: dashboard/templates/dashboard/onboarding.html:59 +msgid "Default API Keys" +msgstr "Clés API par défaut" + +#: dashboard/templates/dashboard/onboarding.html:60 +msgid "If you have API keys for these services, please enter them here." +msgstr "Si vous avez des clés API pour ces services, veuillez les saisir ici." + +#: dashboard/templates/dashboard/onboarding.html:62 +msgid "Recommended" +msgstr "Recommandé" + +#: dashboard/templates/dashboard/onboarding.html:62 +msgid "Experimental" +msgstr "Expérimental" + +#: dashboard/templates/dashboard/onboarding.html:63 +msgid "" +"OpenAI keys will be used to generate vulnerability description, remediation, " +"impact and vulnerability report writing using ChatGPT." +msgstr "" +"Les clés OpenAI seront utilisées pour générer la description des " +"vulnérabilités, la remédiation, l'impact et la rédaction des rapports de " +"vulnérabilités en utilisant ChatGPT." + +#: dashboard/templates/dashboard/onboarding.html:64 +msgid "Enter OpenAI Key" +msgstr "Saisir la clé OpenAI" + +#: dashboard/templates/dashboard/onboarding.html:65 +msgid "This is optional but recommended." +msgstr "Ceci est optionnel mais recommandé." + +#: dashboard/templates/dashboard/onboarding.html:69 +msgid "Netlas keys will be used to get whois information and other OSINT data." +msgstr "" +"Les clés Netlas seront utilisées pour obtenir des informations whois et " +"d'autres données OSINT." + +#: dashboard/templates/dashboard/onboarding.html:70 +msgid "Enter Netlas Key" +msgstr "Saisir la clé Netlas" + +#: dashboard/templates/dashboard/onboarding.html:71 +msgid "This is optional" +msgstr "Ceci est optionnel" + +#: dashboard/templates/dashboard/onboarding.html:74 +msgid "Proceed" +msgstr "Continuer" + +#: dashboard/templates/dashboard/profile.html:14 +#: dashboard/templates/dashboard/profile.html:19 +msgid "My Profile" +msgstr "Mon profil" + +#: dashboard/templates/dashboard/profile.html:27 +#, python-format +msgid "Hi %(username)s!" +msgstr "Bonjour %(username)s !" + +#: dashboard/templates/dashboard/profile.html:44 +msgid "Language" +msgstr "Langue" + +#: dashboard/templates/dashboard/profile.html:56 +msgid "Change Settings" +msgstr "Modifier les paramètres" + +#: dashboard/templates/dashboard/profile.html:60 +#: dashboard/templates/dashboard/profile.html:87 +msgid "Change Password" +msgstr "Changer le mot de passe" + +#: dashboard/templates/dashboard/profile.html:65 +msgid "Old Password" +msgstr "Ancien mot de passe" + +#: dashboard/templates/dashboard/profile.html:74 +msgid "New Password" +msgstr "Nouveau mot de passe" + +#: dashboard/templates/dashboard/profile.html:78 +msgid "Confirm Password" +msgstr "Confirmer le mot de passe" + +#: dashboard/templates/dashboard/projects.html:7 +#: dashboard/templates/dashboard/projects.html:19 +msgid "Projects" +msgstr "Projets" + +#: dashboard/templates/dashboard/projects.html:14 +msgid "All Projects" +msgstr "Tous les projets" + +#: dashboard/templates/dashboard/projects.html:31 +msgid "Project Name" +msgstr "Nom du projet" + +#: dashboard/templates/dashboard/projects.html:32 +msgid "Slug" +msgstr "Slug" + +#: dashboard/templates/dashboard/projects.html:33 +msgid "Action" +msgstr "Action" + +#: dashboard/templates/dashboard/projects.html:42 +msgid "Current Project" +msgstr "Projet actuel" + +#: dashboard/templates/dashboard/projects.html:51 +msgid "Current Project cannot be deleted." +msgstr "Le projet actuel ne peut pas être supprimé." + +#: dashboard/templates/dashboard/search.html:7 +#: dashboard/templates/dashboard/search.html:18 +#: dashboard/templates/dashboard/search.html:31 +msgid "Universal Search..." +msgstr "Recherche universelle..." + +#: dashboard/templates/dashboard/search.html:14 +msgid "Search Results" +msgstr "Résultats de recherche" + +#: dashboard/templates/dashboard/search.html:32 +msgid "Search" +msgstr "Rechercher" + +#: dashboard/templates/dashboard/search.html:36 +#, python-format +msgid "Search Results For \"%(query)s\"" +msgstr "Résultats de recherche pour \"%(query)s\"" + +#: dashboard/templates/dashboard/search.html:55 +msgid "Subdomains" +msgstr "Sous-domaines" + +#: dashboard/templates/dashboard/search.html:61 +msgid "Endpoints" +msgstr "Points de terminaison" + +#: dashboard/templates/dashboard/search.html:67 +msgid "Vulnerabilities" +msgstr "Vulnérabilités" + +#: dashboard/templates/dashboard/search.html:73 +msgid "Others" +msgstr "Autres" + +#: dashboard/views.py:190 +msgid "Your password was successfully changed!" +msgstr "Votre mot de passe a été changé avec succès !" + +#: dashboard/views.py:199 +msgid "Your settings were successfully changed!" +msgstr "Vos paramètres ont été changés avec succès !" + +#: dashboard/views.py:202 +msgid "Please correct the error below." +msgstr "Veuillez corriger l'erreur ci-dessous." + +#: dashboard/views.py:248 +#, python-format +msgid "User %(username)s successfully deleted." +msgstr "L'utilisateur %(username)s a été supprimé avec succès." + +#: dashboard/views.py:272 +msgid "Empty passwords are not allowed" +msgstr "Les mots de passe vides ne sont pas autorisés" + +#: dashboard/views.py:293 +msgid "You have been successfully logged out. Thank you for using reNgine." +msgstr "Vous avez été déconnecté avec succès. Merci d'avoir utilisé reNgine." + +#: dashboard/views.py:301 +#, python-format +msgid "Hi @%(username)s welcome back!" +msgstr "Bonjour @%(username)s bon retour parmi nous !" + +#: dashboard/views.py:328 +msgid "Project successfully deleted!" +msgstr "Le projet a été supprimé avec succès !" + +#: dashboard/views.py:334 +msgid "Oops! Project could not be deleted!" +msgstr "Oups ! Le projet ne peut pas être supprimé !" + +#: dashboard/views.py:360 +#, python-format +msgid " Could not create project, Error: %(errMsg)s" +msgstr " Impossible de créer le projet, Erreur: %(errMsg)s" + +#: dashboard/views.py:372 +#, python-format +msgid " Could not create User, Error: %(errMsg)s" +msgstr " Impossible de créer l'utilisateur, Erreur: %(errMsg)s" diff --git a/web/dashboard/locale/fr/LC_MESSAGES/djangojs.mo b/web/dashboard/locale/fr/LC_MESSAGES/djangojs.mo new file mode 100644 index 000000000..61e0f81d4 Binary files /dev/null and b/web/dashboard/locale/fr/LC_MESSAGES/djangojs.mo differ diff --git a/web/dashboard/locale/fr/LC_MESSAGES/djangojs.po b/web/dashboard/locale/fr/LC_MESSAGES/djangojs.po new file mode 100644 index 000000000..25c2832e1 --- /dev/null +++ b/web/dashboard/locale/fr/LC_MESSAGES/djangojs.po @@ -0,0 +1,203 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-06 20:42+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: web/dashboard/templates/dashboard/admin.html:132 +# Manually added +msgid "Are you sure you want to delete user %(username)s?" +msgstr "Êtes-vous sûr de vouloir supprimer l'utilisateur %(username)s?" + +#: web/dashboard/templates/dashboard/admin.html:133 +# Manually added +msgid "You won't be able to revert this!" +msgstr "Vous ne pourrez pas revenir en arrière !" + +#: web/dashboard/templates/dashboard/admin.html:136 +# Manually added +msgid "Delete" +msgstr "Supprimer" + +#: web/dashboard/templates/dashboard/admin.html:137 +# Manually added +msgid "Cancel" +msgstr "Annuler" + +#: web/dashboard/templates/dashboard/admin.html:157 +# Manually added +msgid "Oops! Unable to delete the User!" +msgstr "Oups! Impossible de supprimer l'utilisateur !" + +#: web/dashboard/templates/dashboard/admin.html:169 +# Manually added +msgid "Role" +msgstr "Rôle" + +#: web/dashboard/templates/dashboard/admin.html:171 +#: web/dashboard/templates/dashboard/admin.html:255 +# Manually added +msgid "Sys Admin" +msgstr "Administrateur système" + +#: web/dashboard/templates/dashboard/admin.html:172 +#: web/dashboard/templates/dashboard/admin.html:256 +# Manually added +msgid "Penetration Tester" +msgstr "Pentester" + +#: web/dashboard/templates/dashboard/admin.html:173 +#: web/dashboard/templates/dashboard/admin.html:257 +# Manually added +msgid "Auditor" +msgstr "Auditeur" + +#: web/dashboard/templates/dashboard/admin.html:191 +# Manually added +msgid "Update User" +msgstr "Mettre à jour l'utilisateur" + +#: web/dashboard/templates/dashboard/admin.html:195 +# Manually added +msgid "Update" +msgstr "Mettre à jour" + +#: web/dashboard/templates/dashboard/admin.html:222 +#: web/dashboard/templates/dashboard/admin.html:324 +# Manually added +msgid "Oops! Unable to update user!" +msgstr "Oups ! Impossible de mettre à jour l'utilisateur !" + +#: web/dashboard/templates/dashboard/admin.html:249 +#: web/dashboard/templates/dashboard/admin.html:250 +# Manually added +msgid "Username" +msgstr "Nom d'utilisateur" + +#: web/dashboard/templates/dashboard/admin.html:274 +#: web/dashboard/templates/dashboard/admin.html:278 +# Manually added +msgid "Create User" +msgstr "Créer un utilisateur" + +#: web/dashboard/templates/dashboard/admin.html:287 +# Manually added +msgid "Oops! Passwords can't be empty!" +msgstr "Oups ! Les mots de passe ne peuvent pas être vides !" + +#: web/dashboard/templates/dashboard/admin.html:314 +# Manually added +msgid "Oops! Can't create user!" +msgstr "Oups ! Impossible de créer l'utilisateur !" + +#: web/dashboard/templates/dashboard/admin.html:316 +# Manually added +msgid "Error: %(errorMsg)s" +msgstr "Erreur : %(errorMsg)s" + +#: web/dashboard/templates/dashboard/index.html:361 +msgid "Targets Added" +msgstr "Cibles ajoutées" + +#: web/dashboard/templates/dashboard/index.html:397 +msgid "Subdomains Discovered" +msgstr "Sous-domaines découverts" + +#: web/dashboard/templates/dashboard/index.html:348 +msgid "Endpoints Discovered" +msgstr "Points de terminaison découverts" + +#: web/dashboard/templates/dashboard/index.html:365 +msgid "Vulnerabilities Discovered" +msgstr "Vulnérabilités découvertes" + +#: web/dashboard/templates/dashboard/index.html:411 +msgid "Critical" +msgstr "Critique" + +#: web/dashboard/templates/dashboard/index.html:411 +msgid "High" +msgstr "Élevée" + +#: web/dashboard/templates/dashboard/index.html:411 +msgid "Medium" +msgstr "Modérée" + +#: web/dashboard/templates/dashboard/index.html:411 +msgid "Low" +msgstr "Faible" + +#: web/dashboard/templates/dashboard/index.html:411 +msgid "Info" +msgstr "Informationnelle" + +#: web/dashboard/templates/dashboard/index.html:411 +msgid "Unknown" +msgstr "Inconnue" + +#: web/dashboard/templates/dashboard/index.html:447 +msgid "Ip is Used By Subdomains" +msgstr "IP est utilisée par les sous-domaines" + +#: web/dashboard/templates/dashboard/index.html:467 +msgid "Ports used by IPs" +msgstr "Ports utilisés par les IPs" + +#: web/dashboard/templates/dashboard/index.html:487 +msgid "Tech used by Subdomains" +msgstr "Technologies utilisée par les sous-domaines" + +#: web/dashboard/templates/dashboard/index.html:304 +#: web/dashboard/templates/dashboard/index.html:318 +msgid "Informational Vulnerabilities ignored in Most Vulnerable Targets." +msgstr "Vulnérabilités informatives ignorées dans les cibles les plus vulnérables." + +#: web/dashboard/templates/dashboard/index.html:305 +#: web/dashboard/templates/dashboard/index.html:319 +msgid "Informational Vulnerabilities included in Most Vulnerable Targets." +msgstr "Vulnérabilités informatives incluses dans les cibles les plus vulnérables." + +#: web/dashboard/templates/dashboard/index.html:605 +msgid "Total Assets" +msgstr "Total des actifs" + +#: projects.html:59 +msgid "Are you sure you want to delete %(projectName)s" +msgstr "Êtes-vous sûr de vouloir supprimée %(projectName)s" + +#: projects.html:60 +msgid "You won't be able to revert this, all targets and scan results also will be deleted!" +msgstr "Vous ne pourrez pas revenir en arrière, tous les cibles et les résultats de scan seront également supprimés !" + +#: projects.html:71 +msgid "Oops! Unable to delete the target!" +msgstr "Oups! Impossible de supprimer la cible!" + +#Embedded JS +#: index.html:167 +msgid "Important Todo" +msgstr "Tâche importante" + +#: index.html:183 +#, python-format +msgid "Domain: %(domainName)s, Scanned %(scannedWhen)s" +msgstr "Domaine: %(domainName)s, Scanné le %(scannedWhen)s" + +#: index.html:186 +#, python-format +msgid "Subdomain: %(subDomainName)s" +msgstr "Sous-domaine: %(subDomainName)s" \ No newline at end of file diff --git a/web/dashboard/templates/dashboard/admin.html b/web/dashboard/templates/dashboard/admin.html index 31c754a88..5d7c0216a 100644 --- a/web/dashboard/templates/dashboard/admin.html +++ b/web/dashboard/templates/dashboard/admin.html @@ -2,21 +2,23 @@ {% load humanize %} {% load permission_tags %} {% load static %} +{% load i18n %} + {% block title %} -Profile +{% translate "Profile" %} {% endblock title %} {% block custom_js_css_link %} {% endblock custom_js_css_link %} {% block page_title %} -Admin Settings +{{ admin_settings_title }} {% endblock page_title %} -{% block breadcrumb_title %} - - + {% block breadcrumb_title %} + + {% endblock breadcrumb_title %} {% block main_content %} @@ -27,7 +29,7 @@
- +
@@ -39,18 +41,18 @@
-

Users

+

{% translate "Users" %}

- - - - - - - + + + + + + + @@ -74,11 +76,11 @@

Users

@@ -86,29 +88,29 @@

Users

{% if muser.last_login %} {{muser.last_login|naturaltime}} {% else %} - Never Logged In + {% translate "Never Logged In" %} {% endif %} @@ -121,18 +123,18 @@

Users

{% endblock main_content %} - - + {% block page_level_script %} -{% endblock page_level_script %} +{% endblock page_level_script %} \ No newline at end of file diff --git a/web/dashboard/templates/dashboard/index.html b/web/dashboard/templates/dashboard/index.html index e486bb68a..13531a1a3 100644 --- a/web/dashboard/templates/dashboard/index.html +++ b/web/dashboard/templates/dashboard/index.html @@ -1,13 +1,15 @@ {% extends 'base/base.html' %} {% load humanize %} {% load static %} +{% load i18n %} {% load mathfilters %} + {% block title %} -Dashboard +{% translate "Dashboard" %} {% endblock title %} {% block page_title %} -Dashboard +{% translate "Dashboard" %} {% endblock page_title %} {% block custom_js_css_link %} @@ -25,8 +27,8 @@
- -

Total Targets

+ +

{% translate "Total Targets" %}

{{domain_count|intcomma}}

 

@@ -39,12 +41,12 @@

{{domain
- -

Total Subdomains

+ +

{% translate "Total Subdomains" %}

{{subdomain_count|intcomma}}


-

Alive Subdomains: {{alive_count|intcomma}}

+

{% translate "Alive Subdomains:" %} {{alive_count|intcomma}}



@@ -53,12 +55,12 @@

{{subdom
- -

Total Endpoints

+ +

{% translate "Total Endpoints" %}

{{endpoint_count|intcomma}}


-

Alive Endpoints: {{endpoint_alive_count|intcomma}}

+

{% translate "Alive Endpoints" %}: {{endpoint_alive_count|intcomma}}



@@ -67,13 +69,13 @@

{{endpoint_count|intcomma}}

- -

Total Vulnerabilities

+ +

{% translate "Total Vulnerabilities" %}

{{total_vul_count|intcomma}}

-

{{critical_count}} Critical, {{high_count}} High, {{medium_count}} Medium

+

{% blocktranslate with critical_count=critical_count high_count=high_count medium_count=medium_count %}{{critical_count}} Critical, {{high_count}} High, {{medium_count}} Medium{% endblocktranslate %}


-

{{low_count}} Low, {{info_count}} Info, {{unknown_count}} Unknown Vulnerabilities

+

{% blocktranslate with low_count=low_count info_count=info_count unknown_count=unknown_count %}{{low_count}} Low, {{info_count}} Info, {{unknown_count}} Unknown Vulnerabilities{% endblocktranslate %}


@@ -86,7 +88,7 @@

{{total_v
- Activity Feed + {% translate "Activity Feed" %}
@@ -107,7 +109,7 @@
{{item.title}}
- {% if item.status == 2 %} {% if item.title != 'Scan Completed' %} Completed {% endif %}{% elif item.status == 1 %} Initiated {% elif item.status == 0 %} {% if item.title != 'Scan aborted' %} Aborted {% endif %} {% endif %}for {{item.scan_of.domain.name}} + {% if item.status == 2 %} {% if item.title != 'Scan Completed' %} {% translate "Completed" %} {% endif %}{% elif item.status == 1 %} {% translate "Initiated" %} {% elif item.status == 0 %} {% if item.title != 'Scan aborted' %} {% translate "Aborted" %} {% endif %} {% endif %}{% translate "for" %} {{item.scan_of.domain.name}}
{{item.time|naturaltime}} @@ -115,7 +117,7 @@

{% empty %} - Feed will be automatically generated while the scan is running. + {% translate "Feed will be automatically generated while the scan is running." %} {% endfor %}
@@ -127,7 +129,7 @@
- Vulnerability Feed + {% translate "Vulnerability Feed" %}
@@ -166,27 +168,27 @@
text-info {% endif %} ">{% if item.severity == 0 %} - Info + {% translate "Info" %} {% elif item.severity == 1 %} - Low + {% translate "Low" %} {% elif item.severity == 2 %} - Medium + {% translate "Medium" %} {% elif item.severity == 3 %} - High + {% translate "High" %} {% elif item.severity == 4 %} - Critical + {% translate "Critical" %} {% elif item.severity == -1 %} - Unknown + {% translate "Unknown" %} {% endif %}{{item.name}}
- detected on {{item.subdomain}} + {% blocktranslate with subdomain=item.subdomain %}detected on {{subdomain}}{% endblocktranslate %}
{{item.discovered_date|naturaltime}}

{% empty %} - Feed will be automatically generated once the vulnerability scan is completed. + {% translate "Feed will be automatically generated once the vulnerability scan is completed." %} {% endfor %}

@@ -201,7 +203,7 @@
-

Geographical Distribution of Assets

+

{% translate "Geographical Distribution of Assets" %}

@@ -210,8 +212,8 @@

Geographical Distribution of Assets

- - + + @@ -236,7 +238,8 @@

Geographical Distribution of Assets

{% include 'base/_items/widgets/vulnerability_breakdown_by_severity_chart.html' %}
- {% include 'base/_items/most_vuln_target.html' with most_vuln_widget_title='Most Vulnerable Target'%} + {% translate "Most Vulnerable Target" as i18n_vuln_widget_title %} + {% include 'base/_items/most_vuln_target.html' with most_vuln_widget_title=i18n_vuln_widget_title%}
{% include 'base/_items/most_common_vuln.html' %} @@ -249,7 +252,7 @@

Geographical Distribution of Assets

-

Most common IP Address

+

{% translate "Most common IP Address" %}

@@ -259,7 +262,7 @@

Most common IP Address

-

Most common Ports

+

{% translate "Most common Ports" %}

@@ -269,7 +272,7 @@

Most common Ports

-

Most common Technology

+

{% translate "Most common Technology" %}

@@ -297,12 +300,10 @@

Most common Technology

// listener for info checkbox on most vulnerable target $('#ignore_info_most_vuln_checkbox').change(function() { - if (this.checked) { - var text_msg = 'Informational Vulnerabilities ignored in Most Vulnerable Targets.'; - } - else{ - var text_msg = 'Informational Vulnerabilities included in Most Vulnerable Targets.'; - } + var text_msg = (this.checked) + ? gettext("Informational Vulnerabilities ignored in Most Vulnerable Targets.") + : gettext("Informational Vulnerabilities included in Most Vulnerable Targets."); + get_most_vulnerable_target(slug='{{current_project.slug}}', scan_id=null, target_id=null, ignore_info=this.checked); get_most_vulnerable_target(slug='{{current_project.slug}}', scan_id=null, target_id=null, ignore_info=this.checked); Snackbar.show({ @@ -313,12 +314,10 @@

Most common Technology

}); $('#ignore_info_most_common_vuln_checkbox').change(function() { - if (this.checked) { - var text_msg = 'Informational Vulnerabilities ignored for Most Common Vulnerabilities.'; - } - else{ - var text_msg = 'Informational Vulnerabilities included for Most Common Vulnerabilities.'; - } + var text_msg = (this.checked) + ? gettext("Informational Vulnerabilities ignored in Most Vulnerable Targets.") + : gettext("Informational Vulnerabilities included in Most Vulnerable Targets."); + get_most_common_vulnerability(slug='{{current_project.slug}}', scan_id=null, target_id=null, ignore_info=this.checked); Snackbar.show({ text: text_msg, @@ -359,7 +358,7 @@

Most common Technology

opacity: .2 }, series: [{ - name: "Targets Added", + name: gettext("Targets Added"), data: [{{targets_in_last_week.0}},{{targets_in_last_week.1}},{{targets_in_last_week.2}},{{targets_in_last_week.3}},{{targets_in_last_week.4}},{{targets_in_last_week.5}},{{targets_in_last_week.6}}] }], yaxis: { @@ -395,7 +394,7 @@

Most common Technology

opacity: .2 }, series: [{ - name: "Subdomains Discovered", + name: gettext("Subdomains Discovered"), data: [{{subdomains_in_last_week.0}},{{subdomains_in_last_week.1}},{{subdomains_in_last_week.2}},{{subdomains_in_last_week.3}},{{subdomains_in_last_week.4}},{{subdomains_in_last_week.5}},{{subdomains_in_last_week.6}}] }], yaxis: { @@ -431,7 +430,7 @@

Most common Technology

opacity: .2 }, series: [{ - name: "Endpoints Discovered", + name: gettext("Endpoints Discovered"), data: [{{endpoints_in_last_week.0}},{{endpoints_in_last_week.1}},{{endpoints_in_last_week.2}},{{endpoints_in_last_week.3}},{{endpoints_in_last_week.4}},{{endpoints_in_last_week.5}},{{endpoints_in_last_week.6}}] }], yaxis: { @@ -468,7 +467,7 @@

Most common Technology

opacity: .2 }, series: [{ - name: "Vulnerabilities Discovered", + name: gettext("Vulnerabilities Discovered"), data: [{{vulns_in_last_week.0}},{{vulns_in_last_week.1}},{{vulns_in_last_week.2}},{{vulns_in_last_week.3}},{{vulns_in_last_week.4}},{{vulns_in_last_week.5}},{{vulns_in_last_week.6}}] }], yaxis: { @@ -549,7 +548,7 @@

Most common Technology

} }, series: [{{critical_count}}, {{high_count}}, {{medium_count}}, {{low_count}}, {{info_count}}, {{unknown_count}}], - labels: ['Critical', 'High', 'Medium', 'Low', 'Info', 'Unknown'], + labels: [gettext("Critical"), gettext("High"), gettext("Medium"), gettext("Low"), gettext("Info"), gettext("Unknown")], responsive: [{ breakpoint: 1599, options: { @@ -579,7 +578,7 @@

Most common Technology

var options = { series: [{ - name: "Ip is Used By Subdomains", + name: gettext("Ip is Used By Subdomains"), data: [{{most_used_ip.6.count}}, {{most_used_ip.5.count}}, {{most_used_ip.4.count}}, {{most_used_ip.3.count}}, {{most_used_ip.2.count}}, {{most_used_ip.1.count}}, {{most_used_ip.0.count}}] }], chart: { @@ -605,7 +604,7 @@

Most common Technology

var options = { series: [{ - name: "Ports used by IPs", + name: gettext("Ports used by IPs"), data: [{{most_used_port.6.count}}, {{most_used_port.5.count}}, {{most_used_port.4.count}}, {{most_used_port.3.count}}, {{most_used_port.2.count}}, {{most_used_port.1.count}}, {{most_used_port.0.count}}] }], chart: { @@ -632,7 +631,7 @@

Most common Technology

var options = { series: [{ - name: "Tech used by Subdomains", + name: gettext("Tech used by Subdomains"), data: [{{most_used_tech.6.count}}, {{most_used_tech.5.count}}, {{most_used_tech.4.count}}, {{most_used_tech.3.count}}, {{most_used_tech.2.count}}, {{most_used_tech.1.count}}, {{most_used_tech.0.count}}] }], chart: { @@ -683,13 +682,8 @@

Most common Technology

normalizeFunction: 'polynomial' }] }, - onRegionTipShow: function(e, el, code){ - if (code in countriesData) { - el.html(el.html()+' (Total Assets : '+ countriesData[code]+')'); - } - else{ - el.html(el.html()+' (Total Assets : 0)'); - } + onRegionTipShow: function(e, el, code) { + el.html(el.html() + ' ({% translate "Total Assets" %} : '+ ((code in countriesData) ? countriesData[code] : "0") +')'); } }); diff --git a/web/dashboard/templates/dashboard/onboarding.html b/web/dashboard/templates/dashboard/onboarding.html index e171f52ef..d59048d9b 100644 --- a/web/dashboard/templates/dashboard/onboarding.html +++ b/web/dashboard/templates/dashboard/onboarding.html @@ -1,9 +1,11 @@ {% load static %} +{% load i18n %} + - reNgine Onboarding + {% translate "reNgine Onboarding" %} @@ -17,8 +19,8 @@ {% csrf_token %}
-

Hey {{user.username}}! Welcome to reNgine

-

You will need to create your first project before you start using reNgine. Projects are now a part of reNgine 2.0! Learn more about projects.

+

{% blocktranslate with username=user.username %}Hey {{username}}! Welcome to reNgine{% endblocktranslate %}

+

{% translate "You will need to create your first project before you start using reNgine. Projects are now a part of reNgine 2.0!" %} {% translate "Learn more about projects." %}

{% if error %}
{{error}} @@ -27,57 +29,49 @@

Hey {{user.username}}! Welcome to reNgine

-

Project

+

{% translate "Project" %}

- - + +
-

Additional User

-

You can add additional users and assign them roles. You may add additional users and also change their roles at any point in future.

+

{% translate "Additional User" %}

+

{% translate "You can add additional users and assign them roles. You may add additional users and also change their roles at any point in future."%}

- +
- +
- +
-

Default API Keys

-

If you have API keys for these services, please enter them here.

+

{% translate "Default API Keys" %}

+

{% translate "If you have API keys for these services, please enter them here." %}

- -

OpenAI keys will be used to generate vulnerability description, remediation, impact and vulnerability report writing using ChatGPT.

- {% if openai_key %} - - {% else %} - - {% endif %} - This is optional but recommended. + +

{% translate "OpenAI keys will be used to generate vulnerability description, remediation, impact and vulnerability report writing using ChatGPT." %}

+ + {% translate "This is optional but recommended." %}
-

Netlas keys will be used to get whois information and other OSINT data.

- {% if netlas_key %} - - {% else %} - - {% endif %} - This is optional +

{% translate "Netlas keys will be used to get whois information and other OSINT data." %}

+ + {% translate "This is optional" %}
- +
diff --git a/web/dashboard/templates/dashboard/profile.html b/web/dashboard/templates/dashboard/profile.html index e27be2da4..4c3a34c8b 100644 --- a/web/dashboard/templates/dashboard/profile.html +++ b/web/dashboard/templates/dashboard/profile.html @@ -1,21 +1,22 @@ {% extends 'base/base.html' %} {% load humanize %} {% load static %} +{% load i18n %} {% block title %} -Profile +{% translate "Profile" %} {% endblock title %} {% block custom_js_css_link %} {% endblock custom_js_css_link %} {% block page_title %} -My Profile +{% translate "My Profile" %} {% endblock page_title %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block main_content %} @@ -23,42 +24,67 @@
-

Hi {{user.get_username}}!

+

{% blocktranslate with username=user.get_username %}Hi {{username}}!{% endblocktranslate %}

- - + +
-

Change Password

+
+ {% csrf_token %} +
+
+ {% if forms.userSettings.errors and forms.userSettings.errors.language %} + {% for error in forms.userSettings.errors.language %} +

{{error}}

+ {% endfor %} + {% endif %} + + +
+
+ + +
+
+

{% translate "Change Password" %}

{% csrf_token %}
- - - {% if form.errors.old_password %} - {% for error in form.errors.old_password %} + + + {% if forms.password.errors.old_password %} + {% for error in forms.password.errors.old_password %}

{{error}}

{% endfor %} {% endif %}
- - + +
- - + +
- {% if form.errors.new_password2 %} - {% for error in form.errors.new_password2 %} + {% if forms.password.errors.new_password2 %} + {% for error in forms.password.errors.new_password2 %}

{{error}}

{% endfor %} {% endif %} - +
diff --git a/web/dashboard/templates/dashboard/projects.html b/web/dashboard/templates/dashboard/projects.html index 5117e628f..e3ce73c05 100644 --- a/web/dashboard/templates/dashboard/projects.html +++ b/web/dashboard/templates/dashboard/projects.html @@ -1,21 +1,22 @@ {% extends 'base/base.html' %} {% load humanize %} {% load static %} +{% load i18n %} {% block title %} -Projects +{% translate "Projects" %} {% endblock title %} {% block custom_js_css_link %} {% endblock custom_js_css_link %} {% block page_title %} -All Projects +{% translate "All Projects" %} {% endblock page_title %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block main_content %} @@ -27,9 +28,9 @@
UsernameNameRoleCreated onLast Logged inStatusActions{% translate "Username" %}{% translate "Name" %}{% translate "Role" %}{% translate "Created on" %}{% translate "Last Logged in" %}{% translate "Status" %}{% translate "Actions" %}
{% if muser|has_role:'sys_admin' %} - Sys Admin + {% translate "Sys Admin" %} {% elif muser|has_role:'auditor' %} - Auditor + {% translate "Auditor" %} {% else %} - Penetration Tester + {% translate "Penetration Tester" %} {% endif %} {{muser.date_joined|naturaltime}} {% if muser.is_active %} - Active + {% translate "Active" %} {% else %} - Disabled + {% translate "Disabled" %} {% endif %} {% if user != muser %} {% if muser.is_active %} - + {% else %} - + {% endif %} {% else %}   {% endif %} - + {% if user != muser %} - + {% endif %}
 CountryAssets{% translate "Country" %}{% translate "Assets" %}
- - - + + + @@ -38,7 +39,7 @@ @@ -47,7 +48,7 @@
{{project.name}}
Project NameSlugAction{% translate "Project Name" %}{% translate "Slug" %}{% translate "Action" %}
{{project.name}}
{% if current_project.slug == project.slug %} - Current Project + {% translate "Current Project" %} {% endif %}

Created {{project.insert_date|naturaltime}}

{% if current_project.slug == project.slug %} - Current Project cannot be deleted. + {% translate "Current Project cannot be deleted." %} {% else %} {% endif %} @@ -69,11 +70,12 @@
{{project.name}}
function delete_project(id, project_name){ const delAPI = "../../delete/project/" + id; swal.queue([{ - title: 'Are you sure you want to delete '+project_name +'?', - text: "You won't be able to revert this, all targets and scan results also will be deleted!", + title: interpolate("Are you sure you want to delete %(projectName)s", {projectName: project_name}, true), + text: gettext("You won't be able to revert this, all targets and scan results also will be deleted!"), type: 'warning', showCancelButton: true, - confirmButtonText: 'Delete', + cancelButtonText: gettext("Cancel"), + confirmButtonText: gettext("Delete"), padding: '2em', showLoaderOnConfirm: true, preConfirm: function() { @@ -94,7 +96,7 @@
{{project.name}}
.catch(function() { swal.insertQueueStep({ type: 'error', - title: 'Oops! Unable to delete the target!' + title: gettext("Oops! Unable to delete the target!") }) }) } diff --git a/web/dashboard/templates/dashboard/search.html b/web/dashboard/templates/dashboard/search.html index 76b23c3fb..acf38eb9e 100644 --- a/web/dashboard/templates/dashboard/search.html +++ b/web/dashboard/templates/dashboard/search.html @@ -1,20 +1,21 @@ {% extends 'base/base.html' %} {% load humanize %} {% load static %} +{% load i18n %} {% block title %} -Universal Search +{% translate "Universal Search..." %} {% endblock title %} {% block custom_js_css_link %} {% endblock custom_js_css_link %} {% block page_title %} -Search Results +{% translate "Search Results" %} {% endblock page_title %} {% block breadcrumb_title %} - + {% endblock breadcrumb_title %} {% block main_content %} @@ -27,16 +28,12 @@
-

Search Results For "{{ request.GET.query }}"

+

{% blocktranslate with query=request.GET.query %}Search Results For "{{ query }}"{% endblocktranslate %}

@@ -55,25 +52,25 @@

Search Results For "{{ request.GET.query }}"

@@ -229,7 +226,7 @@

Search Results For "{{ request.GET.query }}"

else{ $('#search-result-content-div').hide(); $('#search-message-div').append(` `) } diff --git a/web/dashboard/urls.py b/web/dashboard/urls.py index cec484a42..819bf8fe6 100644 --- a/web/dashboard/urls.py +++ b/web/dashboard/urls.py @@ -3,6 +3,7 @@ from . import views + urlpatterns = [ path( '', diff --git a/web/dashboard/views.py b/web/dashboard/views.py index 11c688bfc..aa71fa2a4 100644 --- a/web/dashboard/views.py +++ b/web/dashboard/views.py @@ -3,6 +3,7 @@ from datetime import timedelta +from django.conf import settings as django_settings from django.contrib.auth import get_user_model from django.contrib import messages from django.contrib.auth import update_session_auth_hash @@ -14,6 +15,7 @@ from django.dispatch import receiver from django.shortcuts import redirect, render, get_object_or_404 from django.utils import timezone +from django.utils.translation import gettext from django.http import HttpResponseRedirect, JsonResponse from django.urls import reverse from rolepermissions.roles import assign_role, clear_roles @@ -25,6 +27,9 @@ from targetApp.models import Domain from dashboard.models import * from reNgine.definitions import * +from reNgine import settings +from .forms import UserSettingsForm +from django.utils import translation logger = logging.getLogger(__name__) @@ -175,21 +180,39 @@ def index(request, slug): def profile(request, slug): if request.method == 'POST': - form = PasswordChangeForm(request.user, request.POST) - if form.is_valid(): - user = form.save() + passwordForm = PasswordChangeForm(request.user, request.POST) + userSettingsForm = UserSettingsForm(request.POST, instance=request.user) + if passwordForm.is_valid(): + user = passwordForm.save() update_session_auth_hash(request, user) messages.success( request, - 'Your password was successfully changed!') - return redirect('profile') + gettext('Your password was successfully changed!')) + userSettingsForm = UserSettingsForm(request.user) + elif userSettingsForm.is_valid(): + user = userSettingsForm.save() + translation.activate(user.language) + request.session[translation.LANGUAGE_SESSION_KEY] = user.language + request.session.save() + messages.success( + request, + gettext('Your settings were successfully changed!')) + passwordForm = PasswordChangeForm(request.user) else: - messages.error(request, 'Please correct the error below.') + messages.error(request, gettext('Please correct the error below.')) else: - form = PasswordChangeForm(request.user) - return render(request, 'dashboard/profile.html', { - 'form': form + passwordForm = PasswordChangeForm(request.user) + userSettingsForm = UserSettingsForm(request.user) + + response = render(request, 'dashboard/profile.html', { + 'LANGUAGES': settings.LANGUAGES, + 'forms': { + 'password': passwordForm, + 'userSettings': userSettingsForm + } }) + response.set_cookie(django_settings.LANGUAGE_COOKIE_NAME, request.user.language) + return response @has_permission_decorator(PERM_MODIFY_SYSTEM_CONFIGURATIONS, redirect_url=FOUR_OH_FOUR_URL) @@ -222,7 +245,7 @@ def admin_interface_update(request, slug): messages.add_message( request, messages.INFO, - f'User {user.username} successfully deleted.' + gettext('User %(username)s successfully deleted.') % {'username': user.username} ) messageData = {'status': True} except Exception as e: @@ -246,7 +269,7 @@ def admin_interface_update(request, slug): try: response = json.loads(request.body) if not response.get('password'): - messageData = {'status': False, 'error': 'Empty passwords are not allowed'} + messageData = {'status': False, 'error': gettext('Empty passwords are not allowed')} return JsonResponse(messageData) UserModel = get_user_model() user = UserModel.objects.create_user( @@ -267,8 +290,7 @@ def on_user_logged_out(sender, request, **kwargs): messages.add_message( request, messages.INFO, - 'You have been successfully logged out. Thank you ' + - 'for using reNgine.') + gettext('You have been successfully logged out. Thank you for using reNgine.')) @receiver(user_logged_in) @@ -276,9 +298,7 @@ def on_user_logged_in(sender, request, **kwargs): messages.add_message( request, messages.INFO, - 'Hi @' + - request.user.username + - ' welcome back!') + gettext('Hi @%(username)s welcome back!') % {"username": request.user.username}) def search(request, slug): @@ -305,13 +325,13 @@ def delete_project(request, id): messages.add_message( request, messages.INFO, - 'Project successfully deleted!') + gettext('Project successfully deleted!')) else: responseData = {'status': 'false'} messages.add_message( request, messages.ERROR, - 'Oops! Project could not be deleted!') + gettext('Oops! Project could not be deleted!')) return JsonResponse(responseData) @@ -337,7 +357,7 @@ def onboarding(request): insert_date=insert_date ) except Exception as e: - error = ' Could not create project, Error: ' + str(e) + error = gettext(' Could not create project, Error: %(errMsg)s') % {'errMsg': str(e)} try: @@ -349,9 +369,7 @@ def onboarding(request): ) assign_role(user, create_user_role) except Exception as e: - error = ' Could not create User, Error: ' + str(e) - - + error = gettext(' Could not create User, Error: %(errMsg)s') % {'errMsg': str(e)} if key_openai: openai_api_key = OpenAiAPIKey.objects.first() diff --git a/web/locale/en/LC_MESSAGES/django.mo b/web/locale/en/LC_MESSAGES/django.mo new file mode 100644 index 000000000..71434b77d Binary files /dev/null and b/web/locale/en/LC_MESSAGES/django.mo differ diff --git a/web/locale/en/LC_MESSAGES/django.po b/web/locale/en/LC_MESSAGES/django.po new file mode 100644 index 000000000..63618a7f5 --- /dev/null +++ b/web/locale/en/LC_MESSAGES/django.po @@ -0,0 +1,1190 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: reNgine/gpt.py:30 reNgine/gpt.py:93 +msgid "No OpenAI keys provided." +msgstr "No OpenAI keys provided." + +#: reNgine/tasks.py:178 +msgid "Subdomain discovery" +msgstr "Subdomain discovery" + +#: reNgine/tasks.py:179 +msgid "OS Intelligence" +msgstr "OS Intelligence" + +#: reNgine/tasks.py:181 +msgid "Port scan" +msgstr "Port scan" + +#: reNgine/tasks.py:182 +msgid "Fetch URL" +msgstr "Fetch URL" + +#: reNgine/tasks.py:184 +msgid "Directories & files fuzz" +msgstr "Directories & files fuzz" + +#: reNgine/tasks.py:185 +msgid "Vulnerability scan" +msgstr "Vulnerability scan" + +#: reNgine/tasks.py:186 templates/base/_items/subdomain_tab_content.html:92 +#: templates/base/_items/subdomain_tab_content.html:160 +#: templates/base/_items/subdomain_toolbar.html:64 +msgid "Screenshot" +msgstr "Screenshot" + +#: reNgine/tasks.py:187 +msgid "WAF detection" +msgstr "WAF detection" + +#: reNgine/tasks.py:2011 +msgid "Nuclei Scan" +msgstr "Nuclei Scan" + +#: reNgine/tasks.py:2019 +msgid "CRLFuzz Scan" +msgstr "CRLFuzz Scan" + +#: reNgine/tasks.py:2027 +msgid "Dalfox XSS Scan" +msgstr "Dalfox XSS Scan" + +#: reNgine/tasks.py:2034 +msgid "Misconfigured S3 Buckets Scanner" +msgstr "Misconfigured S3 Buckets Scanner" + +#: reNgine/tasks.py:2414 +#, python-format +msgid "Nuclei Scan with severity %(severity)s" +msgstr "Nuclei Scan with severity %(severity)s" + +#: reNgine/tasks.py:3515 +#, python-format +msgid " Evidence: %(evidence)s
" +msgstr " Evidence: %(evidence)s
" + +#: reNgine/tasks.py:3516 +#, python-format +msgid " Message: %(msg)s
" +msgstr " Message: %(msg)s
" + +#: reNgine/tasks.py:3517 +#, python-format +msgid " Payload: %(payload)s
" +msgstr " Payload: %(payload)s
" + +#: reNgine/tasks.py:3518 +#, python-format +msgid " Vulnerable Parameter: %(vulnParam)s
" +msgstr " Vulnerable Parameter: %(vulnParam)s
" + +#: reNgine/tasks.py:3521 +msgid "XSS (Cross Site Scripting)" +msgstr "XSS (Cross Site Scripting)" + +#: reNgine/tasks.py:3541 +msgid "CRLF (HTTP Response Splitting)" +msgstr "CRLF (HTTP Response Splitting)" + +#: reNgine/tasks.py:3544 +msgid "A CRLF (HTTP Response Splitting) vulnerability has been discovered." +msgstr "A CRLF (HTTP Response Splitting) vulnerability has been discovered." + +#: reNgine/tasks.py:3767 reNgine/tasks.py:3768 +msgid "Netlas limit exceeded." +msgstr "Netlas limit exceeded." + +#: reNgine/tasks.py:3963 +msgid "unable to fetch records from WHOIS database." +msgstr "unable to fetch records from WHOIS database." + +#: reNgine/utilities.py:34 +#, python-format +msgid "%(seconds)s seconds" +msgstr "%(seconds)s seconds" + +#: reNgine/utilities.py:36 +#, python-format +msgid "%(minutes)s minutes" +msgstr "%(minutes)s minutes" + +#: reNgine/utilities.py:38 +#, python-format +msgid "%(hours)s hours" +msgstr "%(hours)s hours" + +#: reNgine/utilities.py:39 +#, python-format +msgid "%(hours)s hours %(minutes)s minutes" +msgstr "%(hours)s hours %(minutes)s minutes" + +#: reNgine/utilities.py:74 +#, python-format +msgid "Vulnerability Title: %(vulnerabilityTitle)s" +msgstr "Vulnerability Title: %(vulnerabilityTitle)s" + +#: reNgine/utilities.py:76 +#, python-format +msgid "" +"\n" +"Vulnerable URL: %(path)s" +msgstr "" +"\n" +"Vulnerable URL: %(path)s" + +#: reNgine/validators.py:10 +#, python-format +msgid "%(value)s is not a valid domain Name" +msgstr "%(value)s is not a valid domain Name" + +#: reNgine/validators.py:16 +#, python-format +msgid "%(value)s is not a valid URL Name" +msgstr "%(value)s is not a valid URL Name" + +#: reNgine/validators.py:23 +#, python-format +msgid "%(value)s is not a valid short name, can only contain - and _" +msgstr "%(value)s is not a valid short name, can only contain - and _" + +#: templates/404.html:24 +msgid "404!" +msgstr "404!" + +#: templates/404.html:34 +msgid "Oops-a-Daisy! You've Found Our Top-Secret Interdimensional Rabbit Hole!" +msgstr "" +"Oops-a-Daisy! You've Found Our Top-Secret Interdimensional Rabbit Hole!" + +#: templates/404.html:35 +msgid "Back to Dashboard" +msgstr "Back to Dashboard" + +#: templates/base/_items/center_spinner.html:4 +msgid "Loading..." +msgstr "Loading..." + +#: templates/base/_items/endpoint_tab_content.html:8 +msgid "Filter Endpoints" +msgstr "Filter Endpoints" + +#: templates/base/_items/endpoint_tab_content.html:10 +#: templates/base/_items/vulnerability_tab_content.html:10 +msgid "Search" +msgstr "Search" + +#: templates/base/_items/endpoint_tab_content.html:26 +#: templates/base/_items/subdomain_tab_content.html:126 +#: templates/base/_items/vulnerability_tab_content.html:63 +msgid "Vulnerability Grouping" +msgstr "Vulnerability Grouping" + +#: templates/base/_items/endpoint_tab_content.html:33 +#: templates/base/_items/endpoint_tab_content.html:56 +#: templates/base/_items/endpoint_tab_content.html:116 +#: templates/base/_items/subdomain_tab_content.html:62 +#: templates/base/_items/subdomain_toolbar.html:34 +msgid "Page Title" +msgstr "Page Title" + +#: templates/base/_items/endpoint_tab_content.html:39 +#: templates/base/_items/endpoint_tab_content.html:50 +#: templates/base/_items/subdomain_tab_content.html:56 +#: templates/base/_items/subdomain_toolbar.html:28 +#: templates/report/template.html:622 templates/report/template.html:735 +msgid "HTTP Status" +msgstr "HTTP Status" + +#: templates/base/_items/endpoint_tab_content.html:43 +#: templates/base/_items/subdomain_tab_content.html:49 +#: templates/base/_items/subdomain_toolbar.html:21 +#: templates/base/_items/vulnerability_tab_content.html:26 +msgid "Filter Columns" +msgstr "Filter Columns" + +#: templates/base/_items/endpoint_tab_content.html:62 +#: templates/base/_items/endpoint_tab_content.html:117 +#: templates/base/_items/vulnerability_tab_content.html:104 +msgid "Tags" +msgstr "Tags" + +#: templates/base/_items/endpoint_tab_content.html:68 +#: templates/base/_items/endpoint_tab_content.html:118 +msgid "Content Type" +msgstr "Content Type" + +#: templates/base/_items/endpoint_tab_content.html:74 +#: templates/base/_items/endpoint_tab_content.html:119 +#: templates/base/_items/subdomain_tab_content.html:80 +#: templates/base/_items/subdomain_tab_content.html:159 +#: templates/base/_items/subdomain_toolbar.html:52 +msgid "Content Length" +msgstr "Content Length" + +#: templates/base/_items/endpoint_tab_content.html:80 +#: templates/base/_items/subdomain_tab_content.html:86 +#: templates/base/_items/subdomain_tab_content.html:161 +#: templates/base/_items/subdomain_toolbar.html:58 +msgid "Response Time" +msgstr "Response Time" + +#: templates/base/_items/endpoint_tab_content.html:89 +#: templates/base/_items/endpoint_tab_content.html:100 +#: templates/base/_items/endpoint_tab_content.html:104 +msgid "Download All Endpoints" +msgstr "Download All Endpoints" + +#: templates/base/_items/endpoint_tab_content.html:93 +#, python-format +msgid "Download Endpoints with pattern %(pKey)s" +msgstr "Download Endpoints with pattern %(pKey)s" + +#: templates/base/_items/endpoint_tab_content.html:113 +msgid "ID" +msgstr "ID" + +#: templates/base/_items/endpoint_tab_content.html:114 +#: templates/base/_items/subdomain_tab_content.html:164 +msgid "HTTP URL" +msgstr "HTTP URL" + +#: templates/base/_items/endpoint_tab_content.html:115 +#: templates/base/_items/subdomain_tab_content.html:151 +#: templates/base/_items/subdomain_tab_content.html:155 +#: templates/base/_items/vulnerability_tab_content.html:54 +#: templates/base/_items/vulnerability_tab_content.html:98 +#: templates/base/_items/vulnerability_tab_content.html:115 +msgid "Status" +msgstr "Status" + +#: templates/base/_items/endpoint_tab_content.html:120 +#: templates/base/_items/subdomain_tab_content.html:162 +msgid "Technology" +msgstr "Technology" + +#: templates/base/_items/endpoint_tab_content.html:121 +#: templates/base/_items/subdomain_tab_content.html:174 +msgid "Webserver" +msgstr "Webserver" + +#: templates/base/_items/endpoint_tab_content.html:122 +msgid "Response time" +msgstr "Response time" + +#: templates/base/_items/most_common_cve_cwe_tag_template.html:5 +msgid "Most Common CVE IDs" +msgstr "Most Common CVE IDs" + +#: templates/base/_items/most_common_cve_cwe_tag_template.html:13 +msgid "Most Common CWE IDs" +msgstr "Most Common CWE IDs" + +#: templates/base/_items/most_common_cve_cwe_tag_template.html:21 +msgid "Most Common Vulnerability Tags" +msgstr "Most Common Vulnerability Tags" + +#: templates/base/_items/most_common_vuln.html:7 +msgid "Most Common Vulnerabilities" +msgstr "Most Common Vulnerabilities" + +#: templates/base/_items/most_common_vuln.html:12 +#: templates/base/_items/most_vuln_target.html:13 +msgid "Ignore Info Vulnerabilities" +msgstr "Ignore Info Vulnerabilities" + +#: templates/base/_items/recon_note_modal.html:6 +msgid "Add Todo for" +msgstr "Add Todo for" + +#: templates/base/_items/recon_note_modal.html:18 +msgid "Todo Title" +msgstr "Todo Title" + +#: templates/base/_items/recon_note_modal.html:27 +msgid "Recon Todo/Note" +msgstr "Recon Todo/Note" + +#: templates/base/_items/recon_note_modal.html:35 +msgid "Add Recon Todo" +msgstr "Add Recon Todo" + +#: templates/base/_items/right_bar.html:9 templates/base/_items/top_nav.html:28 +#: templates/base/_items/top_nav.html:32 +msgid "Scan History" +msgstr "Scan History" + +#: templates/base/_items/right_bar.html:14 +msgid "Tasks" +msgstr "Tasks" + +#: templates/base/_items/right_bar.html:20 +msgid "Currently Scanning" +msgstr "Currently Scanning" + +#: templates/base/_items/right_bar.html:24 +#: templates/base/_items/right_bar.html:44 +msgid "Recently Completed" +msgstr "Recently Completed" + +#: templates/base/_items/right_bar.html:28 +#: templates/base/_items/right_bar.html:48 +msgid "Show All" +msgstr "Show All" + +#: templates/base/_items/right_bar.html:31 +#: templates/base/_items/right_bar.html:51 +msgid "Upcoming" +msgstr "Upcoming" + +#: templates/base/_items/right_bar.html:40 +msgid "Currently Running" +msgstr "Currently Running" + +#: templates/base/_items/right_bar.html:60 +msgid "Reload" +msgstr "Reload" + +#: templates/base/_items/subdomain_tab_content.html:10 +msgid "Filter Subdomains" +msgstr "Filter Subdomains" + +#: templates/base/_items/subdomain_tab_content.html:28 +#: templates/base/_items/subdomain_toolbar.html:3 +msgid "Initiate Multiple Subscans" +msgstr "Initiate Multiple Subscans" + +#: templates/base/_items/subdomain_tab_content.html:30 +#: templates/base/_items/subdomain_toolbar.html:5 +msgid "Initiate Subscan" +msgstr "Initiate Subscan" + +#: templates/base/_items/subdomain_tab_content.html:33 +#: templates/base/_items/subdomain_tab_content.html:35 +#: templates/base/_items/subdomain_toolbar.html:7 +#: templates/base/_items/subdomain_toolbar.html:9 +msgid "Download Selected Subdomains" +msgstr "Download Selected Subdomains" + +#: templates/base/_items/subdomain_tab_content.html:38 +#: templates/base/_items/subdomain_tab_content.html:40 +#: templates/base/_items/subdomain_toolbar.html:11 +#: templates/base/_items/subdomain_toolbar.html:13 +msgid "Delete Multiple Subdomains" +msgstr "Delete Multiple Subdomains" + +#: templates/base/_items/subdomain_tab_content.html:44 +#: templates/base/_items/subdomain_toolbar.html:16 +msgid "Clear Subdomains" +msgstr "Clear Subdomains" + +#: templates/base/_items/subdomain_tab_content.html:68 +#: templates/base/_items/subdomain_toolbar.html:40 +msgid "IP Address" +msgstr "IP Address" + +#: templates/base/_items/subdomain_tab_content.html:74 +#: templates/base/_items/subdomain_tab_content.html:158 +#: templates/base/_items/subdomain_toolbar.html:46 +msgid "Ports" +msgstr "Ports" + +#: templates/base/_items/subdomain_tab_content.html:97 +#: templates/base/_items/subdomain_toolbar.html:69 +msgid "Reload Subdomains" +msgstr "Reload Subdomains" + +#: templates/base/_items/subdomain_tab_content.html:101 +#: templates/base/_items/subdomain_toolbar.html:73 +msgid "Download Subdomains" +msgstr "Download Subdomains" + +#: templates/base/_items/subdomain_tab_content.html:106 +#: templates/base/_items/subdomain_tab_content.html:112 +#: templates/base/_items/subdomain_tab_content.html:118 +#: templates/base/_items/subdomain_toolbar.html:78 +#: templates/base/_items/subdomain_toolbar.html:84 +#: templates/base/_items/subdomain_toolbar.html:90 +msgid "Download All Subdomains" +msgstr "Download All Subdomains" + +#: templates/base/_items/subdomain_tab_content.html:107 +#: templates/base/_items/subdomain_tab_content.html:113 +#: templates/base/_items/subdomain_tab_content.html:119 +#: templates/base/_items/subdomain_toolbar.html:79 +#: templates/base/_items/subdomain_toolbar.html:85 +#: templates/base/_items/subdomain_toolbar.html:91 +msgid "Download Interesting Subdomains" +msgstr "Download Interesting Subdomains" + +#: templates/base/_items/subdomain_tab_content.html:108 +#: templates/base/_items/subdomain_tab_content.html:114 +#: templates/base/_items/subdomain_tab_content.html:120 +#: templates/base/_items/subdomain_toolbar.html:80 +#: templates/base/_items/subdomain_toolbar.html:86 +#: templates/base/_items/subdomain_toolbar.html:92 +msgid "Download Important Subdomains" +msgstr "Download Important Subdomains" + +#: templates/base/_items/subdomain_tab_content.html:152 +#: templates/report/template.html:616 templates/report/template.html:729 +msgid "Subdomain" +msgstr "Subdomain" + +#: templates/base/_items/subdomain_tab_content.html:153 +#: templates/report/template.html:507 +msgid "Endpoints" +msgstr "Endpoints" + +#: templates/base/_items/subdomain_tab_content.html:154 +#: templates/base/_items/top_nav.html:42 templates/report/template.html:515 +#: templates/report/template.html:845 +msgid "Vulnerabilities" +msgstr "Vulnerabilities" + +#: templates/base/_items/subdomain_tab_content.html:156 +#: templates/base/_items/vulnerability_tab_content.html:102 +msgid "Title" +msgstr "Title" + +#: templates/base/_items/subdomain_tab_content.html:157 +#: templates/report/template.html:760 +msgid "IP" +msgstr "IP" + +#: templates/base/_items/subdomain_tab_content.html:163 +msgid "Checked" +msgstr "Checked" + +#: templates/base/_items/subdomain_tab_content.html:165 +msgid "CNAME" +msgstr "CNAME" + +#: templates/base/_items/subdomain_tab_content.html:166 +msgid "is_interesting" +msgstr "is_interesting" + +#: templates/base/_items/subdomain_tab_content.html:167 +#: templates/base/_items/widgets/vulnerability_breakdown_by_severity_chart.html:24 +#: templates/base/_items/widgets/vulnerability_highlights.html:38 +#: templates/report/template.html:564 templates/report/template.html:911 +msgid "Info" +msgstr "Info" + +#: templates/base/_items/subdomain_tab_content.html:168 +#: templates/base/_items/widgets/vulnerability_breakdown_by_severity_chart.html:20 +#: templates/base/_items/widgets/vulnerability_highlights.html:40 +#: templates/report/template.html:556 templates/report/template.html:693 +#: templates/report/template.html:903 +msgid "Low" +msgstr "Low" + +#: templates/base/_items/subdomain_tab_content.html:169 +#: templates/base/_items/widgets/vulnerability_breakdown_by_severity_chart.html:16 +#: templates/base/_items/widgets/vulnerability_highlights.html:42 +#: templates/report/template.html:548 templates/report/template.html:696 +#: templates/report/template.html:895 +msgid "Medium" +msgstr "Medium" + +#: templates/base/_items/subdomain_tab_content.html:170 +#: templates/base/_items/widgets/vulnerability_breakdown_by_severity_chart.html:12 +#: templates/base/_items/widgets/vulnerability_highlights.html:44 +#: templates/report/template.html:540 templates/report/template.html:699 +#: templates/report/template.html:887 +msgid "High" +msgstr "High" + +#: templates/base/_items/subdomain_tab_content.html:171 +#: templates/base/_items/widgets/vulnerability_breakdown_by_severity_chart.html:8 +#: templates/base/_items/widgets/vulnerability_highlights.html:46 +#: templates/report/template.html:532 templates/report/template.html:702 +#: templates/report/template.html:879 +msgid "Critical" +msgstr "Critical" + +#: templates/base/_items/subdomain_tab_content.html:172 +msgid "Todos" +msgstr "Todos" + +#: templates/base/_items/subdomain_tab_content.html:173 +msgid "Is Important" +msgstr "Is Important" + +#: templates/base/_items/subdomain_tab_content.html:175 +#: templates/base/_items/vulnerability_tab_content.html:116 +msgid "Action" +msgstr "Action" + +#: templates/base/_items/subdomain_tab_content.html:176 +msgid "Directories Count" +msgstr "Directories Count" + +#: templates/base/_items/subdomain_tab_content.html:177 +msgid "Subscan Count" +msgstr "Subscan Count" + +#: templates/base/_items/subscan_modal.html:6 +#: templates/base/_items/subscan_modal.html:29 +msgid "Initiate subscan" +msgstr "Initiate subscan" + +#: templates/base/_items/subscan_modal.html:7 +#: templates/base/_items/subscan_modal.html:28 +msgid "Close" +msgstr "Close" + +#: templates/base/_items/subscan_modal.html:11 +msgid "Select the scan engine" +msgstr "Select the scan engine" + +#: templates/base/_items/subscan_modal.html:11 +msgid "default engine Selected" +msgstr "default engine Selected" + +#: templates/base/_items/subscan_modal.html:22 +msgid "Select the engine's subtasks to perform" +msgstr "Select the engine's subtasks to perform" + +#: templates/base/_items/top_bar.html:12 +msgid "Universal Search..." +msgstr "Universal Search..." + +#: templates/base/_items/top_bar.html:19 +msgid "Search History" +msgstr "Search History" + +#: templates/base/_items/top_bar.html:39 +msgid "Create New Project" +msgstr "Create New Project" + +#: templates/base/_items/top_bar.html:45 +msgid "Quick Add" +msgstr "Quick Add" + +#: templates/base/_items/top_bar.html:52 +msgid "Target" +msgstr "Target" + +#: templates/base/_items/top_bar.html:56 templates/base/_items/top_nav.html:52 +msgid "Organization" +msgstr "Organization" + +#: templates/base/_items/top_bar.html:62 templates/base/_items/top_nav.html:58 +msgid "Scan Engine" +msgstr "Scan Engine" + +#: templates/base/_items/top_bar.html:68 +msgid "External Tool" +msgstr "External Tool" + +#: templates/base/_items/top_bar.html:74 +msgid "Wordlist" +msgstr "Wordlist" + +#: templates/base/_items/top_bar.html:86 +msgid "Toolbox" +msgstr "Toolbox" + +#: templates/base/_items/top_bar.html:91 +msgid "Whois" +msgstr "Whois" + +#: templates/base/_items/top_bar.html:97 +msgid "CMS Detector" +msgstr "CMS Detector" + +#: templates/base/_items/top_bar.html:103 +msgid "CVE Lookup" +msgstr "CVE Lookup" + +#: templates/base/_items/top_bar.html:109 +msgid "WAF Detector" +msgstr "WAF Detector" + +#: templates/base/_items/top_bar.html:125 +#, python-format +msgid "Welcome %(username)s!" +msgstr "Welcome %(username)s!" + +#: templates/base/_items/top_bar.html:129 +msgid "My Account" +msgstr "My Account" + +#: templates/base/_items/top_bar.html:134 +msgid "Admin settings" +msgstr "Admin settings" + +#: templates/base/_items/top_bar.html:139 +msgid "Check reNgine Update" +msgstr "Check reNgine Update" + +#: templates/base/_items/top_bar.html:139 +msgid "Update available!" +msgstr "Update available!" + +#: templates/base/_items/top_bar.html:145 +msgid "Logout" +msgstr "Logout" + +#: templates/base/_items/top_nav.html:12 +msgid "Dashboard" +msgstr "Dashboard" + +#: templates/base/_items/top_nav.html:17 +msgid "Projects" +msgstr "Projects" + +#: templates/base/_items/top_nav.html:22 +msgid "Targets" +msgstr "Targets" + +#: templates/base/_items/top_nav.html:33 +msgid "Sub Scan History" +msgstr "Sub Scan History" + +#: templates/base/_items/top_nav.html:34 +msgid "Scheduled Scan" +msgstr "Scheduled Scan" + +#: templates/base/_items/top_nav.html:36 +msgid "All Subdomains" +msgstr "All Subdomains" + +#: templates/base/_items/top_nav.html:37 +msgid "All Endpoints" +msgstr "All Endpoints" + +#: templates/base/_items/top_nav.html:47 +msgid "Todo" +msgstr "Todo" + +#: templates/base/_items/top_nav.html:63 +msgid "Scan Engines" +msgstr "Scan Engines" + +#: templates/base/_items/top_nav.html:66 +msgid "Wordlists" +msgstr "Wordlists" + +#: templates/base/_items/top_nav.html:69 +msgid "Interesting Lookup" +msgstr "Interesting Lookup" + +#: templates/base/_items/top_nav.html:76 +msgid "Settings" +msgstr "Settings" + +#: templates/base/_items/top_nav.html:81 +msgid "Proxies" +msgstr "Proxies" + +#: templates/base/_items/top_nav.html:82 +msgid "Tool Settings" +msgstr "Tool Settings" + +#: templates/base/_items/top_nav.html:85 +msgid "API Vault" +msgstr "API Vault" + +#: templates/base/_items/top_nav.html:86 +msgid "Tools Arsenal" +msgstr "Tools Arsenal" + +#: templates/base/_items/top_nav.html:89 +msgid "Report Settings" +msgstr "Report Settings" + +#: templates/base/_items/top_nav.html:92 +msgid "reNgine Settings" +msgstr "reNgine Settings" + +#: templates/base/_items/top_nav.html:95 +msgid "Hackerone Settings" +msgstr "Hackerone Settings" + +#: templates/base/_items/top_nav.html:96 +msgid "Notification Settings" +msgstr "Notification Settings" + +#: templates/base/_items/top_nav.html:102 +msgid "Current Project" +msgstr "Current Project" + +#: templates/base/_items/vulnerability_tab_content.html:8 +msgid "Filter Vulnerabilities" +msgstr "Filter Vulnerabilities" + +#: templates/base/_items/vulnerability_tab_content.html:33 +#: templates/base/_items/vulnerability_tab_content.html:82 +msgid "Vulnerability Source" +msgstr "Vulnerability Source" + +#: templates/base/_items/vulnerability_tab_content.html:40 +#: templates/base/_items/vulnerability_tab_content.html:76 +#: templates/base/_items/vulnerability_tab_content.html:107 +#: templates/base/_items/widgets/vulnerability_highlights.html:17 +#: templates/report/template.html:671 +msgid "Severity" +msgstr "Severity" + +#: templates/base/_items/vulnerability_tab_content.html:47 +#: templates/base/_items/vulnerability_tab_content.html:88 +#: templates/base/_items/vulnerability_tab_content.html:111 +#: templates/base/_items/widgets/vulnerability_highlights.html:18 +msgid "Vulnerable URL" +msgstr "Vulnerable URL" + +#: templates/base/_items/vulnerability_tab_content.html:58 +msgid "Reload Vulnerabilities" +msgstr "Reload Vulnerabilities" + +#: templates/base/_items/vulnerability_tab_content.html:70 +#: templates/report/template.html:665 +msgid "Vulnerability Name" +msgstr "Vulnerability Name" + +#: templates/base/_items/vulnerability_tab_content.html:99 +msgid "Source" +msgstr "Source" + +#: templates/base/_items/vulnerability_tab_content.html:100 +#: templates/base/_items/widgets/vulnerability_highlights.html:15 +msgid "Type" +msgstr "Type" + +#: templates/base/_items/vulnerability_tab_content.html:103 +msgid "CVSS Metrics" +msgstr "CVSS Metrics" + +#: templates/base/_items/vulnerability_tab_content.html:105 +msgid "Hackerone ID" +msgstr "Hackerone ID" + +#: templates/base/_items/vulnerability_tab_content.html:108 +msgid "CVSS Score" +msgstr "CVSS Score" + +#: templates/base/_items/vulnerability_tab_content.html:109 +#: templates/base/_items/vulnerability_tab_content.html:110 +msgid "CVE/CWE" +msgstr "CVE/CWE" + +#: templates/base/_items/vulnerability_tab_content.html:112 +#: templates/report/template.html:989 +msgid "Description" +msgstr "Description" + +#: templates/base/_items/vulnerability_tab_content.html:113 +msgid "Reference" +msgstr "Reference" + +#: templates/base/_items/vulnerability_tab_content.html:114 +msgid "Discovered on" +msgstr "Discovered on" + +#: templates/base/_items/vulnerability_tab_content.html:119 +msgid "Extracted Results" +msgstr "Extracted Results" + +#: templates/base/_items/vulnerability_tab_content.html:120 +msgid "CURL command" +msgstr "CURL command" + +#: templates/base/_items/vulnerability_tab_content.html:121 +msgid "Matcher Name" +msgstr "Matcher Name" + +#: templates/base/_items/widgets/vulnerability_breakdown_by_severity_chart.html:4 +#: templates/report/template.html:876 +msgid "Vulnerability Breakdown by Severity" +msgstr "Vulnerability Breakdown by Severity" + +#: templates/base/_items/widgets/vulnerability_breakdown_by_severity_chart.html:28 +#: templates/base/_items/widgets/vulnerability_highlights.html:48 +#: templates/report/template.html:576 templates/report/template.html:687 +#: templates/report/template.html:923 templates/report/template.html:945 +msgid "Unknown" +msgstr "Unknown" + +#: templates/base/_items/widgets/vulnerability_highlights.html:5 +msgid "Vulnerability Highlights" +msgstr "Vulnerability Highlights" + +#: templates/base/_items/widgets/vulnerability_highlights.html:10 +msgid "Not enough data!" +msgstr "Not enough data!" + +#: templates/base/_items/widgets/vulnerability_highlights.html:16 +msgid "Vulnerability" +msgstr "Vulnerability" + +#: templates/base/_items/widgets/vulnerability_highlights.html:30 +msgid "CVE ID" +msgstr "CVE ID" + +#: templates/base/_items/widgets/vulnerability_highlights.html:34 +msgid "Discovered" +msgstr "Discovered" + +#: templates/base/login.html:61 +msgid "Login to reNgine" +msgstr "Login to reNgine" + +#: templates/base/login.html:62 +msgid "Current release: v2.0.5" +msgstr "Current release: v2.0.5" + +#: templates/base/login.html:65 +msgid "Learn how to create reNgine account." +msgstr "Learn how to create reNgine account." + +#: templates/base/login.html:74 +msgid "If you have any issues or feature request, feel free to" +msgstr "If you have any issues or feature request, feel free to" + +#: templates/base/login.html:74 +msgid "raise issue on Github." +msgstr "raise issue on Github." + +#: templates/base/login.html:80 +msgid "Username" +msgstr "Username" + +#: templates/base/login.html:83 +msgid "username" +msgstr "username" + +#: templates/base/login.html:87 templates/base/login.html:89 +msgid "Password" +msgstr "Password" + +#: templates/base/login.html:98 +msgid "Oops! Invalid username or password." +msgstr "Oops! Invalid username or password." + +#: templates/base/login.html:100 +msgid "Please note, both password and username are case-sensitive." +msgstr "Please note, both password and username are case-sensitive." + +#: templates/base/login.html:105 +msgid "Log In" +msgstr "Log In" + +#: templates/base/logout.html:23 +msgid "Thank you for using reNgine." +msgstr "Thank you for using reNgine." + +#: templates/base/logout.html:25 +msgid "You have been successfully logged out!" +msgstr "You have been successfully logged out!" + +#: templates/base/logout.html:26 +msgid "For any issues or feature request, please feel free to" +msgstr "For any issues or feature request, please feel free to" + +#: templates/base/logout.html:26 +msgid "raise issue on github" +msgstr "raise issue on github" + +#: templates/report/template.html:445 +msgid "" +"Generated by reNgine\n" +" https://github.com/yogeshojha/rengine" +msgstr "" +"Generated by reNgine\n" +" https://github.com/yogeshojha/rengine" + +#: templates/report/template.html:453 +msgid "Table of contents" +msgstr "Table of contents" + +#: templates/report/template.html:482 +msgid "Executive summary" +msgstr "Executive summary" + +#: templates/report/template.html:489 +msgid "Quick Summary" +msgstr "Quick Summary" + +#: templates/report/template.html:490 +msgid "This section contains quick summary of scan performed on" +msgstr "This section contains quick summary of scan performed on" + +#: templates/report/template.html:496 +msgid "Reconnaissance" +msgstr "Reconnaissance" + +#: templates/report/template.html:499 templates/report/template.html:719 +msgid "Subdomains" +msgstr "Subdomains" + +#: templates/report/template.html:529 +msgid "Vulnerability Summary" +msgstr "Vulnerability Summary" + +#: templates/report/template.html:588 +msgid "Timeline of the Assessment" +msgstr "Timeline of the Assessment" + +#: templates/report/template.html:590 +#, python-format +msgid "Scan started on: %(start_date)s" +msgstr "Scan started on: %(start_date)s" + +#: templates/report/template.html:592 +msgid "Total time taken:" +msgstr "Total time taken:" + +#: templates/report/template.html:599 +msgid "Completed in < 1 minutes" +msgstr "Completed in < 1 minutes" + +#: templates/report/template.html:599 +#, python-format +msgid "Completed in %(timeCompleted)s" +msgstr "Completed in %(timeCompleted)s" + +#: templates/report/template.html:599 +#, python-format +msgid "" +"Aborted in\n" +" %(timeAbort)s" +msgstr "" +"Aborted in\n" +" %(timeAbort)s" + +#: templates/report/template.html:601 +#, python-format +msgid "Report Generated on: %(dateGen)s" +msgstr "Report Generated on: %(dateGen)s" + +#: templates/report/template.html:608 +msgid "Interesting Recon Data" +msgstr "Interesting Recon Data" + +#: templates/report/template.html:609 +#, python-format +msgid "" +"Listed below are the %(interestingSubdomainsCount)s interesting subdomains " +"identified on" +msgstr "" +"Listed below are the %(interestingSubdomainsCount)s interesting subdomains " +"identified on" + +#: templates/report/template.html:619 templates/report/template.html:732 +msgid "Page title" +msgstr "Page title" + +#: templates/report/template.html:656 +msgid "Summary of Vulnerabilities Identified" +msgstr "Summary of Vulnerabilities Identified" + +#: templates/report/template.html:658 +msgid "Listed below are the vulnerabilities identified on" +msgstr "Listed below are the vulnerabilities identified on" + +#: templates/report/template.html:668 +msgid "Times Identified" +msgstr "Times Identified" + +#: templates/report/template.html:690 +msgid "Informational" +msgstr "Informational" + +#: templates/report/template.html:708 +msgid "No Vulnerabilities were Discovered." +msgstr "No Vulnerabilities were Discovered." + +#: templates/report/template.html:718 +msgid "Discovered Assets" +msgstr "Discovered Assets" + +#: templates/report/template.html:721 +#, python-format +msgid "" +"During the reconnaissance phase, %(subDomainCount)s subdomains were " +"discovered.\n" +" Out of %(subDomainCount)s subdomains, %(aliveCount)s returned HTTP " +"status 200.\n" +" %(interestingCount)s interesting subdomains were also identified " +"based on the interesting keywords used." +msgstr "" +"During the reconnaissance phase, %(subDomainCount)s subdomains were " +"discovered.\n" +" Out of %(subDomainCount)s subdomains, %(aliveCount)s returned HTTP " +"status 200.\n" +" %(interestingCount)s interesting subdomains were also identified " +"based on the interesting keywords used." + +#: templates/report/template.html:725 +#, python-format +msgid "%(subDomainCount)s subdomains identified on" +msgstr "%(subDomainCount)s subdomains identified on" + +#: templates/report/template.html:755 +msgid "IP Addresses" +msgstr "IP Addresses" + +#: templates/report/template.html:756 +#, python-format +msgid "%(ipAddressesCount)s IP Addresses were identified on" +msgstr "%(ipAddressesCount)s IP Addresses were identified on" + +#: templates/report/template.html:763 +msgid "Open Ports" +msgstr "Open Ports" + +#: templates/report/template.html:766 +msgid "Remarks" +msgstr "Remarks" + +#: templates/report/template.html:781 +msgid "CDN IP Address" +msgstr "CDN IP Address" + +#: templates/report/template.html:797 +msgid "Reconnaissance Findings" +msgstr "Reconnaissance Findings" + +#: templates/report/template.html:810 +msgid "N/A" +msgstr "N/A" + +#: templates/report/template.html:817 +msgid "Page Title:" +msgstr "Page Title:" + +#: templates/report/template.html:823 +msgid "IP Address:" +msgstr "IP Address:" + +#: templates/report/template.html:829 +msgid "Open Ports:" +msgstr "Open Ports:" + +#: templates/report/template.html:864 +msgid "Vulnerabilities Discovered" +msgstr "Vulnerabilities Discovered" + +#: templates/report/template.html:866 +msgid "This section reports the security issues found during the audit." +msgstr "This section reports the security issues found during the audit." + +#: templates/report/template.html:868 +#, python-format +msgid " Total of %(vulnCount)s were discovered in %(dn)s" +msgstr " Total of %(vulnCount)s were discovered in %(dn)s" + +#: templates/report/template.html:869 +#, python-format +msgid "%(critVulnCount)s of them were Critical," +msgstr "%(critVulnCount)s of them were Critical," + +#: templates/report/template.html:870 +#, python-format +msgid "%(highVulnCount)s of them were High Severity," +msgstr "%(highVulnCount)s of them were High Severity," + +#: templates/report/template.html:871 +#, python-format +msgid "%(medVulnCount)s of them were Medium severity," +msgstr "%(medVulnCount)s of them were Medium severity," + +#: templates/report/template.html:872 +#, python-format +msgid "%(lowVulnCount)s of them were Low severity, and" +msgstr "%(lowVulnCount)s of them were Low severity, and" + +#: templates/report/template.html:873 +#, python-format +msgid "%(vulnCount)s of them were Informational." +msgstr "%(vulnCount)s of them were Informational." + +#: templates/report/template.html:874 +#, python-format +msgid "%(unknownVulnCount)s of them were Unknown Severity." +msgstr "%(unknownVulnCount)s of them were Unknown Severity." + +#: templates/report/template.html:948 +msgid "INFO" +msgstr "INFO" + +#: templates/report/template.html:951 +msgid "LOW" +msgstr "LOW" + +#: templates/report/template.html:954 +msgid "MEDIUM" +msgstr "MEDIUM" + +#: templates/report/template.html:957 +msgid "HIGH" +msgstr "HIGH" + +#: templates/report/template.html:960 +msgid "CRITICAL" +msgstr "CRITICAL" + +#: templates/report/template.html:965 +#, python-format +msgid "Vulnerability Source: %(vulnSourceUpper)s" +msgstr "Vulnerability Source: %(vulnSourceUpper)s" + +#: templates/report/template.html:967 +msgid "Vulnerability Classification" +msgstr "Vulnerability Classification" + +#: templates/report/template.html:969 +msgid "CVSS Metrics:" +msgstr "CVSS Metrics:" + +#: templates/report/template.html:973 +msgid "CVSS Score:" +msgstr "CVSS Score:" + +#: templates/report/template.html:977 +msgid "CVE IDs" +msgstr "CVE IDs" + +#: templates/report/template.html:982 +msgid "CWE IDs" +msgstr "CWE IDs" + +#: templates/report/template.html:994 +msgid "Impact" +msgstr "Impact" + +#: templates/report/template.html:999 +msgid "Remediation" +msgstr "Remediation" + +#: templates/report/template.html:1003 +msgid "Vulnerable URL(s)" +msgstr "Vulnerable URL(s)" + +#: templates/report/template.html:1025 +msgid "References" +msgstr "References" + +#: templates/report/template.html:1044 +msgid "END OF REPORT" +msgstr "END OF REPORT" diff --git a/web/locale/en/LC_MESSAGES/djangojs.mo b/web/locale/en/LC_MESSAGES/djangojs.mo new file mode 100644 index 000000000..202f5de46 Binary files /dev/null and b/web/locale/en/LC_MESSAGES/djangojs.mo differ diff --git a/web/locale/en/LC_MESSAGES/djangojs.po b/web/locale/en/LC_MESSAGES/djangojs.po new file mode 100644 index 000000000..4dc8e47f8 --- /dev/null +++ b/web/locale/en/LC_MESSAGES/djangojs.po @@ -0,0 +1,1252 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: static/custom/custom.js:8 +msgid "Showing page _PAGE_ of _PAGES_" +msgstr "Showing page _PAGE_ of _PAGES_" + +#: static/custom/custom.js:10 +msgid "Search..." +msgstr "Search..." + +#: static/custom/custom.js:11 +msgid "Results : _MENU_" +msgstr "Results : _MENU_" + +#: static/custom/custom.js:96 +msgid "Are you sure you want to delete this?" +msgstr "Are you sure you want to delete this?" + +#: static/custom/custom.js:97 +msgid "This action can not be undone." +msgstr "This action can not be undone." + +#: static/custom/custom.js:100 static/custom/custom.js:278 +#: static/custom/custom.js:311 static/custom/custom.js:430 +#: static/custom/custom.js:798 static/custom/custom.js:799 +#: static/custom/custom.js:923 static/custom/todo.js:31 +msgid "Delete" +msgstr "Delete" + +#: static/custom/custom.js:101 static/custom/custom.js:279 +#: static/custom/custom.js:312 static/custom/custom.js:431 +#: static/custom/custom.js:839 static/custom/custom.js:924 +#: static/custom/custom.js:1824 static/custom/custom.js:1848 +#: static/custom/todo.js:32 +msgid "Cancel" +msgstr "Cancel" + +#: static/custom/custom.js:119 +msgid "Oops! Unable to delete the scheduled task!" +msgstr "Oops! Unable to delete the scheduled task!" + +#: static/custom/custom.js:128 +msgid "Schedule Scan Started" +msgstr "Schedule Scan Started" + +#: static/custom/custom.js:130 +msgid "Schedule Scan Stopped" +msgstr "Schedule Scan Stopped" + +#: static/custom/custom.js:204 +msgid "INFO" +msgstr "INFO" + +#: static/custom/custom.js:207 +msgid "LOW" +msgstr "LOW" + +#: static/custom/custom.js:210 +msgid "MEDIUM" +msgstr "MEDIUM" + +#: static/custom/custom.js:213 +msgid "HIGH" +msgstr "HIGH" + +#: static/custom/custom.js:216 +msgid "CRITICAL" +msgstr "CRITICAL" + +#: static/custom/custom.js:219 +msgid "UNKNOWN" +msgstr "UNKNOWN" + +#: static/custom/custom.js:274 +msgid "Are you sure you want to delete all scan results?" +msgstr "Are you sure you want to delete all scan results?" + +#: static/custom/custom.js:275 static/custom/custom.js:308 +#: static/custom/custom.js:795 static/custom/custom.js:835 +#: static/custom/custom.js:920 static/custom/todo.js:28 +msgid "You won't be able to revert this!" +msgstr "You won't be able to revert this!" + +#: static/custom/custom.js:297 +msgid "Oops! Unable to delete Delete scan results!" +msgstr "Oops! Unable to delete Delete scan results!" + +#: static/custom/custom.js:307 +msgid "Are you sure you want to delete all Screenshots?" +msgstr "Are you sure you want to delete all Screenshots?" + +#: static/custom/custom.js:330 +msgid "Oops! Unable to delete Empty Screenshots!" +msgstr "Oops! Unable to delete Empty Screenshots!" + +#: static/custom/custom.js:372 +msgid "Technology" +msgstr "Technology" + +#: static/custom/custom.js:386 +msgid "CDN IP Address" +msgstr "CDN IP Address" + +#: static/custom/custom.js:427 +msgid "Delete Vulnerability!" +msgstr "Delete Vulnerability!" + +#: static/custom/custom.js:428 +msgid "" +"Do you really want to delete this Vulnerability? This action cannot be " +"undone." +msgstr "" +"Do you really want to delete this Vulnerability? This action cannot be " +"undone." + +#: static/custom/custom.js:435 +msgid "Deleting Vulnerability..." +msgstr "Deleting Vulnerability..." + +#: static/custom/custom.js:461 +msgid "Could not delete Vulnerability!" +msgstr "Could not delete Vulnerability!" + +#: static/custom/custom.js:475 +msgid "" +"We do not recommended sending this vulnerability report to hackerone due to " +"the severity, do you still want to report this?" +msgstr "" +"We do not recommended sending this vulnerability report to hackerone due to " +"the severity, do you still want to report this?" + +#: static/custom/custom.js:477 +msgid "This vulnerability report will be sent to Hackerone." +msgstr "This vulnerability report will be sent to Hackerone." + +#: static/custom/custom.js:481 +msgid "Reporting vulnerability to hackerone" +msgstr "Reporting vulnerability to hackerone" + +#: static/custom/custom.js:485 static/custom/custom.js:486 +msgid "Report" +msgstr "Report" + +#: static/custom/custom.js:503 +msgid "Target does not has team_handle to send report to." +msgstr "Target does not has team_handle to send report to." + +#: static/custom/custom.js:508 +msgid "Vulnerability report successfully submitted to hackerone." +msgstr "Vulnerability report successfully submitted to hackerone." + +#: static/custom/custom.js:513 +msgid "Invalid Report." +msgstr "Invalid Report." + +#: static/custom/custom.js:518 +msgid "Hackerone authentication failed." +msgstr "Hackerone authentication failed." + +#: static/custom/custom.js:523 +msgid "API Key forbidden by Hackerone." +msgstr "API Key forbidden by Hackerone." + +#: static/custom/custom.js:528 +msgid "Too many requests." +msgstr "Too many requests." + +#: static/custom/custom.js:534 +msgid "" +"Oops! Unable to send vulnerability report to hackerone, check your target " +"team_handle or hackerone configurarions!" +msgstr "" +"Oops! Unable to send vulnerability report to hackerone, check your target " +"team_handle or hackerone configurarions!" + +#: static/custom/custom.js:574 static/custom/custom.js:575 +msgid "No interesting subdomain" +msgstr "No interesting subdomain" + +#: static/custom/custom.js:668 static/custom/custom.js:669 +msgid "No interesting endpoint" +msgstr "No interesting endpoint" + +#: static/custom/custom.js:753 +msgid "No subdomains marked as important!" +msgstr "No subdomains marked as important!" + +#: static/custom/custom.js:775 +msgid "Marked Important!" +msgstr "Marked Important!" + +#: static/custom/custom.js:778 +msgid "Marked Un-Important!" +msgstr "Marked Un-Important!" + +#: static/custom/custom.js:794 +msgid "Are you sure you want to delete this scan history?" +msgstr "Are you sure you want to delete this scan history?" + +#: static/custom/custom.js:817 static/custom/custom.js:945 +msgid "Oops! Unable to delete the scan history!" +msgstr "Oops! Unable to delete the scan history!" + +#: static/custom/custom.js:834 +msgid "Are you sure you want to stop this scan?" +msgstr "Are you sure you want to stop this scan?" + +#: static/custom/custom.js:838 +msgid "Stop" +msgstr "Stop" + +#: static/custom/custom.js:857 +msgid "Scan Successfully Aborted." +msgstr "Scan Successfully Aborted." + +#: static/custom/custom.js:869 +msgid "Oops! Could not abort the scan. " +msgstr "Oops! Could not abort the scan. " + +#: static/custom/custom.js:877 +msgid "Oops! Unable to stop the scan" +msgstr "Oops! Unable to stop the scan" + +#: static/custom/custom.js:919 +msgid "Are you sure you want to delete this subscan?" +msgstr "Are you sure you want to delete this subscan?" + +#: static/custom/custom.js:940 +msgid "1 Subscan Deleted!" +msgstr "1 Subscan Deleted!" + +#: static/custom/custom.js:957 +msgid "Fetching Results..." +msgstr "Fetching Results..." + +#: static/custom/custom.js:970 +msgid "Scan has not yet started! Please wait for other scans to complete..." +msgstr "Scan has not yet started! Please wait for other scans to complete..." + +#: static/custom/custom.js:980 static/custom/right_sidebar.js:253 +msgid "Port Scan" +msgstr "Port Scan" + +#: static/custom/custom.js:982 static/custom/right_sidebar.js:259 +msgid "Vulnerability Scan" +msgstr "Vulnerability Scan" + +#: static/custom/custom.js:984 +msgid "Fetch URLs" +msgstr "Fetch URLs" + +#: static/custom/custom.js:986 +msgid "Directory and Files Fuzzing" +msgstr "Directory and Files Fuzzing" + +#: static/custom/custom.js:993 static/custom/custom.js:1922 +#: static/custom/right_sidebar.js:127 +msgid "Running" +msgstr "Running" + +#: static/custom/custom.js:996 static/custom/custom.js:1352 +#: static/custom/right_sidebar.js:77 static/custom/right_sidebar.js:166 +msgid "Failed" +msgstr "Failed" + +#: static/custom/custom.js:998 +msgid "Successful" +msgstr "Successful" + +#: static/custom/custom.js:1001 static/custom/custom.js:1357 +#: static/custom/custom.js:1914 static/custom/right_sidebar.js:82 +#: static/custom/right_sidebar.js:172 +msgid "Aborted" +msgstr "Aborted" + +#: static/custom/custom.js:1003 static/custom/right_sidebar.js:265 +msgid "Unknown" +msgstr "Unknown" + +#: static/custom/custom.js:1005 +msgid "Scan Status:" +msgstr "Scan Status:" + +#: static/custom/custom.js:1006 +msgid "Engine Used:" +msgstr "Engine Used:" + +#: static/custom/custom.js:1014 +msgid "IP Address:" +msgstr "IP Address:" + +#: static/custom/custom.js:1014 +msgid "Ports Open" +msgstr "Ports Open" + +#: static/custom/custom.js:1026 +msgid "* Uncommon Ports" +msgstr "* Uncommon Ports" + +#: static/custom/custom.js:1035 static/custom/custom.js:1045 +msgid "could not fetch any results." +msgstr "could not fetch any results." + +#: static/custom/custom.js:1077 +msgid "HTTP URL" +msgstr "HTTP URL" + +#: static/custom/custom.js:1078 +msgid "Status" +msgstr "Status" + +#: static/custom/custom.js:1079 +msgid "Page Title" +msgstr "Page Title" + +#: static/custom/custom.js:1080 +msgid "Tags" +msgstr "Tags" + +#: static/custom/custom.js:1081 +msgid "Content Type" +msgstr "Content Type" + +#: static/custom/custom.js:1082 static/custom/custom.js:1266 +msgid "Content Length" +msgstr "Content Length" + +#: static/custom/custom.js:1083 +msgid "Response Time" +msgstr "Response Time" + +#: static/custom/custom.js:1100 +msgid "Web Server" +msgstr "Web Server" + +#: static/custom/custom.js:1120 static/custom/custom.js:1121 +msgid "No endpoint" +msgstr "No endpoint" + +#: static/custom/custom.js:1142 +msgid "Type" +msgstr "Type" + +#: static/custom/custom.js:1143 +msgid "Title" +msgstr "Title" + +#: static/custom/custom.js:1144 static/custom/custom.js:2527 +msgid "Severity" +msgstr "Severity" + +#: static/custom/custom.js:1145 static/custom/custom.js:1206 +#: static/custom/custom.js:2343 static/custom/custom.js:2793 +#: static/custom/custom.js:2796 +msgid "CVSS Score" +msgstr "CVSS Score" + +#: static/custom/custom.js:1146 +msgid "CVE/CWE" +msgstr "CVE/CWE" + +#: static/custom/custom.js:1147 +msgid "Vulnerable URL" +msgstr "Vulnerable URL" + +#: static/custom/custom.js:1148 +msgid "Action" +msgstr "Action" + +#: static/custom/custom.js:1193 static/custom/custom.js:2804 +msgid "CVSS Metrics" +msgstr "CVSS Metrics" + +#: static/custom/custom.js:1211 static/custom/custom.js:2760 +#: static/custom/toolbox.js:192 +msgid "CVE ID" +msgstr "CVE ID" + +#: static/custom/custom.js:1216 static/custom/custom.js:2367 +#: static/custom/custom.js:2775 +msgid "CWE ID" +msgstr "CWE ID" + +#: static/custom/custom.js:1227 +msgid "Report to Hackerone" +msgstr "Report to Hackerone" + +#: static/custom/custom.js:1244 static/custom/custom.js:1245 +msgid "No vulnerability" +msgstr "No vulnerability" + +#: static/custom/custom.js:1264 +msgid "Directory" +msgstr "Directory" + +#: static/custom/custom.js:1265 static/custom/custom.js:2280 +msgid "HTTP Status" +msgstr "HTTP Status" + +#: static/custom/custom.js:1267 +msgid "Lines" +msgstr "Lines" + +#: static/custom/custom.js:1268 +msgid "Words" +msgstr "Words" + +#: static/custom/custom.js:1292 static/custom/custom.js:1293 +msgid "No directory" +msgstr "No directory" + +#: static/custom/custom.js:1353 +msgid "Error:" +msgstr "Error:" + +#: static/custom/custom.js:1361 static/custom/custom.js:1918 +#: static/custom/right_sidebar.js:177 +msgid "Task Completed" +msgstr "Task Completed" + +#: static/custom/custom.js:1400 +msgid "Fetching WHOIS..." +msgstr "Fetching WHOIS..." + +#: static/custom/custom.js:1421 +msgid "Whois Fetched..." +msgstr "Whois Fetched..." + +#: static/custom/custom.js:1470 static/custom/custom.js:1502 +#: static/custom/toolbox.js:178 +msgid "Oops!" +msgstr "Oops!" + +#: static/custom/custom.js:1520 +msgid "Domain info" +msgstr "Domain info" + +#: static/custom/custom.js:1521 +msgid "Whois" +msgstr "Whois" + +#: static/custom/custom.js:1522 +msgid "Nameservers" +msgstr "Nameservers" + +#: static/custom/custom.js:1523 +msgid "DNS Records" +msgstr "DNS Records" + +#: static/custom/custom.js:1524 +msgid "Historical Ips" +msgstr "Historical Ips" + +#: static/custom/custom.js:1525 +msgid "Related Domains" +msgstr "Related Domains" + +#: static/custom/custom.js:1526 +msgid "Related TLDs" +msgstr "Related TLDs" + +#: static/custom/custom.js:1534 +msgid "Domain" +msgstr "Domain" + +#: static/custom/custom.js:1538 +msgid "Dnssec" +msgstr "Dnssec" + +#: static/custom/custom.js:1542 +msgid "Geolocation" +msgstr "Geolocation" + +#: static/custom/custom.js:1549 +msgid "Created" +msgstr "Created" + +#: static/custom/custom.js:1553 +msgid "Updated" +msgstr "Updated" + +#: static/custom/custom.js:1557 +msgid "Expires" +msgstr "Expires" + +#: static/custom/custom.js:1563 +msgid "Whois Server" +msgstr "Whois Server" + +#: static/custom/custom.js:1569 +msgid "Registrar Name" +msgstr "Registrar Name" + +#: static/custom/custom.js:1573 +msgid "Registrar Phone" +msgstr "Registrar Phone" + +#: static/custom/custom.js:1577 +msgid "Registrar Email" +msgstr "Registrar Email" + +#: static/custom/custom.js:1597 +msgid "Registrant" +msgstr "Registrant" + +#: static/custom/custom.js:1600 +msgid "Administrative" +msgstr "Administrative" + +#: static/custom/custom.js:1603 +msgid "Technical" +msgstr "Technical" + +#: static/custom/custom.js:1624 +msgid "ID" +msgstr "ID" + +#: static/custom/custom.js:1628 +msgid "Name" +msgstr "Name" + +#: static/custom/custom.js:1632 +msgid "Organization" +msgstr "Organization" + +#: static/custom/custom.js:1636 +msgid "Email" +msgstr "Email" + +#: static/custom/custom.js:1640 +msgid "Phone/Fax" +msgstr "Phone/Fax" + +#: static/custom/custom.js:1647 static/custom/custom.js:1651 +msgid "Address" +msgstr "Address" + +#: static/custom/custom.js:1670 +msgid "A Records" +msgstr "A Records" + +#: static/custom/custom.js:1675 +msgid "MX Records" +msgstr "MX Records" + +#: static/custom/custom.js:1681 +msgid "TXT Records" +msgstr "TXT Records" + +#: static/custom/custom.js:1693 +msgid "IP" +msgstr "IP" + +#: static/custom/custom.js:1694 +msgid "Location" +msgstr "Location" + +#: static/custom/custom.js:1695 +msgid "Owner" +msgstr "Owner" + +#: static/custom/custom.js:1696 +msgid "Last Seen" +msgstr "Last Seen" + +#: static/custom/custom.js:1734 +msgid "No Related TLDs identified" +msgstr "No Related TLDs identified" + +#: static/custom/custom.js:1748 +msgid "No Related Domains identified" +msgstr "No Related Domains identified" + +#: static/custom/custom.js:1772 +msgid "" +"If you would like to add IP/CIDRs, multiple domain, Please click here." +msgstr "" +"If you would like to add IP/CIDRs, multiple domain, Please click here." + +#: static/custom/custom.js:1775 +msgid "Target Name" +msgstr "Target Name" + +#: static/custom/custom.js:1776 static/custom/toolbox.js:7 +msgid "yourdomain.com" +msgstr "yourdomain.com" + +#: static/custom/custom.js:1780 +msgid "Description (Optional)" +msgstr "Description (Optional)" + +#: static/custom/custom.js:1781 +msgid "Target Description" +msgstr "Target Description" + +#: static/custom/custom.js:1785 +msgid "Hackerone Target Team Handle (Optional)" +msgstr "Hackerone Target Team Handle (Optional)" + +#: static/custom/custom.js:1786 +msgid "hackerone.com/team_handle, Only enter team_handle after /" +msgstr "hackerone.com/team_handle, Only enter team_handle after /" + +#: static/custom/custom.js:1790 static/custom/custom.js:1819 +#: static/custom/custom.js:1823 +msgid "Add Target" +msgstr "Add Target" + +#: static/custom/custom.js:1843 +msgid "Target Successfully added!" +msgstr "Target Successfully added!" + +#: static/custom/custom.js:1844 +msgid "Do you wish to initiate the scan on new target?" +msgstr "Do you wish to initiate the scan on new target?" + +#: static/custom/custom.js:1847 +msgid "Initiate Scan" +msgstr "Initiate Scan" + +#: static/custom/custom.js:1864 +msgid "Oops! Unable to add target !" +msgstr "Oops! Unable to add target !" + +#: static/custom/custom.js:1951 +msgid "Close" +msgstr "Close" + +#: static/custom/custom.js:1952 +msgid "" +"No Subscans has been initiated for any subdomains. You can select individual " +"subdomains and initiate subscans like Directory Fuzzing, Vulnerability Scan " +"etc." +msgstr "" +"No Subscans has been initiated for any subdomains. You can select individual " +"subdomains and initiate subscans like Directory Fuzzing, Vulnerability Scan " +"etc." + +#: static/custom/custom.js:2055 static/custom/custom.js:2143 +#: static/custom/custom.js:2223 +msgid "Interesting Subdomain" +msgstr "Interesting Subdomain" + +#: static/custom/custom.js:2055 static/custom/custom.js:2143 +#: static/custom/custom.js:2223 +msgid "Interesting" +msgstr "Interesting" + +#: static/custom/custom.js:2121 static/custom/custom.js:2205 +#: static/custom/custom.js:2257 +msgid "*Subdomains highlighted are 40X HTTP Status" +msgstr "*Subdomains highlighted are 40X HTTP Status" + +#: static/custom/custom.js:2175 +msgid "*IP Address highlighted are CDN IP Address" +msgstr "*IP Address highlighted are CDN IP Address" + +#: static/custom/custom.js:2289 +msgid "Fetching CVE Details..." +msgstr "Fetching CVE Details..." + +#: static/custom/custom.js:2320 +msgid "CVE Details" +msgstr "CVE Details" + +#: static/custom/custom.js:2321 +msgid "Affected Products" +msgstr "Affected Products" + +#: static/custom/custom.js:2322 +msgid "Affected Versions" +msgstr "Affected Versions" + +#: static/custom/custom.js:2323 static/custom/custom.js:2930 +msgid "References" +msgstr "References" + +#: static/custom/custom.js:2347 +msgid "Confidentiality Impact" +msgstr "Confidentiality Impact" + +#: static/custom/custom.js:2348 static/custom/custom.js:2352 +#: static/custom/custom.js:2356 static/custom/custom.js:2360 +#: static/custom/custom.js:2364 static/custom/custom.js:2368 +msgid "N/A" +msgstr "N/A" + +#: static/custom/custom.js:2351 +msgid "Integrity Impact" +msgstr "Integrity Impact" + +#: static/custom/custom.js:2355 +msgid "Availability Impact" +msgstr "Availability Impact" + +#: static/custom/custom.js:2359 +msgid "Access Complexity" +msgstr "Access Complexity" + +#: static/custom/custom.js:2363 +msgid "Authentication" +msgstr "Authentication" + +#: static/custom/custom.js:2453 +msgid "Target" +msgstr "Target" + +#: static/custom/custom.js:2454 +msgid "Vulnerabilities Count" +msgstr "Vulnerabilities Count" + +#: static/custom/custom.js:2483 +msgid "Could not find most vulnerable targets." +msgstr "Could not find most vulnerable targets." + +#: static/custom/custom.js:2485 +msgid "" +"Once the vulnerability scan is performed, reNgine will identify the most " +"vulnerable targets." +msgstr "" +"Once the vulnerability scan is performed, reNgine will identify the most " +"vulnerable targets." + +#: static/custom/custom.js:2525 +msgid "Vulnerability Name" +msgstr "Vulnerability Name" + +#: static/custom/custom.js:2526 +msgid "Count" +msgstr "Count" + +#: static/custom/custom.js:2578 +msgid "Could not find Most Common Vulnerabilities." +msgstr "Could not find Most Common Vulnerabilities." + +#: static/custom/custom.js:2580 +msgid "" +"Once the vulnerability scan is performed, reNgine will identify the Most " +"Common Vulnerabilities." +msgstr "" +"Once the vulnerability scan is performed, reNgine will identify the Most " +"Common Vulnerabilities." + +#: static/custom/custom.js:2630 +msgid "Enter the project name" +msgstr "Enter the project name" + +#: static/custom/custom.js:2634 +msgid "Your Awesome Project" +msgstr "Your Awesome Project" + +#: static/custom/custom.js:2637 +msgid "Create Project" +msgstr "Create Project" + +#: static/custom/custom.js:2649 +msgid "Duplicate project name, choose another project name!" +msgstr "Duplicate project name, choose another project name!" + +#: static/custom/custom.js:2711 +msgid "ID:" +msgstr "ID:" + +#: static/custom/custom.js:2712 +msgid "Discovered on:" +msgstr "Discovered on:" + +#: static/custom/custom.js:2713 +msgid "URL:" +msgstr "URL:" + +#: static/custom/custom.js:2714 +msgid "Severity:" +msgstr "Severity:" + +#: static/custom/custom.js:2714 +msgid "Type:" +msgstr "Type:" + +#: static/custom/custom.js:2714 +msgid "Source:" +msgstr "Source:" + +#: static/custom/custom.js:2717 +msgid "Vulnerability Description" +msgstr "Vulnerability Description" + +#: static/custom/custom.js:2718 +msgid "Vulnerability Impact" +msgstr "Vulnerability Impact" + +#: static/custom/custom.js:2719 +msgid "Remediation" +msgstr "Remediation" + +#: static/custom/custom.js:2745 +msgid "Vulnerability Classification" +msgstr "Vulnerability Classification" + +#: static/custom/custom.js:2755 +msgid "CVE IDs" +msgstr "CVE IDs" + +#: static/custom/custom.js:2770 +msgid "CWE IDs" +msgstr "CWE IDs" + +#: static/custom/custom.js:2822 +msgid "Nuclei Template Details" +msgstr "Nuclei Template Details" + +#: static/custom/custom.js:2829 +msgid "Template" +msgstr "Template" + +#: static/custom/custom.js:2833 +msgid "Template URL" +msgstr "Template URL" + +#: static/custom/custom.js:2837 +msgid "Template ID" +msgstr "Template ID" + +#: static/custom/custom.js:2841 +msgid "Matcher Name" +msgstr "Matcher Name" + +#: static/custom/custom.js:2855 +msgid "CURL Command" +msgstr "CURL Command" + +#: static/custom/custom.js:2871 +msgid "Extracted Results" +msgstr "Extracted Results" + +#: static/custom/custom.js:2901 +msgid "HTTP Request" +msgstr "HTTP Request" + +#: static/custom/custom.js:2915 +msgid "HTTP Response" +msgstr "HTTP Response" + +#: static/custom/custom.js:2948 +msgid "(GPT was used to generate vulnerability details.)" +msgstr "(GPT was used to generate vulnerability details.)" + +#: static/custom/custom.js:2983 static/custom/custom.js:2988 +#: static/custom/custom.js:3091 static/custom/custom.js:3096 +msgid "Request failed" +msgstr "Request failed" + +#: static/custom/custom.js:2994 static/custom/custom.js:3102 +msgid "Loading..." +msgstr "Loading..." + +#: static/custom/custom.js:2995 +msgid "Please wait while the GPT is generating vulnerability description." +msgstr "Please wait while the GPT is generating vulnerability description." + +#: static/custom/custom.js:3008 static/custom/custom.js:3017 +#: static/custom/custom.js:3118 static/custom/custom.js:3127 +msgid "Oops..." +msgstr "Oops..." + +#: static/custom/custom.js:3018 static/custom/custom.js:3128 +msgid "Something went wrong!" +msgstr "Something went wrong!" + +#: static/custom/custom.js:3103 +msgid "Please wait while the GPT is generating attack surface." +msgstr "Please wait while the GPT is generating attack surface." + +#: static/custom/right_sidebar.js:26 +msgid "No upcoming Scans." +msgstr "No upcoming Scans." + +#: static/custom/right_sidebar.js:46 +#, fuzzy +#| msgid "Scan Engine" +msgid "Scanning" +msgstr "Scan Engine" + +#: static/custom/right_sidebar.js:68 +msgid "No Scans are currently running." +msgstr "No Scans are currently running." + +#: static/custom/right_sidebar.js:87 +msgid "Scan Completed" +msgstr "Scan Completed" + +#: static/custom/right_sidebar.js:115 +msgid "No scans have been recently completed." +msgstr "No scans have been recently completed." + +#: static/custom/right_sidebar.js:138 +msgid "In Progress" +msgstr "In Progress" + +#: static/custom/right_sidebar.js:154 +msgid "No tasks are currently running." +msgstr "No tasks are currently running." + +#: static/custom/right_sidebar.js:202 +msgid "No tasks have been recently completed." +msgstr "No tasks have been recently completed." + +#: static/custom/right_sidebar.js:210 +msgid "Upcoming" +msgstr "Upcoming" + +#: static/custom/right_sidebar.js:216 +msgid "No upcoming tasks." +msgstr "No upcoming tasks." + +#: static/custom/right_sidebar.js:221 +msgid "Scan Status" +msgstr "Scan Status" + +#: static/custom/right_sidebar.js:224 +msgid "Subdomains" +msgstr "Subdomains" + +#: static/custom/right_sidebar.js:227 +msgid "Endpoints" +msgstr "Endpoints" + +#: static/custom/right_sidebar.js:230 +msgid "Vulnerabilities" +msgstr "Vulnerabilities" + +#: static/custom/right_sidebar.js:233 +msgid "Scan Engine" +msgstr "Scan Engine" + +#: static/custom/right_sidebar.js:237 +msgid "Scan Status Reloaded." +msgstr "Scan Status Reloaded." + +#: static/custom/right_sidebar.js:250 +msgid "Directory Fuzzing" +msgstr "Directory Fuzzing" + +#: static/custom/right_sidebar.js:256 +msgid "Endpoint Gathering" +msgstr "Endpoint Gathering" + +#: static/custom/right_sidebar.js:262 +msgid "OSINT" +msgstr "OSINT" + +#: static/custom/subdomain_datatable.js:37 +#: static/custom/subdomain_datatable.js:38 +msgid "No Subdomain detected" +msgstr "No Subdomain detected" + +#: static/custom/todo.js:27 +msgid "Are you sure you want to delete this Recon Todo?" +msgstr "Are you sure you want to delete this Recon Todo?" + +#: static/custom/todo.js:48 +msgid "Recon Todo Deleted." +msgstr "Recon Todo Deleted." + +#: static/custom/todo.js:57 +msgid "Oops! Unable to delete todo!" +msgstr "Oops! Unable to delete todo!" + +#: static/custom/todo.js:66 +msgid "Todo Marked as Unimportant" +msgstr "Todo Marked as Unimportant" + +#: static/custom/todo.js:69 +msgid "Todo Marked as Important" +msgstr "Todo Marked as Important" + +#: static/custom/todo.js:107 +msgid "Important Task" +msgstr "Important Task" + +#: static/custom/todo.js:180 +msgid "Mark UnImportant" +msgstr "Mark UnImportant" + +#: static/custom/todo.js:183 +msgid "Mark Important" +msgstr "Marked Important" + +#: static/custom/todo.js:198 +msgid "Delete Todo" +msgstr "Delete Todo" + +#: static/custom/todo.js:209 +msgid "No todos or notes..." +msgstr "No todos or notes..." + +#: static/custom/todo.js:209 +msgid "" +"You can add todo for individual subdomains or you can also add using + " +"symbol above." +msgstr "" +"You can add todo for individual subdomains or you can also add using + " +"symbol above." + +#: static/custom/toolbox.js:2 +msgid "WHOIS Lookup" +msgstr "WHOIS Lookup" + +#: static/custom/toolbox.js:6 +msgid "Domain Name/IP Address" +msgstr "Domain Name/IP Address" + +#: static/custom/toolbox.js:10 +msgid "Search Whois" +msgstr "Search Whois" + +#: static/custom/toolbox.js:22 static/custom/toolbox.js:49 +#: static/custom/toolbox.js:210 static/custom/toolbox.js:237 +msgid "Error!" +msgstr "Error!" + +#: static/custom/toolbox.js:22 +msgid "Please enter the domain/IP Address!" +msgstr "Please enter the domain/IP Address!" + +#: static/custom/toolbox.js:30 static/custom/toolbox.js:39 +msgid "Detect CMS" +msgstr "Detect CMS" + +#: static/custom/toolbox.js:34 static/custom/toolbox.js:222 +msgid "HTTP URL/Domain Name" +msgstr "HTTP URL/Domain Name" + +#: static/custom/toolbox.js:35 static/custom/toolbox.js:223 +msgid "https://yourdomain.com" +msgstr "https://yourdomain.com" + +#: static/custom/toolbox.js:37 +msgid "" +"(reNgine uses CMSeeK to detect CMS.)" +msgstr "" +"(reNgine uses CMSeeK to detect CMS.)" + +#: static/custom/toolbox.js:49 static/custom/toolbox.js:237 +msgid "Please enter a valid URL!" +msgstr "Please enter a valid URL!" + +#: static/custom/toolbox.js:50 +msgid "Okay" +msgstr "Okay" + +#: static/custom/toolbox.js:61 +msgid "Detecting CMS" +msgstr "Detecting CMS" + +#: static/custom/toolbox.js:84 +msgid "Visit CMS" +msgstr "Visit CMS" + +#: static/custom/toolbox.js:88 +msgid "CMS Details" +msgstr "CMS Details" + +#: static/custom/toolbox.js:90 +msgid "CMS Name :" +msgstr "CMS Name :" + +#: static/custom/toolbox.js:93 +msgid "CMS URL :" +msgstr "CMS URL :" + +#: static/custom/toolbox.js:96 +msgid "Detection Method :" +msgstr "Detection Method :" + +#: static/custom/toolbox.js:99 +msgid "URL :" +msgstr "URL :" + +#: static/custom/toolbox.js:101 +msgid "(Includes redirected URL)" +msgstr "(Includes redirected URL)" + +#: static/custom/toolbox.js:107 +msgid "Wordpress License" +msgstr "Wordpress License" + +#: static/custom/toolbox.js:108 +msgid "Wordpress Readme File" +msgstr "Wordpress Readme File" + +#: static/custom/toolbox.js:109 +msgid "Wordpress Uploads Directory" +msgstr "Wordpress Uploads Directory" + +#: static/custom/toolbox.js:112 +msgid "Wordpress Users" +msgstr "Wordpress Users" + +#: static/custom/toolbox.js:113 +msgid "Wordpress Version" +msgstr "Wordpress Version" + +#: static/custom/toolbox.js:114 +msgid "Wordpress Plugins" +msgstr "Wordpress Plugins" + +#: static/custom/toolbox.js:115 +msgid "Wordpress Themes" +msgstr "Wordpress Themes" + +#: static/custom/toolbox.js:118 +msgid "Joomla Version" +msgstr "Joomla Version" + +#: static/custom/toolbox.js:119 +msgid "Joomla Debug Mode" +msgstr "Joomla Debug Mode" + +#: static/custom/toolbox.js:122 +msgid "Joomla Readme File" +msgstr "Joomla Readme File" + +#: static/custom/toolbox.js:123 +msgid "Joomla Backup Files" +msgstr "Joomla Backup Files" + +#: static/custom/toolbox.js:124 +msgid "Joomla Directory Listing" +msgstr "Joomla Directory Listing" + +#: static/custom/toolbox.js:125 +msgid "Joomla Config Files" +msgstr "Joomla Config Files" + +#: static/custom/toolbox.js:126 +msgid "Joomla User Registration" +msgstr "Joomla User Registration" + +#: static/custom/toolbox.js:166 +msgid "Response Json" +msgstr "Response Json" + +#: static/custom/toolbox.js:188 +msgid "CVE Details Lookup" +msgstr "CVE Details Lookup" + +#: static/custom/toolbox.js:193 +msgid "CVE-XXXX-XXXX" +msgstr "CVE-XXXX-XXXX" + +#: static/custom/toolbox.js:196 +msgid "Lookup CVE" +msgstr "Lookup CVE" + +#: static/custom/toolbox.js:210 +msgid "Please enter CVE ID!" +msgstr "Please enter CVE ID!" + +#: static/custom/toolbox.js:218 +msgid "WAF Detector" +msgstr "WAF Detector" + +#: static/custom/toolbox.js:225 +msgid "" +"(reNgine uses wafw00f to detect WAF.)" +msgstr "" +"(reNgine uses wafw00f to detect WAF.)" + +#: static/custom/toolbox.js:227 +msgid "Detect WAF" +msgstr "Detect WAF" + +#: static/custom/toolbox.js:249 +msgid "Detecting WAF" +msgstr "Detecting WAF" + +msgid "Fetching Subdomains... Please wait..." +msgstr "Fetching Subdomains... Please wait..." + +# EMBEDDED JS in templates +# base.html:92 +msgid "Scan Activity" +msgstr "Scan Activity" + +# base.html:124 +msgid "No recent searches." +msgstr "No recent searches." + +# base.html:135 +msgid "Checking reNgine latest version..." +msgstr "Checking reNgine latest version..." + +# base.html:141 +msgid "Github rate limit exceeded, please try again in an hour!" +msgstr "Github rate limit exceeded, please try again in an hour!" + +# base.html:155 +msgid "Update not available" +msgstr "Update not available" + +# base.html:156 +msgid "You are running the latest version of reNgine!" +msgstr "You are running the latest version of reNgine!" + +# base.html:159 +msgid "Update Available!" +msgstr "Update Available!" + +# base.html:160 +#, python-format +msgid "" +"reNgine's new update %(vNumber)s is available, please follow the update " +"instructions." +msgstr "" +"reNgine's new update %(vNumber)s is available, please follow the update " +"instructions." + +# base.html:162 +msgid "Update Instructions" +msgstr "Update Instructions" + +# base.html:163 +msgid "Dismiss" +msgstr "Dismiss" + +msgid "Checking Daily Update..." +msgstr "Checking Daily Update..." diff --git a/web/locale/fr/LC_MESSAGES/django.mo b/web/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 000000000..21cd41b07 Binary files /dev/null and b/web/locale/fr/LC_MESSAGES/django.mo differ diff --git a/web/locale/fr/LC_MESSAGES/django.po b/web/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 000000000..0d59904f0 --- /dev/null +++ b/web/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,1196 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: reNgine/gpt.py:30 reNgine/gpt.py:93 +msgid "No OpenAI keys provided." +msgstr "Pas de clés OpenAI fournies." + +#: reNgine/tasks.py:178 +msgid "Subdomain discovery" +msgstr "Découvertes de sous-domaines" + +#: reNgine/tasks.py:179 +msgid "OS Intelligence" +msgstr "Intel sur les OS" + +#: reNgine/tasks.py:181 +msgid "Port scan" +msgstr "Scan de ports" + +#: reNgine/tasks.py:182 +msgid "Fetch URL" +msgstr "Récupération de l'URL" + +#: reNgine/tasks.py:184 +msgid "Directories & files fuzz" +msgstr "Fuzzing de fichiers et de répertoires" + +#: reNgine/tasks.py:185 +msgid "Vulnerability scan" +msgstr "Scan de vulnérabilités" + +#: reNgine/tasks.py:186 templates/base/_items/subdomain_tab_content.html:92 +#: templates/base/_items/subdomain_tab_content.html:160 +#: templates/base/_items/subdomain_toolbar.html:64 +msgid "Screenshot" +msgstr "Capture d'écran" + +#: reNgine/tasks.py:187 +msgid "WAF detection" +msgstr "Détection de WAF" + +#: reNgine/tasks.py:2011 +msgid "Nuclei Scan" +msgstr "Scan nuclei" + +#: reNgine/tasks.py:2019 +msgid "CRLFuzz Scan" +msgstr "Scan CRLFuzz" + +#: reNgine/tasks.py:2027 +msgid "Dalfox XSS Scan" +msgstr "Scan XSS Dalfox" + +#: reNgine/tasks.py:2034 +msgid "Misconfigured S3 Buckets Scanner" +msgstr "Scanneur de Buckets S3 mal configurés" + +#: reNgine/tasks.py:2414 +#, python-format +msgid "Nuclei Scan with severity %(severity)s" +msgstr "Scan Nuclei de gravité %(severity)s" + +#: reNgine/tasks.py:3515 +#, python-format +msgid " Evidence: %(evidence)s
" +msgstr " Preuve : %(evidence)s
" + +#: reNgine/tasks.py:3516 +#, python-format +msgid " Message: %(msg)s
" +msgstr " Message : %(msg)s
" + +#: reNgine/tasks.py:3517 +#, python-format +msgid " Payload: %(payload)s
" +msgstr " Charge utile : %(payload)s
" + +#: reNgine/tasks.py:3518 +#, python-format +msgid " Vulnerable Parameter: %(vulnParam)s
" +msgstr " Paramètre vulnérable : %(vulnParam)s
" + +#: reNgine/tasks.py:3521 +msgid "XSS (Cross Site Scripting)" +msgstr "XSS (Cross Site Scripting)" + +#: reNgine/tasks.py:3541 +msgid "CRLF (HTTP Response Splitting)" +msgstr "CRLF (HTTP Response Splitting)" + +#: reNgine/tasks.py:3544 +msgid "A CRLF (HTTP Response Splitting) vulnerability has been discovered." +msgstr "Une vulnérabilité CRLF (HTTP Response Splitting) a été découverte." + +#: reNgine/tasks.py:3767 reNgine/tasks.py:3768 +msgid "Netlas limit exceeded." +msgstr "Limite de Netlas dépassée." + +#: reNgine/tasks.py:3963 +msgid "unable to fetch records from WHOIS database." +msgstr "" +"Impossible de récupérer les enregistrements de la base de données WHOIS." + +#: reNgine/utilities.py:34 +#, python-format +msgid "%(seconds)s seconds" +msgstr "%(seconds)s secondes" + +#: reNgine/utilities.py:36 +#, python-format +msgid "%(minutes)s minutes" +msgstr "%(minutes)s minutes" + +#: reNgine/utilities.py:38 +#, python-format +msgid "%(hours)s hours" +msgstr "%(hours)s heures" + +#: reNgine/utilities.py:39 +#, python-format +msgid "%(hours)s hours %(minutes)s minutes" +msgstr "%(hours)s heures %(minutes)s minutes" + +#: reNgine/utilities.py:74 +#, python-format +msgid "Vulnerability Title: %(vulnerabilityTitle)s" +msgstr "Titre de la vulnérabilité : %(vulnerabilityTitle)s" + +#: reNgine/utilities.py:76 +#, python-format +msgid "" +"\n" +"Vulnerable URL: %(path)s" +msgstr "" +"\n" +"URL vulnérable : %(path)s" + +#: reNgine/validators.py:10 +#, python-format +msgid "%(value)s is not a valid domain Name" +msgstr "%(value)s n'est pas un nom de domaine valide" + +#: reNgine/validators.py:16 +#, python-format +msgid "%(value)s is not a valid URL Name" +msgstr "%(value)s n'est pas une URL valide" + +#: reNgine/validators.py:23 +#, python-format +msgid "%(value)s is not a valid short name, can only contain - and _" +msgstr "%(value)s n'est pas un nom valide, il peut contenir seulement - et _" + +#: templates/404.html:24 +msgid "404!" +msgstr "404" + +#: templates/404.html:34 +msgid "Oops-a-Daisy! You've Found Our Top-Secret Interdimensional Rabbit Hole!" +msgstr "" +"Oupsie ! Vous avez trouvé notre terrier de lapin interdimensionnel top " +"secret !" + +#: templates/404.html:35 +msgid "Back to Dashboard" +msgstr "Retour au tableau de bord" + +#: templates/base/_items/center_spinner.html:4 +msgid "Loading..." +msgstr "Chargement" + +#: templates/base/_items/endpoint_tab_content.html:8 +msgid "Filter Endpoints" +msgstr "Filtrer les points de terminaison" + +#: templates/base/_items/endpoint_tab_content.html:10 +#: templates/base/_items/vulnerability_tab_content.html:10 +msgid "Search" +msgstr "Historique de recherche" + +#: templates/base/_items/endpoint_tab_content.html:26 +#: templates/base/_items/subdomain_tab_content.html:126 +#: templates/base/_items/vulnerability_tab_content.html:63 +msgid "Vulnerability Grouping" +msgstr "Grouper les vulnérabilités" + +#: templates/base/_items/endpoint_tab_content.html:33 +#: templates/base/_items/endpoint_tab_content.html:56 +#: templates/base/_items/endpoint_tab_content.html:116 +#: templates/base/_items/subdomain_tab_content.html:62 +#: templates/base/_items/subdomain_toolbar.html:34 +msgid "Page Title" +msgstr "Titre de la page" + +#: templates/base/_items/endpoint_tab_content.html:39 +#: templates/base/_items/endpoint_tab_content.html:50 +#: templates/base/_items/subdomain_tab_content.html:56 +#: templates/base/_items/subdomain_toolbar.html:28 +#: templates/report/template.html:622 templates/report/template.html:735 +msgid "HTTP Status" +msgstr "Statut HTTP" + +#: templates/base/_items/endpoint_tab_content.html:43 +#: templates/base/_items/subdomain_tab_content.html:49 +#: templates/base/_items/subdomain_toolbar.html:21 +#: templates/base/_items/vulnerability_tab_content.html:26 +msgid "Filter Columns" +msgstr "Filtrer les colonnes" + +#: templates/base/_items/endpoint_tab_content.html:62 +#: templates/base/_items/endpoint_tab_content.html:117 +#: templates/base/_items/vulnerability_tab_content.html:104 +msgid "Tags" +msgstr "Tags" + +#: templates/base/_items/endpoint_tab_content.html:68 +#: templates/base/_items/endpoint_tab_content.html:118 +msgid "Content Type" +msgstr "Type de contenu" + +#: templates/base/_items/endpoint_tab_content.html:74 +#: templates/base/_items/endpoint_tab_content.html:119 +#: templates/base/_items/subdomain_tab_content.html:80 +#: templates/base/_items/subdomain_tab_content.html:159 +#: templates/base/_items/subdomain_toolbar.html:52 +msgid "Content Length" +msgstr "Longueur du contenu" + +#: templates/base/_items/endpoint_tab_content.html:80 +#: templates/base/_items/subdomain_tab_content.html:86 +#: templates/base/_items/subdomain_tab_content.html:161 +#: templates/base/_items/subdomain_toolbar.html:58 +msgid "Response Time" +msgstr "Temps de réponse" + +#: templates/base/_items/endpoint_tab_content.html:89 +#: templates/base/_items/endpoint_tab_content.html:100 +#: templates/base/_items/endpoint_tab_content.html:104 +msgid "Download All Endpoints" +msgstr "Télécharger tous les points d'entrée" + +#: templates/base/_items/endpoint_tab_content.html:93 +#, python-format +msgid "Download Endpoints with pattern %(pKey)s" +msgstr "Télécharger les points d'entrée avec le modèle %(pKey)s" + +#: templates/base/_items/endpoint_tab_content.html:113 +msgid "ID" +msgstr "ID" + +#: templates/base/_items/endpoint_tab_content.html:114 +#: templates/base/_items/subdomain_tab_content.html:164 +msgid "HTTP URL" +msgstr "URL HTTP" + +#: templates/base/_items/endpoint_tab_content.html:115 +#: templates/base/_items/subdomain_tab_content.html:151 +#: templates/base/_items/subdomain_tab_content.html:155 +#: templates/base/_items/vulnerability_tab_content.html:54 +#: templates/base/_items/vulnerability_tab_content.html:98 +#: templates/base/_items/vulnerability_tab_content.html:115 +msgid "Status" +msgstr "Statut" + +#: templates/base/_items/endpoint_tab_content.html:120 +#: templates/base/_items/subdomain_tab_content.html:162 +msgid "Technology" +msgstr "Technologie" + +#: templates/base/_items/endpoint_tab_content.html:121 +#: templates/base/_items/subdomain_tab_content.html:174 +msgid "Webserver" +msgstr "Serveur web" + +#: templates/base/_items/endpoint_tab_content.html:122 +msgid "Response time" +msgstr "Temps de réponse" + +#: templates/base/_items/most_common_cve_cwe_tag_template.html:5 +msgid "Most Common CVE IDs" +msgstr "Les identifiants CVE les plus courants" + +#: templates/base/_items/most_common_cve_cwe_tag_template.html:13 +msgid "Most Common CWE IDs" +msgstr "Les identifiants CWE les plus courants" + +#: templates/base/_items/most_common_cve_cwe_tag_template.html:21 +msgid "Most Common Vulnerability Tags" +msgstr "Les balises de vulnérabilité les plus courantes" + +#: templates/base/_items/most_common_vuln.html:7 +msgid "Most Common Vulnerabilities" +msgstr "Les vulnérabilités les plus courantes" + +#: templates/base/_items/most_common_vuln.html:12 +#: templates/base/_items/most_vuln_target.html:13 +msgid "Ignore Info Vulnerabilities" +msgstr "Ignorer les vulnérabilités informationnelles" + +#: templates/base/_items/recon_note_modal.html:6 +msgid "Add Todo for" +msgstr "Ajouter une tâche pour" + +#: templates/base/_items/recon_note_modal.html:18 +msgid "Todo Title" +msgstr "Titre de la tâche" + +#: templates/base/_items/recon_note_modal.html:27 +msgid "Recon Todo/Note" +msgstr "Tâche/Note de reconnaissance" + +#: templates/base/_items/recon_note_modal.html:35 +msgid "Add Recon Todo" +msgstr "Ajouter une tâche de reconnaissance" + +#: templates/base/_items/right_bar.html:9 templates/base/_items/top_nav.html:28 +#: templates/base/_items/top_nav.html:32 +msgid "Scan History" +msgstr "Historique de scan" + +#: templates/base/_items/right_bar.html:14 +msgid "Tasks" +msgstr "Tâches" + +#: templates/base/_items/right_bar.html:20 +msgid "Currently Scanning" +msgstr "Scan en cours" + +#: templates/base/_items/right_bar.html:24 +#: templates/base/_items/right_bar.html:44 +msgid "Recently Completed" +msgstr "Récemment terminé" + +#: templates/base/_items/right_bar.html:28 +#: templates/base/_items/right_bar.html:48 +msgid "Show All" +msgstr "Tout afficher" + +#: templates/base/_items/right_bar.html:31 +#: templates/base/_items/right_bar.html:51 +msgid "Upcoming" +msgstr "À venir" + +#: templates/base/_items/right_bar.html:40 +msgid "Currently Running" +msgstr "En cours d'exécution" + +#: templates/base/_items/right_bar.html:60 +msgid "Reload" +msgstr "Recharger" + +#: templates/base/_items/subdomain_tab_content.html:10 +msgid "Filter Subdomains" +msgstr "Filtrer les sous-domaines" + +#: templates/base/_items/subdomain_tab_content.html:28 +#: templates/base/_items/subdomain_toolbar.html:3 +msgid "Initiate Multiple Subscans" +msgstr "Initier plusieurs sous-scans" + +#: templates/base/_items/subdomain_tab_content.html:30 +#: templates/base/_items/subdomain_toolbar.html:5 +msgid "Initiate Subscan" +msgstr "Initier un sous-scan" + +#: templates/base/_items/subdomain_tab_content.html:33 +#: templates/base/_items/subdomain_tab_content.html:35 +#: templates/base/_items/subdomain_toolbar.html:7 +#: templates/base/_items/subdomain_toolbar.html:9 +msgid "Download Selected Subdomains" +msgstr "Télécharger les sous-domaines sélectionnés" + +#: templates/base/_items/subdomain_tab_content.html:38 +#: templates/base/_items/subdomain_tab_content.html:40 +#: templates/base/_items/subdomain_toolbar.html:11 +#: templates/base/_items/subdomain_toolbar.html:13 +msgid "Delete Multiple Subdomains" +msgstr "Supprimer plusieurs sous-domaines" + +#: templates/base/_items/subdomain_tab_content.html:44 +#: templates/base/_items/subdomain_toolbar.html:16 +msgid "Clear Subdomains" +msgstr "Effacer les sous-domaines" + +#: templates/base/_items/subdomain_tab_content.html:68 +#: templates/base/_items/subdomain_toolbar.html:40 +msgid "IP Address" +msgstr "Adresse IP" + +#: templates/base/_items/subdomain_tab_content.html:74 +#: templates/base/_items/subdomain_tab_content.html:158 +#: templates/base/_items/subdomain_toolbar.html:46 +msgid "Ports" +msgstr "Ports" + +#: templates/base/_items/subdomain_tab_content.html:97 +#: templates/base/_items/subdomain_toolbar.html:69 +msgid "Reload Subdomains" +msgstr "Recharger les sous-domaines" + +#: templates/base/_items/subdomain_tab_content.html:101 +#: templates/base/_items/subdomain_toolbar.html:73 +msgid "Download Subdomains" +msgstr "Télécharger les sous-domaines" + +#: templates/base/_items/subdomain_tab_content.html:106 +#: templates/base/_items/subdomain_tab_content.html:112 +#: templates/base/_items/subdomain_tab_content.html:118 +#: templates/base/_items/subdomain_toolbar.html:78 +#: templates/base/_items/subdomain_toolbar.html:84 +#: templates/base/_items/subdomain_toolbar.html:90 +msgid "Download All Subdomains" +msgstr "Télécharger tous les sous-domaines" + +#: templates/base/_items/subdomain_tab_content.html:107 +#: templates/base/_items/subdomain_tab_content.html:113 +#: templates/base/_items/subdomain_tab_content.html:119 +#: templates/base/_items/subdomain_toolbar.html:79 +#: templates/base/_items/subdomain_toolbar.html:85 +#: templates/base/_items/subdomain_toolbar.html:91 +msgid "Download Interesting Subdomains" +msgstr "Télécharger les sous-domaines intéressants" + +#: templates/base/_items/subdomain_tab_content.html:108 +#: templates/base/_items/subdomain_tab_content.html:114 +#: templates/base/_items/subdomain_tab_content.html:120 +#: templates/base/_items/subdomain_toolbar.html:80 +#: templates/base/_items/subdomain_toolbar.html:86 +#: templates/base/_items/subdomain_toolbar.html:92 +msgid "Download Important Subdomains" +msgstr "Télécharger les sous-domaines importants" + +#: templates/base/_items/subdomain_tab_content.html:152 +#: templates/report/template.html:616 templates/report/template.html:729 +msgid "Subdomain" +msgstr "Sous-domaine" + +#: templates/base/_items/subdomain_tab_content.html:153 +#: templates/report/template.html:507 +msgid "Endpoints" +msgstr "Points de terminaison" + +#: templates/base/_items/subdomain_tab_content.html:154 +#: templates/base/_items/top_nav.html:42 templates/report/template.html:515 +#: templates/report/template.html:845 +msgid "Vulnerabilities" +msgstr "Vulnérabilités" + +#: templates/base/_items/subdomain_tab_content.html:156 +#: templates/base/_items/vulnerability_tab_content.html:102 +msgid "Title" +msgstr "Titre" + +#: templates/base/_items/subdomain_tab_content.html:157 +#: templates/report/template.html:760 +msgid "IP" +msgstr "IP" + +#: templates/base/_items/subdomain_tab_content.html:163 +msgid "Checked" +msgstr "Vérifié" + +#: templates/base/_items/subdomain_tab_content.html:165 +msgid "CNAME" +msgstr "CNAME" + +#: templates/base/_items/subdomain_tab_content.html:166 +msgid "is_interesting" +msgstr "est_intéressant" + +#: templates/base/_items/subdomain_tab_content.html:167 +#: templates/base/_items/widgets/vulnerability_breakdown_by_severity_chart.html:24 +#: templates/base/_items/widgets/vulnerability_highlights.html:38 +#: templates/report/template.html:564 templates/report/template.html:911 +msgid "Info" +msgstr "Info" + +#: templates/base/_items/subdomain_tab_content.html:168 +#: templates/base/_items/widgets/vulnerability_breakdown_by_severity_chart.html:20 +#: templates/base/_items/widgets/vulnerability_highlights.html:40 +#: templates/report/template.html:556 templates/report/template.html:693 +#: templates/report/template.html:903 +msgid "Low" +msgstr "Faible" + +#: templates/base/_items/subdomain_tab_content.html:169 +#: templates/base/_items/widgets/vulnerability_breakdown_by_severity_chart.html:16 +#: templates/base/_items/widgets/vulnerability_highlights.html:42 +#: templates/report/template.html:548 templates/report/template.html:696 +#: templates/report/template.html:895 +msgid "Medium" +msgstr "Moyen" + +#: templates/base/_items/subdomain_tab_content.html:170 +#: templates/base/_items/widgets/vulnerability_breakdown_by_severity_chart.html:12 +#: templates/base/_items/widgets/vulnerability_highlights.html:44 +#: templates/report/template.html:540 templates/report/template.html:699 +#: templates/report/template.html:887 +msgid "High" +msgstr "Élevé" + +#: templates/base/_items/subdomain_tab_content.html:171 +#: templates/base/_items/widgets/vulnerability_breakdown_by_severity_chart.html:8 +#: templates/base/_items/widgets/vulnerability_highlights.html:46 +#: templates/report/template.html:532 templates/report/template.html:702 +#: templates/report/template.html:879 +msgid "Critical" +msgstr "Critique" + +#: templates/base/_items/subdomain_tab_content.html:172 +msgid "Todos" +msgstr "Tâches" + +#: templates/base/_items/subdomain_tab_content.html:173 +msgid "Is Important" +msgstr "Est important" + +#: templates/base/_items/subdomain_tab_content.html:175 +#: templates/base/_items/vulnerability_tab_content.html:116 +msgid "Action" +msgstr "Action" + +#: templates/base/_items/subdomain_tab_content.html:176 +msgid "Directories Count" +msgstr "Nombre de répertoires" + +#: templates/base/_items/subdomain_tab_content.html:177 +msgid "Subscan Count" +msgstr "Nombre de sous-scans" + +#: templates/base/_items/subscan_modal.html:6 +#: templates/base/_items/subscan_modal.html:29 +msgid "Initiate subscan" +msgstr "Initier un sous-scan" + +#: templates/base/_items/subscan_modal.html:7 +#: templates/base/_items/subscan_modal.html:28 +msgid "Close" +msgstr "Fermer" + +#: templates/base/_items/subscan_modal.html:11 +msgid "Select the scan engine" +msgstr "Sélectionner le moteur de scan" + +#: templates/base/_items/subscan_modal.html:11 +msgid "default engine Selected" +msgstr "moteur par défaut sélectionné" + +#: templates/base/_items/subscan_modal.html:22 +msgid "Select the engine's subtasks to perform" +msgstr "Sélectionner les sous-tâches du moteur à effectuer" + +#: templates/base/_items/top_bar.html:12 +msgid "Universal Search..." +msgstr "Rechercher universelle..." + +#: templates/base/_items/top_bar.html:19 +msgid "Search History" +msgstr "Historique de recherche" + +#: templates/base/_items/top_bar.html:39 +msgid "Create New Project" +msgstr "Créer un nouveau projet" + +#: templates/base/_items/top_bar.html:45 +msgid "Quick Add" +msgstr "Ajout rapide" + +#: templates/base/_items/top_bar.html:52 +msgid "Target" +msgstr "Cible" + +#: templates/base/_items/top_bar.html:56 templates/base/_items/top_nav.html:52 +msgid "Organization" +msgstr "Organisation" + +#: templates/base/_items/top_bar.html:62 templates/base/_items/top_nav.html:58 +msgid "Scan Engine" +msgstr "Moteur de scan" + +#: templates/base/_items/top_bar.html:68 +msgid "External Tool" +msgstr "Outil externe" + +#: templates/base/_items/top_bar.html:74 +msgid "Wordlist" +msgstr "Wordlist" + +#: templates/base/_items/top_bar.html:86 +msgid "Toolbox" +msgstr "Boite à outils" + +#: templates/base/_items/top_bar.html:91 +msgid "Whois" +msgstr "Whois" + +#: templates/base/_items/top_bar.html:97 +msgid "CMS Detector" +msgstr "Détecteur de CMS" + +#: templates/base/_items/top_bar.html:103 +msgid "CVE Lookup" +msgstr "Recherche de CVE" + +#: templates/base/_items/top_bar.html:109 +msgid "WAF Detector" +msgstr "Détecteur de WAF" + +#: templates/base/_items/top_bar.html:125 +#, python-format +msgid "Welcome %(username)s!" +msgstr "Bienvenue %(username)s!" + +#: templates/base/_items/top_bar.html:129 +msgid "My Account" +msgstr "Mon compte" + +#: templates/base/_items/top_bar.html:134 +msgid "Admin settings" +msgstr "Paramètres d'administration" + +#: templates/base/_items/top_bar.html:139 +msgid "Check reNgine Update" +msgstr "Vérifier les mises à jour de reNgine" + +#: templates/base/_items/top_bar.html:139 +msgid "Update available!" +msgstr "Mise à jour disponible !" + +#: templates/base/_items/top_bar.html:145 +msgid "Logout" +msgstr "Se déconnecter" + +#: templates/base/_items/top_nav.html:12 +msgid "Dashboard" +msgstr "Tableau de bord" + +#: templates/base/_items/top_nav.html:17 +msgid "Projects" +msgstr "Projets" + +#: templates/base/_items/top_nav.html:22 +msgid "Targets" +msgstr "Cible" + +#: templates/base/_items/top_nav.html:33 +msgid "Sub Scan History" +msgstr "Historique de recherche" + +#: templates/base/_items/top_nav.html:34 +msgid "Scheduled Scan" +msgstr "Scan programmé" + +#: templates/base/_items/top_nav.html:36 +msgid "All Subdomains" +msgstr "Tous les sous-domaines" + +#: templates/base/_items/top_nav.html:37 +msgid "All Endpoints" +msgstr "Tous les points de terminaison" + +#: templates/base/_items/top_nav.html:47 +msgid "Todo" +msgstr "À faire" + +#: templates/base/_items/top_nav.html:63 +msgid "Scan Engines" +msgstr "Moteurs de scan" + +#: templates/base/_items/top_nav.html:66 +msgid "Wordlists" +msgstr "Wordlists" + +#: templates/base/_items/top_nav.html:69 +msgid "Interesting Lookup" +msgstr "Recherche intéressante" + +#: templates/base/_items/top_nav.html:76 +msgid "Settings" +msgstr "Paramètres" + +#: templates/base/_items/top_nav.html:81 +msgid "Proxies" +msgstr "Proxies" + +#: templates/base/_items/top_nav.html:82 +msgid "Tool Settings" +msgstr "Paramètres des outils" + +#: templates/base/_items/top_nav.html:85 +msgid "API Vault" +msgstr "Coffre-fort API" + +#: templates/base/_items/top_nav.html:86 +msgid "Tools Arsenal" +msgstr "Arsenal d'outils" + +#: templates/base/_items/top_nav.html:89 +msgid "Report Settings" +msgstr "Paramètres de rapport" + +#: templates/base/_items/top_nav.html:92 +msgid "reNgine Settings" +msgstr "Paramètres d'administration" + +#: templates/base/_items/top_nav.html:95 +msgid "Hackerone Settings" +msgstr "Paramètres Hackerone" + +#: templates/base/_items/top_nav.html:96 +msgid "Notification Settings" +msgstr "Paramètres de notification" + +#: templates/base/_items/top_nav.html:102 +msgid "Current Project" +msgstr "Projet actuel" + +#: templates/base/_items/vulnerability_tab_content.html:8 +msgid "Filter Vulnerabilities" +msgstr "Filtrer les vulnérabilités" + +#: templates/base/_items/vulnerability_tab_content.html:33 +#: templates/base/_items/vulnerability_tab_content.html:82 +msgid "Vulnerability Source" +msgstr "Source de vulnérabilité" + +#: templates/base/_items/vulnerability_tab_content.html:40 +#: templates/base/_items/vulnerability_tab_content.html:76 +#: templates/base/_items/vulnerability_tab_content.html:107 +#: templates/base/_items/widgets/vulnerability_highlights.html:17 +#: templates/report/template.html:671 +msgid "Severity" +msgstr "Sévérité" + +#: templates/base/_items/vulnerability_tab_content.html:47 +#: templates/base/_items/vulnerability_tab_content.html:88 +#: templates/base/_items/vulnerability_tab_content.html:111 +#: templates/base/_items/widgets/vulnerability_highlights.html:18 +msgid "Vulnerable URL" +msgstr "URL vulnérable" + +#: templates/base/_items/vulnerability_tab_content.html:58 +msgid "Reload Vulnerabilities" +msgstr "Recharger les vulnérabilités" + +#: templates/base/_items/vulnerability_tab_content.html:70 +#: templates/report/template.html:665 +msgid "Vulnerability Name" +msgstr "Nom de la vulnérabilité" + +#: templates/base/_items/vulnerability_tab_content.html:99 +msgid "Source" +msgstr "Source" + +#: templates/base/_items/vulnerability_tab_content.html:100 +#: templates/base/_items/widgets/vulnerability_highlights.html:15 +msgid "Type" +msgstr "Type" + +#: templates/base/_items/vulnerability_tab_content.html:103 +msgid "CVSS Metrics" +msgstr "Métriques CVSS" + +#: templates/base/_items/vulnerability_tab_content.html:105 +msgid "Hackerone ID" +msgstr "ID Hackerone" + +#: templates/base/_items/vulnerability_tab_content.html:108 +msgid "CVSS Score" +msgstr "Score CVSS" + +#: templates/base/_items/vulnerability_tab_content.html:109 +#: templates/base/_items/vulnerability_tab_content.html:110 +msgid "CVE/CWE" +msgstr "CVE/CWE" + +#: templates/base/_items/vulnerability_tab_content.html:112 +#: templates/report/template.html:989 +msgid "Description" +msgstr "Description" + +#: templates/base/_items/vulnerability_tab_content.html:113 +msgid "Reference" +msgstr "Référence" + +#: templates/base/_items/vulnerability_tab_content.html:114 +msgid "Discovered on" +msgstr "Découvert le" + +#: templates/base/_items/vulnerability_tab_content.html:119 +msgid "Extracted Results" +msgstr "Résultats extraits" + +#: templates/base/_items/vulnerability_tab_content.html:120 +msgid "CURL command" +msgstr "Commande CURL" + +#: templates/base/_items/vulnerability_tab_content.html:121 +msgid "Matcher Name" +msgstr "Nom du matcher" + +#: templates/base/_items/widgets/vulnerability_breakdown_by_severity_chart.html:4 +#: templates/report/template.html:876 +msgid "Vulnerability Breakdown by Severity" +msgstr "Répartition des vulnérabilités par sévérité" + +#: templates/base/_items/widgets/vulnerability_breakdown_by_severity_chart.html:28 +#: templates/base/_items/widgets/vulnerability_highlights.html:48 +#: templates/report/template.html:576 templates/report/template.html:687 +#: templates/report/template.html:923 templates/report/template.html:945 +msgid "Unknown" +msgstr "Inconnu" + +#: templates/base/_items/widgets/vulnerability_highlights.html:5 +msgid "Vulnerability Highlights" +msgstr "Points saillants des vulnérabilités" + +#: templates/base/_items/widgets/vulnerability_highlights.html:10 +msgid "Not enough data!" +msgstr "Pas assez de données !" + +#: templates/base/_items/widgets/vulnerability_highlights.html:16 +msgid "Vulnerability" +msgstr "Vulnérabilité" + +#: templates/base/_items/widgets/vulnerability_highlights.html:30 +msgid "CVE ID" +msgstr "Identifiant CVE" + +#: templates/base/_items/widgets/vulnerability_highlights.html:34 +msgid "Discovered" +msgstr "Découvert" + +#: templates/base/login.html:61 +msgid "Login to reNgine" +msgstr "Connexion à reNgine" + +#: templates/base/login.html:62 +msgid "Current release: v2.0.5" +msgstr "Version actuelle : v2.0.5" + +#: templates/base/login.html:65 +msgid "Learn how to create reNgine account." +msgstr "Apprenez à créer un compte reNgine." + +#: templates/base/login.html:74 +msgid "If you have any issues or feature request, feel free to" +msgstr "" +"Si vous rencontrez des problèmes ou avez des demandes de fonctionnalités, " +"n'hésitez pas à" + +#: templates/base/login.html:74 +msgid "raise issue on Github." +msgstr "soulever un problème sur Github." + +#: templates/base/login.html:80 +msgid "Username" +msgstr "Nom d'utilisateur" + +#: templates/base/login.html:83 +msgid "username" +msgstr "nom d'utilisateur" + +#: templates/base/login.html:87 templates/base/login.html:89 +msgid "Password" +msgstr "Mot de passe" + +#: templates/base/login.html:98 +msgid "Oops! Invalid username or password." +msgstr "Oups ! Nom d'utilisateur ou mot de passe invalide." + +#: templates/base/login.html:100 +msgid "Please note, both password and username are case-sensitive." +msgstr "" +"Veuillez noter que le mot de passe et le nom d'utilisateur sont sensibles à " +"la casse." + +#: templates/base/login.html:105 +msgid "Log In" +msgstr "Se connecter" + +#: templates/base/logout.html:23 +msgid "Thank you for using reNgine." +msgstr "Merci d'avoir utilisé reNgine." + +#: templates/base/logout.html:25 +msgid "You have been successfully logged out!" +msgstr "Vous avez été déconnecté avec succès !" + +#: templates/base/logout.html:26 +msgid "For any issues or feature request, please feel free to" +msgstr "Pour tout problème ou demande de fonctionnalité, n'hésitez pas à" + +#: templates/base/logout.html:26 +msgid "raise issue on github" +msgstr "soulever un problème sur github" + +#: templates/report/template.html:445 +msgid "" +"Generated by reNgine\n" +" https://github.com/yogeshojha/rengine" +msgstr "" +"Généré par reNgine\n" +" https://github.com/yogeshojha/rengine" + +#: templates/report/template.html:453 +msgid "Table of contents" +msgstr "Table des matières" + +#: templates/report/template.html:482 +msgid "Executive summary" +msgstr "Résumé exécutif" + +#: templates/report/template.html:489 +msgid "Quick Summary" +msgstr "Court résumé" + +#: templates/report/template.html:490 +msgid "This section contains quick summary of scan performed on" +msgstr "Cette section contient un résumé rapide du scan effectué sur" + +#: templates/report/template.html:496 +msgid "Reconnaissance" +msgstr "Reconnaissance" + +#: templates/report/template.html:499 templates/report/template.html:719 +msgid "Subdomains" +msgstr "Sous-domaines" + +#: templates/report/template.html:529 +msgid "Vulnerability Summary" +msgstr "Résumé de vulnérabilité" + +#: templates/report/template.html:588 +msgid "Timeline of the Assessment" +msgstr "Chronologie de l'évaluation" + +#: templates/report/template.html:590 +#, python-format +msgid "Scan started on: %(start_date)s" +msgstr "Scan démarré le : %(start_date)s" + +#: templates/report/template.html:592 +msgid "Total time taken:" +msgstr "Temps total écoulé :" + +#: templates/report/template.html:599 +msgid "Completed in < 1 minutes" +msgstr "Complété en < 1 minute" + +#: templates/report/template.html:599 +#, python-format +msgid "Completed in %(timeCompleted)s" +msgstr "Terminé en %(timeCompleted)s" + +#: templates/report/template.html:599 +#, python-format +msgid "" +"Aborted in\n" +" %(timeAbort)s" +msgstr "" +"Interrompu à\n" +" %(timeAbort)s" + +#: templates/report/template.html:601 +#, python-format +msgid "Report Generated on: %(dateGen)s" +msgstr "Rapport généré le : %(dateGen)s" + +#: templates/report/template.html:608 +msgid "Interesting Recon Data" +msgstr "Donnée de reconnaissance intéressante" + +#: templates/report/template.html:609 +#, python-format +msgid "" +"Listed below are the %(interestingSubdomainsCount)s interesting subdomains " +"identified on" +msgstr "" +"Voici les %(interestingSubdomainsCount)s sous-domaines intéressants " +"identifiés sur" + +#: templates/report/template.html:619 templates/report/template.html:732 +msgid "Page title" +msgstr "Titre de la page" + +#: templates/report/template.html:656 +msgid "Summary of Vulnerabilities Identified" +msgstr "Résumé des vulnérabilités identifiées" + +#: templates/report/template.html:658 +msgid "Listed below are the vulnerabilities identified on" +msgstr "Voici les vulnérabilités identifiées sur" + +#: templates/report/template.html:668 +msgid "Times Identified" +msgstr "Nombre d'occurences" + +#: templates/report/template.html:690 +msgid "Informational" +msgstr "Informationnelles" + +#: templates/report/template.html:708 +msgid "No Vulnerabilities were Discovered." +msgstr "Aucune vulnérabilité n'a été découverte" + +#: templates/report/template.html:718 +msgid "Discovered Assets" +msgstr "Actifs découverts" + +#: templates/report/template.html:721 +#, python-format +msgid "" +"During the reconnaissance phase, %(subDomainCount)s subdomains were " +"discovered.\n" +" Out of %(subDomainCount)s subdomains, %(aliveCount)s returned HTTP " +"status 200.\n" +" %(interestingCount)s interesting subdomains were also identified " +"based on the interesting keywords used." +msgstr "" +"Pendant la phase de reconnaissance, %(subDomainCount)s sous-domaines ont été " +"découverts.\n" +" Sur les %(subDomainCount)s sous-domaines, %(aliveCount)s ont " +"renvoyé le statut HTTP 200.\n" +" %(interestingCount)s sous-domaines intéressants ont également été " +"identifiés sur la base des mots-clés intéressants utilisés." + +#: templates/report/template.html:725 +#, python-format +msgid "%(subDomainCount)s subdomains identified on" +msgstr "%(subDomainCount)s sous-domaines identifiés sur" + +#: templates/report/template.html:755 +msgid "IP Addresses" +msgstr "Adresses IP" + +#: templates/report/template.html:756 +#, python-format +msgid "%(ipAddressesCount)s IP Addresses were identified on" +msgstr "%(ipAddressesCount)s adresses IP ont été identifiées sur" + +#: templates/report/template.html:763 +msgid "Open Ports" +msgstr "Ports ouverts" + +#: templates/report/template.html:766 +msgid "Remarks" +msgstr "Remarques" + +#: templates/report/template.html:781 +msgid "CDN IP Address" +msgstr "Adresse IP du CDN" + +#: templates/report/template.html:797 +msgid "Reconnaissance Findings" +msgstr "Découvertes de reconnaissance" + +#: templates/report/template.html:810 +msgid "N/A" +msgstr "N/A" + +#: templates/report/template.html:817 +msgid "Page Title:" +msgstr "Titre de la page :" + +#: templates/report/template.html:823 +msgid "IP Address:" +msgstr "Adresse IP :" + +#: templates/report/template.html:829 +msgid "Open Ports:" +msgstr "Ports ouverts " + +#: templates/report/template.html:864 +msgid "Vulnerabilities Discovered" +msgstr "Vulnérabilités découvertes" + +#: templates/report/template.html:866 +msgid "This section reports the security issues found during the audit." +msgstr "" +"Cette section rapporte les problèmes de sécurité trouvés lors de l'audit." + +#: templates/report/template.html:868 +#, python-format +msgid " Total of %(vulnCount)s were discovered in %(dn)s" +msgstr "Un total de %(vulnCount)s ont été découvertes dans %(dn)s" + +#: templates/report/template.html:869 +#, python-format +msgid "%(critVulnCount)s of them were Critical," +msgstr "%(critVulnCount)s d'entre elles étaient critiques," + +#: templates/report/template.html:870 +#, python-format +msgid "%(highVulnCount)s of them were High Severity," +msgstr "%(highVulnCount)s d'entre elles étaient de gravité élevée," + +#: templates/report/template.html:871 +#, python-format +msgid "%(medVulnCount)s of them were Medium severity," +msgstr "%(medVulnCount)s d'entre elles étaient de gravité modérée," + +#: templates/report/template.html:872 +#, python-format +msgid "%(lowVulnCount)s of them were Low severity, and" +msgstr "%(lowVulnCount)s d'entre elles étaient de faible gravité, et" + +#: templates/report/template.html:873 +#, python-format +msgid "%(vulnCount)s of them were Informational." +msgstr "%(vulnCount)s d'entre elles étaient informationnels." + +#: templates/report/template.html:874 +#, python-format +msgid "%(unknownVulnCount)s of them were Unknown Severity." +msgstr "%(unknownVulnCount)s d'entre elles étaient de gravité inconnue." + +#: templates/report/template.html:948 +msgid "INFO" +msgstr "INFO" + +#: templates/report/template.html:951 +msgid "LOW" +msgstr "FAIBLE" + +#: templates/report/template.html:954 +msgid "MEDIUM" +msgstr "MOYEN" + +#: templates/report/template.html:957 +msgid "HIGH" +msgstr "ÉLEVÉ" + +#: templates/report/template.html:960 +msgid "CRITICAL" +msgstr "CRITIQUE" + +#: templates/report/template.html:965 +#, python-format +msgid "Vulnerability Source: %(vulnSourceUpper)s" +msgstr "Source de la vulnérabilité : %(vulnSourceUpper)s" + +#: templates/report/template.html:967 +msgid "Vulnerability Classification" +msgstr "Classification de vulnérabilité" + +#: templates/report/template.html:969 +msgid "CVSS Metrics:" +msgstr "Métriques CVSS" + +#: templates/report/template.html:973 +msgid "CVSS Score:" +msgstr "Score CVSS" + +#: templates/report/template.html:977 +msgid "CVE IDs" +msgstr "Identifiants CVE" + +#: templates/report/template.html:982 +msgid "CWE IDs" +msgstr "Identifiants CWE" + +#: templates/report/template.html:994 +msgid "Impact" +msgstr "Impact" + +#: templates/report/template.html:999 +msgid "Remediation" +msgstr "Remédiation" + +#: templates/report/template.html:1003 +msgid "Vulnerable URL(s)" +msgstr "URL(s) vulnérable" + +#: templates/report/template.html:1025 +msgid "References" +msgstr "Références" + +#: templates/report/template.html:1044 +msgid "END OF REPORT" +msgstr "FIN DU RAPPORT" diff --git a/web/locale/fr/LC_MESSAGES/djangojs.mo b/web/locale/fr/LC_MESSAGES/djangojs.mo new file mode 100644 index 000000000..79d07dd37 Binary files /dev/null and b/web/locale/fr/LC_MESSAGES/djangojs.mo differ diff --git a/web/locale/fr/LC_MESSAGES/djangojs.po b/web/locale/fr/LC_MESSAGES/djangojs.po new file mode 100644 index 000000000..414073bd4 --- /dev/null +++ b/web/locale/fr/LC_MESSAGES/djangojs.po @@ -0,0 +1,1260 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: static/custom/custom.js:8 +msgid "Showing page _PAGE_ of _PAGES_" +msgstr "Affichage de la page _PAGE_ sur _PAGES_" + +#: static/custom/custom.js:10 +msgid "Search..." +msgstr "Rechercher..." + +#: static/custom/custom.js:11 +msgid "Results : _MENU_" +msgstr "Résultats : _MENU_" + +#: static/custom/custom.js:96 +msgid "Are you sure you want to delete this?" +msgstr "Êtes-vous sûr de vouloir supprimer ceci ?" + +#: static/custom/custom.js:97 +msgid "This action can not be undone." +msgstr "Cette action est irréversible." + +#: static/custom/custom.js:100 static/custom/custom.js:278 +#: static/custom/custom.js:311 static/custom/custom.js:430 +#: static/custom/custom.js:798 static/custom/custom.js:799 +#: static/custom/custom.js:923 static/custom/todo.js:31 +msgid "Delete" +msgstr "Supprimer" + +#: static/custom/custom.js:101 static/custom/custom.js:279 +#: static/custom/custom.js:312 static/custom/custom.js:431 +#: static/custom/custom.js:839 static/custom/custom.js:924 +#: static/custom/custom.js:1824 static/custom/custom.js:1848 +#: static/custom/todo.js:32 +msgid "Cancel" +msgstr "Annuler" + +#: static/custom/custom.js:119 +msgid "Oops! Unable to delete the scheduled task!" +msgstr "Oups ! Impossible de supprimer la tâche planifiée !" + +#: static/custom/custom.js:128 +msgid "Schedule Scan Started" +msgstr "Analyse planifiée démarrée" + +#: static/custom/custom.js:130 +msgid "Schedule Scan Stopped" +msgstr "Analyse planifiée arrêtée" + +#: static/custom/custom.js:204 +msgid "INFO" +msgstr "INFO" + +#: static/custom/custom.js:207 +msgid "LOW" +msgstr "FAIBLE" + +#: static/custom/custom.js:210 +msgid "MEDIUM" +msgstr "MOYEN" + +#: static/custom/custom.js:213 +msgid "HIGH" +msgstr "ÉLEVÉ" + +#: static/custom/custom.js:216 +msgid "CRITICAL" +msgstr "CRITIQUE" + +#: static/custom/custom.js:219 +msgid "UNKNOWN" +msgstr "INCONNU" + +#: static/custom/custom.js:274 +msgid "Are you sure you want to delete all scan results?" +msgstr "Êtes-vous sûr de vouloir supprimer tous les résultats d'analyse ?" + +#: static/custom/custom.js:275 static/custom/custom.js:308 +#: static/custom/custom.js:795 static/custom/custom.js:835 +#: static/custom/custom.js:920 static/custom/todo.js:28 +msgid "You won't be able to revert this!" +msgstr "Vous ne pourrez pas revenir en arrière !" + +#: static/custom/custom.js:297 +msgid "Oops! Unable to delete Delete scan results!" +msgstr "Oups ! Impossible de supprimer les résultats d'analyse !" + +#: static/custom/custom.js:307 +msgid "Are you sure you want to delete all Screenshots?" +msgstr "Êtes-vous sûr de vouloir supprimer toutes les captures d'écran ?" + +#: static/custom/custom.js:330 +msgid "Oops! Unable to delete Empty Screenshots!" +msgstr "Oups ! Impossible de supprimer les captures d'écran vides !" + +#: static/custom/custom.js:372 +msgid "Technology" +msgstr "Technologie" + +#: static/custom/custom.js:386 +msgid "CDN IP Address" +msgstr "Adresse IP du CDN" + +#: static/custom/custom.js:427 +msgid "Delete Vulnerability!" +msgstr "Supprimer la vulnérabilité !" + +#: static/custom/custom.js:428 +msgid "" +"Do you really want to delete this Vulnerability? This action cannot be " +"undone." +msgstr "" +"Voulez-vous vraiment supprimer cette vulnérabilité ? Cette action est " +"irréversible." + +#: static/custom/custom.js:435 +msgid "Deleting Vulnerability..." +msgstr "Suppression de la vulnérabilité..." + +#: static/custom/custom.js:461 +msgid "Could not delete Vulnerability!" +msgstr "Impossible de supprimer la vulnérabilité !" + +#: static/custom/custom.js:475 +msgid "" +"We do not recommended sending this vulnerability report to hackerone due to " +"the severity, do you still want to report this?" +msgstr "" +"Nous ne recommandons pas d'envoyer ce rapport de vulnérabilité à hackerone " +"en raison de sa criticité, voulez-vous quand même l'envoyer ?" + +#: static/custom/custom.js:477 +msgid "This vulnerability report will be sent to Hackerone." +msgstr "Ce rapport de vulnérabilité sera envoyé à Hackerone." + +#: static/custom/custom.js:481 +msgid "Reporting vulnerability to hackerone" +msgstr "Signalement de la vulnérabilité à hackerone" + +#: static/custom/custom.js:485 static/custom/custom.js:486 +msgid "Report" +msgstr "Rapport" + +#: static/custom/custom.js:503 +msgid "Target does not has team_handle to send report to." +msgstr "La cible n'a pas de team_handle pour envoyer le rapport." + +#: static/custom/custom.js:508 +msgid "Vulnerability report successfully submitted to hackerone." +msgstr "Rapport de vulnérabilité envoyé avec succès à hackerone." + +#: static/custom/custom.js:513 +msgid "Invalid Report." +msgstr "Rapport invalide." + +#: static/custom/custom.js:518 +msgid "Hackerone authentication failed." +msgstr "Échec de l'authentification à hackerone." + +#: static/custom/custom.js:523 +msgid "API Key forbidden by Hackerone." +msgstr "Clé API interdite par Hackerone." + +#: static/custom/custom.js:528 +msgid "Too many requests." +msgstr "Trop de requêtes." + +#: static/custom/custom.js:534 +msgid "" +"Oops! Unable to send vulnerability report to hackerone, check your target " +"team_handle or hackerone configurarions!" +msgstr "" +"Oups ! Impossible d'envoyer le rapport de vulnérabilité à hackerone, " +"vérifiez votre team_handle cible ou les configurations de hackerone !" + +#: static/custom/custom.js:574 static/custom/custom.js:575 +msgid "No interesting subdomain" +msgstr "Pas de sous-domaine intéressant" + +#: static/custom/custom.js:668 static/custom/custom.js:669 +msgid "No interesting endpoint" +msgstr "Pas de point de terminaison intéressant" + +#: static/custom/custom.js:753 +msgid "No subdomains marked as important!" +msgstr "Aucun sous-domaine marqué comme important !" + +#: static/custom/custom.js:775 +msgid "Marked Important!" +msgstr "Marqué comme important !" + +#: static/custom/custom.js:778 +msgid "Marked Un-Important!" +msgstr "Marqué comme non important !" + +#: static/custom/custom.js:794 +msgid "Are you sure you want to delete this scan history?" +msgstr "Êtes-vous sûr de vouloir supprimer cet historique d'analyse ?" + +#: static/custom/custom.js:817 static/custom/custom.js:945 +msgid "Oops! Unable to delete the scan history!" +msgstr "Oups ! Impossible de supprimer l'historique d'analyse !" + +#: static/custom/custom.js:834 +msgid "Are you sure you want to stop this scan?" +msgstr "Êtes-vous sûr de vouloir arrêter cette analyse ?" + +#: static/custom/custom.js:838 +msgid "Stop" +msgstr "Arrêter" + +#: static/custom/custom.js:857 +msgid "Scan Successfully Aborted." +msgstr "Analyse interrompue avec succès." + +#: static/custom/custom.js:869 +msgid "Oops! Could not abort the scan. " +msgstr "Oups ! Impossible d'interrompre l'analyse." + +#: static/custom/custom.js:877 +msgid "Oops! Unable to stop the scan" +msgstr "Oups ! Impossible d'arrêter l'analyse" + +#: static/custom/custom.js:919 +msgid "Are you sure you want to delete this subscan?" +msgstr "Êtes-vous sûr de vouloir supprimer cette sous-analyse ?" + +#: static/custom/custom.js:940 +msgid "1 Subscan Deleted!" +msgstr "1 sous-analyse supprimée !" + +#: static/custom/custom.js:957 +msgid "Fetching Results..." +msgstr "Récupération des résultats..." + +#: static/custom/custom.js:970 +msgid "Scan has not yet started! Please wait for other scans to complete..." +msgstr "" +"L'analyse n'a pas encore commencé ! Veuillez attendre que les autres " +"analyses soient terminées..." + +#: static/custom/custom.js:980 static/custom/right_sidebar.js:253 +msgid "Port Scan" +msgstr "Analyse des ports" + +#: static/custom/custom.js:982 static/custom/right_sidebar.js:259 +msgid "Vulnerability Scan" +msgstr "Analyse des vulnérabilités" + +#: static/custom/custom.js:984 +msgid "Fetch URLs" +msgstr "Récupérer les URLs" + +#: static/custom/custom.js:986 +msgid "Directory and Files Fuzzing" +msgstr "Fuzzing des répertoires et fichiers" + +#: static/custom/custom.js:993 static/custom/custom.js:1922 +#: static/custom/right_sidebar.js:127 +msgid "Running" +msgstr "En cours" + +#: static/custom/custom.js:996 static/custom/custom.js:1352 +#: static/custom/right_sidebar.js:77 static/custom/right_sidebar.js:166 +msgid "Failed" +msgstr "Échoué" + +#: static/custom/custom.js:998 +msgid "Successful" +msgstr "Réussi" + +#: static/custom/custom.js:1001 static/custom/custom.js:1357 +#: static/custom/custom.js:1914 static/custom/right_sidebar.js:82 +#: static/custom/right_sidebar.js:172 +msgid "Aborted" +msgstr "Interrompu" + +#: static/custom/custom.js:1003 static/custom/right_sidebar.js:265 +msgid "Unknown" +msgstr "Inconnu" + +#: static/custom/custom.js:1005 +msgid "Scan Status:" +msgstr "État de l'analyse :" + +#: static/custom/custom.js:1006 +msgid "Engine Used:" +msgstr "Moteur utilisé :" + +#: static/custom/custom.js:1014 +msgid "IP Address:" +msgstr "Adresse IP :" + +#: static/custom/custom.js:1014 +msgid "Ports Open" +msgstr "Ports ouverts" + +#: static/custom/custom.js:1026 +msgid "* Uncommon Ports" +msgstr "* Ports non courants" + +#: static/custom/custom.js:1035 static/custom/custom.js:1045 +msgid "could not fetch any results." +msgstr "impossible de récupérer des résultats." + +#: static/custom/custom.js:1077 +msgid "HTTP URL" +msgstr "URL HTTP" + +#: static/custom/custom.js:1078 +msgid "Status" +msgstr "Statut" + +#: static/custom/custom.js:1079 +msgid "Page Title" +msgstr "Titre de la page" + +#: static/custom/custom.js:1080 +msgid "Tags" +msgstr "Tags" + +#: static/custom/custom.js:1081 +msgid "Content Type" +msgstr "Type de contenu" + +#: static/custom/custom.js:1082 static/custom/custom.js:1266 +msgid "Content Length" +msgstr "Longueur du contenu" + +#: static/custom/custom.js:1083 +msgid "Response Time" +msgstr "Temps de réponse" + +#: static/custom/custom.js:1100 +msgid "Web Server" +msgstr "Serveur Web" + +#: static/custom/custom.js:1120 static/custom/custom.js:1121 +msgid "No endpoint" +msgstr "Pas de point de terminaison" + +#: static/custom/custom.js:1142 +msgid "Type" +msgstr "Type" + +#: static/custom/custom.js:1143 +msgid "Title" +msgstr "Titre" + +#: static/custom/custom.js:1144 static/custom/custom.js:2527 +msgid "Severity" +msgstr "Sévérité" + +#: static/custom/custom.js:1145 static/custom/custom.js:1206 +#: static/custom/custom.js:2343 static/custom/custom.js:2793 +#: static/custom/custom.js:2796 +msgid "CVSS Score" +msgstr "Score CVSS" + +#: static/custom/custom.js:1146 +msgid "CVE/CWE" +msgstr "CVE/CWE" + +#: static/custom/custom.js:1147 +msgid "Vulnerable URL" +msgstr "URL vulnérable" + +#: static/custom/custom.js:1148 +msgid "Action" +msgstr "Action" + +#: static/custom/custom.js:1193 static/custom/custom.js:2804 +msgid "CVSS Metrics" +msgstr "Métriques CVSS" + +#: static/custom/custom.js:1211 static/custom/custom.js:2760 +#: static/custom/toolbox.js:192 +msgid "CVE ID" +msgstr "ID CVE" + +#: static/custom/custom.js:1216 static/custom/custom.js:2367 +#: static/custom/custom.js:2775 +msgid "CWE ID" +msgstr "ID CWE" + +#: static/custom/custom.js:1227 +msgid "Report to Hackerone" +msgstr "Signaler à Hackerone" + +#: static/custom/custom.js:1244 static/custom/custom.js:1245 +msgid "No vulnerability" +msgstr "Pas de vulnérabilité" + +#: static/custom/custom.js:1264 +msgid "Directory" +msgstr "Répertoire" + +#: static/custom/custom.js:1265 static/custom/custom.js:2280 +msgid "HTTP Status" +msgstr "Statut HTTP" + +#: static/custom/custom.js:1267 +msgid "Lines" +msgstr "Lignes" + +#: static/custom/custom.js:1268 +msgid "Words" +msgstr "Mots" + +#: static/custom/custom.js:1292 static/custom/custom.js:1293 +msgid "No directory" +msgstr "Pas de répertoire" + +#: static/custom/custom.js:1353 +msgid "Error:" +msgstr "Erreur :" + +#: static/custom/custom.js:1361 static/custom/custom.js:1918 +#: static/custom/right_sidebar.js:177 +msgid "Task Completed" +msgstr "Tâche terminée" + +#: static/custom/custom.js:1400 +msgid "Fetching WHOIS..." +msgstr "Récupération des informations WHOIS..." + +#: static/custom/custom.js:1421 +msgid "Whois Fetched..." +msgstr "Informations WHOIS récupérées..." + +#: static/custom/custom.js:1470 static/custom/custom.js:1502 +#: static/custom/toolbox.js:178 +msgid "Oops!" +msgstr "Oups !" + +#: static/custom/custom.js:1520 +msgid "Domain info" +msgstr "Informations du domaine" + +#: static/custom/custom.js:1521 +msgid "Whois" +msgstr "Whois" + +#: static/custom/custom.js:1522 +msgid "Nameservers" +msgstr "Serveurs de noms" + +#: static/custom/custom.js:1523 +msgid "DNS Records" +msgstr "Enregistrements DNS" + +#: static/custom/custom.js:1524 +msgid "Historical Ips" +msgstr "Historique des adresses IP" + +#: static/custom/custom.js:1525 +msgid "Related Domains" +msgstr "Domaines liés" + +#: static/custom/custom.js:1526 +msgid "Related TLDs" +msgstr "TLDs liés" + +#: static/custom/custom.js:1534 +msgid "Domain" +msgstr "Domaine" + +#: static/custom/custom.js:1538 +msgid "Dnssec" +msgstr "Dnssec" + +#: static/custom/custom.js:1542 +msgid "Geolocation" +msgstr "Géolocalisation" + +#: static/custom/custom.js:1549 +msgid "Created" +msgstr "Créé" + +#: static/custom/custom.js:1553 +msgid "Updated" +msgstr "Mis à jour" + +#: static/custom/custom.js:1557 +msgid "Expires" +msgstr "Expire" + +#: static/custom/custom.js:1563 +msgid "Whois Server" +msgstr "Serveur Whois" + +#: static/custom/custom.js:1569 +msgid "Registrar Name" +msgstr "Nom du registraire" + +#: static/custom/custom.js:1573 +msgid "Registrar Phone" +msgstr "Téléphone du registraire" + +#: static/custom/custom.js:1577 +msgid "Registrar Email" +msgstr "Email du registraire" + +#: static/custom/custom.js:1597 +msgid "Registrant" +msgstr "Titulaire" + +#: static/custom/custom.js:1600 +msgid "Administrative" +msgstr "Administratif" + +#: static/custom/custom.js:1603 +msgid "Technical" +msgstr "Technique" + +#: static/custom/custom.js:1624 +msgid "ID" +msgstr "ID" + +#: static/custom/custom.js:1628 +msgid "Name" +msgstr "Nom" + +#: static/custom/custom.js:1632 +msgid "Organization" +msgstr "Organisation" + +#: static/custom/custom.js:1636 +msgid "Email" +msgstr "Email" + +#: static/custom/custom.js:1640 +msgid "Phone/Fax" +msgstr "Téléphone/Fax" + +#: static/custom/custom.js:1647 static/custom/custom.js:1651 +msgid "Address" +msgstr "Adresse" + +#: static/custom/custom.js:1670 +msgid "A Records" +msgstr "Enregistrements A" + +#: static/custom/custom.js:1675 +msgid "MX Records" +msgstr "Enregistrements MX" + +#: static/custom/custom.js:1681 +msgid "TXT Records" +msgstr "Enregistrements TXT" + +#: static/custom/custom.js:1693 +msgid "IP" +msgstr "IP" + +#: static/custom/custom.js:1694 +msgid "Location" +msgstr "Localisation" + +#: static/custom/custom.js:1695 +msgid "Owner" +msgstr "Propriétaire" + +#: static/custom/custom.js:1696 +msgid "Last Seen" +msgstr "Vu pour la dernière fois" + +#: static/custom/custom.js:1734 +msgid "No Related TLDs identified" +msgstr "Aucun TLD lié identifié" + +#: static/custom/custom.js:1748 +msgid "No Related Domains identified" +msgstr "Aucun domaine lié identifié" + +#: static/custom/custom.js:1772 +msgid "" +"If you would like to add IP/CIDRs, multiple domain, Please click here." +msgstr "" +"Si vous souhaitez ajouter des IP/CIDR, plusieurs domaines, veuillez cliquer ici." + +#: static/custom/custom.js:1775 +msgid "Target Name" +msgstr "Nom de la cible" + +#: static/custom/custom.js:1776 static/custom/toolbox.js:7 +msgid "yourdomain.com" +msgstr "votredomaine.com" + +#: static/custom/custom.js:1780 +msgid "Description (Optional)" +msgstr "Description (Optionnel)" + +#: static/custom/custom.js:1781 +msgid "Target Description" +msgstr "Description de la cible" + +#: static/custom/custom.js:1785 +msgid "Hackerone Target Team Handle (Optional)" +msgstr "Identifiant de l'équipe cible Hackerone (Optionnel)" + +#: static/custom/custom.js:1786 +msgid "hackerone.com/team_handle, Only enter team_handle after /" +msgstr "" +"hackerone.com/identifiant_equipe, Entrez uniquement l'identifiant_equipe " +"après /" + +#: static/custom/custom.js:1790 static/custom/custom.js:1819 +#: static/custom/custom.js:1823 +msgid "Add Target" +msgstr "Ajouter une cible" + +#: static/custom/custom.js:1843 +msgid "Target Successfully added!" +msgstr "Cible ajoutée avec succès !" + +#: static/custom/custom.js:1844 +msgid "Do you wish to initiate the scan on new target?" +msgstr "Souhaitez-vous lancer l'analyse sur la nouvelle cible ?" + +#: static/custom/custom.js:1847 +msgid "Initiate Scan" +msgstr "Lancer l'analyse" + +#: static/custom/custom.js:1864 +msgid "Oops! Unable to add target !" +msgstr "Oups ! Impossible d'ajouter la cible !" + +#: static/custom/custom.js:1951 +msgid "Close" +msgstr "Fermer" + +#: static/custom/custom.js:1952 +msgid "" +"No Subscans has been initiated for any subdomains. You can select individual " +"subdomains and initiate subscans like Directory Fuzzing, Vulnerability Scan " +"etc." +msgstr "" +"Aucune sous-analyse n'a été lancée pour les sous-domaines. Vous pouvez " +"sélectionner des sous-domaines individuels et lancer des sous-analyses comme " +"le fuzzing de répertoire, l'analyse de vulnérabilités, etc." + +#: static/custom/custom.js:2055 static/custom/custom.js:2143 +#: static/custom/custom.js:2223 +msgid "Interesting Subdomain" +msgstr "Sous-domaine intéressant" + +#: static/custom/custom.js:2055 static/custom/custom.js:2143 +#: static/custom/custom.js:2223 +msgid "Interesting" +msgstr "Intéressant" + +#: static/custom/custom.js:2121 static/custom/custom.js:2205 +#: static/custom/custom.js:2257 +msgid "*Subdomains highlighted are 40X HTTP Status" +msgstr "*Les sous-domaines surlignés ont un statut HTTP 40X" + +#: static/custom/custom.js:2175 +msgid "*IP Address highlighted are CDN IP Address" +msgstr "*Les adresses IP surlignées sont des adresses IP de CDN" + +#: static/custom/custom.js:2289 +msgid "Fetching CVE Details..." +msgstr "Récupération des détails CVE..." + +#: static/custom/custom.js:2320 +msgid "CVE Details" +msgstr "Détails CVE" + +#: static/custom/custom.js:2321 +msgid "Affected Products" +msgstr "Produits affectés" + +#: static/custom/custom.js:2322 +msgid "Affected Versions" +msgstr "Versions affectées" + +#: static/custom/custom.js:2323 static/custom/custom.js:2930 +msgid "References" +msgstr "Références" + +#: static/custom/custom.js:2347 +msgid "Confidentiality Impact" +msgstr "Impact sur la confidentialité" + +#: static/custom/custom.js:2348 static/custom/custom.js:2352 +#: static/custom/custom.js:2356 static/custom/custom.js:2360 +#: static/custom/custom.js:2364 static/custom/custom.js:2368 +msgid "N/A" +msgstr "N/A" + +#: static/custom/custom.js:2351 +msgid "Integrity Impact" +msgstr "Impact sur l'intégrité" + +#: static/custom/custom.js:2355 +msgid "Availability Impact" +msgstr "Impact sur la disponibilité" + +#: static/custom/custom.js:2359 +msgid "Access Complexity" +msgstr "Complexité d'accès" + +#: static/custom/custom.js:2363 +msgid "Authentication" +msgstr "Authentification" + +#: static/custom/custom.js:2453 +msgid "Target" +msgstr "Cible" + +#: static/custom/custom.js:2454 +msgid "Vulnerabilities Count" +msgstr "Nombre de vulnérabilités" + +#: static/custom/custom.js:2483 +msgid "Could not find most vulnerable targets." +msgstr "Impossible de trouver les cibles les plus vulnérables." + +#: static/custom/custom.js:2485 +msgid "" +"Once the vulnerability scan is performed, reNgine will identify the most " +"vulnerable targets." +msgstr "" +"Une fois l'analyse de vulnérabilités effectuée, reNgine identifiera les " +"cibles les plus vulnérables." + +#: static/custom/custom.js:2525 +msgid "Vulnerability Name" +msgstr "Nom de la vulnérabilité" + +#: static/custom/custom.js:2526 +msgid "Count" +msgstr "Nombre" + +#: static/custom/custom.js:2578 +msgid "Could not find Most Common Vulnerabilities." +msgstr "Impossible de trouver les vulnérabilités les plus courantes." + +#: static/custom/custom.js:2580 +msgid "" +"Once the vulnerability scan is performed, reNgine will identify the Most " +"Common Vulnerabilities." +msgstr "" +"Une fois l'analyse de vulnérabilités effectuée, reNgine identifiera les " +"vulnérabilités les plus courantes." + +#: static/custom/custom.js:2630 +msgid "Enter the project name" +msgstr "Entrez le nom du projet" + +#: static/custom/custom.js:2634 +msgid "Your Awesome Project" +msgstr "Votre projet génial" + +#: static/custom/custom.js:2637 +msgid "Create Project" +msgstr "Créer un projet" + +#: static/custom/custom.js:2649 +msgid "Duplicate project name, choose another project name!" +msgstr "Nom de projet en double, choisissez un autre nom de projet !" + +#: static/custom/custom.js:2711 +msgid "ID:" +msgstr "ID :" + +#: static/custom/custom.js:2712 +msgid "Discovered on:" +msgstr "Découvert le :" + +#: static/custom/custom.js:2713 +msgid "URL:" +msgstr "URL :" + +#: static/custom/custom.js:2714 +msgid "Severity:" +msgstr "Sévérité :" + +#: static/custom/custom.js:2714 +msgid "Type:" +msgstr "Type :" + +#: static/custom/custom.js:2714 +msgid "Source:" +msgstr "Source :" + +#: static/custom/custom.js:2717 +msgid "Vulnerability Description" +msgstr "Description de la vulnérabilité" + +#: static/custom/custom.js:2718 +msgid "Vulnerability Impact" +msgstr "Impact de la vulnérabilité" + +#: static/custom/custom.js:2719 +msgid "Remediation" +msgstr "Remédiation" + +#: static/custom/custom.js:2745 +msgid "Vulnerability Classification" +msgstr "Classification de la vulnérabilité" + +#: static/custom/custom.js:2755 +msgid "CVE IDs" +msgstr "IDs CVE" + +#: static/custom/custom.js:2770 +msgid "CWE IDs" +msgstr "IDs CWE" + +#: static/custom/custom.js:2822 +msgid "Nuclei Template Details" +msgstr "Détails du modèle Nuclei" + +#: static/custom/custom.js:2829 +msgid "Template" +msgstr "Modèle" + +#: static/custom/custom.js:2833 +msgid "Template URL" +msgstr "URL du modèle" + +#: static/custom/custom.js:2837 +msgid "Template ID" +msgstr "ID du modèle" + +#: static/custom/custom.js:2841 +msgid "Matcher Name" +msgstr "Nom du matcher" + +#: static/custom/custom.js:2855 +msgid "CURL Command" +msgstr "Commande CURL" + +#: static/custom/custom.js:2871 +msgid "Extracted Results" +msgstr "Résultats extraits" + +#: static/custom/custom.js:2901 +msgid "HTTP Request" +msgstr "Requête HTTP" + +#: static/custom/custom.js:2915 +msgid "HTTP Response" +msgstr "Réponse HTTP" + +#: static/custom/custom.js:2948 +msgid "(GPT was used to generate vulnerability details.)" +msgstr "(GPT a été utilisé pour générer les détails de la vulnérabilité.)" + +#: static/custom/custom.js:2983 static/custom/custom.js:2988 +#: static/custom/custom.js:3091 static/custom/custom.js:3096 +msgid "Request failed" +msgstr "La requête a échoué" + +#: static/custom/custom.js:2994 static/custom/custom.js:3102 +msgid "Loading..." +msgstr "Chargement..." + +#: static/custom/custom.js:2995 +msgid "Please wait while the GPT is generating vulnerability description." +msgstr "" +"Veuillez patienter pendant que le GPT génère la description de la " +"vulnérabilité." + +#: static/custom/custom.js:3008 static/custom/custom.js:3017 +#: static/custom/custom.js:3118 static/custom/custom.js:3127 +msgid "Oops..." +msgstr "Oups..." + +#: static/custom/custom.js:3018 static/custom/custom.js:3128 +msgid "Something went wrong!" +msgstr "Quelque chose s'est mal passé !" + +#: static/custom/custom.js:3103 +msgid "Please wait while the GPT is generating attack surface." +msgstr "Veuillez patienter pendant que le GPT génère la surface d'attaque." + +#: static/custom/right_sidebar.js:26 +msgid "No upcoming Scans." +msgstr "Aucun scan prévu." + +#: static/custom/right_sidebar.js:46 +#, fuzzy +#| msgid "Scan Engine" +msgid "Scanning" +msgstr "Moteur de scan" + +#: static/custom/right_sidebar.js:68 +msgid "No Scans are currently running." +msgstr "Aucun scan n'est en cours d'exécution." + +#: static/custom/right_sidebar.js:87 +msgid "Scan Completed" +msgstr "Scan terminé" + +#: static/custom/right_sidebar.js:115 +msgid "No scans have been recently completed." +msgstr "Aucun scan n'a terminé récemment." + +#: static/custom/right_sidebar.js:138 +msgid "In Progress" +msgstr "En cours" + +#: static/custom/right_sidebar.js:154 +msgid "No tasks are currently running." +msgstr "Aucune tâche n'est en cours d'exécution." + +#: static/custom/right_sidebar.js:202 +msgid "No tasks have been recently completed." +msgstr "Aucune tâche n'a terminé récemment." + +#: static/custom/right_sidebar.js:210 +msgid "Upcoming" +msgstr "Prochainemennt" + +#: static/custom/right_sidebar.js:216 +msgid "No upcoming tasks." +msgstr "Aucune tâche prochainement." + +#: static/custom/right_sidebar.js:221 +msgid "Scan Status" +msgstr "État du scan" + +#: static/custom/right_sidebar.js:224 +msgid "Subdomains" +msgstr "Sous-domaines" + +#: static/custom/right_sidebar.js:227 +msgid "Endpoints" +msgstr "Points de terminaison" + +#: static/custom/right_sidebar.js:230 +msgid "Vulnerabilities" +msgstr "Vulnérabilités" + +#: static/custom/right_sidebar.js:233 +msgid "Scan Engine" +msgstr "Moteur de scan" + +#: static/custom/right_sidebar.js:237 +msgid "Scan Status Reloaded." +msgstr "État du scan rechargé." + +#: static/custom/right_sidebar.js:250 +msgid "Directory Fuzzing" +msgstr "Fuzzing de répertoire" + +#: static/custom/right_sidebar.js:256 +msgid "Endpoint Gathering" +msgstr "Récupération de points de terminaison" + +#: static/custom/right_sidebar.js:262 +msgid "OSINT" +msgstr "OSINT" + +#: static/custom/subdomain_datatable.js:37 +#: static/custom/subdomain_datatable.js:38 +msgid "No Subdomain detected" +msgstr "Pas de sous-domaine détecté" + +#: static/custom/todo.js:27 +msgid "Are you sure you want to delete this Recon Todo?" +msgstr "Êtes-vous sûr de vouloir supprimer cette tâche de reconnaissance ?" + +#: static/custom/todo.js:48 +msgid "Recon Todo Deleted." +msgstr "Tâche de reconnaissance supprimée" + +#: static/custom/todo.js:57 +msgid "Oops! Unable to delete todo!" +msgstr "Oups ! Impossible de supprimer la tâche !" + +#: static/custom/todo.js:66 +msgid "Todo Marked as Unimportant" +msgstr "Tâche marquée comme non importante" + +#: static/custom/todo.js:69 +msgid "Todo Marked as Important" +msgstr "Tâche marquée comme importante" + +#: static/custom/todo.js:107 +msgid "Important Task" +msgstr "Tâche Importante" + +#: static/custom/todo.js:180 +msgid "Mark UnImportant" +msgstr "Marqué comme non important" + +#: static/custom/todo.js:183 +msgid "Mark Important" +msgstr "Marqué comme important" + +#: static/custom/todo.js:198 +msgid "Delete Todo" +msgstr "Supprimer tâche" + +#: static/custom/todo.js:209 +msgid "No todos or notes..." +msgstr "Aucune tâche ou note..." + +#: static/custom/todo.js:209 +msgid "" +"You can add todo for individual subdomains or you can also add using + " +"symbol above." +msgstr "" +"Vous pouvez ajouter des tâches pour des sous-domaines individuels ou vous " +"pouvez aussi ajouter en utilisant le symbole + ci-dessus." + +#: static/custom/toolbox.js:2 +msgid "WHOIS Lookup" +msgstr "Recherche Whois" + +#: static/custom/toolbox.js:6 +msgid "Domain Name/IP Address" +msgstr "Nom de domaine/Adresse IP" + +#: static/custom/toolbox.js:10 +msgid "Search Whois" +msgstr "Rechercher Whois" + +#: static/custom/toolbox.js:22 static/custom/toolbox.js:49 +#: static/custom/toolbox.js:210 static/custom/toolbox.js:237 +msgid "Error!" +msgstr "Erreur !" + +#: static/custom/toolbox.js:22 +msgid "Please enter the domain/IP Address!" +msgstr "Merci d'entrer le nom de domaine/l'adresse IP!" + +#: static/custom/toolbox.js:30 static/custom/toolbox.js:39 +msgid "Detect CMS" +msgstr "Détecter CMS" + +#: static/custom/toolbox.js:34 static/custom/toolbox.js:222 +msgid "HTTP URL/Domain Name" +msgstr "URL HTTP/Nom de domaine" + +#: static/custom/toolbox.js:35 static/custom/toolbox.js:223 +msgid "https://yourdomain.com" +msgstr "https://votredomaine.com" + +#: static/custom/toolbox.js:37 +msgid "" +"(reNgine uses CMSeeK to detect CMS.)" +msgstr "" +"(reNgine utilise CMSeeK pour détecter les CMS.)" + +#: static/custom/toolbox.js:49 static/custom/toolbox.js:237 +msgid "Please enter a valid URL!" +msgstr "Merci d'entrer une URL valide!" + +#: static/custom/toolbox.js:50 +msgid "Okay" +msgstr "OK" + +#: static/custom/toolbox.js:61 +msgid "Detecting CMS" +msgstr "Détection des CMS" + +#: static/custom/toolbox.js:84 +msgid "Visit CMS" +msgstr "Visiter le CMS" + +#: static/custom/toolbox.js:88 +msgid "CMS Details" +msgstr "Détails du CMS" + +#: static/custom/toolbox.js:90 +msgid "CMS Name :" +msgstr "Nom du CMS :" + +#: static/custom/toolbox.js:93 +msgid "CMS URL :" +msgstr "URL du CMS :" + +#: static/custom/toolbox.js:96 +msgid "Detection Method :" +msgstr "Méthode de détection :" + +#: static/custom/toolbox.js:99 +msgid "URL :" +msgstr "URL :" + +#: static/custom/toolbox.js:101 +msgid "(Includes redirected URL)" +msgstr "(Inclut l'URL de redirection)" + +#: static/custom/toolbox.js:107 +msgid "Wordpress License" +msgstr "Licence Wordpress" + +#: static/custom/toolbox.js:108 +msgid "Wordpress Readme File" +msgstr "Fichier README de Wordpress" + +#: static/custom/toolbox.js:109 +msgid "Wordpress Uploads Directory" +msgstr "Répertoire des téléchargements de Wordpress" + +#: static/custom/toolbox.js:112 +msgid "Wordpress Users" +msgstr "Utilisateurs de Wordpress" + +#: static/custom/toolbox.js:113 +msgid "Wordpress Version" +msgstr "Version de Wordpress" + +#: static/custom/toolbox.js:114 +msgid "Wordpress Plugins" +msgstr "Plugins de Wordpress" + +#: static/custom/toolbox.js:115 +msgid "Wordpress Themes" +msgstr "Thèmes de Wordpress" + +#: static/custom/toolbox.js:118 +msgid "Joomla Version" +msgstr "Version de Joomla" + +#: static/custom/toolbox.js:119 +msgid "Joomla Debug Mode" +msgstr "Mode de débogage de Joomla" + +#: static/custom/toolbox.js:122 +msgid "Joomla Readme File" +msgstr "Fichier README de Joomla" + +#: static/custom/toolbox.js:123 +msgid "Joomla Backup Files" +msgstr "Fichiers de sauvegarde de Joomla" + +#: static/custom/toolbox.js:124 +msgid "Joomla Directory Listing" +msgstr "Liste de répertoires de Joomla" + +#: static/custom/toolbox.js:125 +msgid "Joomla Config Files" +msgstr "Fichiers de configuration de Joomla" + +#: static/custom/toolbox.js:126 +msgid "Joomla User Registration" +msgstr "Enregistrement des utilisateurs de Joomla" + +#: static/custom/toolbox.js:166 +msgid "Response Json" +msgstr "Réponse Json" + +#: static/custom/toolbox.js:188 +msgid "CVE Details Lookup" +msgstr "Recherche de détails de CVE" + +#: static/custom/toolbox.js:193 +msgid "CVE-XXXX-XXXX" +msgstr "CVE-XXXX-XXXX" + +#: static/custom/toolbox.js:196 +msgid "Lookup CVE" +msgstr "Rechercher CVE" + +#: static/custom/toolbox.js:210 +msgid "Please enter CVE ID!" +msgstr "Veuillez entrer l'identifiant de CVE !" + +#: static/custom/toolbox.js:218 +msgid "WAF Detector" +msgstr "Détecteur de WAF" + +#: static/custom/toolbox.js:225 +msgid "" +"(reNgine uses wafw00f to detect WAF.)" +msgstr "" +"(reNgine utilise wafw00f pour détecter les WAF.)" + +#: static/custom/toolbox.js:227 +msgid "Detect WAF" +msgstr "Détecter les WAF" + +#: static/custom/toolbox.js:249 +msgid "Detecting WAF" +msgstr "Détection de WAF" + +msgid "Fetching Subdomains... Please wait..." +msgstr "Récupération des sous-domaines... Veuillez patienter..." + +# EMBEDDED JS in templates +# base.html:92 +msgid "Scan Activity" +msgstr "Activité de scan" + +# base.html:124 +msgid "No recent searches." +msgstr "Aucune recherche récente." + +# base.html:135 +msgid "Checking reNgine latest version..." +msgstr "Vérification de la dernière version de reNgine..." + +# base.html:141 +msgid "Github rate limit exceeded, please try again in an hour!" +msgstr "" +"Limite de débit de Github dépassée, veuillez réessayer dans une heure!" + +# base.html:155 +msgid "Update not available" +msgstr "Mise à jour non disponible" + +# base.html:156 +msgid "You are running the latest version of reNgine!" +msgstr "Vous utilisez la dernière version de reNgine!" + +# base.html:159 +msgid "Update Available!" +msgstr "Mise à jour disponible !" + +# base.html:160 +#, python-format +msgid "" +"reNgine's new update %(vNumber)s is available, please follow the update " +"instructions." +msgstr "" +"La nouvelle mise à jour de reNgine %(vNumber)s est disponible, veuillez " +"suivre les instructions de mise à jour." + +# base.html:162 +msgid "Update Instructions" +msgstr "Instructions de mise à jour" + +# base.html:163 +msgid "Dismiss" +msgstr "Ignorer" + +# base.html:174 +msgid "Checking Daily Update..." +msgstr "Vérification de la mise à jour quotidienne..." diff --git a/web/reNgine/definitions.py b/web/reNgine/definitions.py index 7034fbca8..92b895843 100644 --- a/web/reNgine/definitions.py +++ b/web/reNgine/definitions.py @@ -1,4 +1,5 @@ #!/usr/bin/python +from django.utils.translation import gettext_lazy import logging import re @@ -436,6 +437,9 @@ FOUR_OH_FOUR_URL = '/404/' +# FIXME: This should not be user-dependent, but probably org dependent (since we store GPTs answers we probably don't want multiple languages) +# That or we might want to store the GPT answers specifiying the language. +# # GPT Vulnerability Report Generator VULNERABILITY_DESCRIPTION_SYSTEM_MESSAGE = """ You are a highly skilled penetration tester who has recently completed a penetration testing. diff --git a/web/reNgine/gpt.py b/web/reNgine/gpt.py index 4bae2563e..2e2069dba 100644 --- a/web/reNgine/gpt.py +++ b/web/reNgine/gpt.py @@ -1,3 +1,4 @@ +from django.utils.translation import gettext import openai import re from reNgine.common_func import get_open_ai_key, extract_between @@ -26,7 +27,7 @@ def get_vulnerability_description(self, description): if not self.api_key: return { 'status': False, - 'error': 'No OpenAI keys provided.' + 'error': gettext('No OpenAI keys provided.') } openai.api_key = self.api_key try: @@ -89,7 +90,7 @@ def get_attack_suggestion(self, input): if not self.api_key: return { 'status': False, - 'error': 'No OpenAI keys provided.', + 'error': gettext('No OpenAI keys provided.'), 'input': input } openai.api_key = self.api_key diff --git a/web/reNgine/settings.py b/web/reNgine/settings.py index 11bd82292..a2bae2f57 100644 --- a/web/reNgine/settings.py +++ b/web/reNgine/settings.py @@ -67,6 +67,7 @@ 'scanEngine.apps.ScanengineConfig', 'startScan.apps.StartscanConfig', 'recon_note.apps.ReconNoteConfig', + "users", 'django_ace', 'django_celery_beat', 'mathfilters', @@ -76,6 +77,7 @@ MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', + "django.middleware.locale.LocaleMiddleware", 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', @@ -145,6 +147,17 @@ USE_L10N = True USE_TZ = True +LANGUAGES = [ + ('en', 'English'), + ('fr', 'French'), +] + +LOCALE_PATHS = [ + os.path.join(BASE_DIR, "locale"), +] + +AUTH_USER_MODEL = 'users.User' + # Temporary fix for celery beat crash # See https://github.com/yogeshojha/rengine/issues/971 DJANGO_CELERY_BEAT_TZ_AWARE = False diff --git a/web/reNgine/tasks.py b/web/reNgine/tasks.py index 4323fdf4c..ffd7661f5 100644 --- a/web/reNgine/tasks.py +++ b/web/reNgine/tasks.py @@ -21,6 +21,7 @@ from django.db.models import Count from dotted_dict import DottedDict from django.utils import timezone +from django.utils.translation import gettext from pycvesearch import CVESearch from metafinder.extractor import extract_metadata_from_google_search @@ -174,16 +175,16 @@ def initiate_scan( # waf_detection workflow = chain( group( - subdomain_discovery.si(ctx=ctx, description='Subdomain discovery'), - osint.si(ctx=ctx, description='OS Intelligence') + subdomain_discovery.si(ctx=ctx, description=gettext('Subdomain discovery')), + osint.si(ctx=ctx, description=gettext('OS Intelligence')) ), - port_scan.si(ctx=ctx, description='Port scan'), - fetch_url.si(ctx=ctx, description='Fetch URL'), + port_scan.si(ctx=ctx, description=gettext('Port scan')), + fetch_url.si(ctx=ctx, description=gettext('Fetch URL')), group( - dir_file_fuzz.si(ctx=ctx, description='Directories & files fuzz'), - vulnerability_scan.si(ctx=ctx, description='Vulnerability scan'), - screenshot.si(ctx=ctx, description='Screenshot'), - waf_detection.si(ctx=ctx, description='WAF detection') + dir_file_fuzz.si(ctx=ctx, description=gettext('Directories & files fuzz')), + vulnerability_scan.si(ctx=ctx, description=gettext('Vulnerability scan')), + screenshot.si(ctx=ctx, description=gettext('Screenshot')), + waf_detection.si(ctx=ctx, description=gettext('WAF detection')) ) ) @@ -2007,7 +2008,7 @@ def vulnerability_scan(self, urls=[], ctx={}, description=None): _task = nuclei_scan.si( urls=urls, ctx=ctx, - description=f'Nuclei Scan' + description=gettext('Nuclei Scan') ) grouped_tasks.append(_task) @@ -2015,7 +2016,7 @@ def vulnerability_scan(self, urls=[], ctx={}, description=None): _task = crlfuzz_scan.si( urls=urls, ctx=ctx, - description=f'CRLFuzz Scan' + description=gettext('CRLFuzz Scan') ) grouped_tasks.append(_task) @@ -2023,14 +2024,14 @@ def vulnerability_scan(self, urls=[], ctx={}, description=None): _task = dalfox_xss_scan.si( urls=urls, ctx=ctx, - description=f'Dalfox XSS Scan' + description=gettext('Dalfox XSS Scan') ) grouped_tasks.append(_task) if should_run_s3scanner: _task = s3scanner.si( ctx=ctx, - description=f'Misconfigured S3 Buckets Scanner' + description=gettext('Misconfigured S3 Buckets Scanner') ) grouped_tasks.append(_task) @@ -2410,7 +2411,7 @@ def nuclei_scan(self, urls=[], ctx={}, description=None): enable_http_crawl, should_fetch_gpt_report, ctx=custom_ctx, - description=f'Nuclei Scan with severity {severity}' + description=gettext('Nuclei Scan with severity %(severity)s') % {'severity': severity} ) grouped_tasks.append(_task) @@ -3149,6 +3150,10 @@ def send_hackerone_report(vulnerability_id): "vulnerability_information": tpl, "severity_rating": severity_value, "impact": "More information about the impact and vulnerability can be found here: \n" + vulnerability.reference if vulnerability.reference else "NA", + + # Probably don't want this translated but who knows + # "title": _('%(vulnName)s found in %(url)s') % {'vulnName': vulnerability.name, 'url': vulnerability.http_url}, + # "impact": _("More information about the impact and vulnerability can be found here: \n") + vulnerability.reference if vulnerability.reference else "NA", } } } @@ -3507,13 +3512,13 @@ def parse_dalfox_result(line): """ description = '' - description += f" Evidence: {line.get('evidence')}
" if line.get('evidence') else '' - description += f" Message: {line.get('message')}
" if line.get('message') else '' - description += f" Payload: {line.get('message_str')}
" if line.get('message_str') else '' - description += f" Vulnerable Parameter: {line.get('param')}
" if line.get('param') else '' + description += (gettext(" Evidence: %(evidence)s
") % {"evidence": line.get('evidence')}) if line.get('evidence') else '' + description += (gettext(" Message: %(msg)s
") % {"msg": line.get('message')}) if line.get('message') else '' + description += (gettext(" Payload: %(payload)s
") % {"payload": line.get('message_str')}) if line.get('message_str') else '' + description += (gettext(" Vulnerable Parameter: %(vulnParam)s
") % {"vulnParam": line.get('param')}) if line.get('param') else '' return { - 'name': 'XSS (Cross Site Scripting)', + 'name': gettext('XSS (Cross Site Scripting)'), 'type': 'XSS', 'severity': DALFOX_SEVERITY_MAP[line.get('severity', 'unknown')], 'description': description, @@ -3533,10 +3538,10 @@ def parse_crlfuzz_result(url): """ return { - 'name': 'CRLF (HTTP Response Splitting)', + 'name': gettext('CRLF (HTTP Response Splitting)'), 'type': 'CRLF', 'severity': 2, - 'description': 'A CRLF (HTTP Response Splitting) vulnerability has been discovered.', + 'description': gettext('A CRLF (HTTP Response Splitting) vulnerability has been discovered.'), 'source': CRLFUZZ, } @@ -3759,8 +3764,8 @@ def query_whois(ip_domain, force_reload_whois=False): return { 'status': False, 'ip_domain': ip_domain, - 'result': "Netlas limit exceeded.", - 'message': 'Netlas limit exceeded.' + 'result': gettext("Netlas limit exceeded."), + 'message': gettext('Netlas limit exceeded.') } try: result = json.loads(result) @@ -3955,7 +3960,7 @@ def query_whois(ip_domain, force_reload_whois=False): return { 'status': False, 'ip_domain': ip_domain, - 'result': "unable to fetch records from WHOIS database.", + 'result': gettext("unable to fetch records from WHOIS database."), 'message': str(e) } diff --git a/web/reNgine/urls.py b/web/reNgine/urls.py index f5aded451..8063d19be 100644 --- a/web/reNgine/urls.py +++ b/web/reNgine/urls.py @@ -4,10 +4,14 @@ from django.contrib import admin from django.contrib.auth import views as auth_views from django.urls import include, path +from django.views.i18n import JavaScriptCatalog from drf_yasg import openapi from drf_yasg.views import get_schema_view from rest_framework import permissions +from . import views + + schema_view = get_schema_view( openapi.Info( title="reNgine API", @@ -42,7 +46,7 @@ include('recon_note.urls')), path( 'login/', - auth_views.LoginView.as_view(template_name='base/login.html'), + views.LoginView.as_view(template_name='base/login.html'), name='login'), path( 'logout/', @@ -53,5 +57,7 @@ include( 'api.urls', 'api')), + path("jsi18n/", JavaScriptCatalog.as_view( + ), name="javascript-catalog"), ] + static(settings.MEDIA_URL, document_root=settings.RENGINE_RESULTS) + \ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) diff --git a/web/reNgine/utilities.py b/web/reNgine/utilities.py index 64a52eef5..96eb2535a 100644 --- a/web/reNgine/utilities.py +++ b/web/reNgine/utilities.py @@ -2,6 +2,7 @@ from celery._state import get_current_task from celery.utils.log import ColorFormatter +from django.utils.translation import gettext_lazy def is_safe_path(basedir, path, follow_symlinks=True): @@ -30,12 +31,12 @@ def get_time_taken(latest, earlier): minutes = (seconds % 3600) // 60 seconds = seconds % 60 if not hours and not minutes: - return '{} seconds'.format(seconds) + return gettext_lazy('%(seconds)s seconds') % {"seconds": seconds} elif not hours: - return '{} minutes'.format(minutes) + return gettext_lazy('%(minutes)s minutes') % {"minutes": minutes} elif not minutes: - return '{} hours'.format(hours) - return '{} hours {} minutes'.format(hours, minutes) + return gettext_lazy('%(hours)s hours') % {"hours": hours} + return gettext_lazy('%(hours)s hours %(minutes)s minutes') % {"hours": hours, "minutes": minutes} # Check if value is a simple string, a string with commas, a list [], a tuple (), a set {} and return an iterable def return_iterable(string): @@ -70,9 +71,9 @@ def format(self, record): def get_gpt_vuln_input_description(title, path): vulnerability_description = '' - vulnerability_description += f'Vulnerability Title: {title}' + vulnerability_description += gettext_lazy('Vulnerability Title: %(vulnerabilityTitle)s') % {'vulnerabilityTitle': title} # gpt gives concise vulnerability description when a vulnerable URL is provided - vulnerability_description += f'\nVulnerable URL: {path}' + vulnerability_description += gettext_lazy('\nVulnerable URL: %(path)s') % {'path': path} return vulnerability_description diff --git a/web/reNgine/validators.py b/web/reNgine/validators.py index 482ef808f..33d0acd1e 100644 --- a/web/reNgine/validators.py +++ b/web/reNgine/validators.py @@ -2,24 +2,24 @@ import validators from django.core.exceptions import ValidationError -from django.utils.translation import gettext_lazy as _ +from django.utils.translation import gettext_lazy def validate_domain(value): if not validators.domain(value): - raise ValidationError(_('%(value)s is not a valid domain Name' + raise ValidationError(gettext_lazy('%(value)s is not a valid domain Name' ), params={'value': value}) def validate_url(value): if not validators.url(value): - raise ValidationError(_('%(value)s is not a valid URL Name'), + raise ValidationError(gettext_lazy('%(value)s is not a valid URL Name'), params={'value': value}) def validate_short_name(value): regex = re.compile(r'[@!#$%^&*()<>?/\|}{~:]') if regex.search(value): - raise ValidationError(_('%(value)s is not a valid short name,' + raise ValidationError(gettext_lazy('%(value)s is not a valid short name,' + ' can only contain - and _'), params={'value': value}) diff --git a/web/reNgine/views.py b/web/reNgine/views.py new file mode 100644 index 000000000..f28fd8c1b --- /dev/null +++ b/web/reNgine/views.py @@ -0,0 +1,10 @@ +from django.conf import settings as django_settings +from django.contrib.auth import views as auth_views + +# Needed only to set the language cookie on login and ignore browser language +class LoginView(auth_views.LoginView): + def post(self, request, *args, **kwargs): + response = super().post(self, request, *args, **kwargs) + if request.user.is_authenticated: + response.set_cookie(django_settings.LANGUAGE_COOKIE_NAME, request.user.language) + return response \ No newline at end of file diff --git a/web/recon_note/locale/en/LC_MESSAGES/django.mo b/web/recon_note/locale/en/LC_MESSAGES/django.mo new file mode 100644 index 000000000..be6116a88 Binary files /dev/null and b/web/recon_note/locale/en/LC_MESSAGES/django.mo differ diff --git a/web/recon_note/locale/en/LC_MESSAGES/django.po b/web/recon_note/locale/en/LC_MESSAGES/django.po new file mode 100644 index 000000000..9373e8ec4 --- /dev/null +++ b/web/recon_note/locale/en/LC_MESSAGES/django.po @@ -0,0 +1,76 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: recon_note/templates/note/index.html:7 +msgid "Recon Todo" +msgstr "Recon Todo" + +#: recon_note/templates/note/index.html:25 +msgid "New Todo" +msgstr "New Todo" + +#: recon_note/templates/note/index.html:31 +msgid "Todo" +msgstr "Todo" + +#: recon_note/templates/note/index.html:34 +msgid "Done" +msgstr "Done" + +#: recon_note/templates/note/index.html:37 +msgid "Important" +msgstr "Important" + +#: recon_note/templates/note/index.html:46 +msgid "Search Here..." +msgstr "Search Here..." + +#: recon_note/templates/note/index.html:77 +#: recon_note/templates/note/index.html:102 +msgid "Add Todo" +msgstr "Add Todo" + +#: recon_note/templates/note/index.html:79 +msgid "Todo Title" +msgstr "Todo Title" + +#: recon_note/templates/note/index.html:81 +msgid "Select Scan History (Optional)" +msgstr "Select Scan History (Optional)" + +#: recon_note/templates/note/index.html:83 +msgid "Choose Scan History..." +msgstr "Choose Scan History..." + +#: recon_note/templates/note/index.html:88 +msgid "Select Subdomain (Optional)" +msgstr "Select Subdomain (Optional)" + +#: recon_note/templates/note/index.html:91 +msgid "Choose Subdomain..." +msgstr "Choose Subdomain..." + +#: recon_note/templates/note/index.html:95 +msgid "Recon Todo/Note" +msgstr "Recon Todo/Note" + +#: recon_note/templates/note/index.html:103 +msgid "Save" +msgstr "Save" diff --git a/web/recon_note/locale/en/LC_MESSAGES/djangojs.mo b/web/recon_note/locale/en/LC_MESSAGES/djangojs.mo new file mode 100644 index 000000000..047a7caa3 Binary files /dev/null and b/web/recon_note/locale/en/LC_MESSAGES/djangojs.mo differ diff --git a/web/recon_note/locale/en/LC_MESSAGES/djangojs.po b/web/recon_note/locale/en/LC_MESSAGES/djangojs.po new file mode 100644 index 000000000..603834de7 --- /dev/null +++ b/web/recon_note/locale/en/LC_MESSAGES/djangojs.po @@ -0,0 +1,55 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: recon_note/static/note/js/todo.js:85 recon_note/static/note/js/todo.js:140 +msgid "Choose Scan History..." +msgstr "Choose Scan History..." + +#: recon_note/static/note/js/todo.js:89 recon_note/static/note/js/todo.js:144 +msgid "Choose Subdomain..." +msgstr "Choose Subdomain..." + +#: recon_note/static/note/js/todo.js:115 +msgid "Toggle Important" +msgstr "Toggle Important" + +#: recon_note/static/note/js/todo.js:116 recon_note/static/note/js/todo.js:249 +msgid "Delete" +msgstr "Delete" + +#: recon_note/static/note/js/todo.js:245 +msgid "Are you sure you want to delete this Recon Note?" +msgstr "Are you sure you want to delete this Recon Note?" + +#: recon_note/static/note/js/todo.js:246 +msgid "You won't be able to revert this!" +msgstr "You won't be able to revert this!" + +#: recon_note/static/note/js/todo.js:250 +msgid "Cancel" +msgstr "Cancel" + +#: recon_note/static/note/js/todo.js:293 +msgid "Oops! Unable to delete todo!" +msgstr "Oops! Unable to delete todo!" + +#: recon_note/static/note/js/todo.js:335 +msgid "Important Task" +msgstr "Important Task" diff --git a/web/recon_note/locale/fr/LC_MESSAGES/django.mo b/web/recon_note/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 000000000..fb96a9f2f Binary files /dev/null and b/web/recon_note/locale/fr/LC_MESSAGES/django.mo differ diff --git a/web/recon_note/locale/fr/LC_MESSAGES/django.po b/web/recon_note/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 000000000..371bd45df --- /dev/null +++ b/web/recon_note/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,76 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: recon_note/templates/note/index.html:7 +msgid "Recon Todo" +msgstr "Tâche de recon" + +#: recon_note/templates/note/index.html:25 +msgid "New Todo" +msgstr "Nouvelle tâche" + +#: recon_note/templates/note/index.html:31 +msgid "Todo" +msgstr "Tâche" + +#: recon_note/templates/note/index.html:34 +msgid "Done" +msgstr "Fait" + +#: recon_note/templates/note/index.html:37 +msgid "Important" +msgstr "Important" + +#: recon_note/templates/note/index.html:46 +msgid "Search Here..." +msgstr "Rechercher ici..." + +#: recon_note/templates/note/index.html:77 +#: recon_note/templates/note/index.html:102 +msgid "Add Todo" +msgstr "Ajouter une tâche" + +#: recon_note/templates/note/index.html:79 +msgid "Todo Title" +msgstr "Titre de la tâche" + +#: recon_note/templates/note/index.html:81 +msgid "Select Scan History (Optional)" +msgstr "Sélectionner l'historique de scan (Optionnel)" + +#: recon_note/templates/note/index.html:83 +msgid "Choose Scan History..." +msgstr "Choisir l'historique de scan..." + +#: recon_note/templates/note/index.html:88 +msgid "Select Subdomain (Optional)" +msgstr "Sélectionner un sous-domaine (Optionnel)" + +#: recon_note/templates/note/index.html:91 +msgid "Choose Subdomain..." +msgstr "Choisir un sous-domaine..." + +#: recon_note/templates/note/index.html:95 +msgid "Recon Todo/Note" +msgstr "Tâche / Note de recon" + +#: recon_note/templates/note/index.html:103 +msgid "Save" +msgstr "Enregistrer" diff --git a/web/recon_note/locale/fr/LC_MESSAGES/djangojs.mo b/web/recon_note/locale/fr/LC_MESSAGES/djangojs.mo new file mode 100644 index 000000000..331db6722 Binary files /dev/null and b/web/recon_note/locale/fr/LC_MESSAGES/djangojs.mo differ diff --git a/web/recon_note/locale/fr/LC_MESSAGES/djangojs.po b/web/recon_note/locale/fr/LC_MESSAGES/djangojs.po new file mode 100644 index 000000000..a2ab4efe8 --- /dev/null +++ b/web/recon_note/locale/fr/LC_MESSAGES/djangojs.po @@ -0,0 +1,55 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: recon_note/static/note/js/todo.js:85 recon_note/static/note/js/todo.js:140 +msgid "Choose Scan History..." +msgstr "Choisir l'historique de scan..." + +#: recon_note/static/note/js/todo.js:89 recon_note/static/note/js/todo.js:144 +msgid "Choose Subdomain..." +msgstr "Choisir le sous-domaine..." + +#: recon_note/static/note/js/todo.js:115 +msgid "Toggle Important" +msgstr "Basculer Important" + +#: recon_note/static/note/js/todo.js:116 recon_note/static/note/js/todo.js:249 +msgid "Delete" +msgstr "Supprimer" + +#: recon_note/static/note/js/todo.js:245 +msgid "Are you sure you want to delete this Recon Note?" +msgstr "Etes-vous sûr de vouloir supprimer cette note de reconnaissance ?" + +#: recon_note/static/note/js/todo.js:246 +msgid "You won't be able to revert this!" +msgstr "Vous ne pourrez pas revenir en arrière!" + +#: recon_note/static/note/js/todo.js:250 +msgid "Cancel" +msgstr "Annuler" + +#: recon_note/static/note/js/todo.js:293 +msgid "Oops! Unable to delete todo!" +msgstr "Oups! Impossible de supprimer la tâche!" + +#: recon_note/static/note/js/todo.js:335 +msgid "Important Task" +msgstr "Tâche Importante" diff --git a/web/recon_note/static/note/js/todo.js b/web/recon_note/static/note/js/todo.js index 7d8b8d50e..21f126af4 100644 --- a/web/recon_note/static/note/js/todo.js +++ b/web/recon_note/static/note/js/todo.js @@ -81,11 +81,12 @@ function populateTodofunction(project=null){ var $_targetText = ''; - if ($_taskScanHistory != 'Choose Scan History...') { + // FIXME: UI actions should never be based on textual representation of data + if ($_taskScanHistory != gettext('Choose Scan History...')) { $_targetText = $_taskScanHistory; } - if ($_taskSubdomain != 'Choose Subdomain...') { + if ($_taskSubdomain != gettext('Choose Subdomain...')) { $_targetText += ' Subdomain : ' + $_taskSubdomain; } @@ -111,8 +112,8 @@ function populateTodofunction(project=null){ ''+ ''+ ''+ ''+ @@ -135,11 +136,12 @@ function populateTodofunction(project=null){ 'description': $_taskDescriptionText } - if ($("#scanHistoryIDropdown").val() && $("#scanHistoryIDropdown").val() != 'Choose Scan History...') { + // FIXME + if ($("#scanHistoryIDropdown").val() && $("#scanHistoryIDropdown").val() != gettext('Choose Scan History...')) { data['scan_history'] = parseInt($("#scanHistoryIDropdown").val()); } - if ($("#subdomainDropdown").val() != 'Choose Subdomain...') { + if ($("#subdomainDropdown").val() != gettext('Choose Subdomain...')) { data['subdomain'] = parseInt($("#subdomainDropdown").val()); } @@ -240,11 +242,12 @@ function deleteDropdown() { var id = this.id.split('_')[1]; var main_this = this; swal.queue([{ - title: 'Are you sure you want to delete this Recon Note?', - text: "You won't be able to revert this!", + title: gettext('Are you sure you want to delete this Recon Note?'), + text: gettext("You won't be able to revert this!"), type: 'warning', showCancelButton: true, - confirmButtonText: 'Delete', + confirmButtonText: gettext('Delete'), + cancelButtonText: gettext('Cancel'), padding: '2em', showLoaderOnConfirm: true, preConfirm: function() { @@ -287,7 +290,7 @@ function deleteDropdown() { .catch(function() { swal.insertQueueStep({ type: 'error', - title: 'Oops! Unable to delete todo!' + title: gettext('Oops! Unable to delete todo!') }) }) } @@ -329,7 +332,7 @@ function importantDropdown() { badge = ` ` diff --git a/web/recon_note/templates/note/index.html b/web/recon_note/templates/note/index.html index 4885aa28b..08b05a862 100644 --- a/web/recon_note/templates/note/index.html +++ b/web/recon_note/templates/note/index.html @@ -1,9 +1,10 @@ {% extends 'base/base.html' %} {% load static %} {% load humanize %} +{% load i18n %} {% block title %} -Recon Todo +{% translate "Recon Todo" %} {% endblock title %} {% block custom_js_css_link %} @@ -21,19 +22,19 @@
                           
- New Todo + {% translate "New Todo" %}
@@ -73,33 +74,33 @@
@@ -142,16 +143,16 @@
Add Todo
todo_item.classList.add("all-list"); var target_text = ''; if (note_obj['domain_name']) { - target_text += 'Domain: ' + note_obj['domain_name'] + ', Scanned ' + moment.utc(note_obj['scan_started_time']).fromNow(); + target_text += interpolate("Domain: %(domainName)s, Scanned %(scannedWhen)s", {domainName: note_obj['domain_name'], scannedWhen: moment.utc(note_obj['scan_started_time']).fromNow()}, true); } if (note_obj['subdomain_name']) { - target_text += '
Subdomain: ' + note_obj['subdomain_name']; + target_text += '
' + interpolate("Subdomain: %(subDomainName)s", {subDomainName: note_obj['subdomain_name']}, true); } var is_important_badge = ''; if (note_obj['is_important']) { is_important_badge = `
diff --git a/web/recon_note/urls.py b/web/recon_note/urls.py index 1430979b4..6f71cb974 100644 --- a/web/recon_note/urls.py +++ b/web/recon_note/urls.py @@ -3,6 +3,7 @@ from . import views + urlpatterns = [ path( '/list_note', diff --git a/web/scanEngine/forms.py b/web/scanEngine/forms.py index b4fb5455a..e4355fba1 100644 --- a/web/scanEngine/forms.py +++ b/web/scanEngine/forms.py @@ -1,5 +1,7 @@ from django import forms from django_ace import AceWidget +from django.utils.translation import gettext_lazy + from reNgine.validators import validate_short_name from scanEngine.models import * @@ -14,7 +16,7 @@ class Meta: attrs={ "class": "form-control form-control-lg", "id": "scan_engine_name", - "placeholder": "Engine Name"})) + "placeholder": gettext_lazy("Engine Name")})) yaml_configuration = forms.CharField(widget=AceWidget( mode="yaml", theme="tomorrow_night_eighties", @@ -36,7 +38,7 @@ class Meta: attrs={ "class": "form-control form-control-lg", "id": "scan_engine_name", - "placeholder": "Custom Engine"})) + "placeholder": gettext_lazy("Custom Engine")})) yaml_configuration = forms.CharField(widget=AceWidget( mode="yaml", theme="tomorrow_night_eighties", @@ -53,7 +55,7 @@ class AddWordlistForm(forms.Form): widget=forms.TextInput( attrs={'class': 'form-control form-control-lg', 'id': 'name', - 'placeholder': 'my awesome wordlist', })) + 'placeholder': gettext_lazy('my awesome wordlist'), })) short_name = forms.CharField( required=True, validators=[validate_short_name], @@ -61,7 +63,7 @@ class AddWordlistForm(forms.Form): attrs={ 'class': 'form-control form-control-lg', 'id': 'short_name', - 'placeholder': 'my_awesome_wordlist', })) + 'placeholder': gettext_lazy('my_awesome_wordlist'), })) upload_file = forms.FileField( required=True, widget=forms.FileInput( @@ -80,7 +82,7 @@ class Meta: widget=forms.TextInput( attrs={'class': 'form-control form-control-lg', 'id': 'name', - 'placeholder': 'Configuration Name', })) + 'placeholder': gettext_lazy('Configuration Name'), })) short_name = forms.CharField( required=True, validators=[validate_short_name], @@ -88,7 +90,7 @@ class Meta: attrs={ 'class': 'form-control form-control-lg', 'id': 'short_name', - 'placeholder': 'my_awesome_configuration', })) + 'placeholder': gettext_lazy('my_awesome_configuration'), })) content = forms.CharField(widget=AceWidget( mode="text", theme="monokai", @@ -114,7 +116,7 @@ class Meta: attrs={ "class": "form-control form-control-lg", "id": "keywords", - "placeholder": "Interesting Keywords", + "placeholder": gettext_lazy("Interesting Keywords"), })) custom_type = forms.BooleanField( @@ -214,7 +216,7 @@ class Meta: attrs={ "class": "form-control", "id": "telegram_bot_token", - "placeholder": "Bot Token", + "placeholder": gettext_lazy("Bot Token"), })) telegram_bot_chat_id = forms.CharField( @@ -223,7 +225,7 @@ class Meta: attrs={ "class": "form-control", "id": "telegram_bot_chat_id", - "placeholder": "Bot Chat ID", + "placeholder": gettext_lazy("Bot Chat ID"), })) send_scan_status_notif = forms.BooleanField( @@ -345,7 +347,7 @@ class Meta: "id": "proxies", "rows": "10", "spellcheck": "false", - "placeholder": "http://username:password@proxyip.com:port", + "placeholder": gettext_lazy("http://username:password@proxyip.com:port"), })) def set_value(self, key): @@ -371,7 +373,7 @@ class Meta: attrs={ "class": "form-control form-control-lg", "id": "username", - "placeholder": "Your Hackerone Username", + "placeholder": gettext_lazy("Your Hackerone Username"), })) api_key = forms.CharField( @@ -380,7 +382,7 @@ class Meta: attrs={ "class": "form-control form-control-lg", "id": "api_key", - "placeholder": "Hackerone API Token", + "placeholder": gettext_lazy("Hackerone API Token"), })) send_critical = forms.BooleanField( @@ -429,7 +431,7 @@ def set_initial(self): self.initial['send_high'] = True self.initial['send_medium'] = False - self.initial['report_template'] = '''Hi Team, while testing, a {vulnerability_severity} severity vulnerability has been discovered in {vulnerable_url} and below is the findings. + self.initial['report_template'] = gettext_lazy('''Hi Team, while testing, a {vulnerability_severity} severity vulnerability has been discovered in {vulnerable_url} and below is the findings. # Vulnerability {vulnerability_name} @@ -444,9 +446,9 @@ def set_initial(self): {vulnerability_extracted_results} ## References -- {vulnerability_reference} +- {vulnerability_references} -Thank you''' +Thank you''') class ReportForm(forms.ModelForm): @@ -460,7 +462,7 @@ class Meta: attrs={ "class": "form-control form-control-lg", "id": "company_name", - "placeholder": "Company Name", + "placeholder": gettext_lazy("Company Name"), })) company_address = forms.CharField( @@ -469,7 +471,7 @@ class Meta: attrs={ "class": "form-control form-control-lg", "id": "company_address", - "placeholder": "Company Address", + "placeholder": gettext_lazy("Company Address"), })) company_website = forms.CharField( @@ -478,7 +480,7 @@ class Meta: attrs={ "class": "form-control form-control-lg", "id": "company_website", - "placeholder": "Company Website https://company.com", + "placeholder": gettext_lazy("Company Website https://company.com"), })) company_email = forms.CharField( @@ -487,7 +489,7 @@ class Meta: attrs={ "class": "form-control form-control-lg", "id": "company_email", - "placeholder": "email@yourcompany.com", + "placeholder": gettext_lazy("email@yourcompany.com"), })) show_footer = forms.BooleanField( @@ -505,7 +507,7 @@ class Meta: "class": "form-control form-control-lg", "id": "footer_text", "aria-label": "switch", - "placeholder": "Footer Text © Your Company", + "placeholder": gettext_lazy("Footer Text © Your Company"), })) show_rengine_banner = forms.BooleanField( @@ -566,7 +568,8 @@ def set_initial(self): self.initial['show_executive_summary'] = False self.initial['primary_color'] = '#FFB74D' self.initial['secondary_color'] = '#212121' - self.initial['executive_summary_description'] = '''On **{scan_date}**, **{target_name}** engaged **{company_name}** to perform a security audit on their Web application. + + self.initial['executive_summary_description'] = gettext_lazy('''On **{scan_date}**, **{target_name}** engaged **{company_name}** to perform a security audit on their Web application. **{company_name}** performed both Security Audit and Reconnaissance using automated tool reNgine. https://github.com/yogeshojha/rengine . @@ -585,7 +588,7 @@ def set_initial(self): **{company_name}** recommends that these issues be addressed in timely manner. -''' +''') class ExternalToolForm(forms.ModelForm): @@ -599,7 +602,7 @@ class Meta: attrs={ "class": "form-control", "id": "tool_name", - "placeholder": "My Awesome Tool"})) + "placeholder": gettext_lazy("My Awesome Tool")})) github_url = forms.CharField( required=True, @@ -615,7 +618,7 @@ class Meta: attrs={ "class": "form-control", "id": "license_url", - "placeholder": "https://github.com/user/tool/blob/master/LICENSE.md"})) + "placeholder": gettext_lazy("https://github.com/user/tool/blob/master/LICENSE.md")})) logo_url = forms.CharField( required=False, @@ -623,7 +626,7 @@ class Meta: attrs={ "class": "form-control", "id": "logo_url", - "placeholder": "http://example.com/logo.png"})) + "placeholder": gettext_lazy("http://example.com/logo.png")})) description = forms.CharField( required=True, @@ -631,7 +634,7 @@ class Meta: attrs={ "class": "form-control", "id": "tool_description", - "placeholder": "Explain what this tool is used for.", + "placeholder": gettext_lazy("Explain what this tool is used for."), "rows": 2 } )) @@ -642,7 +645,7 @@ class Meta: attrs={ "class": "form-control", "id": "install_command", - "placeholder": "Tool Installation Command"})) + "placeholder": gettext_lazy("Tool Installation Command")})) update_command = forms.CharField( required=False, @@ -650,7 +653,7 @@ class Meta: attrs={ "class": "form-control", "id": "update_command", - "placeholder": "Tool Update Command"})) + "placeholder": gettext_lazy("Tool Update Command")})) version_match_regex = forms.CharField( required=False, @@ -681,8 +684,8 @@ class Meta: attrs={ "class": "form-control", "id": "subdomain_gathering_command", - "placeholder": "Subdomain Gathering Command", - "value": "tool_name -d {TARGET} -o {OUTPUT}" + "placeholder": gettext_lazy("Subdomain Gathering Command"), + "value": gettext_lazy("tool_name -d {TARGET} -o {OUTPUT}") })) def set_value(self, key): diff --git a/web/scanEngine/locale/en/LC_MESSAGES/django.mo b/web/scanEngine/locale/en/LC_MESSAGES/django.mo new file mode 100644 index 000000000..10af47198 Binary files /dev/null and b/web/scanEngine/locale/en/LC_MESSAGES/django.mo differ diff --git a/web/scanEngine/locale/en/LC_MESSAGES/django.po b/web/scanEngine/locale/en/LC_MESSAGES/django.po new file mode 100644 index 000000000..46daa59a3 --- /dev/null +++ b/web/scanEngine/locale/en/LC_MESSAGES/django.po @@ -0,0 +1,1868 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: scanEngine/forms.py:19 scanEngine/templates/scanEngine/index.html:47 +msgid "Engine Name" +msgstr "Engine Name" + +#: scanEngine/forms.py:41 scanEngine/templates/scanEngine/index.html:69 +msgid "Custom Engine" +msgstr "Custom Engine" + +#: scanEngine/forms.py:58 +msgid "my awesome wordlist" +msgstr "my awesome wordlist" + +#: scanEngine/forms.py:66 +msgid "my_awesome_wordlist" +msgstr "my_awesome_wordlist" + +#: scanEngine/forms.py:85 +msgid "Configuration Name" +msgstr "Configuration Name" + +#: scanEngine/forms.py:93 +msgid "my_awesome_configuration" +msgstr "my_awesome_configuration" + +#: scanEngine/forms.py:119 +msgid "Interesting Keywords" +msgstr "Interesting Keywords" + +#: scanEngine/forms.py:219 +msgid "Bot Token" +msgstr "Bot Token" + +#: scanEngine/forms.py:228 +msgid "Bot Chat ID" +msgstr "Bot Chat ID" + +#: scanEngine/forms.py:350 +msgid "http://username:password@proxyip.com:port" +msgstr "http://username:password@proxyip.com:port" + +#: scanEngine/forms.py:376 +msgid "Your Hackerone Username" +msgstr "Your Hackerone Username" + +#: scanEngine/forms.py:385 +msgid "Hackerone API Token" +msgstr "Hackerone API Token" + +#: scanEngine/forms.py:434 +#, python-brace-format +msgid "" +"Hi Team, while testing, a {vulnerability_severity} severity vulnerability " +"has been discovered in {vulnerable_url} and below is the findings.\n" +"\n" +"# Vulnerability\n" +"{vulnerability_name}\n" +"\n" +"## Issue Description\n" +"{vulnerability_description}\n" +"\n" +"## Vulnerable URL\n" +"- {vulnerable_url}\n" +"\n" +"## Extracted Results/Findings\n" +"{vulnerability_extracted_results}\n" +"\n" +"## References\n" +"- {vulnerability_references}\n" +"\n" +"Thank you" +msgstr "" +"Hi Team, while testing, a {vulnerability_severity} severity vulnerability " +"has been discovered in {vulnerable_url} and below is the findings.\n" +"\n" +"# Vulnerability\n" +"{vulnerability_name}\n" +"\n" +"## Issue Description\n" +"{vulnerability_description}\n" +"\n" +"## Vulnerable URL\n" +"- {vulnerable_url}\n" +"\n" +"## Extracted Results/Findings\n" +"{vulnerability_extracted_results}\n" +"\n" +"## References\n" +"- {vulnerability_references}\n" +"\n" +"Thank you" + +#: scanEngine/forms.py:465 +#: scanEngine/templates/scanEngine/settings/report.html:69 +msgid "Company Name" +msgstr "Company Name" + +#: scanEngine/forms.py:474 +#: scanEngine/templates/scanEngine/settings/report.html:73 +msgid "Company Address" +msgstr "Company Address" + +#: scanEngine/forms.py:483 +msgid "Company Website https://company.com" +msgstr "Company Website https://company.com" + +#: scanEngine/forms.py:492 +msgid "email@yourcompany.com" +msgstr "email@yourcompany.com" + +#: scanEngine/forms.py:510 +msgid "Footer Text © Your Company" +msgstr "Footer Text © Your Company" + +#: scanEngine/forms.py:572 +#, python-brace-format +msgid "" +"On **{scan_date}**, **{target_name}** engaged **{company_name}** to perform " +"a security audit on their Web application.\n" +"\n" +"**{company_name}** performed both Security Audit and Reconnaissance using " +"automated tool reNgine. https://github.com/yogeshojha/rengine .\n" +"\n" +"## Observations\n" +"\n" +"During the course of this engagement **{company_name}** was able to discover " +"**{subdomain_count}** Subdomains and **{vulnerability_count}** " +"Vulnerabilities, including informational vulnerabilities and these could " +"pose a significant risk to the security of the application.\n" +"\n" +"The breakdown of the Vulnerabilities Identified in **{target_name}** by " +"severity are as follows:\n" +"\n" +"* Critical : {critical_count}\n" +"* High : {high_count}\n" +"* Medium : {medium_count}\n" +"* Low : {low_count}\n" +"* Info : {info_count}\n" +"* Unknown : {unknown_count}\n" +"\n" +"**{company_name}** recommends that these issues be addressed in timely " +"manner.\n" +"\n" +msgstr "" +"On **{scan_date}**, **{target_name}** engaged **{company_name}** to perform " +"a security audit on their Web application.\n" +"\n" +"**{company_name}** performed both Security Audit and Reconnaissance using " +"automated tool reNgine. https://github.com/yogeshojha/rengine .\n" +"\n" +"## Observations\n" +"\n" +"During the course of this engagement **{company_name}** was able to discover " +"**{subdomain_count}** Subdomains and **{vulnerability_count}** " +"Vulnerabilities, including informational vulnerabilities and these could " +"pose a significant risk to the security of the application.\n" +"\n" +"The breakdown of the Vulnerabilities Identified in **{target_name}** by " +"severity are as follows:\n" +"\n" +"* Critical : {critical_count}\n" +"* High : {high_count}\n" +"* Medium : {medium_count}\n" +"* Low : {low_count}\n" +"* Info : {info_count}\n" +"* Unknown : {unknown_count}\n" +"\n" +"**{company_name}** recommends that these issues be addressed in timely " +"manner.\n" +"\n" + +#: scanEngine/forms.py:605 +msgid "My Awesome Tool" +msgstr "My Awesome Tool" + +#: scanEngine/forms.py:621 +msgid "https://github.com/user/tool/blob/master/LICENSE.md" +msgstr "https://github.com/user/tool/blob/master/LICENSE.md" + +#: scanEngine/forms.py:629 +msgid "http://example.com/logo.png" +msgstr "http://example.com/logo.png" + +#: scanEngine/forms.py:637 +msgid "Explain what this tool is used for." +msgstr "Explain what this tool is used for." + +#: scanEngine/forms.py:648 +msgid "Tool Installation Command" +msgstr "Tool Installation Command" + +#: scanEngine/forms.py:656 +msgid "Tool Update Command" +msgstr "Tool Update Command" + +#: scanEngine/forms.py:687 +msgid "Subdomain Gathering Command" +msgstr "Subdomain Gathering Command" + +#: scanEngine/forms.py:688 +#, python-brace-format +msgid "tool_name -d {TARGET} -o {OUTPUT}" +msgstr "tool_name -d {TARGET} -o {OUTPUT}" + +#: scanEngine/templates/scanEngine/_items/form_engine.html:4 +msgid "Engine name" +msgstr "Engine name" + +#: scanEngine/templates/scanEngine/_items/form_engine.html:115 +msgid "YAML Configurations" +msgstr "YAML Configurations" + +#: scanEngine/templates/scanEngine/_items/form_engine.html:117 +msgid "" +"reNgine supports YAML based configurations for customizing the scan. The " +"default settings are given below, you may choose to proceed with the default " +"settings or configure it according to your choice." +msgstr "" +"reNgine supports YAML based configurations for customizing the scan. The " +"default settings are given below, you may choose to proceed with the default " +"settings or configure it according to your choice." + +#: scanEngine/templates/scanEngine/_items/form_engine.html:119 +msgid "reNgine YAML Documentation" +msgstr "reNgine YAML Documentation" + +#: scanEngine/templates/scanEngine/_items/form_engine.html:120 +msgid "To learn more about YAML config visit the official documentation at" +msgstr "To learn more about YAML config visit the official documentation at" + +#: scanEngine/templates/scanEngine/_items/form_engine.html:122 +msgid "Note: Invalid YAML configuration may crash scans." +msgstr "Note: Invalid YAML configuration may crash scans." + +#: scanEngine/templates/scanEngine/_items/form_engine.html:124 +msgid "" +"Please, do not modify the configuration unless you know what what you are " +"doing." +msgstr "" +"Please, do not modify the configuration unless you know what what you are " +"doing." + +#: scanEngine/templates/scanEngine/_items/form_engine.html:126 +msgid "If default YAML configuration doesn't automatically load," +msgstr "If default YAML configuration doesn't automatically load," + +#: scanEngine/templates/scanEngine/_items/form_engine.html:126 +msgid "download default configuration from here" +msgstr "download default configuration from here" + +#: scanEngine/templates/scanEngine/_items/form_engine.html:126 +msgid "" +"and paste it. (Firefox may have issues loading default YAML configuration.)" +msgstr "" +"and paste it. (Firefox may have issues loading default YAML configuration.)" + +#: scanEngine/templates/scanEngine/add_engine.html:7 +#: scanEngine/templates/scanEngine/add_engine.html:28 +#: scanEngine/templates/scanEngine/add_engine.html:32 +#: scanEngine/templates/scanEngine/add_engine.html:49 +#: scanEngine/templates/scanEngine/index.html:32 +msgid "Add Scan Engine" +msgstr "Add Scan Engine" + +#: scanEngine/templates/scanEngine/add_engine.html:27 +#: scanEngine/templates/scanEngine/index.html:14 +#: scanEngine/templates/scanEngine/lookup.html:15 +#: scanEngine/templates/scanEngine/update_engine.html:26 +msgid "Engines" +msgstr "Engines" + +#: scanEngine/templates/scanEngine/add_engine.html:40 +#: scanEngine/templates/scanEngine/index.html:19 +msgid "Scan Engines" +msgstr "Scan Engines" + +#: scanEngine/templates/scanEngine/add_engine.html:42 +msgid "" +"Scan Engines are the most crucial part of reNgine. They define " +"how a scan is performed against a target. Scan Engines allow you to define the configuration and use it against multiple " +"targets." +msgstr "" +"Scan Engines are the most crucial part of reNgine. They define " +"how a scan is performed against a target. Scan Engines allow you to define the configuration and use it against multiple " +"targets." + +#: scanEngine/templates/scanEngine/add_engine.html:44 +msgid "" +"YAML configuration allows you fine tuning the engines such as rate, " +"templates to be used, or configurations to be used." +msgstr "" +"YAML configuration allows you fine tuning the engines such as rate, " +"templates to be used, or configurations to be used." + +#: scanEngine/templates/scanEngine/index.html:7 +msgid "Scan Engine" +msgstr "Scan Engine" + +#: scanEngine/templates/scanEngine/index.html:15 +msgid "All Scan Engines" +msgstr "All Scan Engines" + +#: scanEngine/templates/scanEngine/index.html:32 +msgid "Add New Scan Engine" +msgstr "Add New Scan Engine" + +#: scanEngine/templates/scanEngine/index.html:46 +msgid "ID" +msgstr "ID" + +#: scanEngine/templates/scanEngine/index.html:48 +msgid "Type" +msgstr "Type" + +#: scanEngine/templates/scanEngine/index.html:49 +msgid "Subdomain Discovery" +msgstr "Subdomain Discovery" + +#: scanEngine/templates/scanEngine/index.html:50 +msgid "WAF Detection" +msgstr "WAF Detection" + +#: scanEngine/templates/scanEngine/index.html:51 +msgid "Screenshot" +msgstr "Screenshot" + +#: scanEngine/templates/scanEngine/index.html:52 +msgid "OSINT" +msgstr "OSINT" + +#: scanEngine/templates/scanEngine/index.html:53 +msgid "Port Scan" +msgstr "Port Scan" + +#: scanEngine/templates/scanEngine/index.html:54 +msgid "Directory & Files Discovery" +msgstr "Directory & Files Discovery" + +#: scanEngine/templates/scanEngine/index.html:55 +msgid "Fetch URLs" +msgstr "Fetch URLs" + +#: scanEngine/templates/scanEngine/index.html:56 +msgid "Vulnerability Scan" +msgstr "Vulnerability Scan" + +#: scanEngine/templates/scanEngine/index.html:57 +#: scanEngine/templates/scanEngine/wordlist/index.html:46 +msgid "Action" +msgstr "Action" + +#: scanEngine/templates/scanEngine/index.html:67 +msgid "Default Engine" +msgstr "Default Engine" + +#: scanEngine/templates/scanEngine/index.html:130 +msgid "Edit Engine" +msgstr "Edit Engine" + +#: scanEngine/templates/scanEngine/index.html:135 +#, python-format +msgid "Delete %(engine_name)s Engine" +msgstr "Delete %(engine_name)s Engine" + +#: scanEngine/templates/scanEngine/lookup.html:7 +msgid "Interesting entries Lookup" +msgstr "Interesting entries Lookup" + +#: scanEngine/templates/scanEngine/lookup.html:16 +#: scanEngine/templates/scanEngine/lookup.html:20 +#: scanEngine/templates/scanEngine/lookup.html:28 +msgid "Interesting Lookup" +msgstr "Interesting Lookup" + +#: scanEngine/templates/scanEngine/lookup.html:30 +msgid "" +"reNgine supports lookup for interesting keyword in recon data. This could be " +"either looking up in subdomains, URLs or in page title.\n" +" You can enter the keywords to lookup and reNgine will highlight " +"the matched entries." +msgstr "" +"reNgine supports lookup for interesting keyword in recon data. This could be " +"either looking up in subdomains, URLs or in page title.\n" +" You can enter the keywords to lookup and reNgine will highlight " +"the matched entries." + +#: scanEngine/templates/scanEngine/lookup.html:34 +msgid "Keywords are case insensitive." +msgstr "HTTP Status is 200" + +#: scanEngine/templates/scanEngine/lookup.html:36 +msgid "Default Keywords" +msgstr "Update Lookup" + +#: scanEngine/templates/scanEngine/lookup.html:37 +msgid "" +"reNgine will use these default keywords to find the interesting subdomains " +"or URLs from recon data." +msgstr "" +"reNgine will use these default keywords to find the interesting subdomains " +"or URLs from recon data." + +#: scanEngine/templates/scanEngine/lookup.html:45 +msgid "Custom Keywords" +msgstr "Custom Keywords" + +#: scanEngine/templates/scanEngine/lookup.html:48 +msgid "Interesting Keywords to look for" +msgstr "Interesting Keywords to look for" + +#: scanEngine/templates/scanEngine/lookup.html:52 +msgid "Please use a comma (,) to separate the keywords." +msgstr "Please use a comma (,) to separate the keywords." + +#: scanEngine/templates/scanEngine/lookup.html:53 +msgid "Lookup in" +msgstr "Lookup in" + +#: scanEngine/templates/scanEngine/lookup.html:56 +msgid "Subdomains/URLs" +msgstr "Subdomains/URLs" + +#: scanEngine/templates/scanEngine/lookup.html:59 +msgid "Page Title" +msgstr "Page Title" + +#: scanEngine/templates/scanEngine/lookup.html:60 +msgid "Lookup Conditions" +msgstr "Lookup Conditions" + +#: scanEngine/templates/scanEngine/lookup.html:61 +msgid "reNgine will lookup the keywords only when below conditions are met." +msgstr "reNgine will lookup the keywords only when below conditions are met." + +#: scanEngine/templates/scanEngine/lookup.html:62 +msgid "Lookup only when" +msgstr "Lookup only when" + +#: scanEngine/templates/scanEngine/lookup.html:64 +msgid "HTTP Status is 200" +msgstr "HTTP Status is 200" + +#: scanEngine/templates/scanEngine/lookup.html:65 +msgid "Update Lookup" +msgstr "Update Lookup" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:4 +msgid "Tool Name" +msgstr "Tool Name" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:4 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:28 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:53 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:62 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:79 +msgid "Required" +msgstr "Required" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:15 +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:74 +msgid "Tool Category" +msgstr "Tool Category" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:17 +msgid "Does this tool gathers subdomains?" +msgstr "Does this tool gathers subdomains?" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:23 +msgid "" +"If you have chosen this tool as subdomain gathering tool, you'll be able to " +"use it in scan engine configuration and provide this tool name inside" +msgstr "" +"If you have chosen this tool as subdomain gathering tool, you'll be able to " +"use it in scan engine configuration and provide this tool name inside" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:23 +msgid "" +"If not, you will still be able to use this tool in our custom scripting " +"engine." +msgstr "" +"If not, you will still be able to use this tool in our custom scripting " +"engine." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:28 +msgid "Github URL" +msgstr "Github URL" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:30 +msgid "Github URL is required to check the recent releases and updates." +msgstr "Github URL is required to check the recent releases and updates." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:41 +msgid "Tool Logo (URL)" +msgstr "Tool Logo (URL)" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:41 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:47 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:86 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:105 +msgid "Optional" +msgstr "Optional" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:47 +msgid "Tool License URL" +msgstr "Tool License URL" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:53 +msgid "Description" +msgstr "Description" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:57 +msgid "Tool Installation Process" +msgstr "Tool Installation Process" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:59 +msgid "" +"Please note that any commands here will directly execute in shell, so please " +"be careful of the commands you are using." +msgstr "" +"Please note that any commands here will directly execute in shell, so please " +"be careful of the commands you are using." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:62 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:79 +msgid "Installation Command" +msgstr "Installation Command" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:66 +msgid "" +"If the tool has to be installed using github clone, then your installation " +"command would be" +msgstr "" +"If the tool has to be installed using github clone, then your installation " +"command would be" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:71 +msgid "" +"If the tool has to be installed using go, the your installation command " +"would be" +msgstr "" +"If the tool has to be installed using go, the your installation command " +"would be" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:75 +msgid "" +"Please note that, go get command is no longer supported by go. Instead you " +"should use go install." +msgstr "" +"Please note that, go get command is no longer supported by go. Instead you " +"should use go install." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:75 +msgid "Learn why!" +msgstr "Learn why!" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:86 +msgid "How does this tool update?" +msgstr "How does this tool update?" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:89 +msgid "If the tool was installed using git clone, it is recommended to use" +msgstr "If the tool was installed using git clone, it is recommended to use" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:89 +msgid "for updating." +msgstr "for updating." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:90 +msgid "" +"If the tool was installed using go, it is recommended to use the same " +"command as go install." +msgstr "" +"If the tool was installed using go, it is recommended to use the same " +"command as go install." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:92 +msgid "" +"If update command is not provided, you will not be able to update the tools." +msgstr "" +"If update command is not provided, you will not be able to update the tools." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:94 +msgid "Update command" +msgstr "Update command" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:105 +msgid "How do you check the version in this tool?" +msgstr "How do you check the version in this tool?" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:107 +msgid "" +"reNgine will use this command to check the version of the tool and let you " +"know if there is any update available. Most tools will display the version " +"either of these ways" +msgstr "" +"reNgine will use this command to check the version of the tool and let you " +"know if there is any update available. Most tools will display the version " +"either of these ways" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:114 +msgid "" +"You can provide these commands depending on your tool, and reNgine will " +"identify the version number." +msgstr "" +"You can provide these commands depending on your tool, and reNgine will " +"identify the version number." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:116 +msgid "Version Lookup Command" +msgstr "Version Lookup Command" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:117 +msgid "(We have auto generated this for you based on your installation steps)" +msgstr "(We have auto generated this for you based on your installation steps)" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:128 +msgid "Version match regex (Optional)" +msgstr "Version match regex (Optional)" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:130 +msgid "" +"reNgine needs version match regex to find out if there is any update " +"available or not. You can check how the tool displays the version number and " +"we can generate the regex for you, or you can do that manually as well." +msgstr "" +"reNgine needs version match regex to find out if there is any update " +"available or not. You can check how the tool displays the version number and " +"we can generate the regex for you, or you can do that manually as well." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:132 +msgid "" +"If version regex is not given, reNgine will not be able to check the updates " +"automatically. However, you can still force update the tools." +msgstr "" +"If version regex is not given, reNgine will not be able to check the updates " +"automatically. However, you can still force update the tools." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:134 +msgid "" +"Additionally, we can also generate the version regext for you. You can " +"select how this tool displays the version number." +msgstr "" +"Additionally, we can also generate the version regext for you. You can " +"select how this tool displays the version number." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:134 +msgid "See, how the tool names the release version." +msgstr "See, how the tool names the release version." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:136 +msgid "v1.2 / V1.2 / 1.2" +msgstr "v1.2 / V1.2 / 1.2" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:137 +msgid "v1.2.3 / V1.2.3 / 1.2.3" +msgstr "v1.2.3 / V1.2.3 / 1.2.3" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:138 +msgid "v1.2.3.4 / V1.2.3.4 / 1.2.3.4" +msgstr "v1.2.3.4 / V1.2.3.4 / 1.2.3.4" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:141 +msgid "Version Regex" +msgstr "Version Regex" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:151 +msgid "Subdomain Gathering Tool Additional Information" +msgstr "Subdomain Gathering Tool Additional Information" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:152 +msgid "" +"Please note that this subdomain gathering tool must support subdomain output " +"in the form of txt file." +msgstr "" +"Please note that this subdomain gathering tool must support subdomain output " +"in the form of txt file." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:153 +msgid "" +"Since you have chosen this tool as subdomain gathering tool, we require " +"additional information on how this tool runs." +msgstr "" +"Since you have chosen this tool as subdomain gathering tool, we require " +"additional information on how this tool runs." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:156 +msgid "" +"reNgine needs to know how this tool accepts target and output the subdomain " +"results." +msgstr "" +"reNgine needs to know how this tool accepts target and output the subdomain " +"results." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:157 +#, python-brace-format +msgid "" +"Use the below syntax wherever required, but remember that {TARGET} and {OUTPUT} are mandatory placeholders." +msgstr "" +"Use the below syntax wherever required, but remember that {TARGET} and {OUTPUT} are mandatory placeholders." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:159 +msgid "" +"(mandatory), Use this for the command-line arg that takes in domain as input " +"target. Example." +msgstr "" +"(mandatory), Use this for the command-line arg that takes in domain as input " +"target. Example." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:160 +msgid "" +"(mandatory), Use this for the command-line arg that takes the output arg. " +"Example." +msgstr "" +"(mandatory), Use this for the command-line arg that takes the output arg. " +"Example." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:161 +msgid ", Use this if your tool is github cloned. Example." +msgstr ", Use this if your tool is github cloned. Example." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:162 +msgid ", Use this if your tool supports proxy. Example." +msgstr ", Use this if your tool supports proxy. Example." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:164 +msgid "" +"You can use the combinations of the above syntax and also you can use any " +"other command-line argument that your tool supports." +msgstr "" +"You can use the combinations of the above syntax and also you can use any " +"other command-line argument that your tool supports." + +#: scanEngine/templates/scanEngine/settings/add_tool.html:6 +#: scanEngine/templates/scanEngine/settings/add_tool.html:13 +#: scanEngine/templates/scanEngine/settings/add_tool.html:16 +#: scanEngine/templates/scanEngine/settings/add_tool.html:30 +msgid "Add Tool" +msgstr "Add Tool" + +#: scanEngine/templates/scanEngine/settings/add_tool.html:12 +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:7 +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:15 +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:19 +#: scanEngine/templates/scanEngine/settings/update_tool.html:11 +msgid "Tool Arsenal" +msgstr "Tool Arsenal" + +#: scanEngine/templates/scanEngine/settings/api.html:7 +#: scanEngine/templates/scanEngine/settings/rengine.html:7 +#: scanEngine/templates/scanEngine/settings/rengine.html:15 +#: scanEngine/templates/scanEngine/settings/rengine.html:19 +msgid "reNgine Settings" +msgstr "reNgine Settings" + +#: scanEngine/templates/scanEngine/settings/api.html:14 +#: scanEngine/templates/scanEngine/settings/hackerone.html:15 +#: scanEngine/templates/scanEngine/settings/hackerone.html:17 +#: scanEngine/templates/scanEngine/settings/notification.html:17 +#: scanEngine/templates/scanEngine/settings/proxy.html:14 +#: scanEngine/templates/scanEngine/settings/rengine.html:14 +#: scanEngine/templates/scanEngine/settings/report.html:18 +#: scanEngine/templates/scanEngine/settings/tool.html:14 +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:14 +msgid "Settings" +msgstr "Settings" + +#: scanEngine/templates/scanEngine/settings/api.html:15 +#: scanEngine/templates/scanEngine/settings/api.html:19 +msgid "API Vault" +msgstr "API Vault" + +#: scanEngine/templates/scanEngine/settings/api.html:32 +msgid "OpenAI" +msgstr "OpenAI" + +#: scanEngine/templates/scanEngine/settings/api.html:32 +#: scanEngine/templates/scanEngine/settings/notification.html:130 +#: scanEngine/templates/scanEngine/settings/notification.html:145 +msgid "Recommended" +msgstr "Recommended" + +#: scanEngine/templates/scanEngine/settings/api.html:32 +msgid "Experimental" +msgstr "Experimental" + +#: scanEngine/templates/scanEngine/settings/api.html:33 +msgid "" +"OpenAI keys will be used to generate vulnerability description, remediation, " +"impact and vulnerability report writing using ChatGPT." +msgstr "" +"OpenAI keys will be used to generate vulnerability description, remediation, " +"impact and vulnerability report writing using ChatGPT." + +#: scanEngine/templates/scanEngine/settings/api.html:34 +msgid "Enter OpenAI Key" +msgstr "Enter OpenAI Key" + +#: scanEngine/templates/scanEngine/settings/api.html:35 +msgid "This is optional but recommended." +msgstr "This is optional but recommended." + +#: scanEngine/templates/scanEngine/settings/api.html:38 +msgid "Netlas" +msgstr "Netlas" + +#: scanEngine/templates/scanEngine/settings/api.html:39 +msgid "Netlas keys will be used to get whois information and other OSINT data." +msgstr "" +"Netlas keys will be used to get whois information and other OSINT data." + +#: scanEngine/templates/scanEngine/settings/api.html:40 +msgid "Enter Netlas Key" +msgstr "Enter Netlas Key" + +#: scanEngine/templates/scanEngine/settings/api.html:41 +msgid "This is optional" +msgstr "This is optional" + +#: scanEngine/templates/scanEngine/settings/api.html:44 +msgid "Update API Keys" +msgstr "Update API Keys" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:8 +#: scanEngine/templates/scanEngine/settings/hackerone.html:16 +msgid "Hackerone Settings" +msgstr "Hackerone Settings" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:21 +msgid "HackerOne Settings" +msgstr "HackerOne Settings" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:28 +msgid "Hackerone Automatic Vulnerability Report Settings" +msgstr "Hackerone Automatic Vulnerability Report Settings" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:30 +msgid "Use this feature with caution! Please do not spam triagers!" +msgstr "Use this feature with caution! Please do not spam triagers!" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:31 +msgid "" +"We do not allow sending vulnerability report for low severity and " +"informational vulnerabilities to avoid spamming triagers!" +msgstr "" +"We do not allow sending vulnerability report for low severity and " +"informational vulnerabilities to avoid spamming triagers!" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:32 +msgid "You can send them manually from Vulnerability Section inside reNgine." +msgstr "You can send them manually from Vulnerability Section inside reNgine." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:34 +msgid "" +"reNgine Automatically Reports vulnerabilities to your bug bounty programs on " +"Hackerone, if any vulnerabilities are identified." +msgstr "" +"reNgine Automatically Reports vulnerabilities to your bug bounty programs on " +"Hackerone, if any vulnerabilities are identified." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:35 +msgid "A valid Hackerone API token and username is required." +msgstr "A valid Hackerone API token and username is required." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:36 +msgid "More details on how to generate your hackerone api token is provided by" +msgstr "" +"More details on how to generate your hackerone api token is provided by" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:36 +msgid "Hackerone Documentation" +msgstr "Hackerone Documentation" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:41 +msgid "Your Hackerone Username (Not email)" +msgstr "Your Hackerone Username (Not email)" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:44 +msgid "Generate your" +msgstr "Generate your" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:44 +msgid "API Token from here" +msgstr "API Token from here" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:48 +msgid "Test my hackerone api key" +msgstr "Test my hackerone api key" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:50 +msgid "Report Vulnerability to hackerone when" +msgstr "Report Vulnerability to hackerone when" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:53 +msgid "Critical Severity is found. (Default)" +msgstr "Critical Severity is found. (Default)" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:57 +msgid "High Severity is found. (Default)" +msgstr "High Severity is found. (Default)" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:61 +msgid "Medium Severity is found." +msgstr "Medium Severity is found." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:65 +msgid "Vulnerability Report Template" +msgstr "Vulnerability Report Template" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:67 +msgid "" +"You can customize the vulnerability report template using markdown language. " +"Replace the below syntax wherever you require. Curly braces are must!" +msgstr "" +"You can customize the executive summary and methodology template using " +"markdown. Replace the below syntax wherever you require." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:70 +msgid "Vulnerability Title/Name." +msgstr "Vulnerability Title/Name." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:71 +msgid "Vulnerable URL." +msgstr "Vulnerable URL." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:72 +msgid "Vulnerability Severity." +msgstr "Vulnerability Severity." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:73 +msgid "Description of vulnerability generated by Nuclei." +msgstr "Description of vulnerability generated by Nuclei." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:74 +msgid "Vulnerability Results extracted by Nuclei." +msgstr "Vulnerability Results extracted by Nuclei." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:75 +msgid "Additional Reference to vulnerability." +msgstr "Additional Reference to vulnerability." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:79 +msgid "Save" +msgstr "Save" + +#: scanEngine/templates/scanEngine/settings/notification.html:7 +#: scanEngine/templates/scanEngine/settings/notification.html:18 +#: scanEngine/templates/scanEngine/settings/notification.html:22 +msgid "Notification Settings" +msgstr "Notification Settings" + +#: scanEngine/templates/scanEngine/settings/notification.html:30 +msgid "Send Notifications to:" +msgstr "Send Notifications to:" + +#: scanEngine/templates/scanEngine/settings/notification.html:34 +msgid "Slack" +msgstr "Slack" + +#: scanEngine/templates/scanEngine/settings/notification.html:76 +msgid "Discord Webhook API Documentation" +msgstr "Discord Webhook API Documentation" + +#: scanEngine/templates/scanEngine/settings/notification.html:80 +msgid "Telegram" +msgstr "Telegram" + +#: scanEngine/templates/scanEngine/settings/notification.html:102 +msgid "How to Create Telegram Bot" +msgstr "How to Create Telegram Bot" + +#: scanEngine/templates/scanEngine/settings/notification.html:106 +msgid "Send me notification for" +msgstr "Send me notification for" + +#: scanEngine/templates/scanEngine/settings/notification.html:109 +msgid "Scan related updates (e.g. Scan initiated, Scan completed)" +msgstr "Scan related updates (e.g. Scan initiated, Scan completed)" + +#: scanEngine/templates/scanEngine/settings/notification.html:112 +msgid "Interesting subdomains" +msgstr "Interesting subdomains" + +#: scanEngine/templates/scanEngine/settings/notification.html:115 +msgid "Vulnerabilities Found" +msgstr "Vulnerabilities Found" + +#: scanEngine/templates/scanEngine/settings/notification.html:117 +msgid "*Informational vulnerabilities will not be notified." +msgstr "*Informational vulnerabilities will not be notified." + +#: scanEngine/templates/scanEngine/settings/notification.html:121 +msgid "Subdomain changes" +msgstr "Subdomain changes" + +#: scanEngine/templates/scanEngine/settings/notification.html:124 +msgid "" +"(e.g. when new Subdomains are discovered or subdomains are no longer " +"available)" +msgstr "" +"(e.g. when new Subdomains are discovered or subdomains are no longer " +"available)" + +#: scanEngine/templates/scanEngine/settings/notification.html:130 +#: scanEngine/templates/scanEngine/settings/notification.html:145 +msgid "Upload Scan Results" +msgstr "Upload Scan Results" + +#: scanEngine/templates/scanEngine/settings/notification.html:134 +msgid "Send scan output (e.g. Subdomain gathered file)" +msgstr "Send scan output (e.g. Subdomain gathered file)" + +#: scanEngine/templates/scanEngine/settings/notification.html:136 +#: scanEngine/templates/scanEngine/settings/notification.html:151 +msgid "Discord only" +msgstr "Discord only" + +#: scanEngine/templates/scanEngine/settings/notification.html:139 +msgid "(upload scan results to your Discord)" +msgstr "(upload scan results to your Discord)" + +#: scanEngine/templates/scanEngine/settings/notification.html:149 +msgid "Send tasks tracebacks" +msgstr "Send tasks tracebacks" + +#: scanEngine/templates/scanEngine/settings/notification.html:154 +msgid "(upload task failed tasks tracebacks to your Discord)" +msgstr "(upload task failed tasks tracebacks to your Discord)" + +#: scanEngine/templates/scanEngine/settings/notification.html:161 +msgid "Save & Test Notification" +msgstr "Save & Test Notification" + +#: scanEngine/templates/scanEngine/settings/notification.html:164 +msgid "*Once saved, a test message will be sent to all the enabled services." +msgstr "*Once saved, a test message will be sent to all the enabled services." + +#: scanEngine/templates/scanEngine/settings/proxy.html:7 +#: scanEngine/templates/scanEngine/settings/proxy.html:15 +#: scanEngine/templates/scanEngine/settings/proxy.html:19 +#: scanEngine/templates/scanEngine/settings/proxy.html:27 +msgid "Proxy Settings" +msgstr "Proxy Settings" + +#: scanEngine/templates/scanEngine/settings/proxy.html:28 +msgid "" +"Every website has a limit to certain number of requests allowed for a " +"certain period of time from an particular IP Address, exceeding the limit " +"will block any incoming requests from that particular IP Address for a " +"specific period of time.\n" +" This results in unreliable recon results. Suppose if you were to " +"run Nuclei on a particular target with all the templates, your IP is likely " +"to get banned because of the number of requests made by Nuclei." +msgstr "" +"Every website has a limit to certain number of requests allowed for a " +"certain period of time from an particular IP Address, exceeding the limit " +"will block any incoming requests from that particular IP Address for a " +"specific period of time.\n" +" This results in unreliable recon results. Suppose if you were to " +"run Nuclei on a particular target with all the templates, your IP is likely " +"to get banned because of the number of requests made by Nuclei." + +#: scanEngine/templates/scanEngine/settings/proxy.html:31 +msgid "" +"And this is especially true for dorking and other OSINT reNgine does. After " +"certain dorking attempts Google is likely to ban your IP for certain period " +"of time." +msgstr "" +"And this is especially true for dorking and other OSINT reNgine does. After " +"certain dorking attempts Google is likely to ban your IP for certain period " +"of time." + +#: scanEngine/templates/scanEngine/settings/proxy.html:34 +msgid "Using proxies is recommended." +msgstr "Using proxies is recommended." + +#: scanEngine/templates/scanEngine/settings/proxy.html:40 +msgid "Use Proxy" +msgstr "Use Proxy" + +#: scanEngine/templates/scanEngine/settings/proxy.html:42 +msgid "Proxy List" +msgstr "Proxy List" + +#: scanEngine/templates/scanEngine/settings/proxy.html:43 +msgid "You can enter as many proxies as you want, reNgine will" +msgstr "You can enter as many proxies as you want, reNgine will" + +#: scanEngine/templates/scanEngine/settings/proxy.html:43 +msgid "randomly" +msgstr "randomly" + +#: scanEngine/templates/scanEngine/settings/proxy.html:43 +msgid "pick one among them during the scan." +msgstr "pick one among them during the scan." + +#: scanEngine/templates/scanEngine/settings/proxy.html:44 +msgid "Separate the proxies by new line." +msgstr "Separate the proxies by new line." + +#: scanEngine/templates/scanEngine/settings/proxy.html:46 +msgid "Save Proxies" +msgstr "Save Proxies" + +#: scanEngine/templates/scanEngine/settings/rengine.html:27 +#: scanEngine/templates/scanEngine/settings/rengine.html:34 +msgid "Danger Zone" +msgstr "Danger Zone" + +#: scanEngine/templates/scanEngine/settings/rengine.html:31 +msgid "Total Storage:" +msgstr "Total Storage:" + +#: scanEngine/templates/scanEngine/settings/rengine.html:31 +#, python-format +msgid "%(totalSpaceSize)s Gb" +msgstr "%(totalSpaceSize)s Gb" + +#: scanEngine/templates/scanEngine/settings/rengine.html:31 +msgid "Used Space:" +msgstr "Used Space:" + +#: scanEngine/templates/scanEngine/settings/rengine.html:31 +#, python-format +msgid "%(usedSpaceSize)s Gb" +msgstr "%(usedSpaceSize)s Gb" + +#: scanEngine/templates/scanEngine/settings/rengine.html:31 +msgid "Free Space:" +msgstr "Free Space:" + +#: scanEngine/templates/scanEngine/settings/rengine.html:31 +#, python-format +msgid "%(freeSpaceSize)s Gb" +msgstr "%(freeSpaceSize)s Gb" + +#: scanEngine/templates/scanEngine/settings/rengine.html:39 +msgid "Delete all scan results" +msgstr "Delete all scan results" + +#: scanEngine/templates/scanEngine/settings/rengine.html:42 +msgid "Once you delete all scan results, there is no going back." +msgstr "Once you delete all scan results, there is no going back." + +#: scanEngine/templates/scanEngine/settings/rengine.html:43 +msgid "" +"This will delete all the scan history and also screenshots and likely to " +"free up disk space." +msgstr "" +"This will delete all the scan history and also screenshots and likely to " +"free up disk space." + +#: scanEngine/templates/scanEngine/settings/rengine.html:47 +msgid "Delete All Scan Results" +msgstr "Delete All Scan Results" + +#: scanEngine/templates/scanEngine/settings/rengine.html:54 +msgid "Delete all Screenshots" +msgstr "Delete all Screenshots" + +#: scanEngine/templates/scanEngine/settings/rengine.html:57 +msgid "" +"Once you delete all screenshots, you are likely to free up some disk space." +msgstr "" +"Once you delete all screenshots, you are likely to free up some disk space." + +#: scanEngine/templates/scanEngine/settings/rengine.html:58 +msgid "Scan history will not be able to show any screenshots after deleted." +msgstr "Scan history will not be able to show any screenshots after deleted." + +#: scanEngine/templates/scanEngine/settings/rengine.html:62 +msgid "Delete All Screenshots" +msgstr "Delete All Screenshots" + +#: scanEngine/templates/scanEngine/settings/report.html:8 +#: scanEngine/templates/scanEngine/settings/report.html:19 +#: scanEngine/templates/scanEngine/settings/report.html:31 +msgid "Customize Report" +msgstr "Customize Report" + +#: scanEngine/templates/scanEngine/settings/report.html:23 +msgid "reNgine PDF Report Settings" +msgstr "reNgine PDF Report Settings" + +#: scanEngine/templates/scanEngine/settings/report.html:32 +msgid "" +"reNgine allows you to generate PDF report. PDF reports are fully " +"customizable. While downloading PDF Report, you can choose whether to " +"download Vulnerability Report or Reconnaissance Report or both." +msgstr "" +"reNgine allows you to generate PDF report. PDF reports are fully " +"customizable. While downloading PDF Report, you can choose whether to " +"download Vulnerability Report or Reconnaissance Report or both." + +#: scanEngine/templates/scanEngine/settings/report.html:33 +msgid "" +"This section allows you to customize the report, such as colors, and " +"sections to include in the report." +msgstr "" +"This section allows you to customize the report, such as colors, and " +"sections to include in the report." + +#: scanEngine/templates/scanEngine/settings/report.html:37 +msgid "Color" +msgstr "Color" + +#: scanEngine/templates/scanEngine/settings/report.html:41 +msgid "Primary Color" +msgstr "Primary Color" + +#: scanEngine/templates/scanEngine/settings/report.html:43 +msgid "" +"(Primary Color is the color used for the Main Title, Footer Background and " +"Page Counters.)" +msgstr "" +"(Primary Color is the color used for the Main Title, Footer Background and " +"Page Counters.)" + +#: scanEngine/templates/scanEngine/settings/report.html:54 +msgid "Secondary Color" +msgstr "Secondary Color" + +#: scanEngine/templates/scanEngine/settings/report.html:56 +msgid "(Secondary color is currently being used for cover background.)" +msgstr "(Secondary color is currently being used for cover background.)" + +#: scanEngine/templates/scanEngine/settings/report.html:66 +msgid "Report Generated by" +msgstr "Report Generated by" + +#: scanEngine/templates/scanEngine/settings/report.html:77 +msgid "Company Website" +msgstr "Company Website" + +#: scanEngine/templates/scanEngine/settings/report.html:81 +msgid "Company Email" +msgstr "Company Email" + +#: scanEngine/templates/scanEngine/settings/report.html:86 +msgid "Show Footer Text?" +msgstr "Show Footer Text?" + +#: scanEngine/templates/scanEngine/settings/report.html:91 +msgid "" +"This could be copyright text, or year of generation and the placement for " +"footer text is bottom left." +msgstr "" +"This could be copyright text, or year of generation and the placement for " +"footer text is bottom left." + +#: scanEngine/templates/scanEngine/settings/report.html:92 +msgid "Footer Text" +msgstr "Footer Text" + +#: scanEngine/templates/scanEngine/settings/report.html:95 +msgid "Show reNgine Banner/Credits?" +msgstr "Show reNgine Banner/Credits?" + +#: scanEngine/templates/scanEngine/settings/report.html:100 +msgid "If turned on, generated report will contain 'Generated by reNgine'." +msgstr "If turned on, generated report will contain 'Generated by reNgine'." + +#: scanEngine/templates/scanEngine/settings/report.html:102 +msgid "Show Executive Summary?" +msgstr "Show Executive Summary?" + +#: scanEngine/templates/scanEngine/settings/report.html:107 +msgid "" +"If turned on, reNgine will include Executive Summary in the report. You can " +"customize the executive summary section." +msgstr "" +"If turned on, reNgine will include Executive Summary in the report. You can " +"customize the executive summary section." + +#: scanEngine/templates/scanEngine/settings/report.html:109 +msgid "" +"Please note that, the Executive Summary section will appear before quick " +"summary." +msgstr "" +"Please note that, the Executive Summary section will appear before quick " +"summary." + +#: scanEngine/templates/scanEngine/settings/report.html:111 +msgid "" +"You can customize the executive summary and methodology template using " +"markdown. Replace the below syntax wherever you require." +msgstr "" +"You can customize the executive summary and methodology template using " +"markdown. Replace the below syntax wherever you require." + +#: scanEngine/templates/scanEngine/settings/report.html:111 +msgid "Curly braces are must!" +msgstr "Curly braces are must!" + +#: scanEngine/templates/scanEngine/settings/report.html:112 +msgid "Executive Summary Syntax" +msgstr "Executive Summary Syntax" + +#: scanEngine/templates/scanEngine/settings/report.html:114 +msgid "Target Scan Date Ex. 25 June, 2020 ." +msgstr "Target Scan Date Ex. 25 June, 2020 ." + +#: scanEngine/templates/scanEngine/settings/report.html:115 +msgid "Company which performed Vulnerability/Reconnaissance Audit." +msgstr "Company which performed Vulnerability/Reconnaissance Audit." + +#: scanEngine/templates/scanEngine/settings/report.html:116 +msgid "Target Domain Name." +msgstr "Target Domain Name." + +#: scanEngine/templates/scanEngine/settings/report.html:117 +msgid "Target Description." +msgstr "Target Description." + +#: scanEngine/templates/scanEngine/settings/report.html:118 +msgid "Total number of subdomains discovered." +msgstr "Total number of subdomains discovered." + +#: scanEngine/templates/scanEngine/settings/report.html:119 +msgid "Total number of Vulnerabilities identified." +msgstr "Total number of Vulnerabilities identified." + +#: scanEngine/templates/scanEngine/settings/report.html:120 +msgid "Total number of Critical Severity Vulnerabilities identified." +msgstr "Total number of Critical Severity Vulnerabilities identified." + +#: scanEngine/templates/scanEngine/settings/report.html:121 +msgid "Total number of High Severity Vulnerabilities identified." +msgstr "Total number of High Severity Vulnerabilities identified." + +#: scanEngine/templates/scanEngine/settings/report.html:122 +msgid "Total number of Medium Severity Vulnerabilities identified." +msgstr "Total number of Medium Severity Vulnerabilities identified." + +#: scanEngine/templates/scanEngine/settings/report.html:123 +msgid "Total number of Low Severity Vulnerabilities identified." +msgstr "Total number of Low Severity Vulnerabilities identified." + +#: scanEngine/templates/scanEngine/settings/report.html:124 +msgid "Total number of Informational Vulnerabilities identified." +msgstr "Total number of Informational Vulnerabilities identified." + +#: scanEngine/templates/scanEngine/settings/report.html:125 +msgid "Total number of Vulnerabilities with Unknown Severity identified." +msgstr "Total number of Vulnerabilities with Unknown Severity identified." + +#: scanEngine/templates/scanEngine/settings/report.html:130 +msgid "Save Report Settings" +msgstr "Save Report Settings" + +#: scanEngine/templates/scanEngine/settings/tool.html:7 +#: scanEngine/templates/scanEngine/settings/tool.html:19 +msgid "Settings, API Keys & Tool Settings" +msgstr "Settings, API Keys & Tool Settings" + +#: scanEngine/templates/scanEngine/settings/tool.html:15 +msgid "Tool Specific Settings" +msgstr "Tool Specific Settings" + +#: scanEngine/templates/scanEngine/settings/tool.html:27 +msgid "GF Patterns" +msgstr "GF Patterns" + +#: scanEngine/templates/scanEngine/settings/tool.html:29 +msgid "" +"This section lets you upload custom gf patterns. You can find more " +"information about the" +msgstr "" +"This section lets you upload custom gf patterns. You can find more " +"information about the" + +#: scanEngine/templates/scanEngine/settings/tool.html:29 +msgid "GF Tool here" +msgstr "GF Tool here" + +#: scanEngine/templates/scanEngine/settings/tool.html:31 +msgid "" +"Please note that only json files are supported and the name of the pattern " +"will be the filename." +msgstr "" +"Please note that only json files are supported and the name of the pattern " +"will be the filename." + +#: scanEngine/templates/scanEngine/settings/tool.html:32 +msgid "If the pattern name is" +msgstr "If the pattern name is" + +#: scanEngine/templates/scanEngine/settings/tool.html:32 +msgid "the pattern name is" +msgstr "the pattern name is" + +#: scanEngine/templates/scanEngine/settings/tool.html:32 +msgid "and this has to be used this in YAML configuration." +msgstr "and this has to be used this in YAML configuration." + +#: scanEngine/templates/scanEngine/settings/tool.html:34 +msgid "Currently available GF patterns" +msgstr "Currently available GF patterns" + +#: scanEngine/templates/scanEngine/settings/tool.html:37 +msgid "Click to View Pattern" +msgstr "Click to View Pattern" + +#: scanEngine/templates/scanEngine/settings/tool.html:43 +msgid "Upload GF Pattern JSON" +msgstr "Upload GF Pattern JSON" + +#: scanEngine/templates/scanEngine/settings/tool.html:46 +#: scanEngine/templates/scanEngine/settings/tool.html:120 +msgid "Upload" +msgstr "Upload" + +#: scanEngine/templates/scanEngine/settings/tool.html:52 +#: scanEngine/templates/scanEngine/settings/tool.html:54 +msgid "Subfinder" +msgstr "Subfinder" + +#: scanEngine/templates/scanEngine/settings/tool.html:54 +#: scanEngine/templates/scanEngine/settings/tool.html:69 +#: scanEngine/templates/scanEngine/settings/tool.html:141 +#: scanEngine/templates/scanEngine/settings/tool.html:156 +msgid "This section lets you modify" +msgstr "This section lets you modify" + +#: scanEngine/templates/scanEngine/settings/tool.html:54 +#: scanEngine/templates/scanEngine/settings/tool.html:69 +#: scanEngine/templates/scanEngine/settings/tool.html:141 +#: scanEngine/templates/scanEngine/settings/tool.html:156 +msgid "config file. You can find more information about the" +msgstr "config file. You can find more information about the" + +#: scanEngine/templates/scanEngine/settings/tool.html:54 +msgid "Subfinder config here." +msgstr "Subfinder config here." + +#: scanEngine/templates/scanEngine/settings/tool.html:55 +#: scanEngine/templates/scanEngine/settings/tool.html:70 +#: scanEngine/templates/scanEngine/settings/tool.html:142 +#: scanEngine/templates/scanEngine/settings/tool.html:158 +msgid "Please note that only YAML config is supported." +msgstr "Please note that only YAML config is supported." + +#: scanEngine/templates/scanEngine/settings/tool.html:59 +msgid "Current Subfinder Configuration" +msgstr "Current Subfinder Configuration" + +#: scanEngine/templates/scanEngine/settings/tool.html:60 +#: scanEngine/templates/scanEngine/settings/tool.html:75 +#: scanEngine/templates/scanEngine/settings/tool.html:130 +#: scanEngine/templates/scanEngine/settings/tool.html:147 +#: scanEngine/templates/scanEngine/settings/tool.html:163 +msgid "Double click the configuration to edit." +msgstr "Double click the configuration to edit." + +#: scanEngine/templates/scanEngine/settings/tool.html:67 +#: scanEngine/templates/scanEngine/settings/tool.html:69 +msgid "Amass" +msgstr "Amass" + +#: scanEngine/templates/scanEngine/settings/tool.html:69 +msgid "Amass config here." +msgstr "Amass config here." + +#: scanEngine/templates/scanEngine/settings/tool.html:74 +msgid "Current Amass Configuration" +msgstr "Current Amass Configuration" + +#: scanEngine/templates/scanEngine/settings/tool.html:84 +msgid "Nuclei" +msgstr "Nuclei" + +#: scanEngine/templates/scanEngine/settings/tool.html:88 +msgid "Nuclei Patterns" +msgstr "Nuclei Patterns" + +#: scanEngine/templates/scanEngine/settings/tool.html:93 +msgid "Nuclei Config File" +msgstr "Nuclei Config File" + +#: scanEngine/templates/scanEngine/settings/tool.html:100 +msgid "" +"This section lets you upload Nuclei templates. You can find more information " +"about the" +msgstr "" +"This section lets you upload Nuclei templates. You can find more information " +"about the" + +#: scanEngine/templates/scanEngine/settings/tool.html:100 +msgid "Nuclei Templates here." +msgstr "Nuclei Templates here." + +#: scanEngine/templates/scanEngine/settings/tool.html:101 +msgid "" +"Please note that only YAML files are supported and the name of the pattern " +"will be the filename." +msgstr "" +"Please note that only YAML files are supported and the name of the pattern " +"will be the filename." + +#: scanEngine/templates/scanEngine/settings/tool.html:102 +msgid "If the template name is" +msgstr "If the template name is" + +#: scanEngine/templates/scanEngine/settings/tool.html:102 +msgid "then" +msgstr "then" + +#: scanEngine/templates/scanEngine/settings/tool.html:102 +msgid "is to be used this in YAML configuration." +msgstr "is to be used this in YAML configuration." + +#: scanEngine/templates/scanEngine/settings/tool.html:104 +msgid "Currently available custom Nuclei templates" +msgstr "Currently available custom Nuclei templates" + +#: scanEngine/templates/scanEngine/settings/tool.html:107 +msgid "Click to View Template" +msgstr "Click to View Template" + +#: scanEngine/templates/scanEngine/settings/tool.html:111 +msgid "No custom nuclei templates detected!" +msgstr "No custom nuclei templates detected!" + +#: scanEngine/templates/scanEngine/settings/tool.html:117 +msgid "Upload Nuclei Template YAML" +msgstr "Upload Nuclei Template YAML" + +#: scanEngine/templates/scanEngine/settings/tool.html:125 +msgid "" +"This section lets you configure Nuclei config file. You can find more " +"information about the" +msgstr "" +"This section lets you configure Nuclei config file. You can find more " +"information about the" + +#: scanEngine/templates/scanEngine/settings/tool.html:125 +msgid "Nuclei config here." +msgstr "Nuclei config here." + +#: scanEngine/templates/scanEngine/settings/tool.html:129 +msgid "Current Nuclei Configuration" +msgstr "Current Nuclei Configuration" + +#: scanEngine/templates/scanEngine/settings/tool.html:139 +#: scanEngine/templates/scanEngine/settings/tool.html:141 +msgid "Naabu" +msgstr "Naabu" + +#: scanEngine/templates/scanEngine/settings/tool.html:141 +msgid "Naabu config here." +msgstr "Naabu config here." + +#: scanEngine/templates/scanEngine/settings/tool.html:146 +msgid "Current Naabu Configuration" +msgstr "Current Naabu Configuration" + +#: scanEngine/templates/scanEngine/settings/tool.html:154 +msgid "theHarvester" +msgstr "theHarvester" + +#: scanEngine/templates/scanEngine/settings/tool.html:156 +msgid "the Harvester" +msgstr "the Harvester" + +#: scanEngine/templates/scanEngine/settings/tool.html:156 +msgid "the Harvester config here." +msgstr "the Harvester config here." + +#: scanEngine/templates/scanEngine/settings/tool.html:162 +msgid "Current theHarvester Configuration" +msgstr "Current theHarvester Configuration" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:25 +msgid "Add new tool" +msgstr "Add new tool" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:31 +msgid "All" +msgstr "All" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:34 +msgid "Default" +msgstr "Default" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:35 +msgid "Custom" +msgstr "Custom" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:52 +msgid "Default Tool" +msgstr "Default Tool" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:54 +msgid "Custom Tool" +msgstr "Custom Tool" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:60 +msgid "Uninstall Tool" +msgstr "Uninstall Tool" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:61 +#: scanEngine/templates/scanEngine/settings/update_tool.html:28 +msgid "Modify Tool" +msgstr "Modify Tool" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:68 +msgid "logo" +msgstr "logo" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:74 +msgid "Subdomain Enumeration Tool" +msgstr "Subdomain Enumeration Tool" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:78 +msgid "Tool Type" +msgstr "Tool Type" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:80 +msgid "Github" +msgstr "Github" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:82 +msgid "License" +msgstr "License" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:88 +msgid "Current Installed Version" +msgstr "Current Installed Version" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:97 +msgid "Check Update" +msgstr "Check Update" + +#: scanEngine/templates/scanEngine/settings/update_tool.html:6 +#: scanEngine/templates/scanEngine/settings/update_tool.html:12 +#: scanEngine/templates/scanEngine/settings/update_tool.html:15 +msgid "Update Tool" +msgstr "Update Tool" + +#: scanEngine/templates/scanEngine/update_engine.html:6 +#: scanEngine/templates/scanEngine/update_engine.html:27 +#: scanEngine/templates/scanEngine/update_engine.html:31 +#: scanEngine/templates/scanEngine/update_engine.html:39 +#: scanEngine/templates/scanEngine/update_engine.html:43 +msgid "Update Scan Engine" +msgstr "Update Scan Engine" + +#: scanEngine/templates/scanEngine/wordlist/add.html:6 +#: scanEngine/templates/scanEngine/wordlist/index.html:18 +#: scanEngine/templates/scanEngine/wordlist/index.html:30 +msgid "Add New Wordlist" +msgstr "Add New Wordlist" + +#: scanEngine/templates/scanEngine/wordlist/add.html:14 +#: scanEngine/templates/scanEngine/wordlist/index.html:6 +#: scanEngine/templates/scanEngine/wordlist/index.html:13 +msgid "Wordlist" +msgstr "Wordlist" + +#: scanEngine/templates/scanEngine/wordlist/add.html:15 +msgid "Add Worldlist" +msgstr "Add Worldlist" + +#: scanEngine/templates/scanEngine/wordlist/add.html:19 +msgid "Add New Wordlist for Bruteforce" +msgstr "Add New Wordlist for Bruteforce" + +#: scanEngine/templates/scanEngine/wordlist/add.html:27 +msgid "" +"Wordlist can be used for directory bruteforce or subdomain bruteforce. " +"Instructions on how to use the wordlist are" +msgstr "" +"Wordlist can be used for directory bruteforce or subdomain bruteforce. " +"Instructions on how to use the wordlist are" + +#: scanEngine/templates/scanEngine/wordlist/add.html:27 +msgid "found here" +msgstr "found here" + +#: scanEngine/templates/scanEngine/wordlist/add.html:32 +#: scanEngine/templates/scanEngine/wordlist/index.html:43 +msgid "Wordlist Name" +msgstr "Wordlist Name" + +#: scanEngine/templates/scanEngine/wordlist/add.html:36 +msgid "Short Name" +msgstr "Short Name" + +#: scanEngine/templates/scanEngine/wordlist/add.html:43 +msgid "" +"Please keep the short names without spaces, like my-wordlist or my_wordlist. " +"The short names will be later used to reference wordlist in the YAML " +"settings." +msgstr "" +"Please keep the short names without spaces, like my-wordlist or my_wordlist. " +"The short names will be later used to reference wordlist in the YAML " +"settings." + +#: scanEngine/templates/scanEngine/wordlist/add.html:46 +msgid "Select the wordlist file" +msgstr "Select the wordlist file" + +#: scanEngine/templates/scanEngine/wordlist/add.html:47 +msgid "" +"Your wordlist must be a *.txt file and wordlists must be separated by a new " +"line." +msgstr "" +"Your wordlist must be a *.txt file and wordlists must be separated by a new " +"line." + +#: scanEngine/templates/scanEngine/wordlist/add.html:50 +msgid "Choose *.txt file" +msgstr "Choose *.txt file" + +#: scanEngine/templates/scanEngine/wordlist/add.html:54 +msgid "Upload Wordlist" +msgstr "Upload Wordlist" + +#: scanEngine/templates/scanEngine/wordlist/index.html:14 +msgid "All Worldlists" +msgstr "All Worldlists" + +#: scanEngine/templates/scanEngine/wordlist/index.html:44 +msgid "Shortname" +msgstr "Shortname" + +#: scanEngine/templates/scanEngine/wordlist/index.html:45 +msgid "Wordlist Count" +msgstr "Wordlist Count" + +#: scanEngine/templates/scanEngine/wordlist/index.html:56 +msgid "Delete Wordlist" +msgstr "Delete Wordlist" + +#: scanEngine/views.py:42 +msgid "Scan Engine Added successfully" +msgstr "Scan Engine Added successfully" + +#: scanEngine/views.py:60 +msgid "Engine successfully deleted!" +msgstr "Engine successfully deleted!" + +#: scanEngine/views.py:66 +msgid "Oops! Engine could not be deleted!" +msgstr "Oops! Engine could not be deleted!" + +#: scanEngine/views.py:85 +msgid "Engine edited successfully" +msgstr "Engine edited successfully" + +#: scanEngine/views.py:126 +#, python-format +msgid "Wordlist %(wlistName)s added successfully" +msgstr "Wordlist %(wlistName)s added successfully" + +#: scanEngine/views.py:149 +msgid "Wordlist successfully deleted!" +msgstr "Wordlist successfully deleted!" + +#: scanEngine/views.py:155 +msgid "Oops! Wordlist could not be deleted!" +msgstr "Oops! Wordlist could not be deleted!" + +#: scanEngine/views.py:183 +msgid "Lookup Keywords updated successfully" +msgstr "Lookup Keywords updated successfully" + +#: scanEngine/views.py:205 +msgid "Invalid GF Pattern, upload only *.json extension" +msgstr "Invalid GF Pattern, upload only *.json extension" + +#: scanEngine/views.py:213 +#, python-format +msgid "GF Pattern %(patternName)s successfully uploaded" +msgstr "GF Pattern %(patternName)s successfully uploaded" + +#: scanEngine/views.py:220 +msgid "Invalid Nuclei Pattern, upload only *.yaml extension" +msgstr "Invalid Nuclei Pattern, upload only *.yaml extension" + +#: scanEngine/views.py:227 +#, python-format +msgid "Nuclei Pattern %(patternName)s successfully uploaded" +msgstr "Nuclei Pattern %(patternName)s successfully uploaded" + +#: scanEngine/views.py:233 +msgid "Nuclei config updated!" +msgstr "Nuclei config updated!" + +#: scanEngine/views.py:239 +msgid "Subfinder config updated!" +msgstr "Subfinder config updated!" + +#: scanEngine/views.py:245 +msgid "Naabu config updated!" +msgstr "Naabu config updated!" + +#: scanEngine/views.py:251 +msgid "Amass config updated!" +msgstr "Amass config updated!" + +#: scanEngine/views.py:257 +msgid "theHarvester config updated!" +msgstr "theHarvester config updated!" + +#: scanEngine/views.py:308 scanEngine/views.py:309 +msgid "" +"*reNgine*\n" +"Congratulations! your notification services are working." +msgstr "" +"*reNgine*\n" +"Congratulations! your notification services are working." + +#: scanEngine/views.py:310 +msgid "" +"**reNgine**\n" +"Congratulations! your notification services are working." +msgstr "" +"**reNgine**\n" +"Congratulations! your notification services are working." + +#: scanEngine/views.py:314 +msgid "Notification Settings updated successfully and test message was sent." +msgstr "" +"**reNgine**\n" +"Notification Settings updated successfully and test message was sent." + +#: scanEngine/views.py:349 +msgid "Proxies updated." +msgstr "Proxies updated." + +#: scanEngine/views.py:401 +msgid "Hackerone Settings updated." +msgstr "Hackerone Settings updated." + +#: scanEngine/views.py:439 +msgid "Report Settings updated." +msgstr "Report Settings updated." + +#: scanEngine/views.py:518 +msgid "External Tool Successfully Added!" +msgstr "External Tool Successfully Added!" + +#: scanEngine/views.py:538 +msgid "Tool modified successfully" +msgstr "Tool modified successfully" diff --git a/web/scanEngine/locale/en/LC_MESSAGES/djangojs.mo b/web/scanEngine/locale/en/LC_MESSAGES/djangojs.mo new file mode 100644 index 000000000..00f747976 Binary files /dev/null and b/web/scanEngine/locale/en/LC_MESSAGES/djangojs.mo differ diff --git a/web/scanEngine/locale/en/LC_MESSAGES/djangojs.po b/web/scanEngine/locale/en/LC_MESSAGES/djangojs.po new file mode 100644 index 000000000..60cc6675c --- /dev/null +++ b/web/scanEngine/locale/en/LC_MESSAGES/djangojs.po @@ -0,0 +1,198 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: scanEngine/static/scanEngine/js/custom_scan_engine.js:5 +msgid "Are you sure you want to delete this scan engine?" +msgstr "Are you sure you want to delete this scan engine?" + +#: scanEngine/static/scanEngine/js/custom_scan_engine.js:6 +msgid "You won't be able to revert this!" +msgstr "You won't be able to revert this!" + +#: scanEngine/static/scanEngine/js/custom_scan_engine.js:9 +msgid "Delete" +msgstr "Delete" + +#: scanEngine/static/scanEngine/js/custom_scan_engine.js:10 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:58 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:103 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:148 +msgid "Cancel" +msgstr "Cancel" + +#: scanEngine/static/scanEngine/js/custom_scan_engine.js:31 +msgid "Oops! Unable to delete" +msgstr "Oops! Unable to delete" + +#: scanEngine/static/scanEngine/js/custom_tools.js:20 +#: scanEngine/static/scanEngine/js/custom_tools.js:26 +#: scanEngine/static/scanEngine/js/custom_tools.js:51 +#: scanEngine/static/scanEngine/js/custom_tools.js:57 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:54 +msgid "Error!" +msgstr "Error!" + +#: scanEngine/static/scanEngine/js/custom_tools.js:21 +#: scanEngine/static/scanEngine/js/custom_tools.js:27 +#: scanEngine/static/scanEngine/js/custom_tools.js:52 +#: scanEngine/static/scanEngine/js/custom_tools.js:58 +msgid "Okay" +msgstr "Okay" + +#: scanEngine/static/scanEngine/js/custom_tools.js:26 +msgid "Error loading gf pattern!" +msgstr "Error loading gf pattern!" + +#: scanEngine/static/scanEngine/js/custom_tools.js:57 +msgid "Error loading Nuclei Template!" +msgstr "Error loading Nuclei Template!" + +#: scanEngine/static/scanEngine/js/custom_tools.js:70 +msgid "# Your nuclei configuration here." +msgstr "# Your nuclei configuration here." + +#: scanEngine/static/scanEngine/js/custom_tools.js:71 +#: scanEngine/static/scanEngine/js/custom_tools.js:77 +#: scanEngine/static/scanEngine/js/custom_tools.js:88 +#: scanEngine/static/scanEngine/js/custom_tools.js:94 +#: scanEngine/static/scanEngine/js/custom_tools.js:105 +#: scanEngine/static/scanEngine/js/custom_tools.js:111 +#: scanEngine/static/scanEngine/js/custom_tools.js:123 +#: scanEngine/static/scanEngine/js/custom_tools.js:129 +#: scanEngine/static/scanEngine/js/custom_tools.js:140 +#: scanEngine/static/scanEngine/js/custom_tools.js:146 +msgid "Save Changes" +msgstr "Save Changes" + +#: scanEngine/static/scanEngine/js/custom_tools.js:87 +msgid "# Your Subfinder configuration here." +msgstr "# Your Subfinder configuration here." + +#: scanEngine/static/scanEngine/js/custom_tools.js:104 +msgid "# Your Naabu configuration here." +msgstr "# Your Naabu configuration here." + +#: scanEngine/static/scanEngine/js/custom_tools.js:122 +msgid "# Your amass configuration here." +msgstr "# Your amass configuration here." + +#: scanEngine/static/scanEngine/js/custom_tools.js:139 +msgid "# Your the Harvester configuration here." +msgstr "# Your the Harvester configuration here." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:6 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:144 +msgid "Unable to fetch latest version!" +msgstr "Unable to fetch latest version!" + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:7 +msgid "" +"Since the version lookup command is invalid, reNgine is not able to detect " +"if there's a newer version. But you can still force download the latest " +"version." +msgstr "" +"Since the version lookup command is invalid, reNgine is not able to detect " +"if there's a newer version. But you can still force download the latest " +"version." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:14 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:62 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:108 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:153 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:190 +msgid "Downloading latest version..." +msgstr "Downloading latest version..." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:15 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:63 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:109 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:154 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:191 +msgid "This may take a few minutes." +msgstr "This may take a few minutes." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:43 +msgid "Finding latest version..." +msgstr "Finding latest version..." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:55 +msgid "" +"Github API rate limit exceeded, we can not fetch the latest version number, " +"please try again in an hour. But you can force download the latest version." +msgstr "" +"Github API rate limit exceeded, we can not fetch the latest version number, " +"please try again in an hour. But you can force download the latest version." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:57 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:102 +msgid "Force download" +msgstr "Force download" + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:91 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:99 +msgid "Oops!" +msgstr "Oops!" + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:92 +msgid "We ran into an error! Please raise github request." +msgstr "We ran into an error! Please raise github request." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:100 +msgid "" +"The github URL provided is not valid, or the project doesn't support " +"releases. We are unable to check the latest version number, however, you can " +"still force download the update" +msgstr "" +"The github URL provided is not valid, or the project doesn't support " +"releases. We are unable to check the latest version number, however, you can " +"still force download the update" + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:175 +msgid "No Update available" +msgstr "No Update available" + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:231 +msgid "This is not reversible. Please proceed with caution." +msgstr "This is not reversible. Please proceed with caution." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:239 +msgid "This may take a few minutes..." +msgstr "This may take a few minutes..." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:265 +msgid "Filtered custom tools" +msgstr "Filtered custom tools" + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:278 +msgid "Filtered default tools" +msgstr "Filtered default tools" + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:291 +msgid "Displaying all tools" +msgstr "Displaying all tools" + +msgid "No wordlist installed" +msgstr "No wordlist installed" + +msgid "No engine installed" +msgstr "No engine installed" + +msgid "Disk Space Consumed" +msgstr "Disk Space Consumed" \ No newline at end of file diff --git a/web/scanEngine/locale/fr/LC_MESSAGES/django.mo b/web/scanEngine/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 000000000..5ed345821 Binary files /dev/null and b/web/scanEngine/locale/fr/LC_MESSAGES/django.mo differ diff --git a/web/scanEngine/locale/fr/LC_MESSAGES/django.po b/web/scanEngine/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 000000000..8ed9f7521 --- /dev/null +++ b/web/scanEngine/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,1918 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: scanEngine/forms.py:19 scanEngine/templates/scanEngine/index.html:47 +msgid "Engine Name" +msgstr "Nom du moteur" + +#: scanEngine/forms.py:41 scanEngine/templates/scanEngine/index.html:69 +msgid "Custom Engine" +msgstr "Moteur personnalisé" + +#: scanEngine/forms.py:58 +msgid "my awesome wordlist" +msgstr "ma super list de mots" + +#: scanEngine/forms.py:66 +msgid "my_awesome_wordlist" +msgstr "ma_super_liste_de_mots" + +#: scanEngine/forms.py:85 +msgid "Configuration Name" +msgstr "Nom de la configuration" + +#: scanEngine/forms.py:93 +msgid "my_awesome_configuration" +msgstr "ma_super_configuration" + +#: scanEngine/forms.py:119 +msgid "Interesting Keywords" +msgstr "Mots clés intéressants" + +#: scanEngine/forms.py:219 +msgid "Bot Token" +msgstr "Jeton du bot" + +#: scanEngine/forms.py:228 +msgid "Bot Chat ID" +msgstr "ID du chat du bot" + +#: scanEngine/forms.py:350 +msgid "http://username:password@proxyip.com:port" +msgstr "http://nom_utilisateur:mot_de_passe@ip_proxy.com:port" + +#: scanEngine/forms.py:376 +msgid "Your Hackerone Username" +msgstr "Votre nom d'utilisateur Hackerone" + +#: scanEngine/forms.py:385 +msgid "Hackerone API Token" +msgstr "Jeton d'API Hackerone" + +#: scanEngine/forms.py:434 +#, python-brace-format +msgid "" +"Hi Team, while testing, a {vulnerability_severity} severity vulnerability " +"has been discovered in {vulnerable_url} and below is the findings.\n" +"\n" +"# Vulnerability\n" +"{vulnerability_name}\n" +"\n" +"## Issue Description\n" +"{vulnerability_description}\n" +"\n" +"## Vulnerable URL\n" +"- {vulnerable_url}\n" +"\n" +"## Extracted Results/Findings\n" +"{vulnerability_extracted_results}\n" +"\n" +"## References\n" +"- {vulnerability_references}\n" +"\n" +"Thank you" +msgstr "" +"Bonjour l'équipe, pendant le test, une vulnérabilité " +"{vulnerability_severity} a été découverte à {vulnerable_url}, voici les " +"informations ci-dessous.\n" +"\n" +"# Vulnérabilité\n" +"{vulnerability_name}\n" +"\n" +"## Description de l'incident\n" +"{vulnerability_description}\n" +"\n" +"## URL vulnérable\n" +"- {vulnerable_url}\n" +"\n" +"## Résultats extraits / recherches\n" +"{vulnerability_extracted_results}\n" +"\n" +"## Références\n" +"- {vulnerability_references}\n" +"\n" +"Merci" + +#: scanEngine/forms.py:465 +#: scanEngine/templates/scanEngine/settings/report.html:69 +msgid "Company Name" +msgstr "Nom de l'entreprise" + +#: scanEngine/forms.py:474 +#: scanEngine/templates/scanEngine/settings/report.html:73 +msgid "Company Address" +msgstr "Adresse de l'entreprise" + +#: scanEngine/forms.py:483 +msgid "Company Website https://company.com" +msgstr "Site Web de l'entreprise https://entreprise.com" + +#: scanEngine/forms.py:492 +msgid "email@yourcompany.com" +msgstr "email@votre_entreprise.com" + +#: scanEngine/forms.py:510 +msgid "Footer Text © Your Company" +msgstr "Texte de pied de page © Votre entreprise" + +#: scanEngine/forms.py:572 +#, python-brace-format +msgid "" +"On **{scan_date}**, **{target_name}** engaged **{company_name}** to perform " +"a security audit on their Web application.\n" +"\n" +"**{company_name}** performed both Security Audit and Reconnaissance using " +"automated tool reNgine. https://github.com/yogeshojha/rengine .\n" +"\n" +"## Observations\n" +"\n" +"During the course of this engagement **{company_name}** was able to discover " +"**{subdomain_count}** Subdomains and **{vulnerability_count}** " +"Vulnerabilities, including informational vulnerabilities and these could " +"pose a significant risk to the security of the application.\n" +"\n" +"The breakdown of the Vulnerabilities Identified in **{target_name}** by " +"severity are as follows:\n" +"\n" +"* Critical : {critical_count}\n" +"* High : {high_count}\n" +"* Medium : {medium_count}\n" +"* Low : {low_count}\n" +"* Info : {info_count}\n" +"* Unknown : {unknown_count}\n" +"\n" +"**{company_name}** recommends that these issues be addressed in timely " +"manner.\n" +"\n" +msgstr "" +"Le **{scan_date}**, **{target_name}** a mandaté **{company_name}** afin " +"de réaliser un audit de sécurité de leur application web.\n" +"\n" +"**{company_name}** a réalisé l'audit de sécurité et la reconnaissance avec " +"l'outil reNgine. https://github.com/yogeshojha/rengine .\n" +"\n" +"## Observations\n" +"\n" +"**{subdomain_count}** sous-domaines et **{vulnerability_count}** " +"vulnérabilités on été découverts au cours de l'audit, en incluant les " +"vulnérabilités informationnelles.\n" +"\n" +"Le détail du nombre de vulnérabilités par sévérité identifiées dans " +"**{target_name}** est :\n" +"\n" +"* Critiques : {critical_count}\n" +"* Élevées : {high_count}\n" +"* Modérées : {medium_count}\n" +"* Faibles : {low_count}\n" +"* Informationnelles : {info_count}\n" +"* Unknown : {unknown_count}\n" +"\n" +"**%(companyName)s** recommande la remédiation de ces vulnérabilités au plus " +"tôt.\n" +"\n" + +#: scanEngine/forms.py:605 +msgid "My Awesome Tool" +msgstr "Mon super outil" + +#: scanEngine/forms.py:621 +msgid "https://github.com/user/tool/blob/master/LICENSE.md" +msgstr "https://github.com/utilisateur/outil/blob/master/LICENSE.md" + +#: scanEngine/forms.py:629 +msgid "http://example.com/logo.png" +msgstr "http://exemple.com/logo.png" + +#: scanEngine/forms.py:637 +msgid "Explain what this tool is used for." +msgstr "Expliquez à quoi sert cet outil." + +#: scanEngine/forms.py:648 +msgid "Tool Installation Command" +msgstr "Commande d'installation de l'outil" + +#: scanEngine/forms.py:656 +msgid "Tool Update Command" +msgstr "Commande de mise à jour de l'outil" + +#: scanEngine/forms.py:687 +msgid "Subdomain Gathering Command" +msgstr "Commande de récupération de sous-domaine" + +#: scanEngine/forms.py:688 +#, python-brace-format +msgid "tool_name -d {TARGET} -o {OUTPUT}" +msgstr "outil_nom -d {TARGET} -o {OUTPUT}" + +#: scanEngine/templates/scanEngine/_items/form_engine.html:4 +msgid "Engine name" +msgstr "Nom du moteur" + +#: scanEngine/templates/scanEngine/_items/form_engine.html:115 +msgid "YAML Configurations" +msgstr "Configurations YAML" + +#: scanEngine/templates/scanEngine/_items/form_engine.html:117 +msgid "" +"reNgine supports YAML based configurations for customizing the scan. The " +"default settings are given below, you may choose to proceed with the default " +"settings or configure it according to your choice." +msgstr "" +"reNgine prend en charge les configurations basées sur YAML pour " +"personnaliser le scan. Les paramètres par défaut sont donnés ci-dessous, " +"vous pouvez choisir de procéder avec les paramètres par défaut ou les " +"configurer selon votre choix." + +#: scanEngine/templates/scanEngine/_items/form_engine.html:119 +msgid "reNgine YAML Documentation" +msgstr "Documentation YAML de reNgine" + +#: scanEngine/templates/scanEngine/_items/form_engine.html:120 +msgid "To learn more about YAML config visit the official documentation at" +msgstr "" +"Pour en savoir plus sur la configuration YAML, consultez la documentation " +"officielle à l'adresse" + +#: scanEngine/templates/scanEngine/_items/form_engine.html:122 +msgid "Note: Invalid YAML configuration may crash scans." +msgstr "" +"Remarque : Une configuration YAML non valide peut faire planter les scans." + +#: scanEngine/templates/scanEngine/_items/form_engine.html:124 +msgid "" +"Please, do not modify the configuration unless you know what what you are " +"doing." +msgstr "" +"Veuillez ne pas modifier la configuration à moins de savoir ce que vous " +"faites." + +#: scanEngine/templates/scanEngine/_items/form_engine.html:126 +msgid "If default YAML configuration doesn't automatically load," +msgstr "Si la configuration YAML par défaut ne se charge pas automatiquement," + +#: scanEngine/templates/scanEngine/_items/form_engine.html:126 +msgid "download default configuration from here" +msgstr "téléchargez la configuration par défaut ici" + +#: scanEngine/templates/scanEngine/_items/form_engine.html:126 +msgid "" +"and paste it. (Firefox may have issues loading default YAML configuration.)" +msgstr "" +"et collez-la. (Firefox peut avoir des problèmes pour charger la " +"configuration YAML par défaut.)" + +#: scanEngine/templates/scanEngine/add_engine.html:7 +#: scanEngine/templates/scanEngine/add_engine.html:28 +#: scanEngine/templates/scanEngine/add_engine.html:32 +#: scanEngine/templates/scanEngine/add_engine.html:49 +#: scanEngine/templates/scanEngine/index.html:32 +msgid "Add Scan Engine" +msgstr "Ajouter un moteur de scan" + +#: scanEngine/templates/scanEngine/add_engine.html:27 +#: scanEngine/templates/scanEngine/index.html:14 +#: scanEngine/templates/scanEngine/lookup.html:15 +#: scanEngine/templates/scanEngine/update_engine.html:26 +msgid "Engines" +msgstr "Moteurs" + +#: scanEngine/templates/scanEngine/add_engine.html:40 +#: scanEngine/templates/scanEngine/index.html:19 +msgid "Scan Engines" +msgstr "Moteurs de scan" + +#: scanEngine/templates/scanEngine/add_engine.html:42 +msgid "" +"Scan Engines are the most crucial part of reNgine. They define " +"how a scan is performed against a target. Scan Engines allow you to define the configuration and use it against multiple " +"targets." +msgstr "" +"Les moteurs de scan sont la partie la plus cruciale de reNgine. " +"Ils définissent comment un scan est effectué contre une cible. " +"Les moteurs de scan vous permettent de définir la configuration " +"et de l'utiliser contre plusieurs cibles." + +#: scanEngine/templates/scanEngine/add_engine.html:44 +msgid "" +"YAML configuration allows you fine tuning the engines such as rate, " +"templates to be used, or configurations to be used." +msgstr "" +"La configuration YAML vous permet d'ajuster finement les moteurs tels que le " +"débit, les modèles à utiliser ou les configurations à utiliser." + +#: scanEngine/templates/scanEngine/index.html:7 +msgid "Scan Engine" +msgstr "Moteur de scan" + +#: scanEngine/templates/scanEngine/index.html:15 +msgid "All Scan Engines" +msgstr "Tous les moteurs de scan" + +#: scanEngine/templates/scanEngine/index.html:32 +msgid "Add New Scan Engine" +msgstr "Ajouter un nouveau moteur de scan" + +#: scanEngine/templates/scanEngine/index.html:46 +msgid "ID" +msgstr "ID" + +#: scanEngine/templates/scanEngine/index.html:48 +msgid "Type" +msgstr "Type" + +#: scanEngine/templates/scanEngine/index.html:49 +msgid "Subdomain Discovery" +msgstr "Découverte de sous-domaines" + +#: scanEngine/templates/scanEngine/index.html:50 +msgid "WAF Detection" +msgstr "Détection WAF" + +#: scanEngine/templates/scanEngine/index.html:51 +msgid "Screenshot" +msgstr "Capture d'écran" + +#: scanEngine/templates/scanEngine/index.html:52 +msgid "OSINT" +msgstr "OSINT" + +#: scanEngine/templates/scanEngine/index.html:53 +msgid "Port Scan" +msgstr "Scan de ports" + +#: scanEngine/templates/scanEngine/index.html:54 +msgid "Directory & Files Discovery" +msgstr "Découverte de répertoires et de fichiers" + +#: scanEngine/templates/scanEngine/index.html:55 +msgid "Fetch URLs" +msgstr "Récupérer les URLs" + +#: scanEngine/templates/scanEngine/index.html:56 +msgid "Vulnerability Scan" +msgstr "Scan de vulnérabilités" + +#: scanEngine/templates/scanEngine/index.html:57 +#: scanEngine/templates/scanEngine/wordlist/index.html:46 +msgid "Action" +msgstr "Action" + +#: scanEngine/templates/scanEngine/index.html:67 +msgid "Default Engine" +msgstr "Moteur par défaut" + +#: scanEngine/templates/scanEngine/index.html:130 +msgid "Edit Engine" +msgstr "Modifier le moteur" + +#: scanEngine/templates/scanEngine/index.html:135 +#, python-format +msgid "Delete %(engine_name)s Engine" +msgstr "Supprimer le moteur %(engine_name)s" + +#: scanEngine/templates/scanEngine/lookup.html:7 +msgid "Interesting entries Lookup" +msgstr "Recherche d'entrées intéressantes" + +#: scanEngine/templates/scanEngine/lookup.html:16 +#: scanEngine/templates/scanEngine/lookup.html:20 +#: scanEngine/templates/scanEngine/lookup.html:28 +msgid "Interesting Lookup" +msgstr "Recherche intéressante" + +#: scanEngine/templates/scanEngine/lookup.html:30 +msgid "" +"reNgine supports lookup for interesting keyword in recon data. This could be " +"either looking up in subdomains, URLs or in page title.\n" +" You can enter the keywords to lookup and reNgine will highlight " +"the matched entries." +msgstr "" +"reNgine prend en charge la recherche de mots-clés intéressants dans les " +"données de reconnaissance. Cela peut être soit dans les sous-domaines, les " +"URL ou le titre de la page.\n" +" Vous pouvez entrer les mots-clés à rechercher et reNgine mettra en " +"évidence les entrées correspondantes." + +#: scanEngine/templates/scanEngine/lookup.html:34 +msgid "Keywords are case insensitive." +msgstr "Les mots-clés ne sont pas sensibles à la casse." + +#: scanEngine/templates/scanEngine/lookup.html:36 +msgid "Default Keywords" +msgstr "Mots-clés par défaut" + +#: scanEngine/templates/scanEngine/lookup.html:37 +msgid "" +"reNgine will use these default keywords to find the interesting subdomains " +"or URLs from recon data." +msgstr "" +"reNgine utilisera ces mots-clés par défaut pour trouver les sous-domaines ou " +"les URL intéressants à partir des données de reconnaissance." + +#: scanEngine/templates/scanEngine/lookup.html:45 +msgid "Custom Keywords" +msgstr "Mots-clés personnalisés" + +#: scanEngine/templates/scanEngine/lookup.html:48 +msgid "Interesting Keywords to look for" +msgstr "Mots-clés intéressants à rechercher" + +#: scanEngine/templates/scanEngine/lookup.html:52 +msgid "Please use a comma (,) to separate the keywords." +msgstr "Veuillez utiliser une virgule (,) pour séparer les mots-clés." + +#: scanEngine/templates/scanEngine/lookup.html:53 +msgid "Lookup in" +msgstr "Rechercher dans" + +#: scanEngine/templates/scanEngine/lookup.html:56 +msgid "Subdomains/URLs" +msgstr "Sous-domaines/URLs" + +#: scanEngine/templates/scanEngine/lookup.html:59 +msgid "Page Title" +msgstr "Titre de la page" + +#: scanEngine/templates/scanEngine/lookup.html:60 +msgid "Lookup Conditions" +msgstr "Conditions de recherche" + +#: scanEngine/templates/scanEngine/lookup.html:61 +msgid "reNgine will lookup the keywords only when below conditions are met." +msgstr "" +"reNgine recherchera les mots-clés uniquement lorsque les conditions ci-" +"dessous sont remplies." + +#: scanEngine/templates/scanEngine/lookup.html:62 +msgid "Lookup only when" +msgstr "Rechercher uniquement lorsque" + +#: scanEngine/templates/scanEngine/lookup.html:64 +msgid "HTTP Status is 200" +msgstr "Le statut HTTP est 200" + +#: scanEngine/templates/scanEngine/lookup.html:65 +msgid "Update Lookup" +msgstr "Mettre à jour la recherche" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:4 +msgid "Tool Name" +msgstr "Nom de l'outil" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:4 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:28 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:53 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:62 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:79 +msgid "Required" +msgstr "Requis" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:15 +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:74 +msgid "Tool Category" +msgstr "Catégorie de l'outil" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:17 +msgid "Does this tool gathers subdomains?" +msgstr "Cet outil rassemble-t-il des sous-domaines ?" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:23 +msgid "" +"If you have chosen this tool as subdomain gathering tool, you'll be able to " +"use it in scan engine configuration and provide this tool name inside" +msgstr "" +"Si vous avez choisi cet outil comme outil de collecte de sous-domaines, vous " +"pourrez l'utiliser dans la configuration du moteur de scan et fournir le nom " +"de cet outil à l'intérieur" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:23 +msgid "" +"If not, you will still be able to use this tool in our custom scripting " +"engine." +msgstr "" +"Sinon, vous pourrez quand même utiliser cet outil dans notre moteur de " +"script personnalisé." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:28 +msgid "Github URL" +msgstr "URL Github" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:30 +msgid "Github URL is required to check the recent releases and updates." +msgstr "" +"L'URL Github est requise pour vérifier les dernières versions et mises à " +"jour." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:41 +msgid "Tool Logo (URL)" +msgstr "Logo de l'outil (URL)" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:41 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:47 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:86 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:105 +msgid "Optional" +msgstr "Optionnel" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:47 +msgid "Tool License URL" +msgstr "URL de la licence de l'outil" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:53 +msgid "Description" +msgstr "Description" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:57 +msgid "Tool Installation Process" +msgstr "Processus d'installation de l'outil" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:59 +msgid "" +"Please note that any commands here will directly execute in shell, so please " +"be careful of the commands you are using." +msgstr "" +"Veuillez noter que toutes les commandes ici seront directement exécutées " +"dans le shell, alors faites attention aux commandes que vous utilisez." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:62 +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:79 +msgid "Installation Command" +msgstr "Commande d'installation" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:66 +msgid "" +"If the tool has to be installed using github clone, then your installation " +"command would be" +msgstr "" +"Si l'outil doit être installé en utilisant un clone github, alors votre " +"commande d'installation serait" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:71 +msgid "" +"If the tool has to be installed using go, the your installation command " +"would be" +msgstr "" +"Si l'outil doit être installé en utilisant go, alors votre commande " +"d'installation serait" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:75 +msgid "" +"Please note that, go get command is no longer supported by go. Instead you " +"should use go install." +msgstr "" +"Veuillez noter que la commande go get n'est plus prise en charge par go. " +"Vous devriez plutôt utiliser go install." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:75 +msgid "Learn why!" +msgstr "Apprenez pourquoi !" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:86 +msgid "How does this tool update?" +msgstr "Comment mettre à jour cet outil ?" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:89 +msgid "If the tool was installed using git clone, it is recommended to use" +msgstr "" +"Si l'outil a été installé en utilisant git clone, il est recommandé " +"d'utiliser" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:89 +msgid "for updating." +msgstr "pour la mise à jour." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:90 +msgid "" +"If the tool was installed using go, it is recommended to use the same " +"command as go install." +msgstr "" +"Si l'outil a été installé en utilisant go, il est recommandé d'utiliser la " +"même commande que go install." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:92 +msgid "" +"If update command is not provided, you will not be able to update the tools." +msgstr "" +"Si la commande de mise à jour n'est pas fournie, vous ne pourrez pas mettre " +"à jour les outils." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:94 +msgid "Update command" +msgstr "Commande de mise à jour" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:105 +msgid "How do you check the version in this tool?" +msgstr "Comment vérifier la version de cet outil ?" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:107 +msgid "" +"reNgine will use this command to check the version of the tool and let you " +"know if there is any update available. Most tools will display the version " +"either of these ways" +msgstr "" +"reNgine utilisera cette commande pour vérifier la version de l'outil et vous " +"informer s'il y a une mise à jour disponible. La plupart des outils " +"afficheront la version de l'une de ces façons" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:114 +msgid "" +"You can provide these commands depending on your tool, and reNgine will " +"identify the version number." +msgstr "" +"Vous pouvez fournir ces commandes en fonction de votre outil, et reNgine " +"identifiera le numéro de version." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:116 +msgid "Version Lookup Command" +msgstr "Commande de recherche de version" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:117 +msgid "(We have auto generated this for you based on your installation steps)" +msgstr "" +"(Nous avons généré ceci automatiquement pour vous en fonction de vos étapes " +"d'installation)" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:128 +msgid "Version match regex (Optional)" +msgstr "Expression régulière de correspondance de version (facultatif)" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:130 +msgid "" +"reNgine needs version match regex to find out if there is any update " +"available or not. You can check how the tool displays the version number and " +"we can generate the regex for you, or you can do that manually as well." +msgstr "" +"reNgine a besoin d'une expression régulière de correspondance de version " +"pour savoir s'il y a une mise à jour disponible ou non. Vous pouvez vérifier " +"comment l'outil affiche le numéro de version et nous pouvons générer " +"l'expression régulière pour vous, ou vous pouvez également le faire " +"manuellement." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:132 +msgid "" +"If version regex is not given, reNgine will not be able to check the updates " +"automatically. However, you can still force update the tools." +msgstr "" +"Si l'expression régulière de version n'est pas donnée, reNgine ne pourra pas " +"vérifier les mises à jour automatiquement. Cependant, vous pouvez toujours " +"forcer la mise à jour des outils." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:134 +msgid "" +"Additionally, we can also generate the version regext for you. You can " +"select how this tool displays the version number." +msgstr "" +"De plus, nous pouvons également générer l'expression régulière de version " +"pour vous. Vous pouvez sélectionner la façon dont cet outil affiche le " +"numéro de version." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:134 +msgid "See, how the tool names the release version." +msgstr "Voyez comment l'outil nomme la version de publication." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:136 +msgid "v1.2 / V1.2 / 1.2" +msgstr "v1.2 / V1.2 / 1.2" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:137 +msgid "v1.2.3 / V1.2.3 / 1.2.3" +msgstr "v1.2.3 / V1.2.3 / 1.2.3" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:138 +msgid "v1.2.3.4 / V1.2.3.4 / 1.2.3.4" +msgstr "v1.2.3.4 / V1.2.3.4 / 1.2.3.4" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:141 +msgid "Version Regex" +msgstr "Expression régulière de version" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:151 +msgid "Subdomain Gathering Tool Additional Information" +msgstr "Informations supplémentaires sur l'outil de collecte de sous-domaines" + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:152 +msgid "" +"Please note that this subdomain gathering tool must support subdomain output " +"in the form of txt file." +msgstr "" +"Veuillez noter que cet outil de collecte de sous-domaines doit prendre en " +"charge la sortie des sous-domaines sous forme de fichier txt." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:153 +msgid "" +"Since you have chosen this tool as subdomain gathering tool, we require " +"additional information on how this tool runs." +msgstr "" +"Puisque vous avez choisi cet outil comme outil de collecte de sous-domaines, " +"nous avons besoin d'informations supplémentaires sur la façon dont cet outil " +"fonctionne." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:156 +msgid "" +"reNgine needs to know how this tool accepts target and output the subdomain " +"results." +msgstr "" +"reNgine doit savoir comment cet outil accepte la cible et produit les " +"résultats des sous-domaines." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:157 +#, python-brace-format +msgid "" +"Use the below syntax wherever required, but remember that {TARGET} and {OUTPUT} are mandatory placeholders." +msgstr "" +"Utilisez la syntaxe ci-dessous partout où c'est nécessaire, mais n'oubliez " +"pas que {TARGET} et {OUTPUT} sont des " +"placeholders obligatoires." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:159 +msgid "" +"(mandatory), Use this for the command-line arg that takes in domain as input " +"target. Example." +msgstr "" +"(obligatoire), Utilisez ceci pour l'argument de ligne de commande qui prend " +"le domaine comme cible d'entrée. Exemple." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:160 +msgid "" +"(mandatory), Use this for the command-line arg that takes the output arg. " +"Example." +msgstr "" +"(obligatoire), Utilisez ceci pour l'argument de ligne de commande qui prend " +"l'argument de sortie. Exemple." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:161 +msgid ", Use this if your tool is github cloned. Example." +msgstr ", Utilisez ceci si votre outil est cloné depuis GitHub. Exemple." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:162 +msgid ", Use this if your tool supports proxy. Example." +msgstr ", Utilisez ceci si votre outil prend en charge le proxy. Exemple." + +#: scanEngine/templates/scanEngine/settings/_items/external_tool_form.html:164 +msgid "" +"You can use the combinations of the above syntax and also you can use any " +"other command-line argument that your tool supports." +msgstr "" +"Vous pouvez utiliser les combinaisons de la syntaxe ci-dessus et vous pouvez " +"également utiliser tout autre argument de ligne de commande pris en charge " +"par votre outil." + +#: scanEngine/templates/scanEngine/settings/add_tool.html:6 +#: scanEngine/templates/scanEngine/settings/add_tool.html:13 +#: scanEngine/templates/scanEngine/settings/add_tool.html:16 +#: scanEngine/templates/scanEngine/settings/add_tool.html:30 +msgid "Add Tool" +msgstr "Ajouter un outil" + +#: scanEngine/templates/scanEngine/settings/add_tool.html:12 +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:7 +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:15 +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:19 +#: scanEngine/templates/scanEngine/settings/update_tool.html:11 +msgid "Tool Arsenal" +msgstr "Arsenal d'outils" + +#: scanEngine/templates/scanEngine/settings/api.html:7 +#: scanEngine/templates/scanEngine/settings/rengine.html:7 +#: scanEngine/templates/scanEngine/settings/rengine.html:15 +#: scanEngine/templates/scanEngine/settings/rengine.html:19 +msgid "reNgine Settings" +msgstr "Paramètres de reNgine" + +#: scanEngine/templates/scanEngine/settings/api.html:14 +#: scanEngine/templates/scanEngine/settings/hackerone.html:15 +#: scanEngine/templates/scanEngine/settings/hackerone.html:17 +#: scanEngine/templates/scanEngine/settings/notification.html:17 +#: scanEngine/templates/scanEngine/settings/proxy.html:14 +#: scanEngine/templates/scanEngine/settings/rengine.html:14 +#: scanEngine/templates/scanEngine/settings/report.html:18 +#: scanEngine/templates/scanEngine/settings/tool.html:14 +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:14 +msgid "Settings" +msgstr "Paramètres" + +#: scanEngine/templates/scanEngine/settings/api.html:15 +#: scanEngine/templates/scanEngine/settings/api.html:19 +msgid "API Vault" +msgstr "Coffre-fort API" + +#: scanEngine/templates/scanEngine/settings/api.html:32 +msgid "OpenAI" +msgstr "OpenAI" + +#: scanEngine/templates/scanEngine/settings/api.html:32 +#: scanEngine/templates/scanEngine/settings/notification.html:130 +#: scanEngine/templates/scanEngine/settings/notification.html:145 +msgid "Recommended" +msgstr "Recommandé" + +#: scanEngine/templates/scanEngine/settings/api.html:32 +msgid "Experimental" +msgstr "Expérimental" + +#: scanEngine/templates/scanEngine/settings/api.html:33 +msgid "" +"OpenAI keys will be used to generate vulnerability description, remediation, " +"impact and vulnerability report writing using ChatGPT." +msgstr "" +"Les clés OpenAI seront utilisées pour générer la description des " +"vulnérabilités, les mesures correctives, l'impact et la rédaction des " +"rapports de vulnérabilité à l'aide de ChatGPT." + +#: scanEngine/templates/scanEngine/settings/api.html:34 +msgid "Enter OpenAI Key" +msgstr "Entrez la clé OpenAI" + +#: scanEngine/templates/scanEngine/settings/api.html:35 +msgid "This is optional but recommended." +msgstr "Ceci est optionnel mais recommandé." + +#: scanEngine/templates/scanEngine/settings/api.html:38 +msgid "Netlas" +msgstr "Netlas" + +#: scanEngine/templates/scanEngine/settings/api.html:39 +msgid "Netlas keys will be used to get whois information and other OSINT data." +msgstr "" +"Les clés Netlas seront utilisées pour obtenir des informations whois et " +"d'autres données OSINT." + +#: scanEngine/templates/scanEngine/settings/api.html:40 +msgid "Enter Netlas Key" +msgstr "Entrez la clé Netlas" + +#: scanEngine/templates/scanEngine/settings/api.html:41 +msgid "This is optional" +msgstr "Ceci est optionnel" + +#: scanEngine/templates/scanEngine/settings/api.html:44 +msgid "Update API Keys" +msgstr "Mettre à jour les clés API" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:8 +#: scanEngine/templates/scanEngine/settings/hackerone.html:16 +msgid "Hackerone Settings" +msgstr "Paramètres Hackerone" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:21 +msgid "HackerOne Settings" +msgstr "Paramètres HackerOne" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:28 +msgid "Hackerone Automatic Vulnerability Report Settings" +msgstr "Paramètres de rapport de vulnérabilité automatique Hackerone" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:30 +msgid "Use this feature with caution! Please do not spam triagers!" +msgstr "" +"Utilisez cette fonctionnalité avec précaution ! Veuillez ne pas spammer les " +"triagers !" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:31 +msgid "" +"We do not allow sending vulnerability report for low severity and " +"informational vulnerabilities to avoid spamming triagers!" +msgstr "" +"Nous ne permettons pas l'envoi de rapports de vulnérabilité pour les " +"vulnérabilités de faible gravité et les vulnérabilités informatives afin " +"d'éviter de spammer les triagers !" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:32 +msgid "You can send them manually from Vulnerability Section inside reNgine." +msgstr "" +"Vous pouvez les envoyer manuellement depuis la section Vulnérabilité à " +"l'intérieur de reNgine." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:34 +msgid "" +"reNgine Automatically Reports vulnerabilities to your bug bounty programs on " +"Hackerone, if any vulnerabilities are identified." +msgstr "" +"reNgine signale automatiquement les vulnérabilités à vos programmes de " +"primes aux bogues sur Hackerone, si des vulnérabilités sont identifiées." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:35 +msgid "A valid Hackerone API token and username is required." +msgstr "Un jeton API Hackerone et un nom d'utilisateur valides sont requis." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:36 +msgid "More details on how to generate your hackerone api token is provided by" +msgstr "" +"Plus de détails sur la façon de générer votre jeton api hackerone sont " +"fournis par" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:36 +msgid "Hackerone Documentation" +msgstr "Documentation Hackerone" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:41 +msgid "Your Hackerone Username (Not email)" +msgstr "Votre nom d'utilisateur Hackerone (Pas l'email)" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:44 +msgid "Generate your" +msgstr "Générez votre" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:44 +msgid "API Token from here" +msgstr "Jeton API à partir d'ici" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:48 +msgid "Test my hackerone api key" +msgstr "Tester ma clé API hackerone" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:50 +msgid "Report Vulnerability to hackerone when" +msgstr "Signaler la vulnérabilité à hackerone lorsque" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:53 +msgid "Critical Severity is found. (Default)" +msgstr "Une gravité critique est trouvée. (Par défaut)" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:57 +msgid "High Severity is found. (Default)" +msgstr "Une gravité élevée est trouvée. (Par défaut)" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:61 +msgid "Medium Severity is found." +msgstr "Une gravité modérée est trouvée." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:65 +msgid "Vulnerability Report Template" +msgstr "Modèle de rapport de vulnérabilité" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:67 +msgid "" +"You can customize the vulnerability report template using markdown language. " +"Replace the below syntax wherever you require. Curly braces are must!" +msgstr "" +"Vous pouvez personnaliser le modèle de rapport de vulnérabilité en utilisant " +"le langage markdown. Remplacez la syntaxe ci-dessous partout où vous en avez " +"besoin. Les accolades sont obligatoires !" + +#: scanEngine/templates/scanEngine/settings/hackerone.html:70 +msgid "Vulnerability Title/Name." +msgstr "Titre/Nom de la vulnérabilité." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:71 +msgid "Vulnerable URL." +msgstr "URL vulnérable." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:72 +msgid "Vulnerability Severity." +msgstr "Gravité de la vulnérabilité." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:73 +msgid "Description of vulnerability generated by Nuclei." +msgstr "Description de la vulnérabilité générée par Nuclei." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:74 +msgid "Vulnerability Results extracted by Nuclei." +msgstr "Résultats de la vulnérabilité extraits par Nuclei." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:75 +msgid "Additional Reference to vulnerability." +msgstr "Référence supplémentaire à la vulnérabilité." + +#: scanEngine/templates/scanEngine/settings/hackerone.html:79 +msgid "Save" +msgstr "Enregistrer" + +#: scanEngine/templates/scanEngine/settings/notification.html:7 +#: scanEngine/templates/scanEngine/settings/notification.html:18 +#: scanEngine/templates/scanEngine/settings/notification.html:22 +msgid "Notification Settings" +msgstr "Paramètres de notification" + +#: scanEngine/templates/scanEngine/settings/notification.html:30 +msgid "Send Notifications to:" +msgstr "Envoyer des notifications à :" + +#: scanEngine/templates/scanEngine/settings/notification.html:34 +msgid "Slack" +msgstr "Slack" + +#: scanEngine/templates/scanEngine/settings/notification.html:76 +msgid "Discord Webhook API Documentation" +msgstr "Documentation de l'API Webhook Discord" + +#: scanEngine/templates/scanEngine/settings/notification.html:80 +msgid "Telegram" +msgstr "Telegram" + +#: scanEngine/templates/scanEngine/settings/notification.html:102 +msgid "How to Create Telegram Bot" +msgstr "Comment créer un bot Telegram" + +#: scanEngine/templates/scanEngine/settings/notification.html:106 +msgid "Send me notification for" +msgstr "M'envoyer une notification pour" + +#: scanEngine/templates/scanEngine/settings/notification.html:109 +msgid "Scan related updates (e.g. Scan initiated, Scan completed)" +msgstr "Mises à jour liées aux scans (ex. Scan initié, Scan terminé)" + +#: scanEngine/templates/scanEngine/settings/notification.html:112 +msgid "Interesting subdomains" +msgstr "Sous-domaines intéressants" + +#: scanEngine/templates/scanEngine/settings/notification.html:115 +msgid "Vulnerabilities Found" +msgstr "Vulnérabilités trouvées" + +#: scanEngine/templates/scanEngine/settings/notification.html:117 +msgid "*Informational vulnerabilities will not be notified." +msgstr "*Les vulnérabilités informatives ne seront pas notifiées." + +#: scanEngine/templates/scanEngine/settings/notification.html:121 +msgid "Subdomain changes" +msgstr "Changements de sous-domaines" + +#: scanEngine/templates/scanEngine/settings/notification.html:124 +msgid "" +"(e.g. when new Subdomains are discovered or subdomains are no longer " +"available)" +msgstr "" +"(ex. lorsque de nouveaux sous-domaines sont découverts ou que des sous-" +"domaines ne sont plus disponibles)" + +#: scanEngine/templates/scanEngine/settings/notification.html:130 +#: scanEngine/templates/scanEngine/settings/notification.html:145 +msgid "Upload Scan Results" +msgstr "Télécharger les résultats du scan" + +#: scanEngine/templates/scanEngine/settings/notification.html:134 +msgid "Send scan output (e.g. Subdomain gathered file)" +msgstr "" +"Envoyer les résultats du scan (ex. fichier de sous-domaines rassemblés)" + +#: scanEngine/templates/scanEngine/settings/notification.html:136 +#: scanEngine/templates/scanEngine/settings/notification.html:151 +msgid "Discord only" +msgstr "Discord seulement" + +#: scanEngine/templates/scanEngine/settings/notification.html:139 +msgid "(upload scan results to your Discord)" +msgstr "(télécharger les résultats du scan sur votre Discord)" + +#: scanEngine/templates/scanEngine/settings/notification.html:149 +msgid "Send tasks tracebacks" +msgstr "Envoyer les traces des tâches" + +#: scanEngine/templates/scanEngine/settings/notification.html:154 +msgid "(upload task failed tasks tracebacks to your Discord)" +msgstr "(télécharger les traces des tâches échouées sur votre Discord)" + +#: scanEngine/templates/scanEngine/settings/notification.html:161 +msgid "Save & Test Notification" +msgstr "Enregistrer et tester la notification" + +#: scanEngine/templates/scanEngine/settings/notification.html:164 +msgid "*Once saved, a test message will be sent to all the enabled services." +msgstr "" +"*Une fois enregistré, un message de test sera envoyé à tous les services " +"activés." + +#: scanEngine/templates/scanEngine/settings/proxy.html:7 +#: scanEngine/templates/scanEngine/settings/proxy.html:15 +#: scanEngine/templates/scanEngine/settings/proxy.html:19 +#: scanEngine/templates/scanEngine/settings/proxy.html:27 +msgid "Proxy Settings" +msgstr "Paramètres du proxy" + +#: scanEngine/templates/scanEngine/settings/proxy.html:28 +msgid "" +"Every website has a limit to certain number of requests allowed for a " +"certain period of time from an particular IP Address, exceeding the limit " +"will block any incoming requests from that particular IP Address for a " +"specific period of time.\n" +" This results in unreliable recon results. Suppose if you were to " +"run Nuclei on a particular target with all the templates, your IP is likely " +"to get banned because of the number of requests made by Nuclei." +msgstr "" +"Chaque site Web a une limite sur le nombre de requêtes autorisées pendant " +"une certaine période à partir d'une adresse IP particulière. Dépasser cette " +"limite bloquera toutes les requêtes entrantes de cette adresse IP pendant " +"une période de temps spécifique.\n" +" Cela entraîne des résultats de reconnaissance peu fiables. " +"Supposons que vous exécutiez Nuclei sur une cible particulière avec tous les " +"modèles, votre IP risque d'être bannie à cause du nombre de requêtes " +"effectuées par Nuclei." + +#: scanEngine/templates/scanEngine/settings/proxy.html:31 +msgid "" +"And this is especially true for dorking and other OSINT reNgine does. After " +"certain dorking attempts Google is likely to ban your IP for certain period " +"of time." +msgstr "" +"Et ceci est particulièrement vrai pour le dorking et les autres activités " +"OSINT effectuées par reNgine. Après certaines tentatives de dorking, Google " +"risque de bannir votre IP pendant une certaine période." + +#: scanEngine/templates/scanEngine/settings/proxy.html:34 +msgid "Using proxies is recommended." +msgstr "L'utilisation de proxies est recommandée." + +#: scanEngine/templates/scanEngine/settings/proxy.html:40 +msgid "Use Proxy" +msgstr "Utiliser un proxy" + +#: scanEngine/templates/scanEngine/settings/proxy.html:42 +msgid "Proxy List" +msgstr "Liste des proxies" + +#: scanEngine/templates/scanEngine/settings/proxy.html:43 +msgid "You can enter as many proxies as you want, reNgine will" +msgstr "Vous pouvez entrer autant de proxies que vous voulez, reNgine" + +#: scanEngine/templates/scanEngine/settings/proxy.html:43 +msgid "randomly" +msgstr "aléatoirement" + +#: scanEngine/templates/scanEngine/settings/proxy.html:43 +msgid "pick one among them during the scan." +msgstr "en choisira un parmi eux pendant le scan." + +#: scanEngine/templates/scanEngine/settings/proxy.html:44 +msgid "Separate the proxies by new line." +msgstr "Séparez les proxies par un saut de ligne." + +#: scanEngine/templates/scanEngine/settings/proxy.html:46 +msgid "Save Proxies" +msgstr "Enregistrer les proxies" + +#: scanEngine/templates/scanEngine/settings/rengine.html:27 +#: scanEngine/templates/scanEngine/settings/rengine.html:34 +msgid "Danger Zone" +msgstr "Zone dangereuse" + +#: scanEngine/templates/scanEngine/settings/rengine.html:31 +msgid "Total Storage:" +msgstr "Stockage total :" + +#: scanEngine/templates/scanEngine/settings/rengine.html:31 +#, python-format +msgid "%(totalSpaceSize)s Gb" +msgstr "%(totalSpaceSize)s Go" + +#: scanEngine/templates/scanEngine/settings/rengine.html:31 +msgid "Used Space:" +msgstr "Espace utilisé :" + +#: scanEngine/templates/scanEngine/settings/rengine.html:31 +#, python-format +msgid "%(usedSpaceSize)s Gb" +msgstr "%(usedSpaceSize)s Go" + +#: scanEngine/templates/scanEngine/settings/rengine.html:31 +msgid "Free Space:" +msgstr "Espace libre :" + +#: scanEngine/templates/scanEngine/settings/rengine.html:31 +#, python-format +msgid "%(freeSpaceSize)s Gb" +msgstr "%(freeSpaceSize)s Go" + +#: scanEngine/templates/scanEngine/settings/rengine.html:39 +msgid "Delete all scan results" +msgstr "Supprimer tous les résultats de scan" + +#: scanEngine/templates/scanEngine/settings/rengine.html:42 +msgid "Once you delete all scan results, there is no going back." +msgstr "" +"Une fois que vous aurez supprimé tous les résultats de scan, il sera " +"impossible de revenir en arrière." + +#: scanEngine/templates/scanEngine/settings/rengine.html:43 +msgid "" +"This will delete all the scan history and also screenshots and likely to " +"free up disk space." +msgstr "" +"Cela supprimera tout l'historique des scans ainsi que les captures d'écran, " +"et libèrera probablement de l'espace disque." + +#: scanEngine/templates/scanEngine/settings/rengine.html:47 +msgid "Delete All Scan Results" +msgstr "Supprimer tous les résultats de scan" + +#: scanEngine/templates/scanEngine/settings/rengine.html:54 +msgid "Delete all Screenshots" +msgstr "Supprimer toutes les captures d'écran" + +#: scanEngine/templates/scanEngine/settings/rengine.html:57 +msgid "" +"Once you delete all screenshots, you are likely to free up some disk space." +msgstr "" +"Une fois que vous aurez supprimé toutes les captures d'écran, vous libèrerez " +"probablement de l'espace disque." + +#: scanEngine/templates/scanEngine/settings/rengine.html:58 +msgid "Scan history will not be able to show any screenshots after deleted." +msgstr "" +"L'historique des scans ne pourra plus afficher aucune capture d'écran après " +"leur suppression." + +#: scanEngine/templates/scanEngine/settings/rengine.html:62 +msgid "Delete All Screenshots" +msgstr "Supprimer toutes les captures d'écran" + +#: scanEngine/templates/scanEngine/settings/report.html:8 +#: scanEngine/templates/scanEngine/settings/report.html:19 +#: scanEngine/templates/scanEngine/settings/report.html:31 +msgid "Customize Report" +msgstr "Personnaliser le rapport" + +#: scanEngine/templates/scanEngine/settings/report.html:23 +msgid "reNgine PDF Report Settings" +msgstr "Paramètres du rapport PDF reNgine" + +#: scanEngine/templates/scanEngine/settings/report.html:32 +msgid "" +"reNgine allows you to generate PDF report. PDF reports are fully " +"customizable. While downloading PDF Report, you can choose whether to " +"download Vulnerability Report or Reconnaissance Report or both." +msgstr "" +"reNgine vous permet de générer un rapport PDF. Les rapports PDF sont " +"entièrement personnalisables. Lors du téléchargement du rapport PDF, vous " +"pouvez choisir de télécharger le rapport de vulnérabilités ou le rapport de " +"reconnaissance, ou les deux." + +#: scanEngine/templates/scanEngine/settings/report.html:33 +msgid "" +"This section allows you to customize the report, such as colors, and " +"sections to include in the report." +msgstr "" +"Cette section vous permet de personnaliser le rapport, tels que les couleurs " +"et les sections à inclure dans le rapport." + +#: scanEngine/templates/scanEngine/settings/report.html:37 +msgid "Color" +msgstr "Couleur" + +#: scanEngine/templates/scanEngine/settings/report.html:41 +msgid "Primary Color" +msgstr "Couleur primaire" + +#: scanEngine/templates/scanEngine/settings/report.html:43 +msgid "" +"(Primary Color is the color used for the Main Title, Footer Background and " +"Page Counters.)" +msgstr "" +"(La couleur primaire est la couleur utilisée pour le titre principal, " +"l'arrière-plan du pied de page et les numéros de page.)" + +#: scanEngine/templates/scanEngine/settings/report.html:54 +msgid "Secondary Color" +msgstr "Couleur secondaire" + +#: scanEngine/templates/scanEngine/settings/report.html:56 +msgid "(Secondary color is currently being used for cover background.)" +msgstr "" +"(La couleur secondaire est actuellement utilisée pour l'arrière-plan de la " +"couverture.)" + +#: scanEngine/templates/scanEngine/settings/report.html:66 +msgid "Report Generated by" +msgstr "Rapport généré par" + +#: scanEngine/templates/scanEngine/settings/report.html:77 +msgid "Company Website" +msgstr "Site Web de l'entreprise" + +#: scanEngine/templates/scanEngine/settings/report.html:81 +msgid "Company Email" +msgstr "Email de l'entreprise" + +#: scanEngine/templates/scanEngine/settings/report.html:86 +msgid "Show Footer Text?" +msgstr "Afficher le texte de pied de page ?" + +#: scanEngine/templates/scanEngine/settings/report.html:91 +msgid "" +"This could be copyright text, or year of generation and the placement for " +"footer text is bottom left." +msgstr "" +"Cela pourrait être un texte de copyright, ou l'année de génération et " +"l'emplacement pour le texte de pied de page est en bas à gauche." + +#: scanEngine/templates/scanEngine/settings/report.html:92 +msgid "Footer Text" +msgstr "Texte de pied de page" + +#: scanEngine/templates/scanEngine/settings/report.html:95 +msgid "Show reNgine Banner/Credits?" +msgstr "Afficher la bannière/les crédits reNgine ?" + +#: scanEngine/templates/scanEngine/settings/report.html:100 +msgid "If turned on, generated report will contain 'Generated by reNgine'." +msgstr "Si activé, le rapport généré contiendra 'Généré par reNgine'." + +#: scanEngine/templates/scanEngine/settings/report.html:102 +msgid "Show Executive Summary?" +msgstr "Afficher le résumé exécutif ?" + +#: scanEngine/templates/scanEngine/settings/report.html:107 +msgid "" +"If turned on, reNgine will include Executive Summary in the report. You can " +"customize the executive summary section." +msgstr "" +"Si activé, reNgine inclura le résumé exécutif dans le rapport. Vous pouvez " +"personnaliser la section du résumé exécutif." + +#: scanEngine/templates/scanEngine/settings/report.html:109 +msgid "" +"Please note that, the Executive Summary section will appear before quick " +"summary." +msgstr "" +"Veuillez noter que la section Résumé exécutif apparaîtra avant le résumé " +"rapide." + +#: scanEngine/templates/scanEngine/settings/report.html:111 +msgid "" +"You can customize the executive summary and methodology template using " +"markdown. Replace the below syntax wherever you require." +msgstr "" +"Vous pouvez personnaliser le modèle de résumé exécutif et de méthodologie à " +"l'aide de markdown. Remplacez la syntaxe ci-dessous partout où vous en avez " +"besoin." + +#: scanEngine/templates/scanEngine/settings/report.html:111 +msgid "Curly braces are must!" +msgstr "Les accolades sont obligatoires !" + +#: scanEngine/templates/scanEngine/settings/report.html:112 +msgid "Executive Summary Syntax" +msgstr "Syntaxe du résumé exécutif" + +#: scanEngine/templates/scanEngine/settings/report.html:114 +msgid "Target Scan Date Ex. 25 June, 2020 ." +msgstr "Date de l'analyse cible Ex. 25 juin 2020." + +#: scanEngine/templates/scanEngine/settings/report.html:115 +msgid "Company which performed Vulnerability/Reconnaissance Audit." +msgstr "Entreprise qui a effectué l'audit de vulnérabilité/reconnaissance." + +#: scanEngine/templates/scanEngine/settings/report.html:116 +msgid "Target Domain Name." +msgstr "Nom de domaine cible." + +#: scanEngine/templates/scanEngine/settings/report.html:117 +msgid "Target Description." +msgstr "Description de la cible." + +#: scanEngine/templates/scanEngine/settings/report.html:118 +msgid "Total number of subdomains discovered." +msgstr "Nombre total de sous-domaines découverts." + +#: scanEngine/templates/scanEngine/settings/report.html:119 +msgid "Total number of Vulnerabilities identified." +msgstr "Nombre total de vulnérabilités identifiées." + +#: scanEngine/templates/scanEngine/settings/report.html:120 +msgid "Total number of Critical Severity Vulnerabilities identified." +msgstr "Nombre total de vulnérabilités de gravité critique identifiées." + +#: scanEngine/templates/scanEngine/settings/report.html:121 +msgid "Total number of High Severity Vulnerabilities identified." +msgstr "Nombre total de vulnérabilités de gravité élevée identifiées." + +#: scanEngine/templates/scanEngine/settings/report.html:122 +msgid "Total number of Medium Severity Vulnerabilities identified." +msgstr "Nombre total de vulnérabilités de gravité modérée identifiées." + +#: scanEngine/templates/scanEngine/settings/report.html:123 +msgid "Total number of Low Severity Vulnerabilities identified." +msgstr "Nombre total de vulnérabilités de faible gravité identifiées." + +#: scanEngine/templates/scanEngine/settings/report.html:124 +msgid "Total number of Informational Vulnerabilities identified." +msgstr "Nombre total de vulnérabilités informationnelles identifiées." + +#: scanEngine/templates/scanEngine/settings/report.html:125 +msgid "Total number of Vulnerabilities with Unknown Severity identified." +msgstr "Nombre total de vulnérabilités de gravité inconnue identifiées." + +#: scanEngine/templates/scanEngine/settings/report.html:130 +msgid "Save Report Settings" +msgstr "Sauvegarder les paramètres du rapport" + +#: scanEngine/templates/scanEngine/settings/tool.html:7 +#: scanEngine/templates/scanEngine/settings/tool.html:19 +msgid "Settings, API Keys & Tool Settings" +msgstr "Paramètres, clés API et paramètres des outils" + +#: scanEngine/templates/scanEngine/settings/tool.html:15 +msgid "Tool Specific Settings" +msgstr "Paramètres spécifiques à l'outil" + +#: scanEngine/templates/scanEngine/settings/tool.html:27 +msgid "GF Patterns" +msgstr "Modèles GF" + +#: scanEngine/templates/scanEngine/settings/tool.html:29 +msgid "" +"This section lets you upload custom gf patterns. You can find more " +"information about the" +msgstr "" +"Cette section vous permet de télécharger des modèles gf personnalisés. Vous " +"pouvez trouver plus d'informations sur le" + +#: scanEngine/templates/scanEngine/settings/tool.html:29 +msgid "GF Tool here" +msgstr "Outil GF ici" + +#: scanEngine/templates/scanEngine/settings/tool.html:31 +msgid "" +"Please note that only json files are supported and the name of the pattern " +"will be the filename." +msgstr "" +"Veuillez noter que seuls les fichiers json sont pris en charge et que le nom " +"du modèle sera le nom du fichier." + +#: scanEngine/templates/scanEngine/settings/tool.html:32 +msgid "If the pattern name is" +msgstr "Si le nom du modèle est" + +#: scanEngine/templates/scanEngine/settings/tool.html:32 +msgid "the pattern name is" +msgstr "le nom du modèle est" + +#: scanEngine/templates/scanEngine/settings/tool.html:32 +msgid "and this has to be used this in YAML configuration." +msgstr "et celui-ci doit être utilisé dans la configuration YAML." + +#: scanEngine/templates/scanEngine/settings/tool.html:34 +msgid "Currently available GF patterns" +msgstr "Modèles GF actuellement disponibles" + +#: scanEngine/templates/scanEngine/settings/tool.html:37 +msgid "Click to View Pattern" +msgstr "Cliquez pour voir le modèle" + +#: scanEngine/templates/scanEngine/settings/tool.html:43 +msgid "Upload GF Pattern JSON" +msgstr "Télécharger le modèle GF JSON" + +#: scanEngine/templates/scanEngine/settings/tool.html:46 +#: scanEngine/templates/scanEngine/settings/tool.html:120 +msgid "Upload" +msgstr "Télécharger" + +#: scanEngine/templates/scanEngine/settings/tool.html:52 +#: scanEngine/templates/scanEngine/settings/tool.html:54 +msgid "Subfinder" +msgstr "Subfinder" + +#: scanEngine/templates/scanEngine/settings/tool.html:54 +#: scanEngine/templates/scanEngine/settings/tool.html:69 +#: scanEngine/templates/scanEngine/settings/tool.html:141 +#: scanEngine/templates/scanEngine/settings/tool.html:156 +msgid "This section lets you modify" +msgstr "Cette section vous permet de modifier" + +#: scanEngine/templates/scanEngine/settings/tool.html:54 +#: scanEngine/templates/scanEngine/settings/tool.html:69 +#: scanEngine/templates/scanEngine/settings/tool.html:141 +#: scanEngine/templates/scanEngine/settings/tool.html:156 +msgid "config file. You can find more information about the" +msgstr "" +"fichier de configuration. Vous pouvez trouver plus d'informations sur le" + +#: scanEngine/templates/scanEngine/settings/tool.html:54 +msgid "Subfinder config here." +msgstr "fichier de configuration Subfinder ici." + +#: scanEngine/templates/scanEngine/settings/tool.html:55 +#: scanEngine/templates/scanEngine/settings/tool.html:70 +#: scanEngine/templates/scanEngine/settings/tool.html:142 +#: scanEngine/templates/scanEngine/settings/tool.html:158 +msgid "Please note that only YAML config is supported." +msgstr "Veuillez noter que seule la configuration YAML est prise en charge." + +#: scanEngine/templates/scanEngine/settings/tool.html:59 +msgid "Current Subfinder Configuration" +msgstr "Configuration actuelle de Subfinder" + +#: scanEngine/templates/scanEngine/settings/tool.html:60 +#: scanEngine/templates/scanEngine/settings/tool.html:75 +#: scanEngine/templates/scanEngine/settings/tool.html:130 +#: scanEngine/templates/scanEngine/settings/tool.html:147 +#: scanEngine/templates/scanEngine/settings/tool.html:163 +msgid "Double click the configuration to edit." +msgstr "Double-cliquez sur la configuration pour la modifier." + +#: scanEngine/templates/scanEngine/settings/tool.html:67 +#: scanEngine/templates/scanEngine/settings/tool.html:69 +msgid "Amass" +msgstr "Amass" + +#: scanEngine/templates/scanEngine/settings/tool.html:69 +msgid "Amass config here." +msgstr "Fichier de configuration Amass ici." + +#: scanEngine/templates/scanEngine/settings/tool.html:74 +msgid "Current Amass Configuration" +msgstr "Configuration actuelle d'Amass" + +#: scanEngine/templates/scanEngine/settings/tool.html:84 +msgid "Nuclei" +msgstr "Nuclei" + +#: scanEngine/templates/scanEngine/settings/tool.html:88 +msgid "Nuclei Patterns" +msgstr "Modèles Nuclei" + +#: scanEngine/templates/scanEngine/settings/tool.html:93 +msgid "Nuclei Config File" +msgstr "Fichier de configuration Nuclei" + +#: scanEngine/templates/scanEngine/settings/tool.html:100 +msgid "" +"This section lets you upload Nuclei templates. You can find more information " +"about the" +msgstr "" +"Cette section vous permet de télécharger des modèles Nuclei. Vous pouvez " +"trouver plus d'informations sur les" + +#: scanEngine/templates/scanEngine/settings/tool.html:100 +msgid "Nuclei Templates here." +msgstr "Modèles Nuclei ici." + +#: scanEngine/templates/scanEngine/settings/tool.html:101 +msgid "" +"Please note that only YAML files are supported and the name of the pattern " +"will be the filename." +msgstr "" +"Veuillez noter que seuls les fichiers json sont pris en charge et que le nom " +"du modèle sera le nom du fichier." + +#: scanEngine/templates/scanEngine/settings/tool.html:102 +msgid "If the template name is" +msgstr "Si le nom du modèle est" + +#: scanEngine/templates/scanEngine/settings/tool.html:102 +msgid "then" +msgstr "alors" + +#: scanEngine/templates/scanEngine/settings/tool.html:102 +msgid "is to be used this in YAML configuration." +msgstr "doit être utilisé dans la configuration YAML." + +#: scanEngine/templates/scanEngine/settings/tool.html:104 +msgid "Currently available custom Nuclei templates" +msgstr "Modèles Nuclei personnalisés actuellement disponibles" + +#: scanEngine/templates/scanEngine/settings/tool.html:107 +msgid "Click to View Template" +msgstr "Cliquez pour afficher le modèle" + +#: scanEngine/templates/scanEngine/settings/tool.html:111 +msgid "No custom nuclei templates detected!" +msgstr "Aucun modèle Nuclei personnalisé détecté !" + +#: scanEngine/templates/scanEngine/settings/tool.html:117 +msgid "Upload Nuclei Template YAML" +msgstr "Télécharger le modèle YAML Nuclei" + +#: scanEngine/templates/scanEngine/settings/tool.html:125 +msgid "" +"This section lets you configure Nuclei config file. You can find more " +"information about the" +msgstr "" +"Cette section vous permet de configurer le fichier de configuration Nuclei. " +"Vous pouvez trouver plus d'informations sur le" + +#: scanEngine/templates/scanEngine/settings/tool.html:125 +msgid "Nuclei config here." +msgstr "fichier de configuration Nuclei ici." + +#: scanEngine/templates/scanEngine/settings/tool.html:129 +msgid "Current Nuclei Configuration" +msgstr "Configuration actuelle de Nuclei" + +#: scanEngine/templates/scanEngine/settings/tool.html:139 +#: scanEngine/templates/scanEngine/settings/tool.html:141 +msgid "Naabu" +msgstr "Naabu" + +#: scanEngine/templates/scanEngine/settings/tool.html:141 +msgid "Naabu config here." +msgstr "Fichier de configuration Naabu ici." + +#: scanEngine/templates/scanEngine/settings/tool.html:146 +msgid "Current Naabu Configuration" +msgstr "Configuration actuelle de Naabu" + +#: scanEngine/templates/scanEngine/settings/tool.html:154 +msgid "theHarvester" +msgstr "theHarvester" + +#: scanEngine/templates/scanEngine/settings/tool.html:156 +msgid "the Harvester" +msgstr "the Harvester" + +#: scanEngine/templates/scanEngine/settings/tool.html:156 +msgid "the Harvester config here." +msgstr "Fichier de configuration the Harvester ici." + +#: scanEngine/templates/scanEngine/settings/tool.html:162 +msgid "Current theHarvester Configuration" +msgstr "Configuration actuelle de theHarvester" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:25 +msgid "Add new tool" +msgstr "Ajouter un nouvel outil" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:31 +msgid "All" +msgstr "Tous" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:34 +msgid "Default" +msgstr "Défaut" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:35 +msgid "Custom" +msgstr "Personnalisé" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:52 +msgid "Default Tool" +msgstr "Outil par défaut" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:54 +msgid "Custom Tool" +msgstr "Outil personnalisé" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:60 +msgid "Uninstall Tool" +msgstr "Désinstaller l'outil" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:61 +#: scanEngine/templates/scanEngine/settings/update_tool.html:28 +msgid "Modify Tool" +msgstr "Modifier l'outil" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:68 +msgid "logo" +msgstr "logo" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:74 +msgid "Subdomain Enumeration Tool" +msgstr "Outil d'énumération de sous-domaines" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:78 +msgid "Tool Type" +msgstr "Type d'outil" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:80 +msgid "Github" +msgstr "Github" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:82 +msgid "License" +msgstr "Licence" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:88 +msgid "Current Installed Version" +msgstr "Version actuellement installée" + +#: scanEngine/templates/scanEngine/settings/tool_arsenal.html:97 +msgid "Check Update" +msgstr "Vérifier les mises à jour" + +#: scanEngine/templates/scanEngine/settings/update_tool.html:6 +#: scanEngine/templates/scanEngine/settings/update_tool.html:12 +#: scanEngine/templates/scanEngine/settings/update_tool.html:15 +msgid "Update Tool" +msgstr "Mettre à jour l'outil" + +#: scanEngine/templates/scanEngine/update_engine.html:6 +#: scanEngine/templates/scanEngine/update_engine.html:27 +#: scanEngine/templates/scanEngine/update_engine.html:31 +#: scanEngine/templates/scanEngine/update_engine.html:39 +#: scanEngine/templates/scanEngine/update_engine.html:43 +msgid "Update Scan Engine" +msgstr "Mettre à jour le moteur d'analyse" + +#: scanEngine/templates/scanEngine/wordlist/add.html:6 +#: scanEngine/templates/scanEngine/wordlist/index.html:18 +#: scanEngine/templates/scanEngine/wordlist/index.html:30 +msgid "Add New Wordlist" +msgstr "Ajouter une nouvelle liste de mots" + +#: scanEngine/templates/scanEngine/wordlist/add.html:14 +#: scanEngine/templates/scanEngine/wordlist/index.html:6 +#: scanEngine/templates/scanEngine/wordlist/index.html:13 +msgid "Wordlist" +msgstr "Liste de mots" + +#: scanEngine/templates/scanEngine/wordlist/add.html:15 +msgid "Add Worldlist" +msgstr "Ajouter une liste de mots" + +#: scanEngine/templates/scanEngine/wordlist/add.html:19 +msgid "Add New Wordlist for Bruteforce" +msgstr "Ajouter une nouvelle liste de mots pour le forçage" + +#: scanEngine/templates/scanEngine/wordlist/add.html:27 +msgid "" +"Wordlist can be used for directory bruteforce or subdomain bruteforce. " +"Instructions on how to use the wordlist are" +msgstr "" +"La liste de mots peut être utilisée pour le forçage de répertoires ou de " +"sous-domaines. Les instructions sur la façon d'utiliser la liste de mots se " +"trouvent" + +#: scanEngine/templates/scanEngine/wordlist/add.html:27 +msgid "found here" +msgstr "ici" + +#: scanEngine/templates/scanEngine/wordlist/add.html:32 +#: scanEngine/templates/scanEngine/wordlist/index.html:43 +msgid "Wordlist Name" +msgstr "Nom de la liste de mots" + +#: scanEngine/templates/scanEngine/wordlist/add.html:36 +msgid "Short Name" +msgstr "Nom court" + +#: scanEngine/templates/scanEngine/wordlist/add.html:43 +msgid "" +"Please keep the short names without spaces, like my-wordlist or my_wordlist. " +"The short names will be later used to reference wordlist in the YAML " +"settings." +msgstr "" +"Veuillez garder les noms courts sans espaces, comme my-wordlist ou " +"my_wordlist. Les noms courts seront utilisés plus tard pour référencer la " +"liste de mots dans les paramètres YAML." + +#: scanEngine/templates/scanEngine/wordlist/add.html:46 +msgid "Select the wordlist file" +msgstr "Sélectionnez le fichier de liste de mots" + +#: scanEngine/templates/scanEngine/wordlist/add.html:47 +msgid "" +"Your wordlist must be a *.txt file and wordlists must be separated by a new " +"line." +msgstr "" +"Votre liste de mots doit être un fichier *.txt et les mots doivent être " +"séparés par un saut de ligne." + +#: scanEngine/templates/scanEngine/wordlist/add.html:50 +msgid "Choose *.txt file" +msgstr "Choisissez un fichier *.txt" + +#: scanEngine/templates/scanEngine/wordlist/add.html:54 +msgid "Upload Wordlist" +msgstr "Télécharger la liste de mots" + +#: scanEngine/templates/scanEngine/wordlist/index.html:14 +msgid "All Worldlists" +msgstr "Toutes les listes de mots" + +#: scanEngine/templates/scanEngine/wordlist/index.html:44 +msgid "Shortname" +msgstr "Nom court" + +#: scanEngine/templates/scanEngine/wordlist/index.html:45 +msgid "Wordlist Count" +msgstr "Nombre de mots dans la liste" + +#: scanEngine/templates/scanEngine/wordlist/index.html:56 +msgid "Delete Wordlist" +msgstr "Supprimer la liste de mots" + +#: scanEngine/views.py:42 +msgid "Scan Engine Added successfully" +msgstr "Moteur de scan ajouté avec succès" + +#: scanEngine/views.py:60 +msgid "Engine successfully deleted!" +msgstr "Moteur de scan supprimé avec succès!" + +#: scanEngine/views.py:66 +msgid "Oops! Engine could not be deleted!" +msgstr "Oups ! Le moteur ne peut pas être supprimé!" + +#: scanEngine/views.py:85 +msgid "Engine edited successfully" +msgstr "Moteur édité avec succès" + +#: scanEngine/views.py:126 +#, python-format +msgid "Wordlist %(wlistName)s added successfully" +msgstr "Liste de mots %(wlistName)s ajoutée avec succès" + +#: scanEngine/views.py:149 +msgid "Wordlist successfully deleted!" +msgstr "Liste de mots supprimée avec succès" + +#: scanEngine/views.py:155 +msgid "Oops! Wordlist could not be deleted!" +msgstr "Oups ! La liste de mots n'a pas pu être supprimée" + +#: scanEngine/views.py:183 +msgid "Lookup Keywords updated successfully" +msgstr "Mots clés de recherche mis à jour avec succès" + +#: scanEngine/views.py:205 +msgid "Invalid GF Pattern, upload only *.json extension" +msgstr "" +"Schéma GF invalide, téléversez uniquement des fichiers à l'extension .json" + +#: scanEngine/views.py:213 +#, python-format +msgid "GF Pattern %(patternName)s successfully uploaded" +msgstr "Schéma GF %(patternName)s téléversé avec succès" + +#: scanEngine/views.py:220 +msgid "Invalid Nuclei Pattern, upload only *.yaml extension" +msgstr "" +"Schéma Nuclei invalide, téléverser uniquement des fichiers à l'extension ." +"yaml" + +#: scanEngine/views.py:227 +#, python-format +msgid "Nuclei Pattern %(patternName)s successfully uploaded" +msgstr "Schéma Nuclei %(patternName)s téléversé avec succès" + +#: scanEngine/views.py:233 +msgid "Nuclei config updated!" +msgstr "fichier de configuration Nuclei ici." + +#: scanEngine/views.py:239 +msgid "Subfinder config updated!" +msgstr "Fichier de configuration Subfinder ici." + +#: scanEngine/views.py:245 +msgid "Naabu config updated!" +msgstr "Fichier de configuration Naabu ici." + +#: scanEngine/views.py:251 +msgid "Amass config updated!" +msgstr "Fichier de configuration Amass ici." + +#: scanEngine/views.py:257 +msgid "theHarvester config updated!" +msgstr "Fichier de configuration theHarvester ici." + +#: scanEngine/views.py:308 scanEngine/views.py:309 +msgid "" +"*reNgine*\n" +"Congratulations! your notification services are working." +msgstr "" +"*reNgine*\n" +"Félicitations! vos services de notification fonctionnent." + +#: scanEngine/views.py:310 +msgid "" +"**reNgine**\n" +"Congratulations! your notification services are working." +msgstr "" +"**reNgine**\n" +"Félicitations! vos services de notification fonctionnent." + +#: scanEngine/views.py:314 +msgid "Notification Settings updated successfully and test message was sent." +msgstr "" +"Paramètres de notification mis à jour avec succès et un message de test a " +"été envoyé." + +#: scanEngine/views.py:349 +msgid "Proxies updated." +msgstr "Proxies mis à jour." + +#: scanEngine/views.py:401 +msgid "Hackerone Settings updated." +msgstr "Paramètres de Hackerone mis à jour." + +#: scanEngine/views.py:439 +msgid "Report Settings updated." +msgstr "Paramètres de rapport mis à jour." + +#: scanEngine/views.py:518 +msgid "External Tool Successfully Added!" +msgstr "Outil externe ajouté avec succès!" + +#: scanEngine/views.py:538 +msgid "Tool modified successfully" +msgstr "Outil modifié avec succès" diff --git a/web/scanEngine/locale/fr/LC_MESSAGES/djangojs.mo b/web/scanEngine/locale/fr/LC_MESSAGES/djangojs.mo new file mode 100644 index 000000000..fb0eb3687 Binary files /dev/null and b/web/scanEngine/locale/fr/LC_MESSAGES/djangojs.mo differ diff --git a/web/scanEngine/locale/fr/LC_MESSAGES/djangojs.po b/web/scanEngine/locale/fr/LC_MESSAGES/djangojs.po new file mode 100644 index 000000000..511649bf3 --- /dev/null +++ b/web/scanEngine/locale/fr/LC_MESSAGES/djangojs.po @@ -0,0 +1,199 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: scanEngine/static/scanEngine/js/custom_scan_engine.js:5 +msgid "Are you sure you want to delete this scan engine?" +msgstr "Êtes-vous sûr de vouloir supprimer ce moteur de scan ?" + +#: scanEngine/static/scanEngine/js/custom_scan_engine.js:6 +msgid "You won't be able to revert this!" +msgstr "Vous ne pourrez pas revenir en arrière !" + +#: scanEngine/static/scanEngine/js/custom_scan_engine.js:9 +msgid "Delete" +msgstr "Supprimer" + +#: scanEngine/static/scanEngine/js/custom_scan_engine.js:10 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:58 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:103 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:148 +msgid "Cancel" +msgstr "Annuler" + +#: scanEngine/static/scanEngine/js/custom_scan_engine.js:31 +msgid "Oops! Unable to delete" +msgstr "Oups ! Impossible de supprimer" + +#: scanEngine/static/scanEngine/js/custom_tools.js:20 +#: scanEngine/static/scanEngine/js/custom_tools.js:26 +#: scanEngine/static/scanEngine/js/custom_tools.js:51 +#: scanEngine/static/scanEngine/js/custom_tools.js:57 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:54 +msgid "Error!" +msgstr "Erreur !" + +#: scanEngine/static/scanEngine/js/custom_tools.js:21 +#: scanEngine/static/scanEngine/js/custom_tools.js:27 +#: scanEngine/static/scanEngine/js/custom_tools.js:52 +#: scanEngine/static/scanEngine/js/custom_tools.js:58 +msgid "Okay" +msgstr "OK" + +#: scanEngine/static/scanEngine/js/custom_tools.js:26 +msgid "Error loading gf pattern!" +msgstr "Erreur lors du chargement du schéma de gf" + +#: scanEngine/static/scanEngine/js/custom_tools.js:57 +msgid "Error loading Nuclei Template!" +msgstr "Erreur lors du chargement du modèle de Nuclei" + +#: scanEngine/static/scanEngine/js/custom_tools.js:70 +msgid "# Your nuclei configuration here." +msgstr "# Votre configuration de nuclei ici." + +#: scanEngine/static/scanEngine/js/custom_tools.js:71 +#: scanEngine/static/scanEngine/js/custom_tools.js:77 +#: scanEngine/static/scanEngine/js/custom_tools.js:88 +#: scanEngine/static/scanEngine/js/custom_tools.js:94 +#: scanEngine/static/scanEngine/js/custom_tools.js:105 +#: scanEngine/static/scanEngine/js/custom_tools.js:111 +#: scanEngine/static/scanEngine/js/custom_tools.js:123 +#: scanEngine/static/scanEngine/js/custom_tools.js:129 +#: scanEngine/static/scanEngine/js/custom_tools.js:140 +#: scanEngine/static/scanEngine/js/custom_tools.js:146 +msgid "Save Changes" +msgstr "Enregistrer les modifications" + +#: scanEngine/static/scanEngine/js/custom_tools.js:87 +msgid "# Your Subfinder configuration here." +msgstr "# Votre configuration de Subfinder ici." + +#: scanEngine/static/scanEngine/js/custom_tools.js:104 +msgid "# Your Naabu configuration here." +msgstr "# Votre configuration de Naabu ici." + +#: scanEngine/static/scanEngine/js/custom_tools.js:122 +msgid "# Your amass configuration here." +msgstr "# Votre configuration de amass ici." + +#: scanEngine/static/scanEngine/js/custom_tools.js:139 +msgid "# Your the Harvester configuration here." +msgstr "# Votre configuration de theHarvester ici." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:6 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:144 +msgid "Unable to fetch latest version!" +msgstr "Impossible de récupérer la dernière version!" + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:7 +msgid "" +"Since the version lookup command is invalid, reNgine is not able to detect " +"if there's a newer version. But you can still force download the latest " +"version." +msgstr "" +"Comme la commande de recherche de version échoue, reNgine n'est pas capable " +"de détecter si une version plus récente est disponible. Mais vous pouvez " +"toujours forcer le téléchargement de la dernière version." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:14 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:62 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:108 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:153 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:190 +msgid "Downloading latest version..." +msgstr "Téléchargement de la dernière version..." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:15 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:63 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:109 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:154 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:191 +msgid "This may take a few minutes." +msgstr "Cela peut prendre quelques minutes." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:43 +msgid "Finding latest version..." +msgstr "Recherche de la dernière version..." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:55 +msgid "" +"Github API rate limit exceeded, we can not fetch the latest version number, " +"please try again in an hour. But you can force download the latest version." +msgstr "" +"Limite de taux d'API Github dépassée, nous ne pouvons pas récupérer le " +"numéro de la dernière version, veuillez réessayer dans une heure. Mais vous " +"pouvez forcer le téléchargement de la dernière version." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:57 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:102 +msgid "Force download" +msgstr "Forcer le téléchargement" + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:91 +#: scanEngine/static/scanEngine/js/tool_arsenal.js:99 +msgid "Oops!" +msgstr "Oups !" + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:92 +msgid "We ran into an error! Please raise github request." +msgstr "Nous rencontrons une erreur ! Veuillez créer un tiquet sur Github." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:100 +msgid "" +"The github URL provided is not valid, or the project doesn't support " +"releases. We are unable to check the latest version number, however, you can " +"still force download the update" +msgstr "" +"L'URL Github fournie n'est pas valide, ou le projet ne supporte pas les " +"releases. Nous ne pouvons pas vérifier le numéro de la dernière version, " +"mais vous pouvez toujours forcer le téléchargement de la mise à jour" + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:175 +msgid "No Update available" +msgstr "Aucune mise à jour disponible" + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:231 +msgid "This is not reversible. Please proceed with caution." +msgstr "Ceci n'est pas réversible. Veuillez continuer avec précaution." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:239 +msgid "This may take a few minutes..." +msgstr "Cela peut prendre quelques minutes..." + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:265 +msgid "Filtered custom tools" +msgstr "Outils personnalisés filtrés" + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:278 +msgid "Filtered default tools" +msgstr "Outils par défaut filtrés" + +#: scanEngine/static/scanEngine/js/tool_arsenal.js:291 +msgid "Displaying all tools" +msgstr "Affichage de tous les outils" + +msgid "No wordlist installed" +msgstr "Aucune liste de mot installée" + +msgid "No engine installed" +msgstr "Aucun moteur installé" + +msgid "Disk Space Consumed" +msgstr "Espace disque consommé" \ No newline at end of file diff --git a/web/scanEngine/static/scanEngine/js/custom_scan_engine.js b/web/scanEngine/static/scanEngine/js/custom_scan_engine.js index 17c122670..3a28ca5e5 100644 --- a/web/scanEngine/static/scanEngine/js/custom_scan_engine.js +++ b/web/scanEngine/static/scanEngine/js/custom_scan_engine.js @@ -1,34 +1,13 @@ -$(document).ready(function() { - var table = $('#show-hide-col').DataTable( { - "searching": false, - "scrollY": "280px", - "paging": false, - "info": false, - "ordering": false, - "stripeClasses": [], - "lengthMenu": [7, 10, 20, 50], - "pageLength": 7 - } ); - $('a.toggle-vis').on( 'click', function (e) { - e.preventDefault(); - // Get the column API object - var column = table.column( $(this).attr('data-column') ); - // Toggle the visibility - column.visible( ! column.visible() ); - } ); - -} ); - - function delete_api(id, item) { var delAPI = 'delete/'+id; swal.queue([{ - title: 'Are you sure you want to delete this scan engine?', - text: "You won't be able to revert this!", + title: gettext('Are you sure you want to delete this scan engine?'), + text: gettext("You won't be able to revert this!"), type: 'warning', showCancelButton: true, - confirmButtonText: 'Delete', + confirmButtonText: gettext('Delete'), + cancelButtonText: gettext('Cancel'), padding: '2em', showLoaderOnConfirm: true, preConfirm: function() { @@ -49,7 +28,7 @@ function delete_api(id, item) .catch(function() { swal.insertQueueStep({ type: 'error', - title: 'Oops! Unable to delete' + title: gettext('Oops! Unable to delete') }) }) } diff --git a/web/scanEngine/static/scanEngine/js/custom_tools.js b/web/scanEngine/static/scanEngine/js/custom_tools.js index 68af0ab5f..b4a06a890 100644 --- a/web/scanEngine/static/scanEngine/js/custom_tools.js +++ b/web/scanEngine/static/scanEngine/js/custom_tools.js @@ -1,6 +1,6 @@ function load_gf_template(pattern_name){ Swal.fire({ - title: `Fetching GF template ${pattern_name}...`, + title: interpolate('Fetching GF template %(patternName)s...', {patternName: pattern_name}, true), }); swal.showLoading(); @@ -11,27 +11,27 @@ function load_gf_template(pattern_name){ $('#modal-content').empty(); $("#modal-footer").empty(); - $('#modal_title').html(`GF Pattern ` + htmlEncode(pattern_name)); + $('#modal_title').html(interpolate('GF Pattern %(patternName)s', {patternName: htmlEncode(pattern_name)}, true)); $('#modal-content').append(`
${htmlEncode(response['content'])}
`); $('#modal_dialog').modal('show'); } else{ - swal.fire("Error!", response.message, "error", { - button: "Okay", + swal.fire(gettext("Error!"), response.message, "error", { + button: gettext("Okay"), }); } }).fail(function(){ - swal.fire("Error!", 'Error loading gf pattern!', "error", { - button: "Okay", + swal.fire(gettext("Error!"), gettext('Error loading gf pattern!'), "error", { + button: gettext("Okay"), }); }); } function load_nuclei_template(pattern_name){ Swal.fire({ - title: `Fetching Nuclei template ${pattern_name}...`, + title: interpolate('Fetching Nuclei template %(patternName)s...', {patternName: pattern_name}, true), }); swal.showLoading(); @@ -42,20 +42,20 @@ function load_nuclei_template(pattern_name){ $('#modal-content').empty(); $("#modal-footer").empty(); - $('#modal_title').html(`Nuclei Template: ` + htmlEncode(pattern_name)); + $('#modal_title').html(interpolate('Nuclei Template: %(patternName)s', {patternName: htmlEncode(pattern_name)}, true)); $('#modal-content').append(`
${htmlEncode(response['content'])}
`); $('#modal_dialog').modal('show'); } else{ - swal.fire("Error!", response.message, "error", { - button: "Okay", + swal.fire(gettext("Error!"), response.message, "error", { + button: gettext("Okay"), }); } }).fail(function(){ - swal.fire("Error!", 'Error loading Nuclei Template!', "error", { - button: "Okay", + swal.fire(gettext("Error!"), gettext('Error loading Nuclei Template!'), "error", { + button: gettext("Okay"), }); }); } @@ -67,14 +67,14 @@ $.getJSON(`/api/getFileContents?nuclei_config&format=json`, function(data) { $("textarea#nuclei_config_text_area").html(data['content']); }).fail(function(){ $("#nuclei_config_text_area").removeAttr("readonly"); - $("textarea#nuclei_config_text_area").html(`# Your nuclei configuration here.`); - $("#nuclei-config-form").append(''); + $("textarea#nuclei_config_text_area").html(gettext('# Your nuclei configuration here.')); + $("#nuclei-config-form").append(''); }); $("#nuclei_config_text_area").dblclick(function() { if (!document.getElementById('nuclei-config-submit')) { $("#nuclei_config_text_area").removeAttr("readonly"); - $("#nuclei-config-form").append(''); + $("#nuclei-config-form").append(''); } }); @@ -84,14 +84,14 @@ $.getJSON(`/api/getFileContents?subfinder_config&format=json`, function(data) { $("textarea#subfinder_config_text_area").html(htmlEncode(data['content'])); }).fail(function(){ $("#subfinder_config_text_area").removeAttr("readonly"); - $("textarea#subfinder_config_text_area").html(`# Your Subfinder configuration here.`); - $("#subfinder-config-form").append(''); + $("textarea#subfinder_config_text_area").html(gettext(`# Your Subfinder configuration here.`)); + $("#subfinder-config-form").append(''); }); $("#subfinder_config_text_area").dblclick(function() { if (!document.getElementById('subfinder-config-submit')) { $("#subfinder_config_text_area").removeAttr("readonly"); - $("#subfinder-config-form").append(''); + $("#subfinder-config-form").append(''); } }); @@ -101,14 +101,14 @@ $.getJSON(`/api/getFileContents?naabu_config&format=json`, function(data) { $("textarea#naabu_config_text_area").html(htmlEncode(data['content'])); }).fail(function(){ $("#naabu_config_text_area").removeAttr("readonly"); - $("textarea#naabu_config_text_area").html(`# Your Naabu configuration here.`); - $("#naabu-config-form").append(''); + $("textarea#naabu_config_text_area").html(gettext(`# Your Naabu configuration here.`)); + $("#naabu-config-form").append(''); }); $("#naabu_config_text_area").dblclick(function() { if (!document.getElementById('naabu-config-submit')) { $("#naabu_config_text_area").removeAttr("readonly"); - $("#naabu-config-form").append(''); + $("#naabu-config-form").append(''); } }); @@ -119,14 +119,14 @@ $.getJSON(`/api/getFileContents?amass_config&format=json`, function(data) { $("textarea#amass_config_text_area").html(htmlEncode(data['content'])); }).fail(function(){ $("#amass_config_text_area").removeAttr("readonly"); - $("textarea#amass_config_text_area").html(`# Your amass configuration here.`); - $("#amass-config-form").append(''); + $("textarea#amass_config_text_area").html(gettext(`# Your amass configuration here.`)); + $("#amass-config-form").append(''); }); $("#amass_config_text_area").dblclick(function() { if (!document.getElementById('amass-config-submit')) { $("#amass_config_text_area").removeAttr("readonly"); - $("#amass-config-form").append(''); + $("#amass-config-form").append(''); } }); @@ -136,13 +136,13 @@ $.getJSON(`/api/getFileContents?theharvester_config&format=json`, function(data) $("textarea#theharvester_config_text_area").html(htmlEncode(data['content'])); }).fail(function(){ $("#theharvester_config_text_area").removeAttr("readonly"); - $("textarea#theharvester_config_text_area").html(`# Your the Harvester configuration here.`); - $("#theHarvester-config-form").append(''); + $("textarea#theharvester_config_text_area").html(gettext(`# Your the Harvester configuration here.`)); + $("#theHarvester-config-form").append(''); }); $("#theharvester_config_text_area").dblclick(function() { if (!document.getElementById('theharvester-config-submit')) { $("#theharvester_config_text_area").removeAttr("readonly"); - $("#theharvester-config-form").append(''); + $("#theharvester-config-form").append(''); } }); diff --git a/web/scanEngine/static/scanEngine/js/tool_arsenal.js b/web/scanEngine/static/scanEngine/js/tool_arsenal.js index c5db0adee..610d525de 100644 --- a/web/scanEngine/static/scanEngine/js/tool_arsenal.js +++ b/web/scanEngine/static/scanEngine/js/tool_arsenal.js @@ -3,16 +3,16 @@ function get_external_tool_latest_version(tool_id, tool_name){ console.log(current_version) if (current_version === 'Invalid version lookup command.' || current_version === 'Version Lookup command not provided.'){ Swal.fire({ - title: 'Unable to fetch latest version!', - text: `Since the version lookup command is invalid, reNgine is not able to detect if there's a newer version. But you can still force download the latest version.`, + title: gettext('Unable to fetch latest version!'), + text: gettext(`Since the version lookup command is invalid, reNgine is not able to detect if there's a newer version. But you can still force download the latest version.`), icon: 'info', - confirmButtonText: 'Update ' + htmlEncode(tool_name) + confirmButtonText: interpolate('Update %(toolName)s', {toolName: htmlEncode(tool_name)}, true), }).then((result) => { /* Read more about isConfirmed, isDenied below */ if (result.isConfirmed) { Swal.fire({ - title: 'Downloading latest version...', - text: 'This may take a few minutes.', + title: gettext('Downloading latest version...'), + text: gettext('This may take a few minutes.'), allowOutsideClick: false }); swal.showLoading(); @@ -22,14 +22,14 @@ function get_external_tool_latest_version(tool_id, tool_name){ swal.close(); if (response['status']) { Swal.fire({ - title: htmlEncode(tool_name) + ' Updated!', + title: interpolate('%(toolName)s Updated!', {toolName: htmlEncode(tool_name)}, true), text: response['message'], icon: 'success', }); } else{ Swal.fire({ - title: htmlEncode(tool_name) + ' could not update!', + title: interpolate('%(toolName)s could not update!', {toolName: htmlEncode(tool_name)}, true), text: response['message'], icon: 'fail', }); @@ -40,7 +40,7 @@ function get_external_tool_latest_version(tool_id, tool_name){ } else{ Swal.fire({ - title: 'Finding latest version...', + title: gettext('Finding latest version...'), allowOutsideClick: false }); swal.showLoading(); @@ -51,15 +51,16 @@ function get_external_tool_latest_version(tool_id, tool_name){ if (response['message'] == 'RateLimited') { Swal.fire({ showCancelButton: true, - title: 'Error!', - text: 'Github API rate limit exceeded, we can not fetch the latest version number, please try again in an hour. But you can force download the latest version.', + title: gettext('Error!'), + text: gettext('Github API rate limit exceeded, we can not fetch the latest version number, please try again in an hour. But you can force download the latest version.'), icon: 'error', - confirmButtonText: 'Force download', + confirmButtonText: gettext('Force download'), + cancelButtonText: gettext('Cancel'), }).then((result) => { if (result.isConfirmed) { Swal.fire({ - title: 'Downloading latest version...', - text: 'This may take a few minutes.', + title: gettext('Downloading latest version...'), + text: gettext('This may take a few minutes.'), allowOutsideClick: false }); swal.showLoading(); @@ -69,14 +70,14 @@ function get_external_tool_latest_version(tool_id, tool_name){ swal.close(); if (response['status']) { Swal.fire({ - title: htmlEncode(tool_name) + ' Updated!', + title: interpolate('%(toolName)s Updated!', {toolName: htmlEncode(tool_name)}, true), text: response['message'], icon: 'success', }); } else{ Swal.fire({ - title: htmlEncode(tool_name) + ' could not update!', + title: interpolate('%(toolName)s could not update!', {toolName: htmlEncode(tool_name)}, true), text: response['message'], icon: 'fail', }); @@ -87,24 +88,25 @@ function get_external_tool_latest_version(tool_id, tool_name){ } else if (response['message'] == 'Tool Not found'){ Swal.fire({ - title: 'Oops!', - text: 'We ran into an error! Please raise github request.', + title: gettext('Oops!'), + text: gettext('We ran into an error! Please raise github request.'), icon: 'error' }); } else if (response['message'] == 'Not Found'){ Swal.fire({ showCancelButton: true, - title: 'Oops!', - text: 'The github URL provided is not valid, or the project doesn\'t support releases. We are unable to check the latest version number, however, you can still force download the update', + title: gettext('Oops!'), + text: gettext(`The github URL provided is not valid, or the project doesn't support releases. We are unable to check the latest version number, however, you can still force download the update`), icon: 'error', - confirmButtonText: 'Force download', + confirmButtonText: gettext('Force download'), + cancelButtonText: gettext('Cancel'), }).then((result) => { /* Read more about isConfirmed, isDenied below */ if (result.isConfirmed) { Swal.fire({ - title: 'Downloading latest version...', - text: 'This may take a few minutes.', + title: gettext('Downloading latest version...'), + text: gettext('This may take a few minutes.'), allowOutsideClick: false }); swal.showLoading(); @@ -114,14 +116,14 @@ function get_external_tool_latest_version(tool_id, tool_name){ swal.close(); if (response['status']) { Swal.fire({ - title: htmlEncode(tool_name) + ' Updated!', + title: interpolate('%(toolName)s Updated!', {toolName: htmlEncode(tool_name)}, true), text: response['message'], icon: 'success', }); } else{ Swal.fire({ - title: htmlEncode(tool_name) + ' could not update!', + title: interpolate('%(toolName)s could not update!', {toolName: htmlEncode(tool_name)}, true), text: response['message'], icon: 'fail', }); @@ -139,16 +141,17 @@ function get_external_tool_latest_version(tool_id, tool_name){ if (current_version === 'Invalid version lookup command.' || current_version === 'Version Lookup command not provided.'){ Swal.fire({ - title: 'Unable to fetch latest version!', - text: `Since the version lookup command is invalid, reNgine is not able to detect if there's a newer version. But you can still force download the latest version. The latest version is ${latest_version}.`, + title: gettext('Unable to fetch latest version!'), + text: interpolate(`Since the version lookup command is invalid, reNgine is not able to detect if there's a newer version. But you can still force download the latest version. The latest version is %(latestVersion)s.`, {latestVersion: latest_version}, true), icon: 'info', - confirmButtonText: 'Update ' + htmlEncode(tool_name) + confirmButtonText: interpolate('Update %(toolName)s', {toolName: htmlEncode(tool_name)}, true), + cancelButtonText: gettext('Cancel'), }).then((result) => { /* Read more about isConfirmed, isDenied below */ if (result.isConfirmed) { Swal.fire({ - title: 'Downloading latest version...', - text: 'This may take a few minutes.', + title: gettext('Downloading latest version...'), + text: gettext('This may take a few minutes.'), allowOutsideClick: false }); swal.showLoading(); @@ -157,8 +160,8 @@ function get_external_tool_latest_version(tool_id, tool_name){ .then(function (response) { swal.close(); Swal.fire({ - title: htmlEncode(tool_name) + ' Updated!', - text: `${tool_name} has now been updated to v${latest_version}!`, + title: interpolate('%(toolName)s Updated!', {toolName: htmlEncode(tool_name)}, true), + text: interpolate(`%(toolName)s has now been updated to v%(latestVersion)s!`, {toolName: htmlEncode(tool_name), latestVersion: latest_version}, true), icon: 'success', }); }); @@ -169,23 +172,23 @@ function get_external_tool_latest_version(tool_id, tool_name){ current_version = current_version.charAt(0) == 'v' ? current_version.substring(1) : current_version; if (current_version == latest_version) { Swal.fire({ - title: 'No Update available', - text: 'Looks like the latest version of ' + htmlEncode(tool_name) + ' is already installed.', + title: gettext('No Update available'), + text: interpolate('Looks like the latest version of %(toolName)s is already installed.', {toolName: htmlEncode(tool_name)}, true), icon: 'info' }); } else{ // update available Swal.fire({ - title: 'Update available! Version: ' + latest_version, - text: `Your current version of ${ htmlEncode(tool_name)} is v${current_version}, but latest version v${latest_version} is available, please update!`, + title: interpolate('Update available! Version: %(latestVersion)s', {latestVersion: latest_version}, true), + text: interpolate(`Your current version of %(toolName)s is v%(currentVersion)s, but latest version v%(latestVersion)s is available, please update!`, {toolName: htmlEncode(tool_name), currentVersion: current_version, latestVersion: latest_version}, true), icon: 'info', - confirmButtonText: 'Update ' + htmlEncode(tool_name) + confirmButtonText: interpolate('Update %(toolName)s', {toolName: htmlEncode(tool_name)}, true), }).then((result) => { if (result.isConfirmed) { Swal.fire({ - title: 'Downloading latest version...', - text: 'This may take a few minutes.', + title: gettext('Downloading latest version...'), + text: gettext('This may take a few minutes.'), allowOutsideClick: false }); swal.showLoading(); @@ -194,8 +197,8 @@ function get_external_tool_latest_version(tool_id, tool_name){ .then(function (response) { swal.close(); Swal.fire({ - title: htmlEncode(tool_name) + ' Updated!', - text: `${ htmlEncode(tool_name)} has now been updated to v${latest_version}!`, + title: interpolate('%(toolName)s Updated!', {toolName: htmlEncode(tool_name)}, true), + text: interpolate(`%(toolName)s has now been updated to v%(lastestVersion)s!`, {toolName: htmlEncode(tool_name), lastestVersion: response.version}, true), icon: 'success', }); }); @@ -224,16 +227,16 @@ function get_external_tool_current_version(tool_id, id){ function uninstall_tool(tool_id, tool_name){ Swal.fire({ - title: 'Are you sure you want to uninstall ' + htmlEncode(tool_name), - text: `This is not reversible. Please proceed with caution.`, + title: interpolate('Are you sure you want to uninstall %(toolName)s', {toolName: htmlEncode(tool_name)}, true), + text: gettext(`This is not reversible. Please proceed with caution.`), icon: 'warning', - confirmButtonText: 'Uninstall ' + htmlEncode(tool_name) + confirmButtonText: interpolate('Uninstall %(toolName)s', {toolName: htmlEncode(tool_name)}, true), }).then((result) => { /* Read more about isConfirmed, isDenied below */ if (result.isConfirmed) { Swal.fire({ - title: 'Uninstalling ' + htmlEncode(tool_name), - text: 'This may take a few minutes...', + title: interpolate('Uninstalling %(toolName)s', {toolName: htmlEncode(tool_name)}, true), + text: gettext('This may take a few minutes...'), allowOutsideClick: false }); swal.showLoading(); @@ -244,8 +247,8 @@ function uninstall_tool(tool_id, tool_name){ swal.close(); $("#tool_card_" + tool_name).remove(); Swal.fire({ - title: htmlEncode(tool_name) + ' Uninstalled!', - text: `${tool_name} has been Uninstalled.`, + title: interpolate('%(toolName)s Uninstalled!', {toolName: htmlEncode(tool_name)}, true), + text: interpolate(`%(toolName)s has been Uninstalled.`, {toolName: htmlEncode(tool_name)}, true), icon: 'success', }); }); @@ -259,7 +262,7 @@ $('#btn_show_custom_tools').on('click', function () { $('.custom_tool').show(); $('.default_tool').hide(); Snackbar.show({ - text: 'Filtered custom tools', + text: gettext('Filtered custom tools'), pos: 'top-right', duration: 2500 }); @@ -272,7 +275,7 @@ $('#btn_show_default_tools').on('click', function () { $('.custom_tool').hide(); $('.default_tool').show(); Snackbar.show({ - text: 'Filtered default tools', + text: gettext('Filtered default tools'), pos: 'top-right', duration: 2500 }); @@ -285,7 +288,7 @@ $('#btn_show_all_tools').on('click', function () { $('.custom_tool').show(); $('.default_tool').show(); Snackbar.show({ - text: 'Displaying all tools', + text: gettext('Displaying all tools'), pos: 'top-right', duration: 2500 }); diff --git a/web/scanEngine/templates/scanEngine/_items/form_engine.html b/web/scanEngine/templates/scanEngine/_items/form_engine.html index 0ae0a6566..527a41f78 100644 --- a/web/scanEngine/templates/scanEngine/_items/form_engine.html +++ b/web/scanEngine/templates/scanEngine/_items/form_engine.html @@ -1,6 +1,7 @@ +{% load i18n %}
- + {{ form.engine_name }}
-

YAML Configurations

+

{% translate "YAML Configurations" %}

- reNgine supports YAML based configurations for customizing the scan. The default settings are given below, you may choose to proceed with the default settings or configure it according to your choice. + {% translate "reNgine supports YAML based configurations for customizing the scan. The default settings are given below, you may choose to proceed with the default settings or configure it according to your choice." %}

-
reNgine YAML Documentation
- To learn more about YAML config visit the official documentation at https://rengine.wiki/pentester/scan_engine/ +
{% translate "reNgine YAML Documentation" %}
+ {% translate "To learn more about YAML config visit the official documentation at" %} https://rengine.wiki/pentester/scan_engine/

- Note: Invalid YAML configuration may crash scans. + {% translate "Note: Invalid YAML configuration may crash scans." %}
- Please, do not modify the configuration unless you know what what you are doing. + {% translate "Please, do not modify the configuration unless you know what what you are doing." %}
- If default YAML configuration doesn't automatically load, download default configuration from here and paste it. (Firefox may have issues loading default YAML configuration.) + {% translate "If default YAML configuration doesn't automatically load," %} {% translate "download default configuration from here" %} {% translate "and paste it. (Firefox may have issues loading default YAML configuration.)" %}

{{form.yaml_configuration}}
diff --git a/web/scanEngine/templates/scanEngine/add_engine.html b/web/scanEngine/templates/scanEngine/add_engine.html index 53551ca52..075533c3e 100644 --- a/web/scanEngine/templates/scanEngine/add_engine.html +++ b/web/scanEngine/templates/scanEngine/add_engine.html @@ -1,9 +1,10 @@ {% extends 'base/base.html' %} {% load static %} +{% load i18n %} {% block title %} -Add Scan Engine +{% translate "Add Scan Engine" %} {% endblock title %} @@ -23,12 +24,12 @@ {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -Add Scan Engine +{% translate "Add Scan Engine" %} {% endblock page_title %} {% block main_content %} @@ -36,16 +37,16 @@
-

Scan Engines

+

{% translate "Scan Engines" %}

- Scan Engines are the most crucial part of reNgine. They define how a scan is performed against a target. Scan Engines allow you to define the configuration and use it against multiple targets. + {% translate "Scan Engines are the most crucial part of reNgine. They define how a scan is performed against a target. Scan Engines allow you to define the configuration and use it against multiple targets." %}
- YAML configuration allows you fine tuning the engines such as rate, templates to be used, or configurations to be used. + {% translate "YAML configuration allows you fine tuning the engines such as rate, templates to be used, or configurations to be used." %}

{% csrf_token %} {% include "scanEngine/_items/form_engine.html" %} - +
diff --git a/web/scanEngine/templates/scanEngine/index.html b/web/scanEngine/templates/scanEngine/index.html index ce065dc7f..61720ce91 100644 --- a/web/scanEngine/templates/scanEngine/index.html +++ b/web/scanEngine/templates/scanEngine/index.html @@ -1,21 +1,22 @@ {% extends 'base/base.html' %} {% load static %} {% load permission_tags %} +{% load i18n %} {% block title %} -Scan Engine +{% translate "Scan Engine" %} {% endblock title %} {% block custom_js_css_link %} {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -Scan Engines +{% translate "Scan Engines" %} {% endblock page_title %} {% block main_content %} @@ -28,7 +29,7 @@
{% if user|can:'add_modify_scan_settings' %} - Add Scan Engine + {% translate "Add Scan Engine" %} {% endif %}
@@ -42,18 +43,18 @@ - - - - - - - - - - - - + + + + + + + + + + + + @@ -63,9 +64,9 @@ - - + + @@ -794,7 +790,8 @@

Geographical Distribution of Assets

{% include 'base/_items/most_common_cve_cwe_tag_template.html' %}
- {% include 'base/_items/most_vuln_target.html' with most_vuln_widget_title='Most Vulnerable Subdomain'%} + {% translate "Most Vulnerable Subdomain" as i18n_vuln_widget_title %} + {% include 'base/_items/most_vuln_target.html' with most_vuln_widget_title=i18n_vuln_widget_title%}
{% include 'base/_items/most_common_vuln.html' %} @@ -803,7 +800,7 @@

Geographical Distribution of Assets

-

Important Subdomains

+

{% translate "Important Subdomains" %}

@@ -815,8 +812,8 @@

- Recon Note/Todo - + {% translate "Recon Note/Todo" %} +

@@ -831,33 +828,33 @@

-

Add Recon Todo

+

{% translate "Add Recon Todo" %}

- - + +
- +
- - + +

@@ -868,8 +865,8 @@

Add Recon Todo

-

IP Addresses

- *IP Addresses highlighted with yellow are CDN IP +

{% translate "IP Addresses" %}

+ {% translate "*IP Addresses highlighted with yellow are CDN IP" %}
@@ -879,8 +876,8 @@

-

Discovered Ports

- *Ports highlighted with red are uncommon Ports +

{% translate "Discovered Ports" %}

+ {% translate "*Ports highlighted with red are uncommon Ports" %}
@@ -890,7 +887,7 @@

-

Discovered Technologies

+

{% translate "Discovered Technologies" %}

 
@@ -914,14 +911,14 @@

- - - - - - - - + + + + + + + + @@ -932,28 +929,28 @@

+
  • {% translate "Display Name" %}: {{bucket.owner_display_name}}
  • @@ -977,7 +974,7 @@

    IDEngine NameTypeSubdomain DiscoveryWAF DetectionScreenshotOSINTPort ScanDirectory & Files DiscoveryFetch URLsVulnerability ScanAction{% translate "ID" %}{% translate "Engine Name" %}{% translate "Type" %}{% translate "Subdomain Discovery" %}{% translate "WAF Detection" %}{% translate "Screenshot" %}{% translate "OSINT" %}{% translate "Port Scan" %}{% translate "Directory & Files Discovery" %}{% translate "Fetch URLs" %}{% translate "Vulnerability Scan" %}{% translate "Action" %}
    {{engine.engine_name}} {% if engine.default_engine %} - Default Engine + {% translate "Default Engine" %} {% else %} - Custom Engine + {% translate "Custom Engine" %} {% endif %} @@ -126,12 +127,12 @@ {% if user|can:'add_modify_scan_settings' %} - + - + @@ -158,12 +159,9 @@ "dom": "<'dt--top-section'<'row'<'col-12 col-sm-6 d-flex justify-content-sm-start justify-content-center mt-sm-0 mt-3'f><'col-12 col-sm-6 d-flex justify-content-sm-end justify-content-center'l>>>" + "<'table-responsive'tr>" + "<'dt--bottom-section d-sm-flex justify-content-sm-between text-center'<'dt--pages-count mb-sm-0 mb-3'i><'dt--pagination'p>>", - "oLanguage": { - "oPaginate": { "sPrevious": '', "sNext": '' }, - "sInfo": "Showing page _PAGE_ of _PAGES_", - "sSearch": '', - "sSearchPlaceholder": "Search...", - "sLengthMenu": "Results : _MENU_", + "language": { + "zeroRecords": gettext("No engine installed"), + "infoEmpty": gettext("No engine installed"), }, "columnDefs":[ { 'visible': false, 'targets': [0] }, diff --git a/web/scanEngine/templates/scanEngine/lookup.html b/web/scanEngine/templates/scanEngine/lookup.html index 0ec91cded..1d249f699 100644 --- a/web/scanEngine/templates/scanEngine/lookup.html +++ b/web/scanEngine/templates/scanEngine/lookup.html @@ -1,8 +1,10 @@ {% extends 'base/base.html' %} {% load static %} {% load custom_tags %} +{% load i18n %} + {% block title %} -Interesting entries Lookup +{% translate "Interesting entries Lookup" %} {% endblock title %} @@ -10,12 +12,12 @@ {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -Interesting Lookup +{% translate "Interesting Lookup" %} {% endblock page_title %} {% block main_content %} @@ -23,16 +25,16 @@
    -

    Interesting Lookup

    +

    {% translate "Interesting Lookup" %}

    - reNgine supports lookup for interesting keyword in recon data. This could be either looking up in subdomains, URLs or in page title. - You can enter the keywords to lookup and reNgine will highlight the matched entries.
    + {% blocktranslate %}reNgine supports lookup for interesting keyword in recon data. This could be either looking up in subdomains, URLs or in page title. + You can enter the keywords to lookup and reNgine will highlight the matched entries.{% endblocktranslate %}

    -

    Default Keywords

    -

    reNgine will use these default keywords to find the interesting subdomains or URLs from recon data.

    +

    {% translate "Default Keywords" %}

    +

    {% translate "reNgine will use these default keywords to find the interesting subdomains or URLs from recon data." %}

    {% for keyword in default_lookup %} {% for key in keyword.keywords|split:"," %} @@ -40,32 +42,27 @@

    Default Keywords

    {% endfor %} {% endfor %}
    -

    Custom Keywords

    +

    {% translate "Custom Keywords" %}

    {% csrf_token %} - + {{ form.keywords }} {# hidden value #} {{ form.custom_type }} - Please use a comma (,) to separate the keywords. -

    Lookup in

    + {% translate "Please use a comma (,) to separate the keywords." %} +

    {% translate "Lookup in" %}

    {{form.url_lookup}} - +
    - {{form.title_lookup}} - -
    -

    Lookup Conditions

    - reNgine will lookup the keywords only when below conditions are met. -
    - Lookup only when + +

    {% translate "Lookup Conditions" %}

    + {% translate "reNgine will lookup the keywords only when below conditions are met." %} + {% translate "Lookup only when" %}
    - {{form.condition_200_http_lookup}} - -
    - + +
    diff --git a/web/scanEngine/templates/scanEngine/settings/_items/external_tool_form.html b/web/scanEngine/templates/scanEngine/settings/_items/external_tool_form.html index f4eb932f4..b583eaa9d 100644 --- a/web/scanEngine/templates/scanEngine/settings/_items/external_tool_form.html +++ b/web/scanEngine/templates/scanEngine/settings/_items/external_tool_form.html @@ -1,6 +1,7 @@ +{% load i18n %}
    - + {{form.name}} {% if form.errors.name %} @@ -11,22 +12,22 @@
    - +
    - Does this tool gathers subdomains? + {% translate "Does this tool gathers subdomains?" %}
    - If you have chosen this tool as subdomain gathering tool, you'll be able to use it in scan engine configuration and provide this tool name inside uses_tools. If not, you will still be able to use this tool in our custom scripting engine. + {% translate "If you have chosen this tool as subdomain gathering tool, you'll be able to use it in scan engine configuration and provide this tool name inside" %} uses_tools. {% translate "If not, you will still be able to use this tool in our custom scripting engine." %}
    - +
    - + {{form.github_url}} {% if form.errors.github_url %} @@ -37,60 +38,60 @@
    - + {{form.logo_url}}
    - + {{form.license_url}}
    - + {{form.description}}
    -
    Tool Installation Process
    +
    {% translate "Tool Installation Process" %}
    -

    Please note that any commands here will directly execute in shell, so please be careful of the commands you are using.

    +

    {% translate "Please note that any commands here will directly execute in shell, so please be careful of the commands you are using." %}

    - +

    • - If the tool has to be installed using github clone, then your installation command would be + {% translate "If the tool has to be installed using github clone, then your installation command would be" %}
      git clone https://github.com/user/tool
    • - If the tool has to be installed using go, the your installation command would be + {% translate "If the tool has to be installed using go, the your installation command would be" %}
      go install -v github.com/tool@latest
      - Please note that, go get command is no longer supported by go. Instead you should use go install. Learn why! + {% translate "Please note that, go get command is no longer supported by go. Instead you should use go install." %} {% translate "Learn why!" %}

    - + {{form.install_command}}
    - +

      -
    • If the tool was installed using git clone, it is recommended to use git pull for updating.
    • -
    • If the tool was installed using go, it is recommended to use the same command as go install.
    • +
    • {% translate "If the tool was installed using git clone, it is recommended to use" %} git pull {% translate "for updating." %}
    • +
    • {% translate "If the tool was installed using go, it is recommended to use the same command as go install." %}
    - If update command is not provided, you will not be able to update the tools. + {% translate "If update command is not provided, you will not be able to update the tools." %}

    - + {{form.update_command}} {% if form.errors.update_command %} @@ -101,19 +102,19 @@
    Tool Installation Process
    - +

    - reNgine will use this command to check the version of the tool and let you know if there is any update available. Most tools will display the version either of these ways + {% translate "reNgine will use this command to check the version of the tool and let you know if there is any update available. Most tools will display the version either of these ways" %}

    • toolname -v
    • toolname -V
    • toolname --version
    • python tool_name.py -v
    - You can provide these commands depending on your tool, and reNgine will identify the version number. + {% translate "You can provide these commands depending on your tool, and reNgine will identify the version number." %}

    - - (We have auto generated this for you based on your installation steps) + + {% translate "(We have auto generated this for you based on your installation steps)" %} {{form.version_lookup_command}} {% if form.errors.version_lookup_command %} @@ -124,20 +125,20 @@
    Tool Installation Process
    - +

    - reNgine needs version match regex to find out if there is any update available or not. You can check how the tool displays the version number and we can generate the regex for you, or you can do that manually as well. + {% translate "reNgine needs version match regex to find out if there is any update available or not. You can check how the tool displays the version number and we can generate the regex for you, or you can do that manually as well." %}
    - If version regex is not given, reNgine will not be able to check the updates automatically. However, you can still force update the tools. + {% translate "If version regex is not given, reNgine will not be able to check the updates automatically. However, you can still force update the tools." %}
    - Additionally, we can also generate the version regext for you. You can select how this tool displays the version number.
    See, how the tool names the release version. https://github.com/user/tool/releases
    + {% translate "Additionally, we can also generate the version regext for you. You can select how this tool displays the version number." %}
    {% translate "See, how the tool names the release version." %} https://github.com/user/tool/releases

    - - - + + +

    - + {{form.version_match_regex}} {% if form.errors.version_match_regex %} @@ -147,20 +148,20 @@
    Tool Installation Process
    -
    Subdomain Gathering Tool Additional Information
    -
    Please note that this subdomain gathering tool must support subdomain output in the form of txt file.
    -

    Since you have chosen this tool as subdomain gathering tool, we require additional information on how this tool runs.

    +
    {% translate "Subdomain Gathering Tool Additional Information" %}
    +
    {% translate "Please note that this subdomain gathering tool must support subdomain output in the form of txt file." %}
    +

    {% translate "Since you have chosen this tool as subdomain gathering tool, we require additional information on how this tool runs." %}

    - reNgine needs to know how this tool accepts target and output the subdomain results.
    - Use the below syntax wherever required, but remember that {TARGET} and {OUTPUT} are mandatory placeholders. + {% translate "reNgine needs to know how this tool accepts target and output the subdomain results." %}
    + {% translate "Use the below syntax wherever required, but remember that {TARGET} and {OUTPUT} are mandatory placeholders." %}
      -
    • {TARGET} (mandatory), Use this for the command-line arg that takes in domain as input target. Example. subfinder -d {TARGET}
    • -
    • {OUTPUT} (mandatory), Use this for the command-line arg that takes the output arg. Example. subfinder -d {TARGET} -o {OUTPUT}
    • -
    • {PATH}, Use this if your tool is github cloned. Example. python3 {PATH}/subdomain.py
    • -
    • {PROXY}, Use this if your tool supports proxy. Example. tool_name -p {PROXY}
    • +
    • {TARGET} {% translate "(mandatory), Use this for the command-line arg that takes in domain as input target. Example." %} subfinder -d {TARGET}
    • +
    • {OUTPUT} {% translate "(mandatory), Use this for the command-line arg that takes the output arg. Example." %} subfinder -d {TARGET} -o {OUTPUT}
    • +
    • {PATH}{% translate ", Use this if your tool is github cloned. Example." %} python3 {PATH}/subdomain.py
    • +
    • {PROXY}{% translate ", Use this if your tool supports proxy. Example." %} tool_name -p {PROXY}
    - You can use the combinations of the above syntax and also you can use any other command-line argument that your tool supports. + {% translate "You can use the combinations of the above syntax and also you can use any other command-line argument that your tool supports." %}
    diff --git a/web/scanEngine/templates/scanEngine/settings/add_tool.html b/web/scanEngine/templates/scanEngine/settings/add_tool.html index f7fd2f8e0..715696ddc 100644 --- a/web/scanEngine/templates/scanEngine/settings/add_tool.html +++ b/web/scanEngine/templates/scanEngine/settings/add_tool.html @@ -1,17 +1,19 @@ {% extends 'base/base.html' %} {% load static %} +{% load i18n %} + {% block title %} -Add Tool +{% translate "Add Tool" %} {% endblock title %} {% block custom_js_css_link %} {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -Add Tool +{% translate "Add Tool" %} {% endblock page_title %} {% block main_content %}
    @@ -25,7 +27,7 @@
    - +
    diff --git a/web/scanEngine/templates/scanEngine/settings/api.html b/web/scanEngine/templates/scanEngine/settings/api.html index f4a2d6a4e..aa4b3a427 100644 --- a/web/scanEngine/templates/scanEngine/settings/api.html +++ b/web/scanEngine/templates/scanEngine/settings/api.html @@ -1,20 +1,22 @@ {% extends 'base/base.html' %} {% load static %} {% load custom_tags %} +{% load i18n %} + {% block title %} -reNgine Settings +{% translate "reNgine Settings" %} {% endblock title %} {% block custom_js_css_link %} {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -API Vault +{% translate "API Vault" %} {% endblock page_title %} {% block main_content %} @@ -27,27 +29,19 @@
    - -

    OpenAI keys will be used to generate vulnerability description, remediation, impact and vulnerability report writing using ChatGPT.

    - {% if openai_key %} - - {% else %} - - {% endif %} - This is optional but recommended. + +

    {% translate "OpenAI keys will be used to generate vulnerability description, remediation, impact and vulnerability report writing using ChatGPT." %}

    + + {% translate "This is optional but recommended." %}
    - -

    Netlas keys will be used to get whois information and other OSINT data.

    - {% if netlas_key %} - - {% else %} - - {% endif %} - This is optional + +

    {% translate "Netlas keys will be used to get whois information and other OSINT data." %}

    + + {% translate "This is optional" %}
    - +
    diff --git a/web/scanEngine/templates/scanEngine/settings/hackerone.html b/web/scanEngine/templates/scanEngine/settings/hackerone.html index 1cbd18142..27e7d3174 100644 --- a/web/scanEngine/templates/scanEngine/settings/hackerone.html +++ b/web/scanEngine/templates/scanEngine/settings/hackerone.html @@ -2,87 +2,81 @@ {% extends 'base/base.html' %} {% load static %} {% load custom_tags %} +{% load i18n %} + {% block title %} -Hackerone Settings +{% translate "Hackerone Settings" %} {% endblock title %} - {% block custom_js_css_link %} {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + + {% endblock breadcrumb_title %} {% block page_title %} -HackerOne Settings +{% translate "HackerOne Settings" %} {% endblock page_title %} - {% block main_content %}
    -

    Hackerone Automatic Vulnerability Report Settings

    - +

    {% translate "Hackerone Automatic Vulnerability Report Settings" %}

    + {% translate "Use this feature with caution! Please do not spam triagers!" %} +
    {% translate "We do not allow sending vulnerability report for low severity and informational vulnerabilities to avoid spamming triagers!" %} + {% translate "You can send them manually from Vulnerability Section inside reNgine." %}

    - reNgine Automatically Reports vulnerabilities to your bug bounty programs on Hackerone, if any vulnerabilities are identified. -
    - A valid Hackerone API token and username is required. -
    - More details on how to generate your hackerone api token is provided by Hackerone Documentation -

    + {% translate "reNgine Automatically Reports vulnerabilities to your bug bounty programs on Hackerone, if any vulnerabilities are identified." %} + {% translate "A valid Hackerone API token and username is required." %} + {% translate "More details on how to generate your hackerone api token is provided by" %} {% translate "Hackerone Documentation" %}
    {% csrf_token %}
    - - {{form.username}} +
    - - {{form.api_key}} +
    -   Test my hackerone api key +   {% translate "Test my hackerone api key" %} -

    Report Vulnerability to hackerone when

    +

    {% translate "Report Vulnerability to hackerone when" %}

    - + - + - +
    Critical Severity is found. (Default){% translate "Critical Severity is found. (Default)" %} {{form.send_critical}}
    High Severity is found. (Default){% translate "High Severity is found. (Default)" %} {{form.send_high}}
    Medium Severity is found.{% translate "Medium Severity is found." %} {{form.send_medium}}
    -

    Vulnerability Report Template

    +

    {% translate "Vulnerability Report Template" %}

      -
    • {vulnerability_name} Vulnerability Title/Name.
    • -
    • {vulnerable_url} Vulnerable URL.
    • -
    • {vulnerability_severity} Vulnerability Severity.
    • -
    • {vulnerability_description} Description of vulnerability generated by Nuclei.
    • -
    • {vulnerability_extracted_results} Vulnerability Results extracted by Nuclei.
    • -
    • {vulnerability_reference} Additional Reference to vulnerability.
    • +
    • {vulnerability_name} {% translate "Vulnerability Title/Name." %}
    • +
    • {vulnerable_url} {% translate "Vulnerable URL." %}
    • +
    • {vulnerability_severity} {% translate "Vulnerability Severity." %}
    • +
    • {vulnerability_description} {% translate "Description of vulnerability generated by Nuclei." %}
    • +
    • {vulnerability_extracted_results} {% translate "Vulnerability Results extracted by Nuclei." %}
    • +
    • {vulnerability_reference} {% translate "Additional Reference to vulnerability." %}
    {{form.report_template}} - +
    @@ -120,10 +114,9 @@

    Vulnerability Report Template

    var username = $("#username").val(); var api_key = $("#api_key").val(); swal.queue([{ - title: 'Hackerone Configuration', - confirmButtonText: 'Test my hackerone API Key', - text: - 'This will test if your hackerone API keys are working.', + title: gettext("Hackerone Configuration"), + confirmButtonText: gettext("Test my hackerone API Key"), + text: gettext("This will test if your hackerone API keys are working."), showLoaderOnConfirm: true, preConfirm: function() { return fetch(hackerone_api, { @@ -143,20 +136,20 @@

    Vulnerability Report Template

    $("#api_key").addClass("is-valid"); $("#username").removeClass("is-invalid"); $("#api_key").removeClass("is-invalid"); - return swal.insertQueueStep("Your hackerone Credentials are working.") + return swal.insertQueueStep(gettext("Your hackerone Credentials are working.")) } else{ $("#username").addClass("is-invalid"); $("#api_key").addClass("is-invalid"); $("#username").removeClass("is-valid"); $("#api_key").removeClass("is-valid"); - return swal.insertQueueStep("Oops! Your hackerone Credentials are not working, check your username and/or api_key.") + return swal.insertQueueStep(gettext("Oops! Your hackerone Credentials are not working, check your username and/or api_key.")) } }) .catch(function() { swal.insertQueueStep({ type: 'error', - title: 'Unable to get your public IP' + title: gettext("Unable to get your public IP") }) }) } diff --git a/web/scanEngine/templates/scanEngine/settings/notification.html b/web/scanEngine/templates/scanEngine/settings/notification.html index 8259884e7..23b52527c 100644 --- a/web/scanEngine/templates/scanEngine/settings/notification.html +++ b/web/scanEngine/templates/scanEngine/settings/notification.html @@ -1,8 +1,10 @@ {% extends 'base/base.html' %} {% load static %} {% load custom_tags %} +{% load i18n %} + {% block title %} -Notification Settings +{% translate "Notification Settings" %} {% endblock title %} {% block custom_js_css_link %} @@ -12,12 +14,12 @@ {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -Notification Settings +{% translate "Notification Settings" %} {% endblock page_title %} {% block main_content %} @@ -25,11 +27,11 @@
    -

    Send Notifications to:

    +

    {% translate "Send Notifications to:" %}

    {% csrf_token %}
    - +
    - +
    @@ -97,69 +99,69 @@

    Send Notifications to:

    -

    Send me notification for

    +

    {% translate "Send me notification for" %}

    {{form.send_scan_status_notif}} - +
    {{form.send_interesting_notif}} - +
    {{form.send_vuln_notif}} - +
    - *Informational vulnerabilities will not be notified. + {% translate "*Informational vulnerabilities will not be notified." %}
    {{form.send_subdomain_changes_notif}}
    -

    Upload Scan Results
    (Recommended)

    +

    {% translate "Upload Scan Results" %}
    ({% translate "Recommended" %})

    {{form.send_scan_output_file}}
    -

    Upload Scan Results
    (Recommended)

    +

    {% translate "Upload Scan Results" %}
    ({% translate "Recommended" %})

    {{form.send_scan_tracebacks}}
    - +
    -

    *Once saved, a test message will be sent to all the enabled services.

    +

    {% translate "*Once saved, a test message will be sent to all the enabled services." %}

    diff --git a/web/scanEngine/templates/scanEngine/settings/proxy.html b/web/scanEngine/templates/scanEngine/settings/proxy.html index 45e8ad9ee..69da44cce 100644 --- a/web/scanEngine/templates/scanEngine/settings/proxy.html +++ b/web/scanEngine/templates/scanEngine/settings/proxy.html @@ -1,20 +1,22 @@ {% extends 'base/base.html' %} {% load static %} {% load custom_tags %} +{% load i18n %} + {% block title %} -Proxy Settings +{% translate "Proxy Settings" %} {% endblock title %} {% block custom_js_css_link %} {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -Proxy Settings +{% translate "Proxy Settings" %} {% endblock page_title %} {% block main_content %} @@ -22,26 +24,26 @@
    -

    Proxy Settings

    -

    Every website has a limit to certain number of requests allowed for a certain period of time from an particular IP Address, exceeding the limit will block any incoming requests from that particular IP Address for a specific period of time. - This results in unreliable recon results. Suppose if you were to run Nuclei on a particular target with all the templates, your IP is likely to get banned because of the number of requests made by Nuclei. +

    {% translate "Proxy Settings" %}

    +

    {% blocktranslate %}Every website has a limit to certain number of requests allowed for a certain period of time from an particular IP Address, exceeding the limit will block any incoming requests from that particular IP Address for a specific period of time. + This results in unreliable recon results. Suppose if you were to run Nuclei on a particular target with all the templates, your IP is likely to get banned because of the number of requests made by Nuclei.{% endblocktranslate %}
    - And this is especially true for dorking and other OSINT reNgine does. After certain dorking attempts Google is likely to ban your IP for certain period of time. + {% translate "And this is especially true for dorking and other OSINT reNgine does. After certain dorking attempts Google is likely to ban your IP for certain period of time." %}

    {% csrf_token %}
    {{form.use_proxy}} - +
    -

    Proxy List

    -

    You can enter as many proxies as you want, reNgine will randomly pick one among them during the scan.

    - +

    {% translate "Proxy List" %}

    +

    {% translate "You can enter as many proxies as you want, reNgine will" %} {% translate "randomly" %} {% translate "pick one among them during the scan." %}

    + {{form.proxies}} - +
    diff --git a/web/scanEngine/templates/scanEngine/settings/rengine.html b/web/scanEngine/templates/scanEngine/settings/rengine.html index 3814c6f8f..0a9f4006a 100644 --- a/web/scanEngine/templates/scanEngine/settings/rengine.html +++ b/web/scanEngine/templates/scanEngine/settings/rengine.html @@ -1,20 +1,22 @@ {% extends 'base/base.html' %} {% load static %} {% load custom_tags %} +{% load i18n %} + {% block title %} -reNgine Settings +{% translate "reNgine Settings" %} {% endblock title %} {% block custom_js_css_link %} {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -reNgine Settings +{% translate "reNgine Settings" %} {% endblock page_title %} {% block main_content %} @@ -22,42 +24,42 @@
    -

    Danger Zone

    +

    {% translate "Danger Zone" %}

    - Total Storage: {{total}} Gb Used Space: {{used}} Gb Free Space: {{free}} Gb + {% translate "Total Storage:"%} {% blocktranslate with totalSpaceSize=total %}{{totalSpaceSize}} Gb{% endblocktranslate %} {% translate "Used Space:" %} {% blocktranslate with usedSpaceSize=used %}{{usedSpaceSize}} Gb{% endblocktranslate %} {% translate "Free Space:" %} {% blocktranslate with freeSpaceSize=free %}{{freeSpaceSize}} Gb{% endblocktranslate %}
    -

    Danger Zone

    +

    {% translate "Danger Zone" %}

    - Delete all scan results + {% translate "Delete all scan results" %}

    - Once you delete all scan results, there is no going back.
    - This will delete all the scan history and also screenshots and likely to free up disk space. + {% translate "Once you delete all scan results, there is no going back." %}
    + {% translate "This will delete all the scan history and also screenshots and likely to free up disk space." %}

    - +

    - Delete all Screenshots + {% translate "Delete all Screenshots" %}

    - Once you delete all screenshots, you are likely to free up some disk space.
    - Scan history will not be able to show any screenshots after deleted.
    + {% translate "Once you delete all screenshots, you are likely to free up some disk space." %}
    + {% translate "Scan history will not be able to show any screenshots after deleted." %}

    - +
    @@ -123,7 +125,7 @@

    Danger Zone

    stroke: { lineCap: "round" }, - labels: ["Disk Space Consumed"] + labels: [gettext("Disk Space Consumed")] }; var chart = new ApexCharts(document.querySelector("#chart"), options); diff --git a/web/scanEngine/templates/scanEngine/settings/report.html b/web/scanEngine/templates/scanEngine/settings/report.html index a0e4743c2..b315ee01b 100644 --- a/web/scanEngine/templates/scanEngine/settings/report.html +++ b/web/scanEngine/templates/scanEngine/settings/report.html @@ -2,8 +2,10 @@ {% extends 'base/base.html' %} {% load static %} {% load custom_tags %} +{% load i18n %} + {% block title %} -Customize Report +{% translate "Customize Report" %} {% endblock title %} {% block custom_js_css_link %} @@ -13,12 +15,12 @@ {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -reNgine PDF Report Settings +{% translate "reNgine PDF Report Settings" %} {% endblock page_title %} {% block main_content %} @@ -26,19 +28,19 @@
    -

    Customize Report

    -

    reNgine allows you to generate PDF report. PDF reports are fully customizable. While downloading PDF Report, you can choose whether to download Vulnerability Report or Reconnaissance Report or both. -
    This section allows you to customize the report, such as colors, and sections to include in the report. +

    {% translate "Customize Report" %}

    +

    {% translate "reNgine allows you to generate PDF report. PDF reports are fully customizable. While downloading PDF Report, you can choose whether to download Vulnerability Report or Reconnaissance Report or both." %} +
    {% translate "This section allows you to customize the report, such as colors, and sections to include in the report." %}

    {% csrf_token %} -

    Color

    +

    {% translate "Color" %}

    - Primary Color + {% translate "Primary Color" %}
    - (Primary Color is the color used for the Main Title, Footer Background and Page Counters.) + {% translate "(Primary Color is the color used for the Main Title, Footer Background and Page Counters.)" %}
    @@ -49,9 +51,9 @@

    Color

    - Secondary Color + {% translate "Secondary Color" %}
    - (Secondary color is currently being used for cover background.) + {% translate "(Secondary color is currently being used for cover background.)" %}
    @@ -61,71 +63,71 @@

    Color

    -

    Report Generated by

    +

    {% translate "Report Generated by" %}

    - + {{form.company_name}}
    - + {{form.company_address}}
    - + {{form.company_website}}
    - + {{form.company_email}}
    -

    Show Footer Text?

    +

    {% translate "Show Footer Text?" %}

    {{form.show_footer}}
    -

    This could be copyright text, or year of generation and the placement for footer text is bottom left.

    - +

    {% translate "This could be copyright text, or year of generation and the placement for footer text is bottom left." %}

    + {{form.footer_text}}
    -

    Show reNgine Banner/Credits?

    +

    {% translate "Show reNgine Banner/Credits?" %}

    {{form.show_rengine_banner}}
    -

    If turned on, generated report will contain 'Generated by reNgine'.

    +

    {% translate "If turned on, generated report will contain 'Generated by reNgine'." %}

    -

    Show Executive Summary?

    +

    {% translate "Show Executive Summary?" %}

    {{form.show_executive_summary}}
    -

    If turned on, reNgine will include Executive Summary in the report. You can customize the executive summary section. +

    {% translate "If turned on, reNgine will include Executive Summary in the report. You can customize the executive summary section." %}
    - Please note that, the Executive Summary section will appear before quick summary. + {% translate "Please note that, the Executive Summary section will appear before quick summary." %}

    -

    You can customize the executive summary and methodology template using markdown. Replace the below syntax wherever you require. Curly braces are must!

    -

    Executive Summary Syntax

    +

    {% translate "You can customize the executive summary and methodology template using markdown. Replace the below syntax wherever you require." %} {% translate "Curly braces are must!" %}

    +

    {% translate "Executive Summary Syntax" %}

      -
    • {scan_date} Target Scan Date Ex. 25 June, 2020 .
    • -
    • {company_name} Company which performed Vulnerability/Reconnaissance Audit.
    • -
    • {target_name} Target Domain Name.
    • -
    • {target_description} Target Description.
    • -
    • {subdomain_count} Total number of subdomains discovered.
    • -
    • {vulnerability_count} Total number of Vulnerabilities identified.
    • -
    • {critical_count} Total number of Critical Severity Vulnerabilities identified.
    • -
    • {high_count} Total number of High Severity Vulnerabilities identified.
    • -
    • {medium_count} Total number of Medium Severity Vulnerabilities identified.
    • -
    • {low_count} Total number of Low Severity Vulnerabilities identified.
    • -
    • {info_count} Total number of Informational Vulnerabilities identified.
    • -
    • {unknown_count} Total number of Vulnerabilities with Unknown Severity identified.
    • +
    • {scan_date} {% translate "Target Scan Date Ex. 25 June, 2020 ." %}
    • +
    • {company_name} {% translate "Company which performed Vulnerability/Reconnaissance Audit." %}
    • +
    • {target_name} {% translate "Target Domain Name." %}
    • +
    • {target_description} {% translate "Target Description." %}
    • +
    • {subdomain_count} {% translate "Total number of subdomains discovered." %}
    • +
    • {vulnerability_count} {% translate "Total number of Vulnerabilities identified." %}
    • +
    • {critical_count} {% translate "Total number of Critical Severity Vulnerabilities identified." %}
    • +
    • {high_count} {% translate "Total number of High Severity Vulnerabilities identified." %}
    • +
    • {medium_count} {% translate "Total number of Medium Severity Vulnerabilities identified." %}
    • +
    • {low_count} {% translate "Total number of Low Severity Vulnerabilities identified." %}
    • +
    • {info_count} {% translate "Total number of Informational Vulnerabilities identified." %}
    • +
    • {unknown_count} {% translate "Total number of Vulnerabilities with Unknown Severity identified." %}
    {{form.executive_summary_description}}
    - +
    diff --git a/web/scanEngine/templates/scanEngine/settings/tool.html b/web/scanEngine/templates/scanEngine/settings/tool.html index 57dfc2fe4..637340b8b 100644 --- a/web/scanEngine/templates/scanEngine/settings/tool.html +++ b/web/scanEngine/templates/scanEngine/settings/tool.html @@ -1,20 +1,22 @@ {% extends 'base/base.html' %} {% load static %} {% load custom_tags %} +{% load i18n%} + {% block title %} -Settings, API Keys & Tool Settings +{% translate "Settings, API Keys & Tool Settings" %} {% endblock title %} {% block custom_js_css_link %} {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -Settings, API Keys & Tool Settings +{% translate "Settings, API Keys & Tool Settings" %} {% endblock page_title %} {% block main_content %} @@ -22,55 +24,55 @@
    -

    GF Patterns

    +

    {% translate "GF Patterns" %}

    - This section lets you upload custom gf patterns. You can find more information about the GF Tool here. + {% translate "This section lets you upload custom gf patterns. You can find more information about the" %} {% translate "GF Tool here" %}.
    - Please note that only json files are supported and the name of the pattern will be the filename. - If the pattern name is remote-code-exec.json, the pattern name is remote-code-exec and this has to be used this in YAML configuration. + {% translate "Please note that only json files are supported and the name of the pattern will be the filename." %} + {% translate "If the pattern name is" %} remote-code-exec.json, {% translate "the pattern name is" %} remote-code-exec {% translate "and this has to be used this in YAML configuration." %}

    -

    Currently available GF patterns

    +

    {% translate "Currently available GF patterns" %}

    {% for pattern in gf_patterns %} {% if not forloop.first %} - {{pattern}} + {{pattern}} {% endif %} {% endfor %}
    {% csrf_token %}
    - +
    - +
    -

    Subfinder

    +

    {% translate "Subfinder" %}

    - This section lets you modify Subfinder config file. You can find more information about the Subfinder config here.
    - Please note that only YAML config is supported. + {% translate "This section lets you modify" %} {% translate "Subfinder" %} {% translate "config file. You can find more information about the" %} {% translate "Subfinder config here." %}
    + {% translate "Please note that only YAML config is supported." %}

    {% csrf_token %} -

    Current Subfinder Configuration

    - +

    {% translate "Current Subfinder Configuration" %}

    +
    -

    Amass

    +

    {% translate "Amass" %}

    - This section lets you modify Amass config file. You can find more information about the Amass config here.
    - Please note that only YAML config is supported. + {% translate "This section lets you modify" %} {% translate "Amass" %} {% translate "config file. You can find more information about the" %} {% translate "Amass config here." %}
    + {% translate "Please note that only YAML config is supported." %}

    {% csrf_token %} -

    Current Amass Configuration

    - +

    {% translate "Current Amass Configuration" %}

    +
    @@ -79,53 +81,53 @@

    Current Amass Configuration

    -

    Nuclei

    +

    {% translate "Nuclei" %}

    - This section lets you upload Nuclei templates. You can find more information about the Nuclei Templates here.
    - Please note that only YAML files are supported and the name of the pattern will be the filename. -
    If the template name is apache-detect.yaml then apache-detect is to be used this in YAML configuration. + {% translate "This section lets you upload Nuclei templates. You can find more information about the" %} {% translate "Nuclei Templates here." %}
    + {% translate "Please note that only YAML files are supported and the name of the pattern will be the filename." %} + {% translate "If the template name is" %} apache-detect.yaml {% translate "then" %} apache-detect {% translate "is to be used this in YAML configuration." %}

    -
    Currently available custom Nuclei templates
    +
    {% translate "Currently available custom Nuclei templates" %}
    {% for template in nuclei_templates %} {% with file=template|split:"/" %} - {{file.3}} + {{file.3}} {% endwith %} {% empty %}
    - No custom nuclei templates detected! + {% translate "No custom nuclei templates detected!" %}
    {% endfor %}
    {% csrf_token %}
    - +
    - +

    - This section lets you configure Nuclei config file. You can find more information about the Nuclei config here. + {% translate "This section lets you configure Nuclei config file. You can find more information about the" %} {% translate "Nuclei config here." %}

    {% csrf_token %} -

    Current Nuclei Configuration

    - +

    {% translate "Current Nuclei Configuration" %}

    +
    @@ -134,31 +136,31 @@

    Current Nuclei Configuration

    -

    Naabu

    +

    {% translate "Naabu" %}

    - This section lets you modify Naabu config file. You can find more information about the Naabu config here.
    - Please note that only YAML config is supported. + {% translate "This section lets you modify" %} {% translate "Naabu" %} {% translate "config file. You can find more information about the" %} {% translate "Naabu config here." %}
    + {% translate "Please note that only YAML config is supported." %}

    {% csrf_token %} -

    Current Naabu Configuration

    - +

    {% translate "Current Naabu Configuration" %}

    +
    -

    theHarvester

    +

    {% translate "theHarvester" %}

    - This section lets you modify the Harvester config file. You can find more information about the the Harvester config here.
    + {% translate "This section lets you modify" %} {% translate "the Harvester" %} {% translate "config file. You can find more information about the" %} {% translate "the Harvester config here." %}

    - Please note that only YAML config is supported. + {% translate "Please note that only YAML config is supported." %}

    {% csrf_token %} -

    Current theHarvester Configuration

    - +

    {% translate "Current theHarvester Configuration" %}

    +
    diff --git a/web/scanEngine/templates/scanEngine/settings/tool_arsenal.html b/web/scanEngine/templates/scanEngine/settings/tool_arsenal.html index 84b164627..5bb36c04a 100644 --- a/web/scanEngine/templates/scanEngine/settings/tool_arsenal.html +++ b/web/scanEngine/templates/scanEngine/settings/tool_arsenal.html @@ -1,36 +1,38 @@ {% extends 'base/base.html' %} {% load static %} {% load custom_tags %} +{% load i18n %} + {% block title %} -Tool Arsenal +{% translate "Tool Arsenal" %} {% endblock title %} {% block custom_js_css_link %} {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -Tool Arsenal +{% translate "Tool Arsenal" %} {% endblock page_title %} {% block main_content %}
    - +
    - - + +
    @@ -47,43 +49,43 @@
    {% if tool.is_default %} -
    Default Tool
    +
    {% translate "Default Tool" %}
    {% else %} -
    Custom Tool
    +
    {% translate "Custom Tool" %}
    {% endif %}
    {% if tool.logo_url %} - logo + {% translate {% endif %}

    {{tool.name}}

    {% if tool.is_subdomain_gathering %} - Subdomain Enumeration Tool + {% translate "Subdomain Enumeration Tool" %}
    {% endif %} {% if tool.active_passive %} - {{tool.active_passive}} + {{tool.active_passive}} {% endif %} - Github + {% translate "Github" %} {% if tool.license_url %} - License + {% translate "License" %} {% endif %}

    -
    Current Installed Version
    +
    {% translate "Current Installed Version" %}
    @@ -92,7 +94,7 @@
    Current Installed Version
    {{tool.description}}

    - +
    diff --git a/web/scanEngine/templates/scanEngine/settings/update_tool.html b/web/scanEngine/templates/scanEngine/settings/update_tool.html index 80992fce9..afb43caa0 100644 --- a/web/scanEngine/templates/scanEngine/settings/update_tool.html +++ b/web/scanEngine/templates/scanEngine/settings/update_tool.html @@ -1,16 +1,18 @@ {% extends 'base/base.html' %} {% load static %} +{% load i18n %} + {% block title %} -Update Tool +{% translate "Update Tool" %} {% endblock title %} {% block custom_js_css_link %} {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -Update Tool +{% translate "Update Tool" %} {% endblock page_title %} {% block main_content %}
    @@ -23,7 +25,7 @@ {% include "scanEngine/settings/_items/external_tool_form.html" %}
    - +
    diff --git a/web/scanEngine/templates/scanEngine/update_engine.html b/web/scanEngine/templates/scanEngine/update_engine.html index 431184e4a..10f303adf 100644 --- a/web/scanEngine/templates/scanEngine/update_engine.html +++ b/web/scanEngine/templates/scanEngine/update_engine.html @@ -1,8 +1,9 @@ {% extends 'base/base.html' %} {% load static %} +{% load i18n %} {% block title %} -Update Scan Engine +{% translate "Update Scan Engine" %} {% endblock title %} @@ -22,12 +23,12 @@ {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -Update Scan Engine +{% translate "Update Scan Engine" %} {% endblock page_title %} {% block main_content %} @@ -35,11 +36,11 @@
    -

    Update Scan Engine

    +

    {% translate "Update Scan Engine" %}

    {% csrf_token %} {% include "scanEngine/_items/form_engine.html" %} - +
    diff --git a/web/scanEngine/templates/scanEngine/wordlist/add.html b/web/scanEngine/templates/scanEngine/wordlist/add.html index be2de64d6..ba10c2a6b 100644 --- a/web/scanEngine/templates/scanEngine/wordlist/add.html +++ b/web/scanEngine/templates/scanEngine/wordlist/add.html @@ -1,8 +1,9 @@ {% extends 'base/base.html' %} {% load static %} +{% load i18n %} {% block title %} -Add New Wordlist +{% translate "Add New Wordlist" %} {% endblock title %} @@ -10,12 +11,12 @@ {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -Add New Wordlist for Bruteforce +{% translate "Add New Wordlist for Bruteforce" %} {% endblock page_title %} {% block main_content %} @@ -23,34 +24,34 @@
    -

    Wordlist can be used for directory bruteforce or subdomain bruteforce. Instructions on how to use the wordlist are found here

    +

    {% translate "Wordlist can be used for directory bruteforce or subdomain bruteforce. Instructions on how to use the wordlist are" %} {% translate "found here" %}

    {% csrf_token %}
    - + {{ form.name }}
    - + {{ form.short_name }} {% if form.errors.short_name %}
    {{ form.errors.short_name|striptags }}
    {% endif %} -

    Please keep the short names without spaces, like my-wordlist or my_wordlist. The short names will be later used to reference wordlist in the YAML settings.

    +

    {% translate "Please keep the short names without spaces, like my-wordlist or my_wordlist. The short names will be later used to reference wordlist in the YAML settings." %}

    -

    Select the wordlist file

    -

    Your wordlist must be a *.txt file and wordlists must be separated by a new line.

    +

    {% translate "Select the wordlist file" %}

    +

    {% translate "Your wordlist must be a *.txt file and wordlists must be separated by a new line." %}

    - + {{ form.upload_file }}
    - +
    diff --git a/web/scanEngine/templates/scanEngine/wordlist/index.html b/web/scanEngine/templates/scanEngine/wordlist/index.html index f7dddf57d..0b3529b38 100644 --- a/web/scanEngine/templates/scanEngine/wordlist/index.html +++ b/web/scanEngine/templates/scanEngine/wordlist/index.html @@ -1,20 +1,21 @@ {% extends 'base/base.html' %} {% load static %} +{% load i18n %} {% block title %} -Wordlist +{% translate "Wordlist" %} {% endblock title %} {% block custom_js_css_link %} {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -Add New Wordlist +{% translate "Add New Wordlist" %} {% endblock page_title %} {% block main_content %} @@ -26,7 +27,7 @@
    @@ -39,10 +40,10 @@ - - - - + + + + @@ -52,7 +53,7 @@ `); - if (doc['doc_name']) { - filename = `${truncate(doc['doc_name'], 30)}`; - } - else{ - filename = '' - } - subdomain = `${doc['subdomain']['name']}`; - $(`#${rand_id}`).append(``); - if (doc['author']){ - $(`#${rand_id}`).append(``); - } - else{ - $(`#${rand_id}`).append('') - } - if (doc['producer'] || doc['creator'] || doc['os']) { - metadata = ''; - metadata += doc['producer'] ? 'Software: ' + doc['producer'] : ''; - metadata += doc['creator'] ? '/' + doc['creator'] : 'dsdd'; - metadata += doc['os'] ? `
    OS: ` + doc['os'] + '': ''; - if (doc['creation_date']) { - metadata += `
    Created On: ${doc['creation_date']}`; - } - if (doc['modified_date']) { - metadata += `
    Modified On: ${doc['modified_date']}`; - } - $(`#${rand_id}`).append(``); - } - else{ - $(`#${rand_id}`).append('') - } - } - $('#metadata-count').html(`${data['metadata'].length}`); - $('.bs-tooltip').tooltip(); - }); -} - - -function get_emails(scan_id){ - var exposed_count = 0; - $.getJSON(`/api/queryEmails/?scan_id=${scan_id}&format=json`, function(data) { - $('#emails-count').empty(); - $('#email-table-body').empty(); - for (var val in data['emails']){ - email = data['emails'][val]; - rand_id = get_randid(); - $('#email-table-body').append(``); - $(`#${rand_id}`).append(``); - if (email['password']) { - $(`#${rand_id}`).append(``); - exposed_count++; - } - } - $('#emails-count').html(`${data['emails'].length}`); - if (exposed_count > 0 ) { - $('#exposed_summary').html(`${exposed_count} Exposed Credentials`); - } - }); -} - - -function get_employees(scan_id){ - $.getJSON(`/api/queryEmployees/?scan_id=${scan_id}&format=json`, function(data) { - $('#employees-count').empty(); - $('#employees-table-body').empty(); - for (var val in data['employees']){ - emp = data['employees'][val]; - rand_id = get_randid(); - $('#employees-table-body').append(``); - $(`#${rand_id}`).append(``); - $(`#${rand_id}`).append(``); - } - $('#employees-count').html(`${data['employees'].length}`); - }); -} - - -function get_dorks(scan_id){ - $("#dorking_result_card").hide(); - $.getJSON(`/api/queryDorks/?scan_id=${scan_id}&format=json`, function(data) { - if ($.isEmptyObject(data['dorks'])) { - return - } - // unhide div - $("#dorking_result_card").show(); - var is_first = true; - for (var val in data['dorks']){ - var dorks = data['dorks'][val]; - if (is_first) { - active = 'active show'; - } - else { - active = ''; - } - $("#dork_type_vertical_tablist").append(` ${convertToCamelCase(val)}`); - // create tab content - var tab_content = `
      `; - for (var dork in dorks) { - var dork_data = dorks[dork]; - tab_content += `
    • ${dork_data.url}
    • `; - } - tab_content += `
    `; - $('#dork_tab_content').append(tab_content); - is_first = false; - } - }); -} - -// -// function get_dork_summary(scan_id){ -// $.getJSON(`/api/queryDorkTypes/?scan_id=${scan_id}&format=json`, function(data) { -// $('#dork-category-count').empty(); -// for (var val in data['dorks']){ -// dork = data['dorks'][val] -// $("#osint-dork").append(`${dork['type']}`); -// } -// $('#dork-category-count').html(`${data['dorks'].length}`); -// $("body").tooltip({ selector: '[data-toggle=tooltip]' }); -// }); -// } - - -function get_dork_details(dork_type, scan_id){ - // render tab modal - $('.modal-title').html('Dorking Results in category: ' + dork_type + ''); - $('#modal_dialog').modal('show'); - $('.modal-text').empty(); $('#modal-footer').empty(); - $('.modal-text').append(``); - $.getJSON(`/api/queryDorks/?scan_id=${scan_id}&type=${dork_type}&format=json`, function(data) { - $('#modal-loader').empty(); - $('#modal-content').append(`${data['dorks'].length} results found in this dork category.`); - $('#modal-content').append(`
      `); - for (dork in data['dorks']){ - dork_obj = data['dorks'][dork]; - $("#dork-detail-modal-ul").append(`
    • ${dork_obj['description']}
    • `); - } - }); -} - - -function get_vulnerability_modal(scan_id=null, severity=null, subdomain_id=null, subdomain_name=null){ - var url = `/api/listVulnerability/?&format=json`; - - if (scan_id) { - url += `&scan_history=${scan_id}`; - } - - if (severity != null) { - url += `&severity=${severity}`; - } - - if (subdomain_id) { - url += `&subdomain_id=${subdomain_id}`; - } - - - // else{ - // url = `/api/listVulnerability/?severity=${severity}&subdomain_name=${subdomain_name}&format=json`; - // } - switch (severity) { - case 0: - severity_title = 'Informational' - break; - case 1: - severity_title = 'Low' - break; - case 2: - severity_title = 'Medium' - break; - case 3: - severity_title = 'High' - break; - case 4: - severity_title = 'Critical' - break; - default: - severity_title = '' - } - - $('#xl-modal-title').empty(); - $('#xl-modal-content').empty(); - $('#xl-modal-footer').empty(); - - Swal.fire({ - title: `Fetching ${severity_title} vulnerabilities for ${subdomain_name}...` - }); - swal.showLoading(); - - fetch(url, { - method: 'GET', - credentials: "same-origin", - headers: { - "X-CSRFToken": getCookie("csrftoken"), - 'Content-Type': 'application/json' - }, - }).then(response => response.json()).then(function(response) { - console.log(response); - swal.close(); - $('#xl-modal_title').html(`${subdomain_name}`); - render_vulnerability_in_xl_modal(response['count'], subdomain_name, response['results']) - }); - $('#modal_xl_scroll_dialog').modal('show'); - $("body").tooltip({ - selector: '[data-toggle=tooltip]' - }); - -} - - -function get_endpoint_modal(project, scan_id, subdomain_id, subdomain_name){ - // This function will display a xl modal with datatable for displaying endpoints - // associated with the subdomain - $('#xl-modal-title').empty(); - $('#xl-modal-content').empty(); - $('#xl-modal-footer').empty(); - - if (scan_id) { - url = `/api/listEndpoints/?project=${project}&scan_id=${scan_id}&subdomain_id=${subdomain_id}&format=json` - } - else{ - url = `/api/listEndpoints/?project=${project}&subdomain_id=${subdomain_id}&format=json` - } - - Swal.fire({ - title: `Fetching Endpoints for ${subdomain_name}...` - }); - swal.showLoading(); - - fetch(url, { - method: 'GET', - credentials: "same-origin", - headers: { - "X-CSRFToken": getCookie("csrftoken"), - 'Content-Type': 'application/json' - }, - }).then(response => response.json()).then(function(response) { - console.log(response); - swal.close(); - $('#xl-modal_title').html(`${subdomain_name}`); - render_endpoint_in_xlmodal(response['count'], subdomain_name, response['results']) - }); - $('#modal_xl_scroll_dialog').modal('show'); - $("body").tooltip({ - selector: '[data-toggle=tooltip]' - }); - -} - -function get_directory_modal(scan_id=null, subdomain_id=null, subdomain_name=null){ - // This function will display a xl modal with datatable for displaying endpoints - // associated with the subdomain - $('#xl-modal-title').empty(); - $('#xl-modal-content').empty(); - $('#xl-modal-footer').empty(); - - if (scan_id) { - url = `/api/listDirectories/?scan_id=${scan_id}&subdomain_id=${subdomain_id}&format=json` - } - else{ - url = `/api/listDirectories/?subdomain_id=${subdomain_id}&format=json` - } - - Swal.fire({ - title: `Fetching Directories for ${subdomain_name}...` - }); - swal.showLoading(); - - fetch(url, { - method: 'GET', - credentials: "same-origin", - headers: { - "X-CSRFToken": getCookie("csrftoken"), - 'Content-Type': 'application/json' - }, - }).then(response => response.json()).then(function(response) { - console.log(response); - swal.close(); - $('#xl-modal_title').html(`${subdomain_name}`); - render_directories_in_xl_modal(response['count'], subdomain_name, response['results']) - }); - $('#modal_xl_scroll_dialog').modal('show'); - $("body").tooltip({ - selector: '[data-toggle=tooltip]' - }); - -} - -function create_log_element(log) { - let logElement = document.createElement("p"); - innerHTML = ` -

      -

      - ${log.command} -

      -

      ` - if (log.output != ''){ - innerHTML += `
      ${log.output}
      `; - } - logElement.innerHTML = innerHTML; - return logElement; -} - -function get_logs_modal(scan_id=null, activity_id=null) { - - // This function will display a xl modal with datatable for displaying endpoints - // associated with the subdomain - $('#xl-modal-title').empty(); - $('#xl-modal-content').empty(); - $('#xl-modal-footer').empty(); - - if (scan_id) { - url = `/api/listScanLogs?scan_id=${scan_id}&format=json` - title = `Fetching logs for scan ${scan_id}` - } - else{ - url = `/api/listActivityLogs?activity_id=${activity_id}&format=json` - title = `Fetching logs for activity ${activity_id}` - } - - Swal.fire({ - title: title - }); - swal.showLoading(); - - // Get the initial logs - fetch(url) - .then(response => response.json()) - .then(data => { - console.log(data); - swal.close(); - $('#xl-modal_title').html(`Logs for scan #${scan_history_id}`); - data.results.forEach(log => { - $('#xl-modal-content').append(create_log_element(log)); - }) - }); - $('#modal_xl_scroll_dialog').modal('show'); - $("body").tooltip({ - selector: '[data-toggle=tooltip]' - }); -} - -function add_todo_for_scanhistory_modal(scan_history_id){ - $("#todoTitle").val(''); - $("#todoDescription").val(''); - - $('#addTaskModal').modal('show'); - subdomain_dropdown = document.getElementById('todoSubdomainDropdown'); - $.getJSON(`/api/querySubdomains?scan_id=${scan_history_id}&no_lookup_interesting&format=json`, function(data) { - document.querySelector("#selectedSubdomainCount").innerHTML = data['subdomains'].length + ' Subdomains'; - for (var subdomain in data['subdomains']){ - subdomain_obj = data['subdomains'][subdomain]; - var option = document.createElement('option'); - option.value = subdomain_obj['id']; - option.innerHTML = subdomain_obj['name']; - subdomain_dropdown.appendChild(option); - } - }); -} - -// listen to save todo event - -$(".add-scan-history-todo").click(function(){ - var title = document.getElementById('todoTitle').value; - - var description = document.getElementById('todoDescription').value; - - data = { - 'title': title, - 'description': description - } - - - scan_id = parseInt(document.getElementById('summary_identifier_val').value); - data['scan_history_id'] = scan_id; - - if ($("#todoSubdomainDropdown").val() != 'Choose Subdomain...') { - data['subdomain_id'] = parseInt($("#todoSubdomainDropdown").val()); - } - - fetch('/api/add/recon_note/', { - method: 'post', - headers: { - "X-CSRFToken": getCookie("csrftoken"), - 'Content-Type': 'application/json' - }, - body: JSON.stringify(data) - }).then(res => res.json()) - .then(function (response) { - console.log(response); - if (response.status) { - Snackbar.show({ - text: 'Todo Added.', - pos: 'top-right', - duration: 1500, - }); - } - else{ - swal.fire("Error!", "Could not add recon note, " + response.message, "warning", { - button: "Okay", - }); - } - $('#addTaskModal').modal('hide'); - get_recon_notes(null, scan_id); - }); -}); - - -function add_note_for_subdomain(subdomain_id, subdomain_name){ - console.log(subdomain_name); - $('#todo-modal-subdomain-name').html(subdomain_name); - $("#subdomainTodoTitle").val(''); - $("#subdomainTodoDescription").val(''); - - $('#add-todo-subdomain-submit-button').attr('onClick', `add_note_for_subdomain_handler(${subdomain_id});`); - - - $('#addSubdomainTaskModal').modal('show'); - -} - - -function add_note_for_subdomain_handler(subdomain_id){ - var title = document.getElementById('subdomainTodoTitle').value; - var description = document.getElementById('subdomainTodoDescription').value; - var project = document.querySelector('input[name="current_project"]').value; - var scan_id = parseInt(document.getElementById('summary_identifier_val').value); - - data = { - 'title': title, - 'description': description, - 'subdomain_id': subdomain_id, - 'project': project, - 'scan_history_id': scan_id - } - - fetch('/api/add/recon_note/', { - method: 'post', - headers: { - "X-CSRFToken": getCookie("csrftoken"), - 'Content-Type': 'application/json' - }, - body: JSON.stringify(data) - }).then(res => res.json()) - .then(function (response) { - - if (response.status) { - Snackbar.show({ - text: 'Todo Added.', - pos: 'top-right', - duration: 1500, - }); - } - else{ - swal.fire("Error!", response.message, "warning", { - button: "Okay", - }); - } - $('#subdomain_scan_results').DataTable().ajax.reload(); - $('#addSubdomainTaskModal').modal('hide'); - }); - -} - -function download_subdomains(scan_id=null, domain_id=null, domain_name=null){ - Swal.fire({ - title: 'Querying Subdomains...' - }); - swal.showLoading(); - count = ``; - var url = `/api/querySubdomains?format=json&no_lookup_interesting`; - if (scan_id) { - url += `&scan_id=${scan_id}`; - } - else if(domain_id){ - url += `&target_id=${domain_id}`; - } - - if (domain_name) { - $('.modal-title').html(count + ' Subdomains for : ' + domain_name + ''); - } - else{ - $('.modal-title').html(count + ' Subdomains'); - } - - $('.modal-text').empty(); $('#modal-footer').empty(); - $('.modal-text').append(``); - // query subdomains - $.getJSON(url, function(data) { - swal.close(); - if (data['subdomains'].length) { - $('#modal_dialog').modal('show'); - $('.modal_count').html(data['subdomains'].length); - $('#modal-content').empty(); - subdomains = ''; - $('#modal-content').append(``); - for (subdomain in data['subdomains']){ - subdomain_obj = data['subdomains'][subdomain]; - subdomains += subdomain_obj['name'] + '\n' - } - $('#all_subdomains_text_area').append(subdomains); - $("#modal-footer").empty(); - $("#modal-footer").append(` Download Subdomains as txt`); - $("#modal-footer").append(` Copy Subdomains`); - } - else{ - swal.fire("No Subdomains", "Could not find any subdomains.", "warning", { - button: "Okay", - }); - } - }).fail(function(){ - swal.fire("No Subdomains", "Could not find any subdomains.", "warning", { - button: "Okay", - }); - }); -} - -function download_interesting_subdomains(project, scan_id=null, domain_id=null, domain_name=null){ - Swal.fire({ - title: 'Querying Interesting Subdomains...' - }); - swal.showLoading(); - count = ``; - var url = `/api/queryInterestingSubdomains/?format=json&project=${project}`; - if (scan_id) { - url += `&scan_id=${scan_id}`; - } - else if(domain_id){ - url += `&target_id=${domain_id}`; - } - - if (domain_name) { - $('.modal-title').html( count + ' Interesting Subdomains for : ' + domain_name + ''); - } - else{ - $('.modal-title').html( count + ' Interesting Subdomains'); - } - $('.modal-text').empty(); $('#modal-footer').empty(); - // query subdomains - $.getJSON(url, function(data) { - swal.close() - if (data.length) { - $('#modal_dialog').modal('show'); - $('.modal_count').html(data.length); - $('#modal-content').empty(); - subdomains = ''; - $('#modal-content').append(``); - for (subdomain in data){ - subdomains += data[subdomain]['name'] + '\n' - } - $('#interesting_subdomains_text_area').append(subdomains); - $("#modal-footer").empty(); - $("#modal-footer").append(` Download Subdomains as txt`); - $("#modal-footer").append(` Copy Subdomains`); - } - else{ - swal.fire("No Interesting Subdomains", "Could not find any interesting subdomains.", "warning", { - button: "Okay", - }); - } - - }).fail(function(){ - swal.fire("No Interesting Subdomains", "Could not find any interesting subdomains.", "warning", { - button: "Okay", - }); - }); -} - -function download_interesting_endpoints(scan_id, domain_name){ - Swal.fire({ - title: 'Querying Interesting Endpoints...' - }); - swal.showLoading(); - count = ``; - if (scan_id) { - url = `/api/listInterestingEndpoints/?scan_id=${scan_id}&format=json&no_page`; - } - else{ - url = `/api/listInterestingEndpoints/?format=json&no_page`; - } - if (domain_name) { - $('.modal-title').html( count + ' Interesting Endpoints for : ' + domain_name + ''); - } - else{ - $('.modal-title').html( count + ' Interesting Endpoints'); - } - $('.modal-text').empty(); $('#modal-footer').empty(); - // query subdomains - $.getJSON(url, function(data) { - swal.close(); - if (data.length) { - $('#modal_dialog').modal('show'); - $('.modal_count').html(data.length); - $('#modal-content').empty(); - endpoints = ''; - $('#modal-content').append(``); - for (endpoint in data){ - endpoints += data[endpoint]['http_url'] + '\n' - } - $('#interesting_endpoints_text_area').append(endpoints); - $("#modal-footer").empty(); - $("#modal-footer").append(` Download Endpoints as txt`); - $("#modal-footer").append(` Copy Endpoints`); - } - else{ - swal.fire("No Interesting Endpoints", "Could not find any interesting Endpoints.", "warning", { - button: "Okay", - }); - } - - }).fail(function(){ - swal.fire("No Interesting Endpoints", "Could not find any interesting Endpoints.", "warning", { - button: "Okay", - }); - }); -} - - -function download_important_subdomains(scan_id=null, domain_id=null, domain_name=null){ - Swal.fire({ - title: 'Querying Interesting Subdomains...' - }); - swal.showLoading(); - count = ``; - var url = `/api/querySubdomains?format=json&no_lookup_interesting&only_important`; - if (scan_id) { - url = `/api/querySubdomains?format=json&no_lookup_interesting&only_important&scan_id=${scan_id}`; - } - else if (domain_id){ - url = `/api/querySubdomains?format=json&no_lookup_interesting&only_important&target_id=${domain_id}`; - } - if (domain_name) { - $('.modal-title').html(count + ' Subdomains marked as important : ' + domain_name + ''); - } - else{ - $('.modal-title').html(count + ' Subdomains marked as important'); - } - $('.modal-text').empty(); $('#modal-footer').empty(); - // query subdomains - $.getJSON(url, function(data) { - swal.close(); - if (data['subdomains'].length) { - $('#modal_dialog').modal('show'); - $('.modal_count').html(data['subdomains'].length); - $('#modal-content').empty(); - subdomains = ''; - $('#modal-content').append(``); - for (subdomain in data['subdomains']){ - subdomain_obj = data['subdomains'][subdomain]; - subdomains += subdomain_obj['name'] + '\n' - } - $('#all_subdomains_text_area').append(subdomains); - $("#modal-footer").empty(); - $("#modal-footer").append(` Download Subdomains as txt`); - $("#modal-footer").append(` Copy Subdomains`); - } - else{ - swal.fire("No Important Endpoints", "No subdomains has been marked as important.", "warning", { - button: "Okay", - }); - } - }).fail(function(){ - swal.fire("No Important Endpoints", "No subdomains has been marked as important.", "warning", { - button: "Okay", - }); - }); -} - -function download_endpoints(scan_id=null, domain_id=null, domain_name='', pattern=null){ - Swal.fire({ - title: 'Querying Endpoints...' - }); - swal.showLoading(); - var count = `Loading... `; - - var url = `/api/queryEndpoints/?format=json&only_urls`; - - if (scan_id) { - url += `&scan_id=${scan_id}`; - } - else if (domain_id) { - url += `&target_id=${domain_id}`; - } - - if (pattern) { - url += `&pattern=${pattern}`; - } - - if (domain_name) { - $('.modal-title').html( count + ' Endpoints for : ' + domain_name + ''); - } - else{ - $('.modal-title').html(count + ' Endpoints'); - } - $('.modal-text').empty(); $('#modal-footer').empty(); - // query subdomains - $.getJSON(url, function(data) { - swal.close(); - $('#modal_dialog').modal('show'); - $('.modal_count').html(data['endpoints'].length); - $('#modal-content').empty(); - endpoints = ''; - $('#modal-content').append(``); - for (endpoint in data['endpoints']){ - endpoint_obj = data['endpoints'][endpoint]; - endpoints += endpoint_obj['http_url'] + '\n' - } - $('#all_endpoints_text_area').append(endpoints); - $("#modal-footer").empty(); - if (domain_name) { - $("#modal-footer").append(` Download Endpoints as txt`); - } - else{ - $("#modal-footer").append(` Download Endpoints as txt`); - } - $("#modal-footer").append(` Copy Endpoints`); - }).fail(function(){ - }); -} - -function initiate_subscan(subdomain_ids){ - var engine_id = $('#subtaskScanEngine').val(); - var tasks = [] - var $engine_tasks = $('#engineTasks').find('input') - $engine_tasks.each(function(i){ - if ($(this).is(':checked')){ - tasks.push(this.id) - } - }) - console.log(tasks) - if (tasks.length === 0) { - Swal.fire({ - title: 'Oops!', - text: 'No subtasks selected. Please choose at least one subtask !', - icon: 'error' - }); - return; - } - var data = { - 'subdomain_ids': subdomain_ids, - 'tasks': tasks, - 'engine_id': engine_id, - }; - Swal.fire({ - title: 'Initiating subtask...', - allowOutsideClick: false - }); - swal.showLoading(); - fetch('/api/action/initiate/subtask/', { - method: 'POST', - credentials: "same-origin", - headers: { - "X-CSRFToken": getCookie("csrftoken"), - 'Content-Type': 'application/json' - }, - body: JSON.stringify(data) - }) - .then(response => response.json()) - .then(function (response) { - swal.close(); - if (response['status']) { - Snackbar.show({ - text: 'Subtask initiated successfully!', - pos: 'top-right', - duration: 2500 - }); - } - else{ - Swal.fire({ - title: 'Could not initiate subtask!', - icon: 'fail', - }); - } - }); - -} - - -// initiate sub scan -$('#btn-initiate-subtask').on('click', function(){ - $('#subscan-modal').modal('hide'); - if ($('#btn-initiate-subtask').attr('multiple-subscan') === 'true') { - var subdomain_item = document.getElementsByClassName("subdomain_checkbox"); - var subdomain_ids = []; - for (var i = 0; i < subdomain_item.length; i++) { - if (subdomain_item[i].checked) { - subdomain_ids.push($(subdomain_item[i]).val()); - } - } - initiate_subscan(subdomain_ids); - } - else{ - var subdomain_id = $('#subtask_subdomain_id').val(); - initiate_subscan([subdomain_id]); - } -}); - - -// Load engine tasks on modal load and engine input change -function load_engine_tasks(engine_name){ - var tasks = [] - var html = '' - var url = `/api/listEngines/?format=json`; - console.log(url); - $.getJSON(url, function(data) { - console.log(data); - var engines = data.engines - console.log(engines); - console.log(engine_name); - $.each(engines, function(i, engine){ - console.log(`${engine.engine_name} == ${engine_name}`) - if (engine.engine_name === engine_name){ - tasks = engine.tasks - console.log(tasks) - } - }) - $.each(tasks, function(i, task){ - html += ` -
      -
      - - -
      -
      ` - }); - console.log(html) - $('#engineTasks').html(html); - }) -} - -$('#subscan-modal').on('shown.bs.modal', function () { - var engine_name = $('#subtaskScanEngine option:selected').text(); - load_engine_tasks(engine_name); -}) - -$('#subtaskScanEngine').on('change', function(){ - var engine_name = $('#subtaskScanEngine option:selected').text(); - load_engine_tasks(engine_name); -}) - -// download subdomains -function downloadSelectedSubdomains(domain_name){ - if (!checkedCount()) { - Swal.fire({ - title: 'Oops! No Subdomains has been selected!', - icon: 'error', - padding: '2em' - }) - } else { - Swal.fire({ - title: 'Querying Selected Subdomains...' - }); - swal.showLoading(); - - subdomain_item = document.getElementsByClassName("subdomain_checkbox"); - var subdomain_ids = []; - for (var i = 0; i < subdomain_item.length; i++) { - if (subdomain_item[i].checked) { - subdomain_ids.push($(subdomain_item[i]).val()); - } - } - var data = {'subdomain_ids': subdomain_ids}; - fetch('/api/querySubdomains/', { - method: 'POST', - credentials: "same-origin", - headers: { - "X-CSRFToken": getCookie("csrftoken"), - 'Content-Type': 'application/json' - }, - body: JSON.stringify(data) - }) - .then(response => response.json()) - .then(function (response) { - swal.close(); - if (response['status']) { - $('#modal_dialog').modal('show'); - $('.modal_count').html(response['results'].length); - $('#modal-content').empty(); - subdomains = ''; - $('#modal-content').append(``); - for (subdomain in response['results']){ - subdomain_obj = response['results'][subdomain]; - subdomains += subdomain_obj + '\n' - } - $('#selected_subdomains_text_area').append(subdomains); - $("#modal-footer").empty(); - $("#modal-footer").append(` Download Subdomains as txt`); - $("#modal-footer").append(` Copy Subdomains`); - } - else{ - Swal.fire({ - title: 'Oops! Could not download selected subdomains.', - icon: 'error', - padding: '2em' - }); - } - }); - } -} - - -function deleteMultipleSubdomains(){ - if (!checkedCount()) { - Swal.fire({ - title: 'Oops! No Subdomains has been selected!', - icon: 'error', - padding: '2em' - }); - } else { - // atleast one target is selected - Swal.fire({ - showCancelButton: true, - title: 'Are you sure you want to delete ' + checkedCount() + ' Subdomains?', - text: 'Do you really want to delete these subdomains? This action cannot be undone.', - icon: 'error', - confirmButtonText: 'Delete', - }).then((result) => { - if (result.isConfirmed) { - Swal.fire({ - title: 'Deleting Subdomain...', - allowOutsideClick: false - }); - swal.showLoading(); - - subdomain_item = document.getElementsByClassName("subdomain_checkbox"); - var subdomain_ids = []; - for (var i = 0; i < subdomain_item.length; i++) { - if (subdomain_item[i].checked) { - subdomain_ids.push($(subdomain_item[i]).val()); - } - } - var data = {'subdomain_ids': subdomain_ids}; - fetch('/api/action/subdomain/delete/', { - method: 'POST', - credentials: "same-origin", - headers: { - "X-CSRFToken": getCookie("csrftoken"), - 'Content-Type': 'application/json' - }, - body: JSON.stringify(data) - }) - .then(response => response.json()) - .then(function (response) { - swal.close(); - if (response['status']) { - // remove all rows - var table = $('#subdomain_scan_results').DataTable(); - for (var id in subdomain_ids) { - table.row('#subdomain_row_' + id).remove().draw(); - } - Snackbar.show({ - text: 'Subdomain successfully deleted!', - pos: 'top-right', - duration: 2500 - }); - } - else{ - Swal.fire({ - title: 'Could not delete Subdomain!', - icon: 'fail', - }); - } - }); - } - }); - } -} - - -function initiateMultipleSubscan(){ - $('#subscan-modal').modal('show'); - $('a[data-toggle="tooltip"]').tooltip("hide") - // to distinguish multiple subscan or single, put a extra attribute on button - $('#btn-initiate-subtask').attr('multiple-subscan', true); -} - - -function detect_subdomain_cms(http_url, http_status){ - if (http_status == 0) { - var message = `reNgine has earlier identified that this subdomain did not return any HTTP status and likely the subdomain is not alive. reNgine may not be able to detect any CMS, would you still like to continue?`; - } - else if (http_status != 200) { - var message = `reNgine has earlier identified that this subdomain has HTTP status as ${http_status} and likely that reNgine will not detect any CMS, would you still like to continue?`; - } - - if (http_status != 200 || http_status == 0) { - Swal.fire({ - showCancelButton: true, - title: 'Detect CMS', - text: message, - icon: 'warning', - confirmButtonText: 'Detect CMS', - }).then((result) => { - if (result.isConfirmed) { - cms_detector_api_call(http_url); - } - }); - } - else{ - cms_detector_api_call(http_url); - } -} +function get_ips_from_port(port_number, history_id) { + document.getElementById("detailScanModalLabel").innerHTML = interpolate('IPs with port %(portNumber)s OPEN', {portNumber: port_number}, true); + var ip_badge = ''; + fetch('../port/ip/'+port_number+'/'+history_id+'/') + .then(response => response.json()) + .then(data => render_ips(data)); +} + +function get_ports_for_ip(ip, history_id) { + console.log(ip, history_id); + document.getElementById("detailScanModalLabel").innerHTML = interpolate('Open Ports identified for %(IP)s', {IP: ip}, true); + var port_badge = ''; + fetch('../ip/ports/'+ip+'/'+history_id+'/') + .then(response => response.json()) + .then(data => render_ports(data)); +} + +function render_ports(data) { + var port_badge = '' + ip_address_content = document.getElementById("detailScanModalContent"); + Object.entries(JSON.parse(data)).forEach(([key, value]) => { + badge_color = value[3] ? 'danger' : 'info'; + title = value[3] ? interpolate('Uncommon Port - %(uncommonPort)s', {uncommonPort: value[2]}, true) : value[2]; + port_badge += `${value[0]}/${value[1]}` + }); + ip_address_content.innerHTML = port_badge; + $('.bs-tooltip').tooltip(); +} + +function render_ips(data) { + var ip_badge = '' + content = document.getElementById("detailScanModalContent"); + Object.entries(JSON.parse(data)).forEach(([key, value]) => { + badge_color = value[1] ? 'warning' : 'info'; + title = value[1] ? gettext('CDN IP Address') : ''; + ip_badge += `${value[0]}` + }); + content.innerHTML = ip_badge; + $('.bs-tooltip').tooltip(); +} + + +function get_endpoints(project, scan_history_id=null, domain_id=null, gf_tags=null) { + var is_endpoint_grouping = false; + var endpoint_grouping_col = 6; + + var lookup_url = '/api/listEndpoints/?format=datatables&project=' + project; + + if (scan_history_id) { + lookup_url += `&scan_history=${scan_history_id}`; + } else if (domain_id) { + lookup_url += `&target_id=${domain_id}`; + } + + if (gf_tags) { + lookup_url += `&gf_tag=${gf_tags}` + } + var endpoint_datatable_columns = [ + {'data': 'id'}, + {'data': 'http_url'}, + {'data': 'http_status'}, + {'data': 'page_title'}, + {'data': 'matched_gf_patterns'}, + {'data': 'content_type'}, + {'data': 'content_length', 'searchable': false}, + {'data': 'techs'}, + {'data': 'webserver'}, + {'data': 'response_time', 'searchable': false}, + ]; + var endpoint_table = $('#endpoint_results').DataTable({ + "destroy": true, + "processing": true, + "language": { + "paginate": { + "previous": '', + "next": '' + }, + "processing": gettext("Processing... Please wait..."), + "zeroRecords": gettext("No endpoint detected"), + "infoEmpty": gettext("No endpoint detected") + }, + "dom": "<'dt--top-section'<'row'<'col-12 mb-3 mb-sm-0 col-sm-4 col-md-3 col-lg-4 d-flex justify-content-sm-start justify-content-center'l><'dt--pages-count col-12 col-sm-6 col-md-4 col-lg-4 d-flex justify-content-sm-middle justify-content-center'i><'dt--pagination col-12 col-sm-2 col-md-5 col-lg-4 d-flex justify-content-sm-end justify-content-center'p>>>" + + "<'table-responsive'tr>" + + "<'dt--bottom-section'<'row'<'col-12 mb-3 mb-sm-0 col-sm-4 col-md-3 col-lg-4 d-flex justify-content-sm-start justify-content-center'l><'dt--pages-count col-12 col-sm-6 col-md-4 col-lg-4 d-flex justify-content-sm-middle justify-content-center'i><'dt--pagination col-12 col-sm-2 col-md-5 col-lg-4 d-flex justify-content-sm-end justify-content-center'p>>>", + "stripeClasses": [], + "lengthMenu": [100, 200, 300, 500, 1000], + "pageLength": 100, + 'serverSide': true, + "ajax": { + 'url': lookup_url, + }, + "rowGroup": { + "startRender": function(rows, group) { + return interpolate('%(group)s (%(count)s Endpoints)', {group: group, count: rows.count()}, true); + } + }, + "order": [[ 6, "desc" ]], + "columns": endpoint_datatable_columns, + "columnDefs": [ + { + "targets": [ 0 ], + "visible": false, + "searchable": false, + }, + { + "targets": [ 7, 8 ], + "visible": false, + "searchable": true, + }, + { + "render": function ( data, type, row ) { + var tech_badge = ''; + var web_server = ''; + if (row['techs']) { + tech_badge = `
      ` + parse_technology(row['techs'], "primary", outline=true); + } + + if (row['webserver']) { + web_server = `${row['webserver']}`; + } + + var url = split_into_lines(data, 70); + var action_icons = ` +
      + + + + +
      + `; + tech_badge += web_server; + + return `
      ` + "`+ url +"" + tech_badge + "
      " + action_icons ; + }, + "targets": 1, + }, + { + "render": function ( data, type, row ) { + // display badge based on http status + // green for http status 2XX, orange for 3XX and warning for everything else + if (data) { + return get_http_status_badge(data); + } + return ''; + + }, + "targets": 2, + }, + { + "render": function ( data, type, row ) { + if (data) { + return parse_comma_values_into_span(data, "info"); + } + return ""; + }, + "targets": 8, + }, + { + "render": function ( data, type, row ) { + if (data) { + return parse_comma_values_into_span(data, "danger", outline=true); + } + return ""; + }, + "targets": 4, + }, + { + "render": function ( data, type, row ) { + if (data) { + return get_response_time_text(data); + } + return ""; + }, + "targets": 9, + }, + ], + "initComplete": function(settings, json) { + api = this.api(); + endpoint_datatable_col_visibility(endpoint_table); + $(".dtrg-group th:contains('No group')").remove(); + }, + "drawCallback": function () { + $("body").tooltip({ selector: '[data-toggle=tooltip]' }); + // $('.dataTables_wrapper table').removeClass('table-striped'); + $('.badge').tooltip({ template: '' }) + $('.dtrg-group').remove(); + $('.bs-tooltip').tooltip(); + var clipboard = new Clipboard('.copyable'); + $('.bs-tooltip').tooltip(); + clipboard.on('success', function(e) { + setTooltip(e.trigger, 'Copied!'); + hideTooltip(e.trigger); + }); + drawCallback_api = this.api(); + setTimeout(function() { + $(".dtrg-group th:contains('No group')").remove(); + }, 1); + } + }); + + var radioGroup = document.getElementsByName('grouping_endpoint_row'); + radioGroup.forEach(function(radioButton) { + radioButton.addEventListener('change', function() { + if (this.checked) { + var groupRows = document.querySelectorAll('tr.group'); + // Remove each group row + var col_index = get_datatable_col_index(this.value, endpoint_datatable_columns); + api.page.len(-1).draw(); + api.order([col_index, 'asc']).draw(); + endpoint_table.rowGroup().dataSrc(this.value); + Snackbar.show({ + text: interpolate('Endpoints grouped by %(eptGpBy)s', {eptGpBy: this.value}, true), + pos: 'top-right', + duration: 2500 + }); + } + }); + }); + + $('#endpoint-search-button').click(function () { + endpoint_table.search($('#endpoints-search').val()).draw() ; + }); + $('input[name=end_http_status_filter_checkbox]').change(function() { + if ($(this).is(':checked')) { + endpoint_table.column(2).visible(true); + } else { + endpoint_table.column(2).visible(false); + } + window.localStorage.setItem('end_http_status_filter_checkbox', $(this).is(':checked')); + }); + $('input[name=end_page_title_filter_checkbox]').change(function() { + if ($(this).is(':checked')) { + endpoint_table.column(3).visible(true); + } else { + endpoint_table.column(3).visible(false); + } + window.localStorage.setItem('end_page_title_filter_checkbox', $(this).is(':checked')); + }); + $('input[name=end_tags_filter_checkbox]').change(function() { + if ($(this).is(':checked')) { + endpoint_table.column(4).visible(true); + } else { + endpoint_table.column(4).visible(false); + } + window.localStorage.setItem('end_tags_filter_checkbox', $(this).is(':checked')); + }); + $('input[name=end_content_type_filter_checkbox]').change(function() { + if ($(this).is(':checked')) { + endpoint_table.column(5).visible(true); + } else { + endpoint_table.column(5).visible(false); + } + window.localStorage.setItem('end_content_type_filter_checkbox', $(this).is(':checked')); + }); + $('input[name=end_content_length_filter_checkbox]').change(function() { + if ($(this).is(':checked')) { + endpoint_table.column(6).visible(true); + } else { + endpoint_table.column(6).visible(false); + } + window.localStorage.setItem('end_content_length_filter_checkbox', $(this).is(':checked')); + }); + $('input[name=end_response_time_filter_checkbox]').change(function() { + if ($(this).is(':checked')) { + endpoint_table.column(9).visible(true); + } else { + endpoint_table.column(9).visible(false); + } + window.localStorage.setItem('end_response_time_filter_checkbox', $(this).is(':checked')); + }); +} + +function get_subdomain_changes(scan_history_id) { + $('#table-subdomain-changes').DataTable({ + "drawCallback": function(settings, start, end, max, total, pre) { + if (this.fnSettings().fnRecordsTotal() > 0) { + $('#subdomain_change_count').empty(); + $("#subdomain_change_count").html(`${this.fnSettings().fnRecordsTotal()}`); + $('.recon-changes-tab-show').removeAttr('style'); + $('#subdomain_changes_alert').html(interpolate(`%(subDomainChangesCount)s Subdomain changes.`, {subDomainChangesCount: this.fnSettings().fnRecordsTotal()}), true); + } else{ + $('#recon_changes_subdomain_div').remove(); + } + $("#subdomain-changes-loader").remove(); + }, + "language": { + "zeroRecords": gettext("No subdomain change"), + "infoEmpty": gettext("No subdomain change") + }, + "processing": true, + "dom": "<'dt--top-section'<'row'<'col-12 mb-3 mb-sm-0 col-sm-4 col-md-3 col-lg-4 d-flex justify-content-sm-start justify-content-center'l><'dt--pages-count col-12 col-sm-6 col-md-4 col-lg-4 d-flex justify-content-sm-middle justify-content-center'i><'dt--pagination col-12 col-sm-2 col-md-5 col-lg-4 d-flex justify-content-sm-end justify-content-center'p>>>" + + "<'table-responsive'tr>" + + "<'dt--bottom-section'<'row'<'col-12 mb-3 mb-sm-0 col-sm-4 col-md-3 col-lg-4 d-flex justify-content-sm-start justify-content-center'l><'dt--pages-count col-12 col-sm-6 col-md-4 col-lg-4 d-flex justify-content-sm-middle justify-content-center'i><'dt--pagination col-12 col-sm-2 col-md-5 col-lg-4 d-flex justify-content-sm-end justify-content-center'p>>>", + "destroy": true, + "stripeClasses": [], + 'serverSide': true, + "ajax": `/api/listSubdomainChanges/?scan_id=${scan_history_id}&format=datatables`, + "order": [[ 3, "desc" ]], + "columns": [ + {'data': 'name'}, + {'data': 'page_title'}, + {'data': 'http_status'}, + {'data': 'content_length'}, + {'data': 'change'}, + {'data': 'http_url'}, + {'data': 'is_cdn'}, + {'data': 'is_interesting'}, + ], + "bInfo": false, + "columnDefs": [ + { + "targets": [ 5, 6, 7 ], + "visible": false, + "searchable": false, + }, + {"className": "text-center", "targets": [ 2, 4 ]}, + { + "render": function ( data, type, row ) { + badges = ''; + cdn_badge = ''; + tech_badge = ''; + interesting_badge = ''; + if (row['is_cdn']) + { + cdn_badge = "" + gettext("CDN") + "" + } + if (row['is_interesting']) + { + interesting_badge = "" + gettext("Interesting") + "" + } + if (cdn_badge || interesting_badge) + { + badges = cdn_badge + interesting_badge + '
      '; + } + if (row['http_url']) { + if (row['cname']) { + return badges + ``+data+`
      ` + gettext("CNAME") + `
      ` + row['cname'].replace(',', '
      ')+`
      `; + } + return badges + ``+data+``; + } + return badges + ``+data+``; + }, + "targets": 0 + }, + { + "render": function ( data, type, row ) { + // display badge based on http status + // green for http status 2XX, orange for 3XX and warning for everything else + if (data >= 200 && data < 300) { + return ""+data+""; + } else if (data >= 300 && data < 400) { + return ""+data+""; + } else if (data == 0) { + // datatable throws error when no data is returned + return ""; + } + return ``+data+``; + }, + "targets": 2, + }, + { + "render": function ( data, type, row ) { + if (data) { + return `${data}`; + } + return ""; + }, + "targets": 3, + }, + { + "render": function ( data, type, row ) { + if (data == 'added') { + return ` ` + gettext("Added") + ``; + } else{ + return ` ` + gettext("Removed") + ``; + } + }, + "targets": 4, + }, + ], + }); +} + +function get_endpoint_changes(scan_history_id) { + $('#table-endpoint-changes').DataTable({ + "drawCallback": function(settings, start, end, max, total, pre) { + if (this.fnSettings().fnRecordsTotal() > 0) { + $("#endpoint_change_count").empty(); + $("#endpoint_change_count").html(`${this.fnSettings().fnRecordsTotal()}`); + $('.recon-changes-tab-show').removeAttr('style'); + } else{ + $("#endpoint-changes-div").remove(); + } + $("#endpoint-changes-loader").remove(); + }, + "language": { + "zeroRecords": gettext("No endpoint change"), + "infoEmpty": gettext("No endpoint change") + }, + "processing": true, + "dom": "<'dt--top-section'<'row'<'col-12 mb-3 mb-sm-0 col-sm-4 col-md-3 col-lg-4 d-flex justify-content-sm-start justify-content-center'l><'dt--pages-count col-12 col-sm-6 col-md-4 col-lg-4 d-flex justify-content-sm-middle justify-content-center'i><'dt--pagination col-12 col-sm-2 col-md-5 col-lg-4 d-flex justify-content-sm-end justify-content-center'p>>>" + + "<'table-responsive'tr>" + + "<'dt--bottom-section'<'row'<'col-12 mb-3 mb-sm-0 col-sm-4 col-md-3 col-lg-4 d-flex justify-content-sm-start justify-content-center'l><'dt--pages-count col-12 col-sm-6 col-md-4 col-lg-4 d-flex justify-content-sm-middle justify-content-center'i><'dt--pagination col-12 col-sm-2 col-md-5 col-lg-4 d-flex justify-content-sm-end justify-content-center'p>>>", + "destroy": true, + "stripeClasses": [], + 'serverSide': true, + "ajax": `/api/listEndPointChanges/?scan_id=${scan_history_id}&format=datatables`, + "order": [[ 3, "desc" ]], + "columns": [ + {'data': 'http_url'}, + {'data': 'page_title'}, + {'data': 'http_status'}, + {'data': 'content_length'}, + {'data': 'change'}, + ], + "bInfo": false, + "columnDefs": [ + {"className": "text-center", "targets": [ 2 ]}, + { + "render": function ( data, type, row ) { + var url = split_into_lines(data, 70); + return ""+url+""; + }, + "targets": 0 + }, + { + "render": function ( data, type, row ) { + // display badge based on http status + // green for http status 2XX, orange for 3XX and warning for everything else + if (data >= 200 && data < 300) { + return ""+data+""; + } else if (data >= 300 && data < 400) { + return ""+data+""; + } else if (data == 0) { + // datatable throws error when no data is returned + return ""; + } + return ``+data+``; + }, + "targets": 2, + }, + { + "render": function ( data, type, row ) { + if (data == 'added') { + return ` ` + gettext("Added") + ``; + } else{ + return ` ` + gettext("Removed") + ``; + } + }, + "targets": 4, + }, + ], + }); +} + +function get_osint_users(scan_id) { + $.getJSON(`/api/queryOsintUsers/?scan_id=${scan_id}&format=json`, function(data) { + $('#osint-users-count').empty(); + for (var val in data['users']) { + user = data['users'][val] + $("#osint-users").append(`${user['author']}`); + } + $('#osint-users-count').html(`${data['users'].length}`); + $("body").tooltip({ selector: '[data-toggle=tooltip]' }); + }).fail(function() { + $('#osint-users-count').empty(); + $("#osint-users").append(`

      ` + gettext("No Users discovered.") + `

      `); + }); +} + +function get_screenshot(scan_id) { + var port_array = []; + var service_array = []; + var tech_array = []; + var ip_array = []; + var gridzyElement = document.querySelector('.gridzy'); + gridzyElement.classList.add('gridzySkinBlank'); + gridzyElement.setAttribute('data-gridzy-layout', 'waterfall'); + gridzyElement.setAttribute('data-gridzy-spaceBetween', 10); + gridzyElement.setAttribute('data-gridzy-desiredwidth', 350); + gridzyElement.setAttribute('data-gridzySearchField', "#screenshot-search"); + var interesting_badge = `Interesting`; + $.getJSON(`/api/listSubdomains/?scan_id=${scan_id}&no_page&only_screenshot`, function(data) { + $("#screenshot-loader").remove(); + $("#filter-screenshot").show(); + for (var subdomain in data) { + var figure = document.createElement('figure'); + var link = document.createElement('a'); + // return ``; + // currently lookup is supported only for http_status, page title & subdomain name, + interesting_field = data[subdomain]['is_interesting'] ? 'interesting' : ''; + var ips = data[subdomain]['ip_addresses']; + var ip_search_values = ''; + for (var ip in ips) { + ip_address = ips[ip]['address']; + ip_search_values += ip_address + ' '; + } + search_field = `${data[subdomain]['page_title']} ${data[subdomain]['name']} ${data[subdomain]['http_status']} ${ip_search_values} ${interesting_field}`; + link.setAttribute('data-lightbox', 'screenshot-gallery') + link.setAttribute('href', '/media/' + data[subdomain]['screenshot_path']) + link.setAttribute('data-title', `

      `+data[subdomain]['name']+`

      `); + link.classList.add('img-fluid'); + link.classList.add('rounded'); + link.classList.add('screenshot-gallery'); + link.classList.add('mb-4'); + link.classList.add('mt-4'); + link.setAttribute('data-gridzySearchText', search_field); + var newImage = document.createElement('img'); + newImage.setAttribute('data-gridzylazysrc', '/media/' + data[subdomain]['screenshot_path']); + // newImage.setAttribute('data-gridzylazysrc', 'https://placeimg.com/1440/900/any?' + subdomain); + newImage.setAttribute('height', 500); + newImage.setAttribute('width', 500); + newImage.setAttribute('class', 'gridzyImage'); + var figcaption = document.createElement('figcaption'); + figcaption.setAttribute('class', 'gridzyCaption'); + http_status_badge = 'danger'; + if (data[subdomain]['http_status'] >=200 && data[subdomain]['http_status'] < 300) { + http_status_badge = 'success'; + } else if (data[subdomain]['http_status'] >=300 && data[subdomain]['http_status'] < 400) { + http_status_badge = 'warning'; + } + page_title = data[subdomain]['page_title'] ? data[subdomain]['page_title'] + '
      ': '' ; + subdomain_link = data[subdomain]['http_url'] ? `${data[subdomain]['name']}` : `${data[subdomain]['name']}` + http_status = data[subdomain]['http_status'] ? `${data[subdomain]['http_status']}` : ''; + figcaption.innerHTML = data[subdomain]['is_interesting'] ? page_title + subdomain_link + interesting_badge + http_status : page_title + subdomain_link + http_status; + figure.appendChild(figcaption); + link.appendChild(newImage); + link.appendChild(figure); + gridzyElement.appendChild(link); + + // add http status to filter values + filter_values = 'http_' + data[subdomain]['http_status'] + ' '; + + // dynamic filtering menu + http_status = data[subdomain]['http_status']; + http_status_select = document.getElementById('http_select_filter'); + if (!$('#http_select_filter').find("option:contains('" + http_status + "')").length) { + var option = document.createElement('option'); + option.value = ".http_" + http_status; + option.innerHTML = http_status; + http_status_select.appendChild(option); + } + + // ip, port and services filtering + ips = data[subdomain]['ip_addresses'] + for (var ip in ips) { + ip_address = ips[ip]['address']; + filter_values += 'ip_' + ip_address.replace(/\./g,"_") + ' '; + if (ip_array.indexOf(ip_address) === -1) { + ip_array.push(ip_address); + } + + ports = ips[ip]['ports']; + for (var port in ports) { + port_number = ips[ip]['ports'][port]['number']; + service_name = ips[ip]['ports'][port]['service_name']; + + filter_values += 'port_' + port_number + ' '; + if (port_array.indexOf(port_number) === -1) { + port_array.push(port_number); + } + + filter_values += 'service_' + service_name + ' '; + if (service_array.indexOf(service_name) === -1) { + service_array.push(service_name); + } + } + } + + // technology stack filtering + technology = data[subdomain]['technologies']; + for (var tech in technology) { + tech_name = technology[tech]['name'] + filter_values += 'tech_' + tech_name.replace(/ /g,"_").toLowerCase() + ' '; + if (tech_array.indexOf(tech_name) === -1) { + tech_array.push(tech_name); + } + + } + + link.setAttribute('class', filter_values); + } + + // add port and service and tech to options + port_select = document.getElementById('ports_select_filter'); + if (port_select) { + port_array.sort((a, b) => a - b); + for (var port in port_array) { + if (!$('#ports_select_filter').find("option:contains('" + port_array[port] + "')").length) { + var option = document.createElement('option'); + option.value = ".port_" + port_array[port]; + option.innerHTML = port_array[port]; + port_select.appendChild(option); + } + } + } + + // add ip to select + ip_select = document.getElementById('ips_select_filter'); + for (var ip in ip_array) { + if (!$('#ips_select_filter').find("option:contains('" + ip_array[ip] + "')").length) { + var option = document.createElement('option'); + option.value = ".ip_" + ip_array[ip]; + option.innerHTML = ip_array[ip]; + ip_select.appendChild(option); + } + } + + service_array.sort(); + service_select = document.getElementById('services_select_filter'); + if (service_select) { + for (var service in service_array) { + if (!$('#services_select_filter').find("option:contains('" + service_array[service] + "')").length) { + var option = document.createElement('option'); + option.value = ".service_" + service_array[service]; + option.innerHTML = service_array[service]; + service_select.appendChild(option); + } + } + } + + tech_select = document.getElementById('tech_select_filter'); + for (var tech in tech_array) { + if (!$('#tech_select_filter').find("option:contains('" + tech_array[tech] + "')").length) { + var option = document.createElement('option'); + option.value = ".tech_" + tech_array[tech].replace(/ /g,"_").toLowerCase(); + option.innerHTML = tech_array[tech]; + tech_select.appendChild(option); + } + } + + $(".tagging").select2({ + tags: true + }); + // search functionality + var gridzyElements = document.querySelectorAll('.gridzySkinBlank[data-gridzySearchField]'), + pos = gridzyElements.length; + + while (pos--) { + (function(gridzyElement) { + var searchField = document.querySelector(gridzyElement.getAttribute('data-gridzySearchField')); + var gridzyInstance = gridzyElement.gridzy; + var gridzyItems = gridzyElement.children; + + if (searchField) { + searchField.addEventListener('input', search); + } + + function search() { + var pos = gridzyItems.length, + child, + itemContent, + found = false, + searchValue = searchField.value.toLowerCase(); + + if (searchValue) { + while (pos--) { + child = gridzyItems[pos]; + itemContent = (child.getAttribute('data-gridzySearchText') || child.innerText).toLowerCase(); + found = -1 < itemContent.search(searchValue); + child.classList[found ? 'add' : 'remove']('searchResult'); + } + if (gridzyInstance.getOption('filter') !== '.searchResult') { + gridzyInstance.setOptions({filter:'.searchResult'}); + } + } else { + while (pos--) { + gridzyItems[pos].classList.remove('searchResult'); + } + if (gridzyInstance.getOption('filter') !== Gridzy.getDefaultOption('filter')) { + gridzyInstance.setOptions({filter:null}); + } + } + } + })(gridzyElements[pos]); + } + + //filter functionality + var gridzyInstance = document.querySelector('.gridzySkinBlank').gridzy; + $('#http_select_filter, #ips_select_filter, #services_select_filter, #ports_select_filter, #tech_select_filter').on('change', function() { + values = $(this).val(); + console.log(values); + if (values.length && this.id == 'ips_select_filter') { + var replaces_str = values.map(function(values) { + return values.replace(/(?<=\..*)\./g, '_'); + }); + console.log(replaces_str); + gridzyInstance.setOptions({ + filter: replaces_str + }); + } else if (values.length && this.id != 'ips_select_filter') { + gridzyInstance.setOptions({ + filter: values + }); + } else { + gridzyInstance.setOptions({ + filter: '*' + }); + } + }); + }); +} + +function get_metadata(scan_id) { + // populate detail table + $.getJSON(`/api/queryMetadata/?scan_id=${scan_id}&format=json`, function(data) { + $('#metadata-count').empty(); + $('#metadata-table-body').empty(); + for (var val in data['metadata']) { + doc = data['metadata'][val]; + rand_id = get_randid(); + $('#metadata-table-body').append(`
      `); + let filename = (doc['doc_name']) ? `${truncate(doc['doc_name'], 30)}` : ''; + + subdomain = `${doc['subdomain']['name']}`; + $(`#${rand_id}`).append(``); + if (doc['author']) { + $(`#${rand_id}`).append(``); + } else { + $(`#${rand_id}`).append('') + } + if (doc['producer'] || doc['creator'] || doc['os']) { + metadata = ''; + metadata += doc['producer'] ? interpolate('Software: %(producer)s', {producer: doc['producer']}, true) : ''; + metadata += doc['creator'] ? '/' + doc['creator'] : 'dsdd'; + metadata += doc['os'] ? `
      ` + interpolate("OS: %(os)s", {os: doc['os']}, true) + '': ''; + if (doc['creation_date']) { + metadata += `
      ` + interpolate('Created On: %(creationDate)s', {creationDate: doc['creation_date']}, true); + } + if (doc['modified_date']) { + metadata += `
      ` + interpolate('Modified On: %(modifiedDate)s', {modifiedDate: doc['modified_date']}, true); + } + $(`#${rand_id}`).append(``); + } else { + $(`#${rand_id}`).append('') + } + } + $('#metadata-count').html(`${data['metadata'].length}`); + $('.bs-tooltip').tooltip(); + }); +} + + +function get_emails(scan_id) { + var exposed_count = 0; + $.getJSON(`/api/queryEmails/?scan_id=${scan_id}&format=json`, function(data) { + $('#emails-count').empty(); + $('#email-table-body').empty(); + for (var val in data['emails']) { + email = data['emails'][val]; + rand_id = get_randid(); + $('#email-table-body').append(``); + $(`#${rand_id}`).append(``); + if (email['password']) { + $(`#${rand_id}`).append(``); + exposed_count++; + } + } + $('#emails-count').html(`${data['emails'].length}`); + if (exposed_count > 0 ) { + $('#exposed_summary').html(`${exposed_count} Exposed Credentials`); + } + }); +} + + +function get_employees(scan_id) { + $.getJSON(`/api/queryEmployees/?scan_id=${scan_id}&format=json`, function(data) { + $('#employees-count').empty(); + $('#employees-table-body').empty(); + for (var val in data['employees']) { + emp = data['employees'][val]; + rand_id = get_randid(); + $('#employees-table-body').append(``); + $(`#${rand_id}`).append(``); + $(`#${rand_id}`).append(``); + } + $('#employees-count').html(`${data['employees'].length}`); + }); +} + + +function get_dorks(scan_id) { + $("#dorking_result_card").hide(); + $.getJSON(`/api/queryDorks/?scan_id=${scan_id}&format=json`, function(data) { + if ($.isEmptyObject(data['dorks'])) { + return + } + // unhide div + $("#dorking_result_card").show(); + var is_first = true; + for (var val in data['dorks']) { + var dorks = data['dorks'][val]; + if (is_first) { + active = 'active show'; + } else { + active = ''; + } + $("#dork_type_vertical_tablist").append(` ${convertToCamelCase(val)}`); + // create tab content + var tab_content = `
        `; + for (var dork in dorks) { + var dork_data = dorks[dork]; + tab_content += `
      • ${dork_data.url}
      • `; + } + tab_content += `
      `; + $('#dork_tab_content').append(tab_content); + is_first = false; + } + }); +} + +// +// function get_dork_summary(scan_id) { +// $.getJSON(`/api/queryDorkTypes/?scan_id=${scan_id}&format=json`, function(data) { +// $('#dork-category-count').empty(); +// for (var val in data['dorks']) { +// dork = data['dorks'][val] +// $("#osint-dork").append(`${dork['type']}`); +// } +// $('#dork-category-count').html(`${data['dorks'].length}`); +// $("body").tooltip({ selector: '[data-toggle=tooltip]' }); +// }); +// } + + +function get_dork_details(dork_type, scan_id) { + // render tab modal + $('.modal-title').html('Dorking Results in category: ' + dork_type + ''); + $('#modal_dialog').modal('show'); + $('.modal-text').empty(); $('#modal-footer').empty(); + $('.modal-text').append(``); + $.getJSON(`/api/queryDorks/?scan_id=${scan_id}&type=${dork_type}&format=json`, function(data) { + $('#modal-loader').empty(); + $('#modal-content').append(`` + interpolate('%(nDorks)s results found in this dork category.', {nDorks: data['dorks'].length}, true) + ``); + $('#modal-content').append(`
        `); + for (dork in data['dorks']) { + dork_obj = data['dorks'][dork]; + $("#dork-detail-modal-ul").append(`
      • ${dork_obj['description']}
      • `); + } + }); +} + + +function get_vulnerability_modal(scan_id=null, severity=null, subdomain_id=null, subdomain_name=null) { + var url = `/api/listVulnerability/?&format=json`; + + if (scan_id) { + url += `&scan_history=${scan_id}`; + } + + if (severity != null) { + url += `&severity=${severity}`; + } + + if (subdomain_id) { + url += `&subdomain_id=${subdomain_id}`; + } + + + // else{ + // url = `/api/listVulnerability/?severity=${severity}&subdomain_name=${subdomain_name}&format=json`; + // } + switch (severity) { + case 0: + severity_title = gettext('Informational') + break; + case 1: + severity_title = gettext('Low') + break; + case 2: + severity_title = gettext('Medium') + break; + case 3: + severity_title = gettext('High') + break; + case 4: + severity_title = gettext('Critical') + break; + default: + severity_title = '' + } + + $('#xl-modal-title').empty(); + $('#xl-modal-content').empty(); + $('#xl-modal-footer').empty(); + + Swal.fire({ + title: interpolate(`Fetching %(severityTitle)s vulnerabilities for %(subDomainName)s...`, {severityTitle: severity_title, subDomainName: subdomain_name}, true), + }); + swal.showLoading(); + + fetch(url, { + method: 'GET', + credentials: "same-origin", + headers: { + "X-CSRFToken": getCookie("csrftoken"), + 'Content-Type': 'application/json' + }, + }).then(response => response.json()).then(function(response) { + console.log(response); + swal.close(); + $('#xl-modal_title').html(`${subdomain_name}`); + render_vulnerability_in_xl_modal(response['count'], subdomain_name, response['results']) + }); + $('#modal_xl_scroll_dialog').modal('show'); + $("body").tooltip({ + selector: '[data-toggle=tooltip]' + }); + +} + + +function get_endpoint_modal(project, scan_id, subdomain_id, subdomain_name) { + // This function will display a xl modal with datatable for displaying endpoints + // associated with the subdomain + $('#xl-modal-title').empty(); + $('#xl-modal-content').empty(); + $('#xl-modal-footer').empty(); + + if (scan_id) { + url = `/api/listEndpoints/?project=${project}&scan_id=${scan_id}&subdomain_id=${subdomain_id}&format=json` + } else { + url = `/api/listEndpoints/?project=${project}&subdomain_id=${subdomain_id}&format=json` + } + + Swal.fire({ + title: `Fetching Endpoints for ${subdomain_name}...` + }); + swal.showLoading(); + + fetch(url, { + method: 'GET', + credentials: "same-origin", + headers: { + "X-CSRFToken": getCookie("csrftoken"), + 'Content-Type': 'application/json' + }, + }).then(response => response.json()).then(function(response) { + console.log(response); + swal.close(); + $('#xl-modal_title').html(`${subdomain_name}`); + render_endpoint_in_xlmodal(response['count'], subdomain_name, response['results']) + }); + $('#modal_xl_scroll_dialog').modal('show'); + $("body").tooltip({ + selector: '[data-toggle=tooltip]' + }); + +} + +function get_directory_modal(scan_id=null, subdomain_id=null, subdomain_name=null) { + // This function will display a xl modal with datatable for displaying endpoints + // associated with the subdomain + $('#xl-modal-title').empty(); + $('#xl-modal-content').empty(); + $('#xl-modal-footer').empty(); + + if (scan_id) { + url = `/api/listDirectories/?scan_id=${scan_id}&subdomain_id=${subdomain_id}&format=json` + } else { + url = `/api/listDirectories/?subdomain_id=${subdomain_id}&format=json` + } + + Swal.fire({ + title: interpolate(`Fetching Directories for %(subDomainName)s...`, {subDomainName: subdomain_name}, true), + }); + swal.showLoading(); + + fetch(url, { + method: 'GET', + credentials: "same-origin", + headers: { + "X-CSRFToken": getCookie("csrftoken"), + 'Content-Type': 'application/json' + }, + }).then(response => response.json()).then(function(response) { + console.log(response); + swal.close(); + $('#xl-modal_title').html(`${subdomain_name}`); + render_directories_in_xl_modal(response['count'], subdomain_name, response['results']) + }); + $('#modal_xl_scroll_dialog').modal('show'); + $("body").tooltip({ + selector: '[data-toggle=tooltip]' + }); + +} + +function create_log_element(log) { + let logElement = document.createElement("p"); + innerHTML = ` +

        +

        + ${log.command} +

        +

        ` + if (log.output != '') { + innerHTML += `
        ${log.output}
        `; + } + logElement.innerHTML = innerHTML; + return logElement; +} + +function get_logs_modal(scan_id=null, activity_id=null) { + + // This function will display a xl modal with datatable for displaying endpoints + // associated with the subdomain + $('#xl-modal-title').empty(); + $('#xl-modal-content').empty(); + $('#xl-modal-footer').empty(); + + if (scan_id) { + url = `/api/listScanLogs?scan_id=${scan_id}&format=json` + title = interpolate(`Fetching logs for scan %(scanId)s`, {scanId: scan_id}, true); + } else { + url = `/api/listActivityLogs?activity_id=${activity_id}&format=json` + title = interpolate(`Fetching logs for activity %(activityId)s`, {activityId: activity_id}, true); + } + + Swal.fire({ + title: title + }); + swal.showLoading(); + + // Get the initial logs + fetch(url) + .then(response => response.json()) + .then(data => { + console.log(data); + swal.close(); + $('#xl-modal_title').html(interpolate(`Logs for scan #%(scanId)s`, {scanId: scan_id}, true)); + data.results.forEach(log => { + $('#xl-modal-content').append(create_log_element(log)); + }) + }); + $('#modal_xl_scroll_dialog').modal('show'); + $("body").tooltip({ + selector: '[data-toggle=tooltip]' + }); +} + +function add_todo_for_scanhistory_modal(scan_history_id) { + $("#todoTitle").val(''); + $("#todoDescription").val(''); + + $('#addTaskModal').modal('show'); + subdomain_dropdown = document.getElementById('todoSubdomainDropdown'); + $.getJSON(`/api/querySubdomains?scan_id=${scan_history_id}&no_lookup_interesting&format=json`, function(data) { + document.querySelector("#selectedSubdomainCount").innerHTML = interpolate('%(nbSubdomains)s Subdomains', {nbSubdomains: data['subdomains'].length}, true); + for (var subdomain in data['subdomains']) { + subdomain_obj = data['subdomains'][subdomain]; + var option = document.createElement('option'); + option.value = subdomain_obj['id']; + option.innerHTML = subdomain_obj['name']; + subdomain_dropdown.appendChild(option); + } + }); +} + +// listen to save todo event + +$(".add-scan-history-todo").click(function() { + var title = document.getElementById('todoTitle').value; + + var description = document.getElementById('todoDescription').value; + + data = { + 'title': title, + 'description': description + } + + + scan_id = parseInt(document.getElementById('summary_identifier_val').value); + data['scan_history_id'] = scan_id; + + if ($("#todoSubdomainDropdown").val() != 'Choose Subdomain...') { + data['subdomain_id'] = parseInt($("#todoSubdomainDropdown").val()); + } + + fetch('/api/add/recon_note/', { + method: 'post', + headers: { + "X-CSRFToken": getCookie("csrftoken"), + 'Content-Type': 'application/json' + }, + body: JSON.stringify(data) + }).then(res => res.json()) + .then(function (response) { + console.log(response); + if (response.status) { + Snackbar.show({ + text: gettext('Todo Added.'), + pos: 'top-right', + duration: 1500, + }); + } else{ + swal.fire("Error!", interpolate("Could not add recon note, %(errorMsg)s", {errorMsg: response.message}, true), "warning", { + button: gettext("Okay"), + }); + } + $('#addTaskModal').modal('hide'); + get_recon_notes(null, scan_id); + }); +}); + + +function add_note_for_subdomain(subdomain_id, subdomain_name) { + console.log(subdomain_name); + $('#todo-modal-subdomain-name').html(subdomain_name); + $("#subdomainTodoTitle").val(''); + $("#subdomainTodoDescription").val(''); + + $('#add-todo-subdomain-submit-button').attr('onClick', `add_note_for_subdomain_handler(${subdomain_id});`); + + + $('#addSubdomainTaskModal').modal('show'); + +} + + +function add_note_for_subdomain_handler(subdomain_id) { + var title = document.getElementById('subdomainTodoTitle').value; + var description = document.getElementById('subdomainTodoDescription').value; + var project = document.querySelector('input[name="current_project"]').value; + var scan_id = parseInt(document.getElementById('summary_identifier_val').value); + + data = { + 'title': title, + 'description': description, + 'subdomain_id': subdomain_id, + 'project': project, + 'scan_history_id': scan_id + } + + fetch('/api/add/recon_note/', { + method: 'post', + headers: { + "X-CSRFToken": getCookie("csrftoken"), + 'Content-Type': 'application/json' + }, + body: JSON.stringify(data) + }).then(res => res.json()) + .then(function (response) { + + if (response.status) { + Snackbar.show({ + text: 'Todo Added.', + pos: 'top-right', + duration: 1500, + }); + } else { + swal.fire(gettext("Error!"), response.message, "warning", { + button: gettext("Okay"), + }); + } + $('#subdomain_scan_results').DataTable().ajax.reload(); + $('#addSubdomainTaskModal').modal('hide'); + }); + +} + +function download_subdomains(scan_id=null, domain_id=null, domain_name=null) { + Swal.fire({ + title: gettext('Querying Subdomains...') + }); + swal.showLoading(); + count = ``; + var url = `/api/querySubdomains?format=json&no_lookup_interesting`; + if (scan_id) { + url += `&scan_id=${scan_id}`; + } else if (domain_id) { + url += `&target_id=${domain_id}`; + } + + if (domain_name) { + $('.modal-title').html(interpolate('%(modalCount)s Subdomains for : %(domainName)s', {modalCount: count, domainName: domain_name}, true)); + } else { + $('.modal-title').html(interpolate('%(modalCount)s Subdomains', {modalCount: count}, true)); + } + + $('.modal-text').empty(); $('#modal-footer').empty(); + $('.modal-text').append(``); + // query subdomains + $.getJSON(url, function(data) { + swal.close(); + if (data['subdomains'].length) { + $('#modal_dialog').modal('show'); + $('.modal_count').html(data['subdomains'].length); + $('#modal-content').empty(); + subdomains = ''; + $('#modal-content').append(``); + for (subdomain in data['subdomains']) { + subdomain_obj = data['subdomains'][subdomain]; + subdomains += subdomain_obj['name'] + '\n' + } + $('#all_subdomains_text_area').append(subdomains); + $("#modal-footer").empty(); + $("#modal-footer").append(` ` + gettext("Download Subdomains as txt") + ``); + $("#modal-footer").append(` ` + gettext("Copy Subdomains") + ``); + } else { + swal.fire(gettext("No Subdomains"), gettext("Could not find any subdomains."), "warning", { + button: "Okay", + }); + } + }).fail(function() { + swal.fire(gettext("No Subdomains"), gettext("Could not find any subdomains."), "warning", { + button: "Okay", + }); + }); +} + +function download_interesting_subdomains(project, scan_id=null, domain_id=null, domain_name=null) { + Swal.fire({ + title: gettext('Querying Interesting Subdomains...') + }); + swal.showLoading(); + count = ``; + var url = `/api/queryInterestingSubdomains/?format=json&project=${project}`; + if (scan_id) { + url += `&scan_id=${scan_id}`; + } else if (domain_id) { + url += `&target_id=${domain_id}`; + } + + if (domain_name) { + $('.modal-title').html(interpolate('%(modalCount)s Interesting Subdomains for : %(domainName)s', {modalCount: count, domainName: domain_name}, true)); + } else { + $('.modal-title').html(interpolate('%(modalCount)s Interesting Subdomains', {modalCount: count}, true)); + } + $('.modal-text').empty(); $('#modal-footer').empty(); + // query subdomains + $.getJSON(url, function(data) { + swal.close() + if (data.length) { + $('#modal_dialog').modal('show'); + $('.modal_count').html(data.length); + $('#modal-content').empty(); + subdomains = ''; + $('#modal-content').append(``); + for (subdomain in data) { + subdomains += data[subdomain]['name'] + '\n' + } + $('#interesting_subdomains_text_area').append(subdomains); + $("#modal-footer").empty(); + $("#modal-footer").append(` ` + gettext("Download Subdomains as txt") + ``); + $("#modal-footer").append(` ` + gettext("Copy Subdomains") + ``); + } else{ + swal.fire(gettext("No Interesting Subdomains"), gettext("Could not find any interesting subdomains."), "warning", { + button: gettext("Okay"), + }); + } + + }).fail(function() { + swal.fire(gettext("No Interesting Subdomains"), gettext("Could not find any interesting subdomains."), "warning", { + button: gettext("Okay"), + }); + }); +} + +function download_interesting_endpoints(scan_id, domain_name) { + Swal.fire({ + title: gettext('Querying Interesting Endpoints...') + }); + swal.showLoading(); + count = ``; + if (scan_id) { + url = `/api/listInterestingEndpoints/?scan_id=${scan_id}&format=json&no_page`; + } else { + url = `/api/listInterestingEndpoints/?format=json&no_page`; + } + + if (domain_name) { + $('.modal-title').html(interpolate('%(modalCount)s Interesting Endpoints for : %(domainName)s', {modalCount: count, domainName: domain_name}, true)); + } else { + $('.modal-title').html(interpolate('%(modalCount)s Interesting Endpoints', {modalCount: count}, true)); + } + $('.modal-text').empty(); $('#modal-footer').empty(); + // query subdomains + $.getJSON(url, function(data) { + swal.close(); + if (data.length) { + $('#modal_dialog').modal('show'); + $('.modal_count').html(data.length); + $('#modal-content').empty(); + endpoints = ''; + $('#modal-content').append(``); + for (endpoint in data) { + endpoints += data[endpoint]['http_url'] + '\n' + } + $('#interesting_endpoints_text_area').append(endpoints); + $("#modal-footer").empty(); + $("#modal-footer").append(` ` + gettext("Download Endpoints as txt") + ``); + $("#modal-footer").append(` ` + gettext("Copy Endpoints") + ``); + } else{ + swal.fire(gettext("No Interesting Endpoints"), gettext("Could not find any interesting Endpoints."), "warning", { + button: "Okay", + }); + } + + }).fail(function() { + swal.fire(gettext("No Interesting Endpoints") , gettext("Could not find any interesting Endpoints."), "warning", { + button: "Okay", + }); + }); +} + + +function download_important_subdomains(scan_id=null, domain_id=null, domain_name=null) { + Swal.fire({ + title: gettext('Querying Interesting Subdomains...') + }); + swal.showLoading(); + count = ``; + var url = `/api/querySubdomains?format=json&no_lookup_interesting&only_important`; + if (scan_id) { + url = `/api/querySubdomains?format=json&no_lookup_interesting&only_important&scan_id=${scan_id}`; + } else if (domain_id) { + url = `/api/querySubdomains?format=json&no_lookup_interesting&only_important&target_id=${domain_id}`; + } + + if (domain_name) { + $('.modal-title').html(interpolate('%(modalCount)s Subdomains marked as important : %(domainName)s', {modalCount: count, domainName: domain_name}, true)); + } else { + $('.modal-title').html(interpolate('%(modalCount)s Subdomains marked as important', {modalCount: count}, true)); + } + $('.modal-text').empty(); $('#modal-footer').empty(); + // query subdomains + $.getJSON(url, function(data) { + swal.close(); + if (data['subdomains'].length) { + $('#modal_dialog').modal('show'); + $('.modal_count').html(data['subdomains'].length); + $('#modal-content').empty(); + subdomains = ''; + $('#modal-content').append(``); + for (subdomain in data['subdomains']) { + subdomain_obj = data['subdomains'][subdomain]; + subdomains += subdomain_obj['name'] + '\n' + } + $('#all_subdomains_text_area').append(subdomains); + $("#modal-footer").empty(); + $("#modal-footer").append(` ` + gettext("Download Subdomains as txt") + ``); + $("#modal-footer").append(` ` + gettext("Copy Subdomains") + ``); + } else{ + swal.fire(gettext("No Important Endpoints"), gettext("No subdomains has been marked as important."), "warning", { + button: "Okay", + }); + } + }).fail(function() { + swal.fire(gettext("No Important Endpoints"), gettext("No subdomains has been marked as important."), "warning", { + button: "Okay", + }); + }); +} + +function download_endpoints(scan_id=null, domain_id=null, domain_name='', pattern=null) { + Swal.fire({ + title: gettext('Querying Endpoints...') + }); + swal.showLoading(); + var count = `` + gettext("Loading...") + ` `; + + var url = `/api/queryEndpoints/?format=json&only_urls`; + + if (scan_id) { + url += `&scan_id=${scan_id}`; + } else if (domain_id) { + url += `&target_id=${domain_id}`; + } + + if (pattern) { + url += `&pattern=${pattern}`; + } + + if (domain_name) { + $('.modal-title').html(interpolate('%(modalCount)s Endpoints for : %(domainName)s', {modalCount: count, domainName: domain_name}, true)); + } else { + $('.modal-title').html(interpolate('%(modalCount)s Endpoints', {modalCount: count}, true)); + } + $('.modal-text').empty(); $('#modal-footer').empty(); + // query subdomains + $.getJSON(url, function(data) { + swal.close(); + $('#modal_dialog').modal('show'); + $('.modal_count').html(data['endpoints'].length); + $('#modal-content').empty(); + endpoints = ''; + $('#modal-content').append(``); + for (endpoint in data['endpoints']) { + endpoint_obj = data['endpoints'][endpoint]; + endpoints += endpoint_obj['http_url'] + '\n' + } + $('#all_endpoints_text_area').append(endpoints); + $("#modal-footer").empty(); + if (domain_name) { + $("#modal-footer").append(` ` + gettext("Download Endpoints as txt") + ``); + } else{ + $("#modal-footer").append(` ` + gettext("Download Endpoints as txt") + ``); + } + $("#modal-footer").append(` ` + gettext("Copy Endpoints") + ``); + }).fail(function() { + }); +} + +function initiate_subscan(subdomain_ids) { + var engine_id = $('#subtaskScanEngine').val(); + var tasks = [] + var $engine_tasks = $('#engineTasks').find('input') + $engine_tasks.each(function(i) { + if ($(this).is(':checked')) { + tasks.push(this.id) + } + }) + console.log(tasks) + if (tasks.length === 0) { + Swal.fire({ + title: gettext('Oops!'), + text: gettext('No subtasks selected. Please choose at least one subtask !'), + icon: 'error' + }); + return; + } + var data = { + 'subdomain_ids': subdomain_ids, + 'tasks': tasks, + 'engine_id': engine_id, + }; + Swal.fire({ + title: gettext('Initiating subtask...'), + allowOutsideClick: false + }); + swal.showLoading(); + fetch('/api/action/initiate/subtask/', { + method: 'POST', + credentials: "same-origin", + headers: { + "X-CSRFToken": getCookie("csrftoken"), + 'Content-Type': 'application/json' + }, + body: JSON.stringify(data) + }) + .then(response => response.json()) + .then(function (response) { + swal.close(); + if (response['status']) { + Snackbar.show({ + text: gettext('Subtask initiated successfully!'), + pos: 'top-right', + duration: 2500 + }); + } else{ + Swal.fire({ + title: gettext('Could not initiate subtask!'), + icon: 'fail', + }); + } + }); + +} + + +// initiate sub scan +$('#btn-initiate-subtask').on('click', function() { + $('#subscan-modal').modal('hide'); + if ($('#btn-initiate-subtask').attr('multiple-subscan') === 'true') { + var subdomain_item = document.getElementsByClassName("subdomain_checkbox"); + var subdomain_ids = []; + for (var i = 0; i < subdomain_item.length; i++) { + if (subdomain_item[i].checked) { + subdomain_ids.push($(subdomain_item[i]).val()); + } + } + initiate_subscan(subdomain_ids); + } else{ + var subdomain_id = $('#subtask_subdomain_id').val(); + initiate_subscan([subdomain_id]); + } +}); + + +// Load engine tasks on modal load and engine input change +function load_engine_tasks(engine_name) { + var tasks = [] + var html = '' + var url = `/api/listEngines/?format=json`; + console.log(url); + $.getJSON(url, function(data) { + console.log(data); + var engines = data.engines + console.log(engines); + console.log(engine_name); + $.each(engines, function(i, engine) { + console.log(`${engine.engine_name} == ${engine_name}`) + if (engine.engine_name === engine_name) { + tasks = engine.tasks + console.log(tasks) + } + }) + $.each(tasks, function(i, task) { + html += ` +
        +
        + + +
        +
        ` + }); + console.log(html) + $('#engineTasks').html(html); + }) +} + +$('#subscan-modal').on('shown.bs.modal', function () { + var engine_name = $('#subtaskScanEngine option:selected').text(); + load_engine_tasks(engine_name); +}) + +$('#subtaskScanEngine').on('change', function() { + var engine_name = $('#subtaskScanEngine option:selected').text(); + load_engine_tasks(engine_name); +}) + +// download subdomains +function downloadSelectedSubdomains(domain_name) { + if (!checkedCount()) { + Swal.fire({ + title: gettext('Oops! No Subdomains has been selected!'), + icon: 'error', + padding: '2em' + }) + } else { + Swal.fire({ + title: gettext('Querying Selected Subdomains...') + }); + swal.showLoading(); + + subdomain_item = document.getElementsByClassName("subdomain_checkbox"); + var subdomain_ids = []; + for (var i = 0; i < subdomain_item.length; i++) { + if (subdomain_item[i].checked) { + subdomain_ids.push($(subdomain_item[i]).val()); + } + } + var data = {'subdomain_ids': subdomain_ids}; + fetch('/api/querySubdomains/', { + method: 'POST', + credentials: "same-origin", + headers: { + "X-CSRFToken": getCookie("csrftoken"), + 'Content-Type': 'application/json' + }, + body: JSON.stringify(data) + }) + .then(response => response.json()) + .then(function (response) { + swal.close(); + if (response['status']) { + $('#modal_dialog').modal('show'); + $('.modal_count').html(response['results'].length); + $('#modal-content').empty(); + subdomains = ''; + $('#modal-content').append(``); + for (subdomain in response['results']) { + subdomain_obj = response['results'][subdomain]; + subdomains += subdomain_obj + '\n' + } + $('#selected_subdomains_text_area').append(subdomains); + $("#modal-footer").empty(); + $("#modal-footer").append(` ` + gettext("Download Subdomains as txt") + ``); + $("#modal-footer").append(` ` + gettext("Copy Subdomains") + ``); + } else{ + Swal.fire({ + title: gettext('Oops! Could not download selected subdomains.'), + icon: 'error', + padding: '2em' + }); + } + }); + } +} + + +function deleteMultipleSubdomains() { + if (!checkedCount()) { + Swal.fire({ + title: gettext('Oops! No Subdomains has been selected!'), + icon: 'error', + padding: '2em' + }); + } else { + // atleast one target is selected + Swal.fire({ + showCancelButton: true, + title: interpolate('Are you sure you want to delete %(subDomainsCount)s Subdomains?', {subDomainsCount: checkedCount()}, true), + text: gettext('Do you really want to delete these subdomains? This action cannot be undone.'), + icon: 'error', + confirmButtonText: gettext('Delete'), + cancelButtonText: gettext('Cancel'), + }).then((result) => { + if (result.isConfirmed) { + Swal.fire({ + title: gettext('Deleting Subdomain...'), + allowOutsideClick: false + }); + swal.showLoading(); + + subdomain_item = document.getElementsByClassName("subdomain_checkbox"); + var subdomain_ids = []; + for (var i = 0; i < subdomain_item.length; i++) { + if (subdomain_item[i].checked) { + subdomain_ids.push($(subdomain_item[i]).val()); + } + } + var data = {'subdomain_ids': subdomain_ids}; + fetch('/api/action/subdomain/delete/', { + method: 'POST', + credentials: "same-origin", + headers: { + "X-CSRFToken": getCookie("csrftoken"), + 'Content-Type': 'application/json' + }, + body: JSON.stringify(data) + }) + .then(response => response.json()) + .then(function (response) { + swal.close(); + if (response['status']) { + // remove all rows + var table = $('#subdomain_scan_results').DataTable(); + for (var id in subdomain_ids) { + table.row('#subdomain_row_' + id).remove().draw(); + } + Snackbar.show({ + text: gettext('Subdomain successfully deleted!'), + pos: 'top-right', + duration: 2500 + }); + } else{ + Swal.fire({ + title: gettext('Could not delete Subdomain!'), + icon: 'fail', + }); + } + }); + } + }); + } +} + + +function initiateMultipleSubscan() { + $('#subscan-modal').modal('show'); + $('a[data-toggle="tooltip"]').tooltip("hide") + // to distinguish multiple subscan or single, put a extra attribute on button + $('#btn-initiate-subtask').attr('multiple-subscan', true); +} + + +function detect_subdomain_cms(http_url, http_status) { + if (http_status == 0) { + var message = gettext(`reNgine has earlier identified that this subdomain did not return any HTTP status and likely the subdomain is not alive. reNgine may not be able to detect any CMS, would you still like to continue?`); + } else if (http_status != 200) { + var message = interpolate(`reNgine has earlier identified that this subdomain has HTTP status as %(httpStatus)s and likely that reNgine will not detect any CMS, would you still like to continue?`, {httpStatus: http_status}, true); + } + + if (http_status != 200 || http_status == 0) { + Swal.fire({ + showCancelButton: true, + title: gettext('Detect CMS'), + text: message, + icon: 'warning', + confirmButtonText: gettext('Detect CMS'), + cancelButtonText: gettext('Cancel'), + }).then((result) => { + if (result.isConfirmed) { + cms_detector_api_call(http_url); + } + }); + } else{ + cms_detector_api_call(http_url); + } +} diff --git a/web/startScan/static/startScan/js/endpoint-datatables-suggestions.js b/web/startScan/static/startScan/js/endpoint-datatables-suggestions.js index b35262bbc..cab4d4d50 100644 --- a/web/startScan/static/startScan/js/endpoint-datatables-suggestions.js +++ b/web/startScan/static/startScan/js/endpoint-datatables-suggestions.js @@ -36,26 +36,27 @@ endpointInputBox.onclick = (event) => { emptyArray = emptyArray.map((data)=>{ switch (data) { case "=": - title = `Filters endpoint Equals Some Value`; + title = `Filters endpoint ` + gettext('Equals') + ` ` + gettext('Some Value'); break; case "!": - title = `Filters endpoint Not Equals Some Value`; + title = `Filters endpoint ` + gettext('Not Equals') + ` ` + gettext('Some Value'); break; case ">": - title = `Filters endpoint Greater than Some Value`; + title = `Filters endpoint ` + gettext('Greater than') + ` ` + gettext('Some Value'); break; case "<": - title = `Filters endpoint Less than Some Value`; + title = `Filters endpoint ` + gettext('Less than') + ` ` + gettext('Some Value'); break; case "&": - title = `& and Match endpoint if all args are true`; + title = `& ` + gettext("and") + ` ` + gettext(`Match endpoint if all args are true`); break; case "|": - title = `| or Match endpoint if either of one is true`; + title = `| ` + gettext("or") + ` ` + gettext(`Match endpoint if either of one is true`); break; default: badge_color = "info"; - title = `Filter endpoint that contains ${data}`; + title = interpolate(`Filter endpoint that contains %(data)s`, {data: data}, true); + break } return data = ``; }); diff --git a/web/startScan/static/startScan/js/subdomains-suggestions.js b/web/startScan/static/startScan/js/subdomains-suggestions.js index c354fdb74..b4c8b1781 100644 --- a/web/startScan/static/startScan/js/subdomains-suggestions.js +++ b/web/startScan/static/startScan/js/subdomains-suggestions.js @@ -40,26 +40,27 @@ inputBox.onclick = (event) => { emptyArray = emptyArray.map((data)=>{ switch (data) { case "=": - title = `Filters Subdomain Equals Some Value`; + title = `Filters subdomain ` + gettext('Equals') + ` ` + gettext('Some Value'); break; case "!": - title = `Filters Subdomain Not Equals Some Value`; + title = `Filters subdomain ` + gettext('Not Equals') + ` ` + gettext('Some Value'); break; case ">": - title = `Filters Subdomain Greater than Some Value`; + title = `Filters subdomain ` + gettext('Greater than') + ` ` + gettext('Some Value'); break; case "<": - title = `Filters Subdomain Less than Some Value`; + title = `Filters subdomain ` + gettext('Less than') + ` ` + gettext('Some Value'); break; case "&": - title = `& and Match Subdomain if all args are true`; + title = `& ` + gettext("and") + ` ` + gettext(`Match subdomain if all args are true`); break; case "|": - title = `| or Match Subdomain if either of one is true`; + title = `| ` + gettext("or") + ` ` + gettext(`Match subdomain if either of one is true`); break; default: badge_color = "primary"; - title = `Filter subdomain that contains ${data}`; + title = interpolate(`Filter subdomain that contains %(data)s`, {data: data}, true); + break } return data = ``; }); diff --git a/web/startScan/static/startScan/js/vulnerability-datatables-suggestions.js b/web/startScan/static/startScan/js/vulnerability-datatables-suggestions.js index ec9ffa94b..e6115294a 100644 --- a/web/startScan/static/startScan/js/vulnerability-datatables-suggestions.js +++ b/web/startScan/static/startScan/js/vulnerability-datatables-suggestions.js @@ -40,26 +40,27 @@ vulnerabilityInputBox.onclick = (event) => { emptyArray = emptyArray.map((data)=>{ switch (data) { case "=": - title = `Filters vulnerability Equals Some Value`; + title = `Filters vulnerability ` + gettext('Equals') + ` ` + gettext('Some Value'); break; case "!": - title = `Filters vulnerability Not Equals Some Value`; + title = `Filters vulnerability ` + gettext('Not Equals') + ` ` + gettext('Some Value'); break; case ">": - title = `Filters vulnerability Greater than Some Value`; + title = `Filters vulnerability ` + gettext('Greater than') + ` ` + gettext('Some Value'); break; case "<": - title = `Filters vulnerability Less than Some Value`; + title = `Filters vulnerability ` + gettext('Less than') + ` ` + gettext('Some Value'); break; case "&": - title = `& and Match vulnerability if all args are true`; + title = `& ` + gettext("and") + ` ` + gettext(`Match vulnerability if all args are true`); break; case "|": - title = `| or Match vulnerability if either of one is true`; + title = `| ` + gettext("or") + ` ` + gettext(`Match vulnerability if either of one is true`); break; default: badge_color = "info"; - title = `Filter vulnerability that contains ${data}`; + title = interpolate(`Filter vulnerability that contains %(data)s`, {data: data}, true); + break } return data = ``; }); diff --git a/web/startScan/templates/organization/schedule_scan_ui.html b/web/startScan/templates/organization/schedule_scan_ui.html index 931c0ae46..0fc54f9cd 100644 --- a/web/startScan/templates/organization/schedule_scan_ui.html +++ b/web/startScan/templates/organization/schedule_scan_ui.html @@ -1,8 +1,9 @@ {% extends 'base/base.html' %} {% load static %} +{% load i18n %} {% block title %} -Schedule Scan for Organization +{% translate "Schedule Scan for Organization" %} {% endblock title %} @@ -13,13 +14,13 @@ {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -Scheduling scan for {{organization.name}} +{% translate "Scheduling scan for" %} {{organization.name}} {% endblock page_title %} {% block main_content %} @@ -27,36 +28,36 @@
        -

        {{ domain_list|length }} Domains associated with organization {{organization.name}}

        +

        {{ domain_list|length }} {% translate "Domains associated with organization" %} {{organization.name}}

        {% for domain in domain_list %} {{domain.name}} {% endfor %}
        {% csrf_token %}
        -

        Choose the scheduler

        +

        {% translate "Choose the scheduler" %}

        -
        Run scan every
        +
        {% translate "Run scan every" %}
        @@ -64,11 +65,11 @@
        Run scan every
        -
        Run scan exactly at
        +
        {% translate "Run scan exactly at" %}
        - +
        @@ -76,13 +77,13 @@
        Run scan exactly at
        -

        Choose Scan Engine

        +

        {% translate "Choose Scan Engine" %}

        -

        Select Scan Engine

        +

        {% translate "Select Scan Engine" %}

        {% if custom_engine_count == 0 %} {% endif %} {% include "startScan/_items/scanEngine_select.html" %} @@ -163,7 +164,7 @@

        Select Scan Engine

        cssClass: 'pill wizard', enableKeyNavigation: false, onStepChanging: updateButton, - labels: {finish: "Start Scan"}, + labels: {finish: gettext("Start Scan")}, onInit :function (event, current) { $('a[role="menuitem"]').addClass('text-white'); $(".actions ul li:nth-child(3) a").attr('onclick', `$(this).closest('form').submit()`); @@ -186,4 +187,4 @@

        Select Scan Engine

        }); -{% endblock page_level_script %} +{% endblock page_level_script %} \ No newline at end of file diff --git a/web/startScan/templates/organization/start_scan.html b/web/startScan/templates/organization/start_scan.html index 96c932832..074256f8e 100644 --- a/web/startScan/templates/organization/start_scan.html +++ b/web/startScan/templates/organization/start_scan.html @@ -1,8 +1,9 @@ {% extends 'base/base.html' %} {% load static %} +{% load i18n %} {% block title %} -Initiating Scan for Organization +{% translate "Initiating Scan for Organization" %} {% endblock title %} @@ -11,13 +12,13 @@ {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -Initiating scan for {{organization.name}} +{% blocktranslate with orgName=organization.name %}Initiating scan for {{orgName}}{% endblocktranslate %} {% endblock page_title %} {% block main_content %} @@ -25,7 +26,7 @@
        -

        {{ domain_list|length }} Domains associated with organization {{organization.name}}

        +

        {% blocktranslate with nDomains=domain_list|length orgName=organization.name %}{{ nDomains }} Domains associated with organization {{orgName}}{% endblocktranslate %}

        {% for domain in domain_list %} {{domain.name}} {% endfor %} @@ -33,15 +34,15 @@

        {{ domain_list|length }} Domains associated with organ {% csrf_token %}
        -

        Select Scan Engine

        +

        {% translate "Select Scan Engine" %}

        {% if custom_engine_count == 0 %} {% endif %} {% include "startScan/_items/scanEngine_select.html" %} - +
        diff --git a/web/startScan/templates/startScan/_items/scanEngine_select.html b/web/startScan/templates/startScan/_items/scanEngine_select.html index 745c315f3..42f12b48c 100644 --- a/web/startScan/templates/startScan/_items/scanEngine_select.html +++ b/web/startScan/templates/startScan/_items/scanEngine_select.html @@ -1,3 +1,4 @@ +{% load i18n %}
        {% for engine in engines.all %}
        @@ -8,9 +9,9 @@

        @@ -18,11 +19,11 @@

        - Engine Capabilities + {% translate "Engine Capabilities" %}

        Wordlist NameShortnameWordlist CountAction{% translate "Wordlist Name" %}{% translate "Shortname" %}{% translate "Wordlist Count" %}{% translate "Action" %}
        {{ wordlist.short_name }} {{ wordlist.count }} - + @@ -77,12 +78,14 @@ Tips! You do not have any custom scan engines. Would you like to " +"create your own scan engine?" +msgstr "" +"Tips! You do not have any custom scan engines. Would you like to " +"create your own scan engine?" + +#: startScan/templates/organization/start_scan.html:45 +#: startScan/templates/startScan/start_multiple_scan_ui.html:6 +#: startScan/templates/startScan/start_multiple_scan_ui.html:46 +#: startScan/templates/startScan/start_scan_ui.html:6 +msgid "Start Scan" +msgstr "Start Scan" + +#: startScan/templates/startScan/_items/scanEngine_select.html:12 +msgid "Default Engine" +msgstr "Default Engine" + +#: startScan/templates/startScan/_items/scanEngine_select.html:14 +msgid "Custom Engine" +msgstr "Custom Engine" + +#: startScan/templates/startScan/_items/scanEngine_select.html:22 +msgid "Engine Capabilities" +msgstr "Engine Capabilities" + +#: startScan/templates/startScan/_items/scanEngine_select.html:26 +msgid "Subdomain Discovery" +msgstr "Subdomain Discovery" + +#: startScan/templates/startScan/_items/scanEngine_select.html:38 +msgid "WAF Detection" +msgstr "WAF Detection" + +#: startScan/templates/startScan/_items/scanEngine_select.html:62 +#: startScan/templates/startScan/detail_scan.html:88 +#: startScan/templates/startScan/detail_scan.html:353 +msgid "OSINT" +msgstr "OSINT" + +#: startScan/templates/startScan/_items/scanEngine_select.html:86 +msgid "Directory and Files Search" +msgstr "Directory and Files Search" + +#: startScan/templates/startScan/_items/scanEngine_select.html:98 +msgid "Fetch Endpoints(URLs)" +msgstr "Fetch Endpoints(URLs)" + +#: startScan/templates/startScan/_items/scanEngine_select.html:123 +msgid "YAML Configuration" +msgstr "YAML Configuration" + +#: startScan/templates/startScan/detail_scan.html:8 +msgid "Detailed Scan" +msgstr "Detailed Scan" + +#: startScan/templates/startScan/detail_scan.html:26 +#: startScan/templates/startScan/history.html:15 +#: startScan/templates/startScan/subscan_history.html:15 +msgid "Scan History" +msgstr "Scan History" + +#: startScan/templates/startScan/detail_scan.html:27 +#: startScan/templates/startScan/history.html:81 +msgid "Summary" +msgstr "Summary" + +#: startScan/templates/startScan/detail_scan.html:32 +msgid "Scan Findings" +msgstr "Scan Findings" + +#: startScan/templates/startScan/detail_scan.html:42 +msgid "Home" +msgstr "Home" + +#: startScan/templates/startScan/detail_scan.html:45 +#: startScan/templates/startScan/history.html:102 +msgid "Subdomains" +msgstr "Subdomains" + +#: startScan/templates/startScan/detail_scan.html:49 +msgid "S3 Buckets" +msgstr "S3 Buckets" + +#: startScan/templates/startScan/detail_scan.html:53 +msgid "Interesting Recon" +msgstr "Interesting Recon" + +#: startScan/templates/startScan/detail_scan.html:56 +msgid "Recon Data Changes" +msgstr "Recon Data Changes" + +#: startScan/templates/startScan/detail_scan.html:60 +msgid "Screenshots" +msgstr "Screenshots" + +#: startScan/templates/startScan/detail_scan.html:65 +#: startScan/templates/startScan/detail_scan.html:1065 +msgid "Directories" +msgstr "Directories" + +#: startScan/templates/startScan/detail_scan.html:69 +msgid "URLs" +msgstr "URLs" + +#: startScan/templates/startScan/detail_scan.html:71 +#: startScan/templates/startScan/endpoints.html:7 +msgid "All Endpoints" +msgstr "All Endpoints" + +#: startScan/templates/startScan/detail_scan.html:83 +msgid "Vulnerabilities" +msgstr "Vulnerabilities" + +#: startScan/templates/startScan/detail_scan.html:92 +msgid "Visualization" +msgstr "Visualization" + +#: startScan/templates/startScan/detail_scan.html:108 +msgid "Scan Status for" +msgstr "Scan Status for" + +#: startScan/templates/startScan/detail_scan.html:113 +#: startScan/templates/startScan/detail_scan.html:248 +#: startScan/templates/startScan/history.html:114 +#: startScan/templates/startScan/subscan_history.html:114 +msgid "Pending" +msgstr "Pending" + +#: startScan/templates/startScan/detail_scan.html:116 +#: startScan/templates/startScan/detail_scan.html:212 +#: startScan/templates/startScan/detail_scan.html:250 +#: startScan/templates/startScan/history.html:116 +#: startScan/templates/startScan/subscan_history.html:116 +msgid "Failed" +msgstr "Failed" + +#: startScan/templates/startScan/detail_scan.html:119 +#: startScan/templates/startScan/history.html:119 +#: startScan/templates/startScan/subscan_history.html:118 +msgid "In Progress" +msgstr "In Progress" + +#: startScan/templates/startScan/detail_scan.html:122 +#: startScan/templates/startScan/detail_scan.html:214 +#: startScan/templates/startScan/detail_scan.html:254 +msgid "Completed" +msgstr "Completed" + +#: startScan/templates/startScan/detail_scan.html:125 +#: startScan/templates/startScan/detail_scan.html:256 +#: startScan/templates/startScan/history.html:123 +#: startScan/templates/startScan/subscan_history.html:122 +msgid "Aborted" +msgstr "Aborted" + +#: startScan/templates/startScan/detail_scan.html:137 +msgid "Download All Subdomains" +msgstr "Download All Subdomains" + +#: startScan/templates/startScan/detail_scan.html:138 +msgid "Download All Endpoints" +msgstr "Download All Endpoints" + +#: startScan/templates/startScan/detail_scan.html:139 +msgid "Download Important Subdomains" +msgstr "Download Important Subdomains" + +#: startScan/templates/startScan/detail_scan.html:140 +#: startScan/templates/startScan/detail_scan.html:1241 +msgid "Download Interesting Subdomains" +msgstr "Download Interesting Subdomains" + +#: startScan/templates/startScan/detail_scan.html:141 +#: startScan/templates/startScan/detail_scan.html:1268 +msgid "Download Interesting Endpoints" +msgstr "Download Interesting Endpoints" + +#: startScan/templates/startScan/detail_scan.html:147 +msgid "Scan failed due to ERROR:" +msgstr "Scan failed due to ERROR:" + +#: startScan/templates/startScan/detail_scan.html:150 +msgid "Scan Logs" +msgstr "Scan Logs" + +#: startScan/templates/startScan/detail_scan.html:151 +msgid "Logs" +msgstr "Logs" + +#: startScan/templates/startScan/detail_scan.html:152 +#: startScan/templates/startScan/index.html:6 +msgid "Scan Engine" +msgstr "Scan Engine" + +#: startScan/templates/startScan/detail_scan.html:154 +msgid "Scan Duration" +msgstr "Scan Duration" + +#: startScan/templates/startScan/detail_scan.html:156 +msgid "Scan not yet started." +msgstr "Scan not yet started." + +#: startScan/templates/startScan/detail_scan.html:163 +msgid "Completed in < 1 minutes" +msgstr "Completed in < 1 minutes" + +#: startScan/templates/startScan/detail_scan.html:165 +msgid "Completed in" +msgstr "Completed in" + +#: startScan/templates/startScan/detail_scan.html:168 +msgid "Aborted in" +msgstr "Aborted in" + +#: startScan/templates/startScan/detail_scan.html:172 +msgid "Scan Progress" +msgstr "Scan Progress" + +#: startScan/templates/startScan/detail_scan.html:198 +msgid "Tagged to Organization" +msgstr "Tagged to Organization" + +#: startScan/templates/startScan/detail_scan.html:200 +#, python-format +msgid "Domain %(domainName)s belongs to organization %(organizationName)s" +msgstr "Domain %(domainName)s belongs to organization %(organizationName)s" + +#: startScan/templates/startScan/detail_scan.html:204 +msgid "Scan Timeline" +msgstr "Scan Timeline" + +#: startScan/templates/startScan/detail_scan.html:213 +msgid "In progress" +msgstr "In progress" + +#: startScan/templates/startScan/detail_scan.html:220 +#, python-format +msgid "Error: %(errorMsg)s" +msgstr "Error: %(errorMsg)s" + +#: startScan/templates/startScan/detail_scan.html:235 +msgid "Recent Scans for" +msgstr "Recent Scans for" + +#: startScan/templates/startScan/detail_scan.html:252 +msgid "Scanning" +msgstr "Scanning" + +#: startScan/templates/startScan/detail_scan.html:264 +#, python-format +msgid "%(subdomainCount)s Subdomains Discovered" +msgstr "%(subdomainCount)s Subdomains Discovered" + +#: startScan/templates/startScan/detail_scan.html:268 +#, python-format +msgid "%(missing_count)s subdomains missing since last scan." +msgstr "%(missing_count)s subdomains missing since last scan." + +#: startScan/templates/startScan/detail_scan.html:268 +#: startScan/templates/startScan/detail_scan.html:270 +#, python-format +msgid "%(diff_count)s Subdomains" +msgstr "%(diff_count)s Subdomains" + +#: startScan/templates/startScan/detail_scan.html:270 +#, python-format +msgid "%(added_count)s subdomains added since last scan." +msgstr "%(added_count)s subdomains added since last scan." + +#: startScan/templates/startScan/detail_scan.html:276 +#, python-format +msgid "ERROR: %(scanErrorMessage)s" +msgstr "ERROR: %(scanErrorMessage)s" + +#: startScan/templates/startScan/detail_scan.html:292 +msgid "Sub Scan History for" +msgstr "Sub Scan History for" + +#: startScan/templates/startScan/detail_scan.html:308 +msgid "Total Subdomains Discovered by reNgine during this scan" +msgstr "Total Subdomains Discovered by reNgine during this scan" + +#: startScan/templates/startScan/detail_scan.html:309 +msgid "Subdomains Discovered" +msgstr "Subdomains Discovered" + +#: startScan/templates/startScan/detail_scan.html:312 +msgid "Alive Subdomains" +msgstr "Alive Subdomains" + +#: startScan/templates/startScan/detail_scan.html:320 +msgid "" +"Total Endpoints discovered by reNgine during this scan. This includes any " +"URLs discovered." +msgstr "" +"Total Endpoints discovered by reNgine during this scan. This includes any " +"URLs discovered." + +#: startScan/templates/startScan/detail_scan.html:321 +msgid "Endpoints Discovered" +msgstr "Endpoints Discovered" + +#: startScan/templates/startScan/detail_scan.html:324 +msgid "Alive Endpoints" +msgstr "Alive Endpoints" + +#: startScan/templates/startScan/detail_scan.html:332 +msgid "" +"Total Vulnerabilities discovered by reNgine. This will be populated only if " +"vulnerability scan is performed during this scan." +msgstr "" +"Total Vulnerabilities discovered by reNgine. This will be populated only if " +"vulnerability scan is performed during this scan." + +#: startScan/templates/startScan/detail_scan.html:333 +msgid "Vulnerabilities Discovered" +msgstr "Vulnerabilities Discovered" + +#: startScan/templates/startScan/detail_scan.html:337 +msgid "Critical" +msgstr "Critical" + +#: startScan/templates/startScan/detail_scan.html:337 +msgid "High" +msgstr "High" + +#: startScan/templates/startScan/detail_scan.html:337 +msgid "Medium" +msgstr "Medium" + +#: startScan/templates/startScan/detail_scan.html:339 +msgid "Low" +msgstr "Low" + +#: startScan/templates/startScan/detail_scan.html:339 +msgid "Info" +msgstr "Info" + +#: startScan/templates/startScan/detail_scan.html:339 +msgid ", and" +msgstr ", and" + +#: startScan/templates/startScan/detail_scan.html:339 +msgid "Unknown Vulnerabilities" +msgstr "Unknown Vulnerabilities" + +#: startScan/templates/startScan/detail_scan.html:342 +msgid "No vulnerabilities found." +msgstr "No vulnerabilities found." + +#: startScan/templates/startScan/detail_scan.html:352 +msgid "OSINT Results" +msgstr "OSINT Results" + +#: startScan/templates/startScan/detail_scan.html:355 +#: startScan/templates/startScan/detail_scan.html:1140 +msgid "Exposed Credentials" +msgstr "Exposed Credentials" + +#: startScan/templates/startScan/detail_scan.html:356 +msgid "Email Address Discovered" +msgstr "Email Address Discovered" + +#: startScan/templates/startScan/detail_scan.html:357 +msgid "Employees Found" +msgstr "Employees Found" + +#: startScan/templates/startScan/detail_scan.html:361 +msgid "OSINT hasn't been performed." +msgstr "OSINT hasn't been performed." + +#: startScan/templates/startScan/detail_scan.html:372 +msgid "reNgine identified" +msgstr "reNgine identified" + +#: startScan/templates/startScan/detail_scan.html:372 +#: startScan/templates/startScan/detail_scan.html:378 +#: startScan/templates/startScan/detail_scan.html:385 +#: startScan/templates/startScan/detail_scan.html:393 +#: startScan/templates/startScan/detail_scan.html:401 +msgid "Check it out!" +msgstr "Check it out!" + +#: startScan/templates/startScan/detail_scan.html:385 +#, python-format +msgid "reNgine identified %(count)s domains related to %(history.domain)s." +msgstr "reNgine identified %(count)s domains related to %(history.domain)s." + +#: startScan/templates/startScan/detail_scan.html:393 +#, python-format +msgid "reNgine identified %(count)s Buckets related to %(history.domain)s." +msgstr "reNgine identified %(count)s Buckets related to %(history.domain)s." + +#: startScan/templates/startScan/detail_scan.html:401 +#, python-format +msgid "%(history.domain.name)s has %(count)s registered TLDs." +msgstr "%(history.domain.name)s has %(count)s registered TLDs." + +#: startScan/templates/startScan/detail_scan.html:409 +msgid "Reload Whois" +msgstr "Reload Whois" + +#: startScan/templates/startScan/detail_scan.html:411 +msgid "Target Information" +msgstr "Target Information" + +#: startScan/templates/startScan/detail_scan.html:415 +msgid "Domain info" +msgstr "Domain info" + +#: startScan/templates/startScan/detail_scan.html:416 +msgid "Whois" +msgstr "Whois" + +#: startScan/templates/startScan/detail_scan.html:417 +msgid "Nameservers" +msgstr "Nameservers" + +#: startScan/templates/startScan/detail_scan.html:418 +msgid "DNS Records" +msgstr "DNS Records" + +#: startScan/templates/startScan/detail_scan.html:419 +msgid "Historical Ips" +msgstr "Historical Ips" + +#: startScan/templates/startScan/detail_scan.html:421 +msgid "Related Domains" +msgstr "Related Domains" + +#: startScan/templates/startScan/detail_scan.html:427 +msgid "Related TLDs" +msgstr "Related TLDs" + +#: startScan/templates/startScan/detail_scan.html:437 +msgid "A Records" +msgstr "A Records" + +#: startScan/templates/startScan/detail_scan.html:443 +msgid "MX Records" +msgstr "MX Records" + +#: startScan/templates/startScan/detail_scan.html:449 +msgid "TXT Records" +msgstr "TXT Records" + +#: startScan/templates/startScan/detail_scan.html:460 +#, python-format +msgid "" +"WHOIS Record Has not been fetched, would you like to fetch it now?" +msgstr "" +"WHOIS Record Has not been fetched, would you like to fetch it now?" + +#: startScan/templates/startScan/detail_scan.html:464 +msgid "Fetching WHOIS records, Please wait..." +msgstr "Fetching WHOIS records, Please wait..." + +#: startScan/templates/startScan/detail_scan.html:468 +msgid "" +"WHOIS Records have been fetched, please reload the page." +msgstr "" +"WHOIS Records have been fetched, please reload the page." + +#: startScan/templates/startScan/detail_scan.html:472 +#: startScan/templates/startScan/subscan_history.html:96 +msgid "Domain" +msgstr "Domain" + +#: startScan/templates/startScan/detail_scan.html:476 +msgid "Dnssec" +msgstr "Dnssec" + +#: startScan/templates/startScan/detail_scan.html:480 +msgid "Geolocation" +msgstr "Geolocation" + +#: startScan/templates/startScan/detail_scan.html:486 +msgid "Created" +msgstr "Created" + +#: startScan/templates/startScan/detail_scan.html:490 +msgid "Updated" +msgstr "Updated" + +#: startScan/templates/startScan/detail_scan.html:494 +msgid "Expires" +msgstr "Expires" + +#: startScan/templates/startScan/detail_scan.html:500 +msgid "Whois Server" +msgstr "Whois Server" + +#: startScan/templates/startScan/detail_scan.html:506 +msgid "Registrar Name" +msgstr "Registrar Name" + +#: startScan/templates/startScan/detail_scan.html:510 +msgid "Registrar Phone" +msgstr "Registrar Phone" + +#: startScan/templates/startScan/detail_scan.html:514 +msgid "Registrar Email" +msgstr "Registrar Email" + +#: startScan/templates/startScan/detail_scan.html:530 +msgid "Registrant" +msgstr "Registrant" + +#: startScan/templates/startScan/detail_scan.html:535 +msgid "Administrative" +msgstr "Administrative" + +#: startScan/templates/startScan/detail_scan.html:540 +msgid "Technical" +msgstr "Technical" + +#: startScan/templates/startScan/detail_scan.html:550 +#: startScan/templates/startScan/detail_scan.html:594 +#: startScan/templates/startScan/detail_scan.html:638 +#: startScan/templates/startScan/detail_scan.html:932 +msgid "ID" +msgstr "ID" + +#: startScan/templates/startScan/detail_scan.html:554 +#: startScan/templates/startScan/detail_scan.html:598 +#: startScan/templates/startScan/detail_scan.html:642 +#: startScan/templates/startScan/detail_scan.html:914 +msgid "Name" +msgstr "Name" + +#: startScan/templates/startScan/detail_scan.html:562 +#: startScan/templates/startScan/detail_scan.html:606 +#: startScan/templates/startScan/detail_scan.html:650 +msgid "Email" +msgstr "Email" + +#: startScan/templates/startScan/detail_scan.html:566 +#: startScan/templates/startScan/detail_scan.html:610 +#: startScan/templates/startScan/detail_scan.html:654 +msgid "Phone/Fax" +msgstr "Phone/Fax" + +#: startScan/templates/startScan/detail_scan.html:577 +#: startScan/templates/startScan/detail_scan.html:581 +#: startScan/templates/startScan/detail_scan.html:621 +#: startScan/templates/startScan/detail_scan.html:625 +#: startScan/templates/startScan/detail_scan.html:665 +#: startScan/templates/startScan/detail_scan.html:669 +msgid "Address" +msgstr "Address" + +#: startScan/templates/startScan/detail_scan.html:582 +#: startScan/templates/startScan/detail_scan.html:626 +#: startScan/templates/startScan/detail_scan.html:670 +msgid "City" +msgstr "City" + +#: startScan/templates/startScan/detail_scan.html:582 +#: startScan/templates/startScan/detail_scan.html:626 +#: startScan/templates/startScan/detail_scan.html:670 +msgid "State" +msgstr "State" + +#: startScan/templates/startScan/detail_scan.html:582 +#: startScan/templates/startScan/detail_scan.html:626 +#: startScan/templates/startScan/detail_scan.html:670 +msgid "Zip Code" +msgstr "Zip Code" + +#: startScan/templates/startScan/detail_scan.html:582 +#: startScan/templates/startScan/detail_scan.html:626 +#: startScan/templates/startScan/detail_scan.html:670 +#: startScan/templates/startScan/detail_scan.html:764 +msgid "Country" +msgstr "Country" + +#: startScan/templates/startScan/detail_scan.html:681 +#, python-format +msgid "%(count)s Historical Ips" +msgstr "%(count)s Historical Ips" + +#: startScan/templates/startScan/detail_scan.html:685 +msgid "IP" +msgstr "IP" + +#: startScan/templates/startScan/detail_scan.html:686 +msgid "Location" +msgstr "Location" + +#: startScan/templates/startScan/detail_scan.html:687 +#: startScan/templates/startScan/detail_scan.html:917 +msgid "Owner" +msgstr "Owner" + +#: startScan/templates/startScan/detail_scan.html:688 +msgid "Last Seen" +msgstr "Last Seen" + +#: startScan/templates/startScan/detail_scan.html:703 +msgid "No historical IPs found!" +msgstr "No historical IPs found!" + +#: startScan/templates/startScan/detail_scan.html:708 +#, python-format +msgid "%(count)s NameServers identified" +msgstr "%(count)s NameServers identified" + +#: startScan/templates/startScan/detail_scan.html:713 +msgid "No NameServers identified" +msgstr "No NameServers identified" + +#: startScan/templates/startScan/detail_scan.html:718 +#, python-format +msgid "%(count)s Related Domains identified" +msgstr "%(count)s Related Domains identified" + +#: startScan/templates/startScan/detail_scan.html:720 +#: startScan/templates/startScan/detail_scan.html:730 +#, python-format +msgid "Add %(domain)s as target." +msgstr "Add %(domain)s as target." + +#: startScan/templates/startScan/detail_scan.html:723 +msgid "No Related Domains identified" +msgstr "No Related Domains identified" + +#: startScan/templates/startScan/detail_scan.html:728 +#, python-format +msgid "%(count)s Related TLDs identified" +msgstr "%(count)s Related TLDs identified" + +#: startScan/templates/startScan/detail_scan.html:733 +msgid "No Related TLDs identified" +msgstr "No Related TLDs identified" + +#: startScan/templates/startScan/detail_scan.html:745 +msgid "HTTP Status Breakdown" +msgstr "HTTP Status Breakdown" + +#: startScan/templates/startScan/detail_scan.html:755 +msgid "Geographical Distribution of Assets" +msgstr "Geographical Distribution of Assets" + +#: startScan/templates/startScan/detail_scan.html:765 +msgid "Assets" +msgstr "Assets" + +#: startScan/templates/startScan/detail_scan.html:793 +msgid "Most Vulnerable Subdomain" +msgstr "Most Vulnerable Subdomain" + +#: startScan/templates/startScan/detail_scan.html:803 +msgid "Important Subdomains" +msgstr "Important Subdomains" + +#: startScan/templates/startScan/detail_scan.html:815 +msgid "Recon Note/Todo" +msgstr "Recon Note/Todo" + +#: startScan/templates/startScan/detail_scan.html:816 +#: startScan/templates/startScan/detail_scan.html:831 +#: startScan/templates/startScan/detail_scan.html:857 +msgid "Add Recon Todo" +msgstr "Add Recon Todo" + +#: startScan/templates/startScan/detail_scan.html:836 +#: startScan/templates/startScan/detail_scan.html:837 +msgid "Todo Title" +msgstr "Todo Title" + +#: startScan/templates/startScan/detail_scan.html:841 +msgid "Select Subdomain (Optional)" +msgstr "Select Subdomain (Optional)" + +#: startScan/templates/startScan/detail_scan.html:844 +msgid "Choose Subdomain..." +msgstr "Choose Subdomain..." + +#: startScan/templates/startScan/detail_scan.html:849 +msgid "Todo Description (Optional)" +msgstr "Todo Description (Optional)" + +#: startScan/templates/startScan/detail_scan.html:850 +msgid "Todo Description" +msgstr "Todo Description" + +#: startScan/templates/startScan/detail_scan.html:868 +msgid "IP Addresses" +msgstr "IP Addresses" + +#: startScan/templates/startScan/detail_scan.html:869 +msgid "*IP Addresses highlighted with yellow are CDN IP" +msgstr "*IP Addresses highlighted with yellow are CDN IP" + +#: startScan/templates/startScan/detail_scan.html:879 +msgid "Discovered Ports" +msgstr "Discovered Ports" + +#: startScan/templates/startScan/detail_scan.html:880 +msgid "*Ports highlighted with red are uncommon Ports" +msgstr "*Ports highlighted with red are uncommon Ports" + +#: startScan/templates/startScan/detail_scan.html:890 +msgid "Discovered Technologies" +msgstr "Discovered Technologies" + +#: startScan/templates/startScan/detail_scan.html:915 +msgid "Region" +msgstr "Region" + +#: startScan/templates/startScan/detail_scan.html:916 +msgid "Provider" +msgstr "Provider" + +#: startScan/templates/startScan/detail_scan.html:918 +msgid "Objects Count" +msgstr "Objects Count" + +#: startScan/templates/startScan/detail_scan.html:919 +msgid "Bucket Size" +msgstr "Bucket Size" + +#: startScan/templates/startScan/detail_scan.html:920 +msgid "Auth Users Permission" +msgstr "Auth Users Permission" + +#: startScan/templates/startScan/detail_scan.html:921 +msgid "All Users Permission" +msgstr "All Users Permission" + +#: startScan/templates/startScan/detail_scan.html:933 +msgid "Display Name" +msgstr "Display Name" + +#: startScan/templates/startScan/detail_scan.html:940 +#: startScan/templates/startScan/detail_scan.html:949 +msgid "READ" +msgstr "READ" + +#: startScan/templates/startScan/detail_scan.html:941 +#: startScan/templates/startScan/detail_scan.html:950 +msgid "WRITE" +msgstr "WRITE" + +#: startScan/templates/startScan/detail_scan.html:942 +#: startScan/templates/startScan/detail_scan.html:951 +msgid "Read_ACP" +msgstr "Read_ACP" + +#: startScan/templates/startScan/detail_scan.html:943 +#: startScan/templates/startScan/detail_scan.html:952 +msgid "WRITE_ACP" +msgstr "WRITE_ACP" + +#: startScan/templates/startScan/detail_scan.html:944 +#: startScan/templates/startScan/detail_scan.html:953 +msgid "FULL_CONTROL" +msgstr "FULL_CONTROL" + +#: startScan/templates/startScan/detail_scan.html:977 +msgid "Filter Screenshots" +msgstr "Filter Screenshots" + +#: startScan/templates/startScan/detail_scan.html:988 +#: startScan/templates/startScan/detail_scan.html:1250 +#: startScan/templates/startScan/detail_scan.html:1277 +msgid "HTTP Status" +msgstr "HTTP Status" + +#: startScan/templates/startScan/detail_scan.html:993 +msgid "IP Address" +msgstr "IP Address" + +#: startScan/templates/startScan/detail_scan.html:999 +msgid "Running Services" +msgstr "Running Services" + +#: startScan/templates/startScan/detail_scan.html:1004 +msgid "Ports" +msgstr "Ports" + +#: startScan/templates/startScan/detail_scan.html:1010 +msgid "Technology" +msgstr "Technology" + +#: startScan/templates/startScan/detail_scan.html:1030 +msgid "Loading Screenshots..." +msgstr "Loading Screenshots..." + +#: startScan/templates/startScan/detail_scan.html:1057 +msgid "Display" +msgstr "Display" + +#: startScan/templates/startScan/detail_scan.html:1061 +#: startScan/templates/startScan/detail_scan.html:1063 +#: startScan/templates/startScan/detail_scan.html:1300 +#: startScan/templates/startScan/detail_scan.html:1318 +#: startScan/templates/startScan/history.html:84 +#: startScan/templates/startScan/subscan_history.html:84 +msgid "Status" +msgstr "Status" + +#: startScan/templates/startScan/detail_scan.html:1062 +#: startScan/templates/startScan/detail_scan.html:1248 +#: startScan/templates/startScan/detail_scan.html:1298 +#: startScan/templates/startScan/detail_scan.html:1316 +msgid "Subdomain" +msgstr "Subdomain" + +#: startScan/templates/startScan/detail_scan.html:1064 +#: startScan/templates/startScan/detail_scan.html:1249 +#: startScan/templates/startScan/detail_scan.html:1299 +#: startScan/templates/startScan/detail_scan.html:1317 +msgid "Page Title" +msgstr "Page Title" + +#: startScan/templates/startScan/detail_scan.html:1066 +#: startScan/templates/startScan/detail_scan.html:1252 +msgid "HTTP URL" +msgstr "HTTP URL" + +#: startScan/templates/startScan/detail_scan.html:1067 +msgid "Is Intereting" +msgstr "Is Intereting" + +#: startScan/templates/startScan/detail_scan.html:1090 +msgid "Dorking Results" +msgstr "Dorking Results" + +#: startScan/templates/startScan/detail_scan.html:1112 +#, python-format +msgid "Employees/People associated with %(domain_name)s" +msgstr "Employees/People associated with %(domain_name)s" + +#: startScan/templates/startScan/detail_scan.html:1117 +msgid "Employee Name" +msgstr "Employee Name" + +#: startScan/templates/startScan/detail_scan.html:1118 +msgid "Designation" +msgstr "Designation" + +#: startScan/templates/startScan/detail_scan.html:1134 +msgid "Discovered Email addresses" +msgstr "Discovered Email addresses" + +#: startScan/templates/startScan/detail_scan.html:1139 +msgid "Email Address" +msgstr "Email Address" + +#: startScan/templates/startScan/detail_scan.html:1156 +msgid "Discovered Metadata" +msgstr "Discovered Metadata" + +#: startScan/templates/startScan/detail_scan.html:1161 +msgid "Document" +msgstr "Document" + +#: startScan/templates/startScan/detail_scan.html:1162 +msgid "User" +msgstr "User" + +#: startScan/templates/startScan/detail_scan.html:1163 +msgid "Metadata" +msgstr "Metadata" + +#: startScan/templates/startScan/detail_scan.html:1187 +msgid "    Expand all nodes" +msgstr "    Expand all nodes" + +#: startScan/templates/startScan/detail_scan.html:1196 +msgid "Download Visualization as png" +msgstr "Download Visualization as png" + +#: startScan/templates/startScan/detail_scan.html:1206 +msgid "Loading..." +msgstr "Loading..." + +#: startScan/templates/startScan/detail_scan.html:1209 +msgid "Loading Recon Visualization..." +msgstr "Loading Recon Visualization..." + +#: startScan/templates/startScan/detail_scan.html:1218 +msgid "*Subdomains highlighted with green are 20X (OK) HTTP status" +msgstr "*Subdomains highlighted with green are 20X (OK) HTTP status" + +#: startScan/templates/startScan/detail_scan.html:1219 +msgid "*Subdomains highlighted with orange are 30X (Redirect) HTTP status" +msgstr "*Subdomains highlighted with orange are 30X (Redirect) HTTP status" + +#: startScan/templates/startScan/detail_scan.html:1220 +msgid "*Subdomains highlighted with red are 40X (Not found) HTTP status" +msgstr "*Subdomains highlighted with red are 40X (Not found) HTTP status" + +#: startScan/templates/startScan/detail_scan.html:1244 +msgid "Interesting Subdomains" +msgstr "Interesting Subdomains" + +#: startScan/templates/startScan/detail_scan.html:1251 +#: startScan/templates/startScan/detail_scan.html:1278 +#: startScan/templates/startScan/detail_scan.html:1301 +#: startScan/templates/startScan/detail_scan.html:1319 +msgid "Content Length" +msgstr "Content Length" + +#: startScan/templates/startScan/detail_scan.html:1253 +msgid "Tech Stack" +msgstr "Tech Stack" + +#: startScan/templates/startScan/detail_scan.html:1271 +msgid "Interesting Endpoints" +msgstr "Interesting Endpoints" + +#: startScan/templates/startScan/detail_scan.html:1275 +msgid "URL" +msgstr "URL" + +#: startScan/templates/startScan/detail_scan.html:1276 +msgid "Title" +msgstr "Title" + +#: startScan/templates/startScan/detail_scan.html:1294 +msgid "Subdomain Changes" +msgstr "Subdomain Changes" + +#: startScan/templates/startScan/detail_scan.html:1302 +#: startScan/templates/startScan/detail_scan.html:1320 +msgid "Change" +msgstr "Change" + +#: startScan/templates/startScan/detail_scan.html:1312 +msgid "Endpoint Changes" +msgstr "Endpoint Changes" + +#: startScan/templates/startScan/history.html:8 +msgid "Scan history" +msgstr "Scan history" + +#: startScan/templates/startScan/history.html:19 +msgid "Quick Scan History" +msgstr "Quick Scan History" + +#: startScan/templates/startScan/history.html:30 +#: startScan/templates/startScan/subscan_history.html:30 +msgid "Filter" +msgstr "Filter" + +#: startScan/templates/startScan/history.html:36 +#: startScan/templates/startScan/start_scan_ui.html:67 +#: startScan/templates/startScan/subscan_history.html:36 +msgid "Filters" +msgstr "Filters" + +#: startScan/templates/startScan/history.html:38 +#: startScan/templates/startScan/subscan_history.html:38 +msgid "Filter by Organization" +msgstr "Filter by Organization" + +#: startScan/templates/startScan/history.html:43 +#: startScan/templates/startScan/subscan_history.html:43 +msgid "Filter by Targets" +msgstr "Filter by Targets" + +#: startScan/templates/startScan/history.html:48 +#: startScan/templates/startScan/subscan_history.html:48 +msgid "Filter by Scan Type" +msgstr "Filter by Scan Type" + +#: startScan/templates/startScan/history.html:53 +#: startScan/templates/startScan/subscan_history.html:53 +msgid "Filter by Scan Status" +msgstr "Filter by Scan Status" + +#: startScan/templates/startScan/history.html:59 +#: startScan/templates/startScan/subscan_history.html:59 +msgid "Reset Filters" +msgstr "Reset Filters" + +#: startScan/templates/startScan/history.html:63 +msgid "Delete Multiple Scans" +msgstr "Delete Multiple Scans" + +#: startScan/templates/startScan/history.html:78 +#: startScan/templates/startScan/history.html:79 +#: startScan/templates/startScan/subscan_history.html:78 +#: startScan/templates/startScan/subscan_history.html:79 +msgid "Serial Number" +msgstr "Serial Number" + +#: startScan/templates/startScan/history.html:80 +msgid "Domain Name" +msgstr "Domain Name" + +#: startScan/templates/startScan/history.html:82 +msgid "Scan Engine Used" +msgstr "Scan Engine Used" + +#: startScan/templates/startScan/history.html:83 +msgid "Last Scan" +msgstr "Last Scan" + +#: startScan/templates/startScan/history.html:85 +msgid "Progress" +msgstr "Progress" + +#: startScan/templates/startScan/history.html:86 +#: startScan/templates/startScan/schedule_scan_list.html:36 +#: startScan/templates/startScan/subscan_history.html:85 +msgid "Action" +msgstr "Action" + +#: startScan/templates/startScan/history.html:98 +#, python-format +msgid "" +"Domain %(scan_history.domain.name)s belongs to organization " +"%(organization.name)s" +msgstr "" +"Domain %(scan_history.domain.name)s belongs to organization " +"%(organization.name)s" + +#: startScan/templates/startScan/history.html:103 +msgid "Endpoints" +msgstr "Endpoints" + +#: startScan/templates/startScan/history.html:104 +#, python-format +msgid "" +"%(critVulnCount)s Critical, %(highVulnCount)s High, %(medVulnCount)s Medium " +"Vulnerabilities" +msgstr "" +"%(critVulnCount)s Critical, %(highVulnCount)s High, %(medVulnCount)s Medium " +"Vulnerabilities" + +#: startScan/templates/startScan/history.html:114 +#: startScan/templates/startScan/subscan_history.html:114 +msgid "Waiting for other scans to complete" +msgstr "Waiting for other scans to complete" + +#: startScan/templates/startScan/history.html:117 +#, python-format +msgid "Scan Failed due to: %(errMsg)s" +msgstr "Scan Failed due to: %(errMsg)s" + +#: startScan/templates/startScan/history.html:121 +#: startScan/templates/startScan/subscan_history.html:120 +msgid "Successful" +msgstr "Successful" + +#: startScan/templates/startScan/history.html:162 +#: startScan/templates/startScan/subscan_history.html:130 +msgid "View Results" +msgstr "View Results" + +#: startScan/templates/startScan/history.html:171 +msgid "Rescan" +msgstr "Rescan" + +#: startScan/templates/startScan/history.html:176 +msgid "Stop Scan" +msgstr "Stop Scan" + +#: startScan/templates/startScan/history.html:182 +msgid "Delete Scan Results" +msgstr "Delete Scan Results" + +#: startScan/templates/startScan/history.html:188 +msgid "Scan Report" +msgstr "Scan Report" + +#: startScan/templates/startScan/history.html:207 +#: startScan/templates/startScan/history.html:226 +msgid "Download Report" +msgstr "Download Report" + +#: startScan/templates/startScan/history.html:208 +msgid "Close" +msgstr "Close" + +#: startScan/templates/startScan/history.html:213 +msgid "Report alert message" +msgstr "Report alert message" + +#: startScan/templates/startScan/history.html:216 +msgid "Report Type" +msgstr "Report Type" + +#: startScan/templates/startScan/history.html:223 +msgid "Ignore Informational Vulnerabilities" +msgstr "Ignore Informational Vulnerabilities" + +#: startScan/templates/startScan/history.html:227 +msgid "Preview Report" +msgstr "Preview Report" + +#: startScan/templates/startScan/schedule_scan_list.html:8 +msgid "Scheduled Scan" +msgstr "Scheduled Scan" + +#: startScan/templates/startScan/schedule_scan_list.html:16 +#: startScan/templates/startScan/schedule_scan_list.html:20 +msgid "Scheduled Scans" +msgstr "Scheduled Scans" + +#: startScan/templates/startScan/schedule_scan_list.html:30 +msgid "Description" +msgstr "Description" + +#: startScan/templates/startScan/schedule_scan_list.html:31 +msgid "Frequency" +msgstr "Frequency" + +#: startScan/templates/startScan/schedule_scan_list.html:32 +msgid "Last Run" +msgstr "Last Run" + +#: startScan/templates/startScan/schedule_scan_list.html:33 +msgid "Run Count" +msgstr "Run Count" + +#: startScan/templates/startScan/schedule_scan_list.html:34 +msgid "One Off Task" +msgstr "One Off Task" + +#: startScan/templates/startScan/schedule_scan_list.html:35 +msgid "Enabled" +msgstr "Enabled" + +#: startScan/templates/startScan/schedule_scan_list.html:47 +#, python-format +msgid "Will run %(interval)s" +msgstr "Will run %(interval)s" + +#: startScan/templates/startScan/schedule_scan_list.html:49 +#, python-format +msgid "Will run exactly at %(clocked_time)s UTC" +msgstr "Will run exactly at %(clocked_time)s UTC" + +#: startScan/templates/startScan/schedule_scan_list.html:70 +msgid "Delete Scheduled Task" +msgstr "Delete Scheduled Task" + +#: startScan/templates/startScan/schedule_scan_ui.html:18 +#: startScan/templates/startScan/start_multiple_scan_ui.html:14 +#: startScan/templates/startScan/start_scan_ui.html:16 +msgid "Target" +msgstr "Target" + +#: startScan/templates/startScan/schedule_scan_ui.html:20 +#, python-format +msgid "%(domain_name)s" +msgstr "%(domain_name)s" + +#: startScan/templates/startScan/schedule_scan_ui.html:24 +#, python-format +msgid "Scheduling scan for %(domain_name)s" +msgstr "Scheduling scan for %(domain_name)s" + +#: startScan/templates/startScan/schedule_scan_ui.html:89 +#: startScan/templates/startScan/start_scan_ui.html:43 +msgid "Import/Ignore Subdomains" +msgstr "Import/Ignore Subdomains" + +#: startScan/templates/startScan/schedule_scan_ui.html:92 +#: startScan/templates/startScan/start_scan_ui.html:46 +msgid "Import Subdomains(Optional)" +msgstr "Import Subdomains(Optional)" + +#: startScan/templates/startScan/schedule_scan_ui.html:93 +#: startScan/templates/startScan/schedule_scan_ui.html:103 +#: startScan/templates/startScan/start_scan_ui.html:47 +#: startScan/templates/startScan/start_scan_ui.html:57 +#, python-format +msgid "" +"You can import subdomains for %(domain_name)s using your private " +"recon tools." +msgstr "" +"You can import subdomains for %(domain_name)s using your private " +"recon tools." + +#: startScan/templates/startScan/schedule_scan_ui.html:96 +#: startScan/templates/startScan/start_scan_ui.html:50 +#, python-format +msgid "" +"Separate the subdomains using new line. If the subdomain does not " +"belong to %(domain_name)s it will be skipped." +msgstr "" +"Separate the subdomains using new line. If the subdomain does not " +"belong to %(domain_name)s it will be skipped." + +#: startScan/templates/startScan/schedule_scan_ui.html:98 +#: startScan/templates/startScan/start_scan_ui.html:52 +msgid "Subdomains List" +msgstr "Subdomains List" + +#: startScan/templates/startScan/schedule_scan_ui.html:102 +#: startScan/templates/startScan/start_scan_ui.html:56 +msgid "Out of Scope Subdomains(Optional)" +msgstr "Out of Scope Subdomains(Optional)" + +#: startScan/templates/startScan/schedule_scan_ui.html:106 +#: startScan/templates/startScan/start_scan_ui.html:60 +msgid "" +"Separate the out of scope subdomains/keywords using new line.(No regex " +"currently supported.)" +msgstr "" +"Separate the out of scope subdomains/keywords using new line.(No regex " +"currently supported.)" + +#: startScan/templates/startScan/schedule_scan_ui.html:108 +#: startScan/templates/startScan/start_scan_ui.html:62 +msgid "Out of Scope Subdomains List" +msgstr "Out of Scope Subdomains List" + +#: startScan/templates/startScan/start_multiple_scan_ui.html:15 +msgid "Initiate Multiple Scans" +msgstr "Initiate Multiple Scans" + +#: startScan/templates/startScan/start_multiple_scan_ui.html:19 +msgid "Initiate Scan for Multiple Targets" +msgstr "Initiate Scan for Multiple Targets" + +#: startScan/templates/startScan/start_multiple_scan_ui.html:27 +#, python-format +msgid "Initiating multiple scan for %(domain_count)s targets:" +msgstr "Initiating multiple scan for %(domain_count)s targets:" + +#: startScan/templates/startScan/start_multiple_scan_ui.html:33 +msgid "Select the scan type" +msgstr "Select the scan type" + +#: startScan/templates/startScan/start_scan_ui.html:22 +#, python-format +msgid "Initiating scan for %(domain_name)s" +msgstr "Initiating scan for %(domain_name)s" + +#: startScan/templates/startScan/start_scan_ui.html:70 +msgid "Filters (Optional)" +msgstr "Filters (Optional)" + +#: startScan/templates/startScan/start_scan_ui.html:71 +#, python-format +msgid "You can filter on a specific path for %(domain_name)s." +msgstr "You can filter on a specific path for %(domain_name)s." + +#: startScan/templates/startScan/start_scan_ui.html:73 +msgid "Path filter" +msgstr "Path filter" + +#: startScan/templates/startScan/subdomains.html:8 +msgid "All subdomains" +msgstr "All subdomains" + +#: startScan/templates/startScan/subdomains.html:134 +msgid "WAF Detected" +msgstr "WAF Detected" + +#: startScan/templates/startScan/subscan_history.html:8 +msgid "Subscan History" +msgstr "Subscan History" + +#: startScan/templates/startScan/subscan_history.html:19 +msgid "SubScan History" +msgstr "SubScan History" + +#: startScan/templates/startScan/subscan_history.html:64 +msgid "Delete Multiple SubScans" +msgstr "Delete Multiple SubScans" + +#: startScan/templates/startScan/subscan_history.html:80 +#: startScan/templates/startScan/subscan_history.html:94 +msgid "Scanned Subdomain" +msgstr "Scanned Subdomain" + +#: startScan/templates/startScan/subscan_history.html:81 +msgid "Task" +msgstr "Task" + +#: startScan/templates/startScan/subscan_history.html:82 +msgid "Engine" +msgstr "Engine" + +#: startScan/templates/startScan/subscan_history.html:83 +msgid "Scan Started" +msgstr "Scan Started" + +#: startScan/templates/startScan/subscan_history.html:98 +#, python-format +msgid "Domain %(domain_name)s belongs to organization %(organization_name)s" +msgstr "Domain %(domain_name)s belongs to organization %(organization_name)s" + +#: startScan/templates/startScan/subscan_history.html:101 +msgid "Recent Scan" +msgstr "Recent Scan" + +#: startScan/templates/startScan/subscan_history.html:138 +msgid "Stop Subscan" +msgstr "Stop Subscan" + +#: startScan/templates/startScan/subscan_history.html:142 +msgid "Delete Subscan" +msgstr "Delete Subscan" + +#: startScan/templates/startScan/vulnerabilities.html:8 +msgid "All Vulnerabilities" +msgstr "All Vulnerabilities" + +#: startScan/views.py:295 +#, python-format +msgid "Scan Started for %(domainName)s" +msgstr "Scan Started for %(domainName)s" + +#: startScan/views.py:351 +msgid "Scan Started for multiple targets" +msgstr "Scan Started for multiple targets" + +#: startScan/views.py:440 +msgid "Scan history successfully deleted!" +msgstr "Scan history successfully deleted!" + +#: startScan/views.py:447 startScan/views.py:604 +msgid "Oops! something went wrong!" +msgstr "Oops! something went wrong!" + +#: startScan/views.py:471 +msgid "Scan aborted" +msgstr "Scan aborted" + +#: startScan/views.py:476 +msgid "Scan successfully stopped!" +msgstr "Scan successfully stopped!" + +#: startScan/views.py:484 +#, python-format +msgid "Scan failed to stop ! Error: %(errMsg)s" +msgstr "Scan failed to stop ! Error: %(errMsg)s" + +#: startScan/views.py:557 +#, python-format +msgid "Scan Scheduled for %(domainName)s" +msgstr "Scan Scheduled for %(domainName)s" + +#: startScan/views.py:598 +msgid "Scheduled Scan successfully deleted!" +msgstr "Scheduled Scan successfully deleted!" + +#: startScan/views.py:655 +msgid "All Scan History successfully deleted!" +msgstr "All Scan History successfully deleted!" + +#: startScan/views.py:667 +msgid "Screenshots successfully deleted!" +msgstr "Screenshots successfully deleted!" + +#: startScan/views.py:710 startScan/views.py:798 +#, python-format +msgid "Scan Started for %(domainCount)d domains in organization %(orgName)s" +msgstr "Scan Started for %(domainCount)d domains in organization %(orgName)s" + +#: startScan/views.py:828 +msgid "All Scans deleted!" +msgstr "All Scans deleted!" + +#: startScan/views.py:852 +msgid "Reconnaissance Report" +msgstr "Reconnaissance Report" + +#: startScan/views.py:856 +msgid "Vulnerability Report" +msgstr "Vulnerability Report" + +#: startScan/views.py:861 +msgid "Full Scan Report" +msgstr "Full Scan Report" diff --git a/web/startScan/locale/en/LC_MESSAGES/djangojs.mo b/web/startScan/locale/en/LC_MESSAGES/djangojs.mo new file mode 100644 index 000000000..02d9bbead Binary files /dev/null and b/web/startScan/locale/en/LC_MESSAGES/djangojs.mo differ diff --git a/web/startScan/locale/en/LC_MESSAGES/djangojs.po b/web/startScan/locale/en/LC_MESSAGES/djangojs.po new file mode 100644 index 000000000..9411b893e --- /dev/null +++ b/web/startScan/locale/en/LC_MESSAGES/djangojs.po @@ -0,0 +1,437 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: startScan/static/startScan/js/detail_scan.js:35 +msgid "CDN IP Address" +msgstr "CDN IP Address" + +#: startScan/static/startScan/js/detail_scan.js:78 +msgid "Processing... Please wait..." +msgstr "Processing... Please wait..." + +#: startScan/static/startScan/js/detail_scan.js:79 +#: startScan/static/startScan/js/detail_scan.js:80 +msgid "No endpoint detected" +msgstr "No endpoint detected" + +#: startScan/static/startScan/js/detail_scan.js:119 +msgid "Web Server" +msgstr "Web Server" + +#: startScan/static/startScan/js/detail_scan.js:126 +msgid "Copy Url!" +msgstr "Copy Url!" + +#: startScan/static/startScan/js/detail_scan.js:287 +#: startScan/static/startScan/js/detail_scan.js:288 +msgid "No subdomain change" +msgstr "No subdomain change" + +#: startScan/static/startScan/js/detail_scan.js:325 +msgid "CDN" +msgstr "CDN" + +#: startScan/static/startScan/js/detail_scan.js:329 +msgid "Interesting" +msgstr "Interesting" + +#: startScan/static/startScan/js/detail_scan.js:337 +msgid "CNAME" +msgstr "CNAME" + +#: startScan/static/startScan/js/detail_scan.js:373 +#: startScan/static/startScan/js/detail_scan.js:445 +msgid "Added" +msgstr "Added" + +#: startScan/static/startScan/js/detail_scan.js:375 +#: startScan/static/startScan/js/detail_scan.js:447 +msgid "Removed" +msgstr "Removed" + +#: startScan/static/startScan/js/detail_scan.js:397 +#: startScan/static/startScan/js/detail_scan.js:398 +msgid "No endpoint change" +msgstr "No endpoint change" + +#: startScan/static/startScan/js/detail_scan.js:467 +msgid "No Users discovered." +msgstr "No Users discovered." + +#: startScan/static/startScan/js/detail_scan.js:715 +msgid "Subdomain" +msgstr "Subdomain" + +#: startScan/static/startScan/js/detail_scan.js:866 +msgid "Informational" +msgstr "Informational" + +#: startScan/static/startScan/js/detail_scan.js:869 +msgid "Low" +msgstr "Low" + +#: startScan/static/startScan/js/detail_scan.js:872 +msgid "Medium" +msgstr "Medium" + +#: startScan/static/startScan/js/detail_scan.js:875 +msgid "High" +msgstr "High" + +#: startScan/static/startScan/js/detail_scan.js:878 +msgid "Critical" +msgstr "Critical" + +#: startScan/static/startScan/js/detail_scan.js:1093 +msgid "Todo Added." +msgstr "Todo Added." + +#: startScan/static/startScan/js/detail_scan.js:1099 +#: startScan/static/startScan/js/detail_scan.js:1154 +#: startScan/static/startScan/js/detail_scan.js:1250 +#: startScan/static/startScan/js/detail_scan.js:1256 +msgid "Okay" +msgstr "Okay" + +#: startScan/static/startScan/js/detail_scan.js:1153 +msgid "Error!" +msgstr "Error!" + +#: startScan/static/startScan/js/detail_scan.js:1165 +msgid "Querying Subdomains..." +msgstr "Querying Subdomains..." + +#: startScan/static/startScan/js/detail_scan.js:1199 +#: startScan/static/startScan/js/detail_scan.js:1246 +#: startScan/static/startScan/js/detail_scan.js:1343 +#: startScan/static/startScan/js/detail_scan.js:1570 +msgid "Download Subdomains as txt" +msgstr "Download Subdomains as txt" + +#: startScan/static/startScan/js/detail_scan.js:1200 +#: startScan/static/startScan/js/detail_scan.js:1247 +#: startScan/static/startScan/js/detail_scan.js:1344 +#: startScan/static/startScan/js/detail_scan.js:1401 +#: startScan/static/startScan/js/detail_scan.js:1571 +msgid "Copy Subdomains!" +msgstr "Copy Subdomains!" + +#: startScan/static/startScan/js/detail_scan.js:1200 +#: startScan/static/startScan/js/detail_scan.js:1247 +#: startScan/static/startScan/js/detail_scan.js:1344 +#: startScan/static/startScan/js/detail_scan.js:1571 +msgid "Copy Subdomains" +msgstr "Copy Subdomains" + +#: startScan/static/startScan/js/detail_scan.js:1202 +#: startScan/static/startScan/js/detail_scan.js:1207 +msgid "No Subdomains" +msgstr "No Subdomains" + +#: startScan/static/startScan/js/detail_scan.js:1202 +#: startScan/static/startScan/js/detail_scan.js:1207 +msgid "Could not find any subdomains." +msgstr "Could not find any subdomains." + +#: startScan/static/startScan/js/detail_scan.js:1215 +#: startScan/static/startScan/js/detail_scan.js:1311 +msgid "Querying Interesting Subdomains..." +msgstr "Querying Interesting Subdomains..." + +#: startScan/static/startScan/js/detail_scan.js:1249 +#: startScan/static/startScan/js/detail_scan.js:1255 +msgid "No Interesting Subdomains" +msgstr "No Interesting Subdomains" + +#: startScan/static/startScan/js/detail_scan.js:1249 +#: startScan/static/startScan/js/detail_scan.js:1255 +msgid "Could not find any interesting subdomains." +msgstr "Could not find any interesting subdomains." + +#: startScan/static/startScan/js/detail_scan.js:1263 +msgid "Querying Interesting Endpoints..." +msgstr "Querying Interesting Endpoints..." + +#: startScan/static/startScan/js/detail_scan.js:1293 +#: startScan/static/startScan/js/detail_scan.js:1397 +#: startScan/static/startScan/js/detail_scan.js:1399 +msgid "Download Endpoints as txt" +msgstr "Download Endpoints as txt" + +#: startScan/static/startScan/js/detail_scan.js:1294 +msgid "Copy Endpoints!" +msgstr "Copy Endpoints!" + +#: startScan/static/startScan/js/detail_scan.js:1294 +#: startScan/static/startScan/js/detail_scan.js:1401 +msgid "Copy Endpoints" +msgstr "Copy Endpoints" + +#: startScan/static/startScan/js/detail_scan.js:1296 +#: startScan/static/startScan/js/detail_scan.js:1302 +msgid "No Interesting Endpoints" +msgstr "No Interesting Endpoints" + +#: startScan/static/startScan/js/detail_scan.js:1296 +#: startScan/static/startScan/js/detail_scan.js:1302 +msgid "Could not find any interesting Endpoints." +msgstr "Could not find any interesting Endpoints." + +#: startScan/static/startScan/js/detail_scan.js:1346 +#: startScan/static/startScan/js/detail_scan.js:1351 +msgid "No Important Endpoints" +msgstr "No Important Endpoints" + +#: startScan/static/startScan/js/detail_scan.js:1346 +#: startScan/static/startScan/js/detail_scan.js:1351 +msgid "No subdomains has been marked as important." +msgstr "No subdomains has been marked as important." + +#: startScan/static/startScan/js/detail_scan.js:1359 +msgid "Querying Endpoints..." +msgstr "Querying Endpoints..." + +#: startScan/static/startScan/js/detail_scan.js:1362 +msgid "Loading..." +msgstr "Loading..." + +#: startScan/static/startScan/js/detail_scan.js:1418 +msgid "Oops!" +msgstr "Oops!" + +#: startScan/static/startScan/js/detail_scan.js:1419 +msgid "No subtasks selected. Please choose at least one subtask !" +msgstr "No subtasks selected. Please choose at least one subtask !" + +#: startScan/static/startScan/js/detail_scan.js:1430 +msgid "Initiating subtask..." +msgstr "Initiating subtask..." + +#: startScan/static/startScan/js/detail_scan.js:1448 +msgid "Subtask initiated successfully!" +msgstr "Subtask initiated successfully!" + +#: startScan/static/startScan/js/detail_scan.js:1454 +msgid "Could not initiate subtask!" +msgstr "Could not initiate subtask!" + +#: startScan/static/startScan/js/detail_scan.js:1528 +#: startScan/static/startScan/js/detail_scan.js:1587 +msgid "Oops! No Subdomains has been selected!" +msgstr "Oops! No Subdomains has been selected!" + +#: startScan/static/startScan/js/detail_scan.js:1534 +msgid "Querying Selected Subdomains..." +msgstr "Querying Selected Subdomains..." + +#: startScan/static/startScan/js/detail_scan.js:1574 +msgid "Oops! Could not download selected subdomains." +msgstr "Oops! Could not download selected subdomains." + +#: startScan/static/startScan/js/detail_scan.js:1596 +msgid "" +"Do you really want to delete these subdomains? This action cannot be undone." +msgstr "" +"Do you really want to delete these subdomains? This action cannot be undone." + +#: startScan/static/startScan/js/detail_scan.js:1598 +msgid "Delete" +msgstr "Delete" + +#: startScan/static/startScan/js/detail_scan.js:1599 +#: startScan/static/startScan/js/detail_scan.js:1674 +msgid "Cancel" +msgstr "Cancel" + +#: startScan/static/startScan/js/detail_scan.js:1603 +msgid "Deleting Subdomain..." +msgstr "Deleting Subdomain..." + +#: startScan/static/startScan/js/detail_scan.js:1635 +msgid "Subdomain successfully deleted!" +msgstr "Subdomain successfully deleted!" + +#: startScan/static/startScan/js/detail_scan.js:1641 +msgid "Could not delete Subdomain!" +msgstr "Could not delete Subdomain!" + +#: startScan/static/startScan/js/detail_scan.js:1662 +msgid "" +"reNgine has earlier identified that this subdomain did not return any HTTP " +"status and likely the subdomain is not alive. reNgine may not be able to " +"detect any CMS, would you still like to continue?" +msgstr "" +"reNgine has earlier identified that this subdomain did not return any HTTP " +"status and likely the subdomain is not alive. reNgine may not be able to " +"detect any CMS, would you still like to continue?" + +#: startScan/static/startScan/js/detail_scan.js:1670 +#: startScan/static/startScan/js/detail_scan.js:1673 +msgid "Detect CMS" +msgstr "Detect CMS" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:39 +#: startScan/static/startScan/js/subdomains-suggestions.js:43 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:43 +msgid "Equals" +msgstr "Equals" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:39 +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:42 +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:45 +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:48 +#: startScan/static/startScan/js/subdomains-suggestions.js:43 +#: startScan/static/startScan/js/subdomains-suggestions.js:46 +#: startScan/static/startScan/js/subdomains-suggestions.js:49 +#: startScan/static/startScan/js/subdomains-suggestions.js:52 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:43 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:46 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:49 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:52 +msgid "Some Value" +msgstr "Some Value" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:42 +#: startScan/static/startScan/js/subdomains-suggestions.js:46 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:46 +msgid "Not Equals" +msgstr "Not Equals" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:45 +#: startScan/static/startScan/js/subdomains-suggestions.js:49 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:49 +msgid "Greater than" +msgstr "Greater than" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:48 +#: startScan/static/startScan/js/subdomains-suggestions.js:52 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:52 +msgid "Less than" +msgstr "Less than" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:51 +#: startScan/static/startScan/js/subdomains-suggestions.js:55 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:55 +msgid "and" +msgstr "and" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:51 +msgid "" +"Match endpoint if all args " +"are true" +msgstr "" +"Match endpoint if all args " +"are true" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:54 +#: startScan/static/startScan/js/subdomains-suggestions.js:58 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:58 +msgid "or" +msgstr "or" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:54 +msgid "" +"Match endpoint if either of one is true" +msgstr "" +"Match endpoint if either of one is true" + +#: startScan/static/startScan/js/subdomains-suggestions.js:55 +msgid "" +"Match subdomain if all args " +"are true" +msgstr "" +"Match subdomain if all args " +"are true" + +#: startScan/static/startScan/js/subdomains-suggestions.js:58 +msgid "" +"Match subdomain if either of one is true" +msgstr "" +"Match subdomain if either of one is true" + +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:55 +msgid "" +"Match vulnerability if all args are true" +msgstr "" +"Match vulnerability if all args are true" + +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:58 +msgid "" +"Match vulnerability if either of " +"one is true" +msgstr "" +"Match vulnerability if either of " +"one is true" + +msgid "Showing page _PAGE_ of _PAGES_" +msgstr "Showing page _PAGE_ of _PAGES_" + +msgid "Results : _MENU_" +msgstr "Results : _MENU_" + +msgid "Search..." +msgstr "Search..." + +# Embedded JS +msgid "Hackerone Configuration" +msgstr "Hackerone Configuration" + +msgid "Test my hackerone API Key" +msgstr "Test my hackerone API Key" + +msgid "This will test if your hackerone API keys are working." +msgstr "This will test if your hackerone API keys are working." + +msgid "Your hackerone Credentials are working." +msgstr "Your hackerone Credentials are working." + +msgid "" +"Oops! Your hackerone Credentials are not working, check your username and/" +"or api_key." +msgstr "" +"Oops! Your hackerone Credentials are not working, check your username and/" +"or api_key." + +msgid "Unable to get your public IP" +msgstr "Unable to get your public IP" + +msgid "No vulnerability detected" +msgstr "No vulnerability detected" + +msgid "No subscan yet" +msgstr "No subscan yet" + +msgid "No scan scheduled yet" +msgstr "No scan scheduled yet" + +msgid "No scan yet" +msgstr "No scan yet" + +msgid "No directory detected" +msgstr "No directory detected" + +msgid "No S3 Bucket detected" +msgstr "No S3 Bucket detected" diff --git a/web/startScan/locale/fr/LC_MESSAGES/django.mo b/web/startScan/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 000000000..deee4ae56 Binary files /dev/null and b/web/startScan/locale/fr/LC_MESSAGES/django.mo differ diff --git a/web/startScan/locale/fr/LC_MESSAGES/django.po b/web/startScan/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 000000000..f62cbf249 --- /dev/null +++ b/web/startScan/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,1584 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: startScan/models.py:324 +msgid "Subdomain discovery" +msgstr "Découverte de sous-domaines" + +#: startScan/models.py:325 +msgid "Directory and File fuzzing" +msgstr "Recherche de fichiers et de répertoires" + +#: startScan/models.py:326 +#: startScan/templates/startScan/_items/scanEngine_select.html:74 +msgid "Port Scan" +msgstr "Scan de ports" + +#: startScan/models.py:327 +msgid "Fetch URLs" +msgstr "Récupérer les URLs" + +#: startScan/models.py:328 +#: startScan/templates/startScan/_items/scanEngine_select.html:110 +msgid "Vulnerability Scan" +msgstr "Scan de vulnérabilités" + +#: startScan/models.py:329 +#: startScan/templates/startScan/_items/scanEngine_select.html:50 +msgid "Screenshot" +msgstr "Capture d'écran" + +#: startScan/models.py:330 +msgid "Waf Detection" +msgstr "Détection de WAF" + +#: startScan/models.py:331 +msgid "Open-Source Intelligence" +msgstr "Intelligence Open-Source" + +#: startScan/models.py:333 startScan/templates/startScan/detail_scan.html:128 +#: startScan/templates/startScan/detail_scan.html:258 +#: startScan/templates/startScan/history.html:125 +#: startScan/templates/startScan/subscan_history.html:124 +msgid "Unknown" +msgstr "Inconnu" + +#: startScan/templates/organization/schedule_scan_ui.html:6 +msgid "Schedule Scan for Organization" +msgstr "Planifier un scan pour l'organisation" + +#: startScan/templates/organization/schedule_scan_ui.html:17 +#: startScan/templates/organization/start_scan.html:15 +#: startScan/templates/startScan/detail_scan.html:558 +#: startScan/templates/startScan/detail_scan.html:602 +#: startScan/templates/startScan/detail_scan.html:646 +msgid "Organization" +msgstr "Organisation" + +#: startScan/templates/organization/schedule_scan_ui.html:18 +#: startScan/templates/startScan/schedule_scan_ui.html:7 +#: startScan/templates/startScan/schedule_scan_ui.html:19 +msgid "Schedule Scan" +msgstr "Planifier un scan" + +#: startScan/templates/organization/schedule_scan_ui.html:23 +msgid "Scheduling scan for" +msgstr "Planification du scan pour" + +#: startScan/templates/organization/schedule_scan_ui.html:31 +msgid "Domains associated with organization" +msgstr "Domaines associés à l'organisation" + +#: startScan/templates/organization/schedule_scan_ui.html:38 +#: startScan/templates/startScan/schedule_scan_ui.html:35 +msgid "Choose the scheduler" +msgstr "Choisissez le planificateur" + +#: startScan/templates/organization/schedule_scan_ui.html:42 +#: startScan/templates/startScan/schedule_scan_ui.html:39 +msgid "Periodic Scan" +msgstr "Scan périodique" + +#: startScan/templates/organization/schedule_scan_ui.html:43 +#: startScan/templates/startScan/schedule_scan_ui.html:40 +msgid "Clocked Scan" +msgstr "Scan cadencé" + +#: startScan/templates/organization/schedule_scan_ui.html:49 +#: startScan/templates/startScan/schedule_scan_ui.html:46 +msgid "Run scan every" +msgstr "Exécuter le scan tous les" + +#: startScan/templates/organization/schedule_scan_ui.html:56 +#: startScan/templates/startScan/schedule_scan_ui.html:53 +msgid "Minutes" +msgstr "Minutes" + +#: startScan/templates/organization/schedule_scan_ui.html:57 +#: startScan/templates/startScan/schedule_scan_ui.html:54 +msgid "Hours" +msgstr "Heures" + +#: startScan/templates/organization/schedule_scan_ui.html:58 +#: startScan/templates/startScan/schedule_scan_ui.html:55 +msgid "Days" +msgstr "Jours" + +#: startScan/templates/organization/schedule_scan_ui.html:59 +#: startScan/templates/startScan/schedule_scan_ui.html:56 +msgid "Weeks" +msgstr "Semaines" + +#: startScan/templates/organization/schedule_scan_ui.html:60 +#: startScan/templates/startScan/schedule_scan_ui.html:57 +msgid "Months" +msgstr "Mois" + +#: startScan/templates/organization/schedule_scan_ui.html:68 +#: startScan/templates/startScan/schedule_scan_ui.html:65 +msgid "Run scan exactly at" +msgstr "Exécuter le scan exactement à" + +#: startScan/templates/organization/schedule_scan_ui.html:72 +#: startScan/templates/startScan/schedule_scan_ui.html:70 +msgid "Select Scheduler Date and time" +msgstr "Sélectionnez la date et l'heure du planificateur" + +#: startScan/templates/organization/schedule_scan_ui.html:80 +#: startScan/templates/startScan/schedule_scan_ui.html:78 +#: startScan/templates/startScan/start_scan_ui.html:32 +msgid "Choose Scan Engine" +msgstr "Choisissez le moteur de scan" + +#: startScan/templates/organization/schedule_scan_ui.html:82 +#: startScan/templates/organization/start_scan.html:37 +#: startScan/templates/startScan/schedule_scan_ui.html:80 +#: startScan/templates/startScan/start_scan_ui.html:34 +msgid "Select Scan Engine" +msgstr "Sélectionnez le moteur de scan" + +#: startScan/templates/organization/schedule_scan_ui.html:85 +msgid "Tips!" +msgstr "Astuces !" + +#: startScan/templates/organization/schedule_scan_ui.html:85 +msgid "" +"You do not have any custom scan engines. Would you like to create your own " +"scan engine?" +msgstr "" +"Vous n'avez aucun moteur de scan personnalisé. Voulez-vous créer votre " +"propre moteur de scan ?" + +#: startScan/templates/organization/schedule_scan_ui.html:86 +#: startScan/templates/startScan/schedule_scan_ui.html:84 +#: startScan/templates/startScan/start_multiple_scan_ui.html:38 +#: startScan/templates/startScan/start_scan_ui.html:38 +msgid "Create Custom Scan Engine" +msgstr "Créer un moteur de scan personnalisé" + +#: startScan/templates/organization/start_scan.html:6 +msgid "Initiating Scan for Organization" +msgstr "Lancement du scan pour l'organisation" + +#: startScan/templates/organization/start_scan.html:16 +#: startScan/templates/startScan/start_scan_ui.html:17 +msgid "Initiate Scan" +msgstr "Lancer le scan" + +#: startScan/templates/organization/start_scan.html:21 +#, python-format +msgid "Initiating scan for %(orgName)s" +msgstr "Lancement du scan pour %(orgName)s" + +#: startScan/templates/organization/start_scan.html:29 +#, python-format +msgid "%(nDomains)s Domains associated with organization %(orgName)s" +msgstr "%(nDomains)s Domaines associés à l'organisation %(orgName)s" + +#: startScan/templates/organization/start_scan.html:40 +#: startScan/templates/startScan/schedule_scan_ui.html:83 +#: startScan/templates/startScan/start_multiple_scan_ui.html:37 +#: startScan/templates/startScan/start_scan_ui.html:37 +msgid "" +"Tips! You do not have any custom scan engines. Would you like to " +"create your own scan engine?" +msgstr "" +"Astuces ! Vous n'avez aucun moteur de scan personnalisé. Voulez-vous " +"créer votre propre moteur de scan ?" + +#: startScan/templates/organization/start_scan.html:45 +#: startScan/templates/startScan/start_multiple_scan_ui.html:6 +#: startScan/templates/startScan/start_multiple_scan_ui.html:46 +#: startScan/templates/startScan/start_scan_ui.html:6 +msgid "Start Scan" +msgstr "Démarrer le scan" + +#: startScan/templates/startScan/_items/scanEngine_select.html:12 +msgid "Default Engine" +msgstr "Moteur par défaut" + +#: startScan/templates/startScan/_items/scanEngine_select.html:14 +msgid "Custom Engine" +msgstr "Moteur de scan personnalisé" + +#: startScan/templates/startScan/_items/scanEngine_select.html:22 +msgid "Engine Capabilities" +msgstr "Capacités du moteur" + +#: startScan/templates/startScan/_items/scanEngine_select.html:26 +msgid "Subdomain Discovery" +msgstr "Découverte de sous-domaines" + +#: startScan/templates/startScan/_items/scanEngine_select.html:38 +msgid "WAF Detection" +msgstr "Détection de WAF" + +#: startScan/templates/startScan/_items/scanEngine_select.html:62 +#: startScan/templates/startScan/detail_scan.html:88 +#: startScan/templates/startScan/detail_scan.html:353 +msgid "OSINT" +msgstr "OSINT" + +#: startScan/templates/startScan/_items/scanEngine_select.html:86 +msgid "Directory and Files Search" +msgstr "Recherche de fichiers et de répertoires" + +#: startScan/templates/startScan/_items/scanEngine_select.html:98 +msgid "Fetch Endpoints(URLs)" +msgstr "Récupérer les points de terminaison (URLs)" + +#: startScan/templates/startScan/_items/scanEngine_select.html:123 +msgid "YAML Configuration" +msgstr "Configuration YAML" + +#: startScan/templates/startScan/detail_scan.html:8 +msgid "Detailed Scan" +msgstr "Scan détaillé" + +#: startScan/templates/startScan/detail_scan.html:26 +#: startScan/templates/startScan/history.html:15 +#: startScan/templates/startScan/subscan_history.html:15 +msgid "Scan History" +msgstr "Historique des scans" + +#: startScan/templates/startScan/detail_scan.html:27 +#: startScan/templates/startScan/history.html:81 +msgid "Summary" +msgstr "Résumé" + +#: startScan/templates/startScan/detail_scan.html:32 +msgid "Scan Findings" +msgstr "Résultats du scan" + +#: startScan/templates/startScan/detail_scan.html:42 +msgid "Home" +msgstr "Accueil" + +#: startScan/templates/startScan/detail_scan.html:45 +#: startScan/templates/startScan/history.html:102 +msgid "Subdomains" +msgstr "Sous-domaines" + +#: startScan/templates/startScan/detail_scan.html:49 +msgid "S3 Buckets" +msgstr "Buckets S3" + +#: startScan/templates/startScan/detail_scan.html:53 +msgid "Interesting Recon" +msgstr "Recon intéressante" + +#: startScan/templates/startScan/detail_scan.html:56 +msgid "Recon Data Changes" +msgstr "Changements des données de recon" + +#: startScan/templates/startScan/detail_scan.html:60 +msgid "Screenshots" +msgstr "Captures d'écran" + +#: startScan/templates/startScan/detail_scan.html:65 +#: startScan/templates/startScan/detail_scan.html:1065 +msgid "Directories" +msgstr "Répertoires" + +#: startScan/templates/startScan/detail_scan.html:69 +msgid "URLs" +msgstr "URLs" + +#: startScan/templates/startScan/detail_scan.html:71 +#: startScan/templates/startScan/endpoints.html:7 +msgid "All Endpoints" +msgstr "Tous les points de terminaison" + +#: startScan/templates/startScan/detail_scan.html:83 +msgid "Vulnerabilities" +msgstr "Vulnérabilités" + +#: startScan/templates/startScan/detail_scan.html:92 +msgid "Visualization" +msgstr "Visualisation" + +#: startScan/templates/startScan/detail_scan.html:108 +msgid "Scan Status for" +msgstr "Statut du scan pour" + +#: startScan/templates/startScan/detail_scan.html:113 +#: startScan/templates/startScan/detail_scan.html:248 +#: startScan/templates/startScan/history.html:114 +#: startScan/templates/startScan/subscan_history.html:114 +msgid "Pending" +msgstr "En attente" + +#: startScan/templates/startScan/detail_scan.html:116 +#: startScan/templates/startScan/detail_scan.html:212 +#: startScan/templates/startScan/detail_scan.html:250 +#: startScan/templates/startScan/history.html:116 +#: startScan/templates/startScan/subscan_history.html:116 +msgid "Failed" +msgstr "Échoué" + +#: startScan/templates/startScan/detail_scan.html:119 +#: startScan/templates/startScan/history.html:119 +#: startScan/templates/startScan/subscan_history.html:118 +msgid "In Progress" +msgstr "En cours" + +#: startScan/templates/startScan/detail_scan.html:122 +#: startScan/templates/startScan/detail_scan.html:214 +#: startScan/templates/startScan/detail_scan.html:254 +msgid "Completed" +msgstr "Terminé" + +#: startScan/templates/startScan/detail_scan.html:125 +#: startScan/templates/startScan/detail_scan.html:256 +#: startScan/templates/startScan/history.html:123 +#: startScan/templates/startScan/subscan_history.html:122 +msgid "Aborted" +msgstr "Avorté" + +#: startScan/templates/startScan/detail_scan.html:137 +msgid "Download All Subdomains" +msgstr "Télécharger tous les sous-domaines" + +#: startScan/templates/startScan/detail_scan.html:138 +msgid "Download All Endpoints" +msgstr "Télécharger tous les points de terminaison" + +#: startScan/templates/startScan/detail_scan.html:139 +msgid "Download Important Subdomains" +msgstr "Télécharger les sous-domaines importants" + +#: startScan/templates/startScan/detail_scan.html:140 +#: startScan/templates/startScan/detail_scan.html:1241 +msgid "Download Interesting Subdomains" +msgstr "Télécharger les sous-domaines intéressants" + +#: startScan/templates/startScan/detail_scan.html:141 +#: startScan/templates/startScan/detail_scan.html:1268 +msgid "Download Interesting Endpoints" +msgstr "Télécharger les points de terminaison intéressants" + +#: startScan/templates/startScan/detail_scan.html:147 +msgid "Scan failed due to ERROR:" +msgstr "Le scan a échoué en raison de l'ERREUR :" + +#: startScan/templates/startScan/detail_scan.html:150 +msgid "Scan Logs" +msgstr "Journaux de scan" + +#: startScan/templates/startScan/detail_scan.html:151 +msgid "Logs" +msgstr "Journaux" + +#: startScan/templates/startScan/detail_scan.html:152 +#: startScan/templates/startScan/index.html:6 +msgid "Scan Engine" +msgstr "Moteur de scan" + +#: startScan/templates/startScan/detail_scan.html:154 +msgid "Scan Duration" +msgstr "Durée du scan" + +#: startScan/templates/startScan/detail_scan.html:156 +msgid "Scan not yet started." +msgstr "Le scan n'a pas encore commencé." + +#: startScan/templates/startScan/detail_scan.html:163 +msgid "Completed in < 1 minutes" +msgstr "Terminé en < 1 minute" + +#: startScan/templates/startScan/detail_scan.html:165 +msgid "Completed in" +msgstr "Terminé en" + +#: startScan/templates/startScan/detail_scan.html:168 +msgid "Aborted in" +msgstr "Avorté en" + +#: startScan/templates/startScan/detail_scan.html:172 +msgid "Scan Progress" +msgstr "Progression du scan" + +#: startScan/templates/startScan/detail_scan.html:198 +msgid "Tagged to Organization" +msgstr "Marqué pour l'organisation" + +#: startScan/templates/startScan/detail_scan.html:200 +#, python-format +msgid "Domain %(domainName)s belongs to organization %(organizationName)s" +msgstr "" +"Le domaine %(domainName)s appartient à l'organisation %(organizationName)s" + +#: startScan/templates/startScan/detail_scan.html:204 +msgid "Scan Timeline" +msgstr "Chronologie du scan" + +#: startScan/templates/startScan/detail_scan.html:213 +msgid "In progress" +msgstr "En cours" + +#: startScan/templates/startScan/detail_scan.html:220 +#, python-format +msgid "Error: %(errorMsg)s" +msgstr "ERREUR : %(errorMsg)s" + +#: startScan/templates/startScan/detail_scan.html:235 +msgid "Recent Scans for" +msgstr "Scans récents pour" + +#: startScan/templates/startScan/detail_scan.html:252 +msgid "Scanning" +msgstr "Scan en cours" + +#: startScan/templates/startScan/detail_scan.html:264 +#, python-format +msgid "%(subdomainCount)s Subdomains Discovered" +msgstr "%(subdomainCount)s sous-domaines découverts" + +#: startScan/templates/startScan/detail_scan.html:268 +#, python-format +msgid "%(missing_count)s subdomains missing since last scan." +msgstr "%(missing_count)s sous-domaines manquants depuis le dernier scan." + +#: startScan/templates/startScan/detail_scan.html:268 +#: startScan/templates/startScan/detail_scan.html:270 +#, python-format +msgid "%(diff_count)s Subdomains" +msgstr "%(diff_count)s Sous-domaines" + +#: startScan/templates/startScan/detail_scan.html:270 +#, python-format +msgid "%(added_count)s subdomains added since last scan." +msgstr "%(added_count)s sous-domaines ajoutés depuis le dernier scan." + +#: startScan/templates/startScan/detail_scan.html:276 +#, python-format +msgid "ERROR: %(scanErrorMessage)s" +msgstr "ERREUR : %(scanErrorMessage)s" + +#: startScan/templates/startScan/detail_scan.html:292 +msgid "Sub Scan History for" +msgstr "Historique des sous-scans pour" + +#: startScan/templates/startScan/detail_scan.html:308 +msgid "Total Subdomains Discovered by reNgine during this scan" +msgstr "Total des sous-domaines découverts par reNgine pendant ce scan" + +#: startScan/templates/startScan/detail_scan.html:309 +msgid "Subdomains Discovered" +msgstr "Sous-domaines découverts" + +#: startScan/templates/startScan/detail_scan.html:312 +msgid "Alive Subdomains" +msgstr "Sous-domaines actifs" + +#: startScan/templates/startScan/detail_scan.html:320 +msgid "" +"Total Endpoints discovered by reNgine during this scan. This includes any " +"URLs discovered." +msgstr "" +"Total des points de terminaison découverts par reNgine pendant ce scan. Cela " +"inclut toutes les URL découvertes." + +#: startScan/templates/startScan/detail_scan.html:321 +msgid "Endpoints Discovered" +msgstr "Points de terminaison découverts" + +#: startScan/templates/startScan/detail_scan.html:324 +msgid "Alive Endpoints" +msgstr "Points de terminaison actifs" + +#: startScan/templates/startScan/detail_scan.html:332 +msgid "" +"Total Vulnerabilities discovered by reNgine. This will be populated only if " +"vulnerability scan is performed during this scan." +msgstr "" +"Total des vulnérabilités découvertes par reNgine. Cela ne sera rempli que si " +"un scan de vulnérabilités est effectué pendant ce scan." + +#: startScan/templates/startScan/detail_scan.html:333 +msgid "Vulnerabilities Discovered" +msgstr "Vulnérabilités découvertes" + +#: startScan/templates/startScan/detail_scan.html:337 +msgid "Critical" +msgstr "Critique" + +#: startScan/templates/startScan/detail_scan.html:337 +msgid "High" +msgstr "Élevé" + +#: startScan/templates/startScan/detail_scan.html:337 +msgid "Medium" +msgstr "Moyen" + +#: startScan/templates/startScan/detail_scan.html:339 +msgid "Low" +msgstr "Faible" + +#: startScan/templates/startScan/detail_scan.html:339 +msgid "Info" +msgstr "Info" + +#: startScan/templates/startScan/detail_scan.html:339 +msgid ", and" +msgstr ", et" + +#: startScan/templates/startScan/detail_scan.html:339 +msgid "Unknown Vulnerabilities" +msgstr "Vulnérabilités inconnues" + +#: startScan/templates/startScan/detail_scan.html:342 +msgid "No vulnerabilities found." +msgstr "Aucune vulnérabilité trouvée." + +#: startScan/templates/startScan/detail_scan.html:352 +msgid "OSINT Results" +msgstr "Résultats OSINT" + +#: startScan/templates/startScan/detail_scan.html:355 +#: startScan/templates/startScan/detail_scan.html:1140 +msgid "Exposed Credentials" +msgstr "Identifiants exposés" + +#: startScan/templates/startScan/detail_scan.html:356 +msgid "Email Address Discovered" +msgstr "Adresse e-mail découverte" + +#: startScan/templates/startScan/detail_scan.html:357 +msgid "Employees Found" +msgstr "Employés trouvés" + +#: startScan/templates/startScan/detail_scan.html:361 +msgid "OSINT hasn't been performed." +msgstr "OSINT n'a pas été effectué." + +#: startScan/templates/startScan/detail_scan.html:372 +msgid "reNgine identified" +msgstr "reNgine a identifié" + +#: startScan/templates/startScan/detail_scan.html:372 +#: startScan/templates/startScan/detail_scan.html:378 +#: startScan/templates/startScan/detail_scan.html:385 +#: startScan/templates/startScan/detail_scan.html:393 +#: startScan/templates/startScan/detail_scan.html:401 +msgid "Check it out!" +msgstr "Découvrez-le !" + +#: startScan/templates/startScan/detail_scan.html:385 +#, python-format +msgid "reNgine identified %(count)s domains related to %(history.domain)s." +msgstr "reNgine a identifié %(count)s domaines liés à %(history.domain)s." + +#: startScan/templates/startScan/detail_scan.html:393 +#, python-format +msgid "reNgine identified %(count)s Buckets related to %(history.domain)s." +msgstr "reNgine a identifié %(count)s Buckets liés à %(history.domain)s." + +#: startScan/templates/startScan/detail_scan.html:401 +#, python-format +msgid "%(history.domain.name)s has %(count)s registered TLDs." +msgstr "%(history.domain.name)s a %(count)s TLD enregistrés." + +#: startScan/templates/startScan/detail_scan.html:409 +msgid "Reload Whois" +msgstr "Recharger Whois" + +#: startScan/templates/startScan/detail_scan.html:411 +msgid "Target Information" +msgstr "Informations sur la cible" + +#: startScan/templates/startScan/detail_scan.html:415 +msgid "Domain info" +msgstr "Infos du domaine" + +#: startScan/templates/startScan/detail_scan.html:416 +msgid "Whois" +msgstr "Whois" + +#: startScan/templates/startScan/detail_scan.html:417 +msgid "Nameservers" +msgstr "Serveurs de noms" + +#: startScan/templates/startScan/detail_scan.html:418 +msgid "DNS Records" +msgstr "Enregistrements DNS" + +#: startScan/templates/startScan/detail_scan.html:419 +msgid "Historical Ips" +msgstr "IPs historiques" + +#: startScan/templates/startScan/detail_scan.html:421 +msgid "Related Domains" +msgstr "Domaines liés" + +#: startScan/templates/startScan/detail_scan.html:427 +msgid "Related TLDs" +msgstr "TLD liés" + +#: startScan/templates/startScan/detail_scan.html:437 +msgid "A Records" +msgstr "Enregistrements A" + +#: startScan/templates/startScan/detail_scan.html:443 +msgid "MX Records" +msgstr "Enregistrements MX" + +#: startScan/templates/startScan/detail_scan.html:449 +msgid "TXT Records" +msgstr "Enregistrements TXT" + +#: startScan/templates/startScan/detail_scan.html:460 +#, python-format +msgid "" +"WHOIS Record Has not been fetched, would you like to fetch it now?" +msgstr "" +"L'enregistrement WHOIS n'a pas été récupéré, voulez-vous le récupérer " +"maintenant ?" + +#: startScan/templates/startScan/detail_scan.html:464 +msgid "Fetching WHOIS records, Please wait..." +msgstr "Récupération des enregistrements WHOIS, veuillez patienter..." + +#: startScan/templates/startScan/detail_scan.html:468 +msgid "" +"WHOIS Records have been fetched, please reload the page." +msgstr "" +"Les enregistrements WHOIS ont été récupérés, veuillez recharger la page." + +#: startScan/templates/startScan/detail_scan.html:472 +#: startScan/templates/startScan/subscan_history.html:96 +msgid "Domain" +msgstr "Domaine" + +#: startScan/templates/startScan/detail_scan.html:476 +msgid "Dnssec" +msgstr "Dnssec" + +#: startScan/templates/startScan/detail_scan.html:480 +msgid "Geolocation" +msgstr "Géolocalisation" + +#: startScan/templates/startScan/detail_scan.html:486 +msgid "Created" +msgstr "Créé" + +#: startScan/templates/startScan/detail_scan.html:490 +msgid "Updated" +msgstr "Mis à jour" + +#: startScan/templates/startScan/detail_scan.html:494 +msgid "Expires" +msgstr "Expire" + +#: startScan/templates/startScan/detail_scan.html:500 +msgid "Whois Server" +msgstr "Serveur Whois" + +#: startScan/templates/startScan/detail_scan.html:506 +msgid "Registrar Name" +msgstr "Nom du registraire" + +#: startScan/templates/startScan/detail_scan.html:510 +msgid "Registrar Phone" +msgstr "Téléphone du registraire" + +#: startScan/templates/startScan/detail_scan.html:514 +msgid "Registrar Email" +msgstr "Email du registraire" + +#: startScan/templates/startScan/detail_scan.html:530 +msgid "Registrant" +msgstr "Titulaire" + +#: startScan/templates/startScan/detail_scan.html:535 +msgid "Administrative" +msgstr "Administratif" + +#: startScan/templates/startScan/detail_scan.html:540 +msgid "Technical" +msgstr "Technique" + +#: startScan/templates/startScan/detail_scan.html:550 +#: startScan/templates/startScan/detail_scan.html:594 +#: startScan/templates/startScan/detail_scan.html:638 +#: startScan/templates/startScan/detail_scan.html:932 +msgid "ID" +msgstr "ID" + +#: startScan/templates/startScan/detail_scan.html:554 +#: startScan/templates/startScan/detail_scan.html:598 +#: startScan/templates/startScan/detail_scan.html:642 +#: startScan/templates/startScan/detail_scan.html:914 +msgid "Name" +msgstr "Nom" + +#: startScan/templates/startScan/detail_scan.html:562 +#: startScan/templates/startScan/detail_scan.html:606 +#: startScan/templates/startScan/detail_scan.html:650 +msgid "Email" +msgstr "Email" + +#: startScan/templates/startScan/detail_scan.html:566 +#: startScan/templates/startScan/detail_scan.html:610 +#: startScan/templates/startScan/detail_scan.html:654 +msgid "Phone/Fax" +msgstr "Téléphone/Fax" + +#: startScan/templates/startScan/detail_scan.html:577 +#: startScan/templates/startScan/detail_scan.html:581 +#: startScan/templates/startScan/detail_scan.html:621 +#: startScan/templates/startScan/detail_scan.html:625 +#: startScan/templates/startScan/detail_scan.html:665 +#: startScan/templates/startScan/detail_scan.html:669 +msgid "Address" +msgstr "Adresse" + +#: startScan/templates/startScan/detail_scan.html:582 +#: startScan/templates/startScan/detail_scan.html:626 +#: startScan/templates/startScan/detail_scan.html:670 +msgid "City" +msgstr "Ville" + +#: startScan/templates/startScan/detail_scan.html:582 +#: startScan/templates/startScan/detail_scan.html:626 +#: startScan/templates/startScan/detail_scan.html:670 +msgid "State" +msgstr "État" + +#: startScan/templates/startScan/detail_scan.html:582 +#: startScan/templates/startScan/detail_scan.html:626 +#: startScan/templates/startScan/detail_scan.html:670 +msgid "Zip Code" +msgstr "Code postal" + +#: startScan/templates/startScan/detail_scan.html:582 +#: startScan/templates/startScan/detail_scan.html:626 +#: startScan/templates/startScan/detail_scan.html:670 +#: startScan/templates/startScan/detail_scan.html:764 +msgid "Country" +msgstr "Pays" + +#: startScan/templates/startScan/detail_scan.html:681 +#, python-format +msgid "%(count)s Historical Ips" +msgstr "%(count)s IPs historiques" + +#: startScan/templates/startScan/detail_scan.html:685 +msgid "IP" +msgstr "IP" + +#: startScan/templates/startScan/detail_scan.html:686 +msgid "Location" +msgstr "Emplacement" + +#: startScan/templates/startScan/detail_scan.html:687 +#: startScan/templates/startScan/detail_scan.html:917 +msgid "Owner" +msgstr "Propriétaire" + +#: startScan/templates/startScan/detail_scan.html:688 +msgid "Last Seen" +msgstr "Vu pour la dernière fois" + +#: startScan/templates/startScan/detail_scan.html:703 +msgid "No historical IPs found!" +msgstr "Aucune IP historique trouvée !" + +#: startScan/templates/startScan/detail_scan.html:708 +#, python-format +msgid "%(count)s NameServers identified" +msgstr "%(count)s serveurs de noms identifiés" + +#: startScan/templates/startScan/detail_scan.html:713 +msgid "No NameServers identified" +msgstr "Aucun serveur de noms identifié" + +#: startScan/templates/startScan/detail_scan.html:718 +#, python-format +msgid "%(count)s Related Domains identified" +msgstr "%(count)s domaines liés identifiés" + +#: startScan/templates/startScan/detail_scan.html:720 +#: startScan/templates/startScan/detail_scan.html:730 +#, python-format +msgid "Add %(domain)s as target." +msgstr "Ajouter %(domain)s comme cible." + +#: startScan/templates/startScan/detail_scan.html:723 +msgid "No Related Domains identified" +msgstr "Aucun domaine lié identifié" + +#: startScan/templates/startScan/detail_scan.html:728 +#, python-format +msgid "%(count)s Related TLDs identified" +msgstr "%(count)s TLD liés identifiés" + +#: startScan/templates/startScan/detail_scan.html:733 +msgid "No Related TLDs identified" +msgstr "Aucun TLD lié identifié" + +#: startScan/templates/startScan/detail_scan.html:745 +msgid "HTTP Status Breakdown" +msgstr "Répartition des statuts HTTP" + +#: startScan/templates/startScan/detail_scan.html:755 +msgid "Geographical Distribution of Assets" +msgstr "Répartition géographique des actifs" + +#: startScan/templates/startScan/detail_scan.html:765 +msgid "Assets" +msgstr "Actifs" + +#: startScan/templates/startScan/detail_scan.html:793 +msgid "Most Vulnerable Subdomain" +msgstr "Sous-domaine le plus vulnérable" + +#: startScan/templates/startScan/detail_scan.html:803 +msgid "Important Subdomains" +msgstr "Sous-domaines importants" + +#: startScan/templates/startScan/detail_scan.html:815 +msgid "Recon Note/Todo" +msgstr "Note/Todo de reconnaissance" + +#: startScan/templates/startScan/detail_scan.html:816 +#: startScan/templates/startScan/detail_scan.html:831 +#: startScan/templates/startScan/detail_scan.html:857 +msgid "Add Recon Todo" +msgstr "Ajouter un Todo de reconnaissance" + +#: startScan/templates/startScan/detail_scan.html:836 +#: startScan/templates/startScan/detail_scan.html:837 +msgid "Todo Title" +msgstr "Titre du Todo" + +#: startScan/templates/startScan/detail_scan.html:841 +msgid "Select Subdomain (Optional)" +msgstr "Sélectionner un sous-domaine (Optionnel)" + +#: startScan/templates/startScan/detail_scan.html:844 +msgid "Choose Subdomain..." +msgstr "Choisir un sous-domaine..." + +#: startScan/templates/startScan/detail_scan.html:849 +msgid "Todo Description (Optional)" +msgstr "Description du Todo (Optionnel)" + +#: startScan/templates/startScan/detail_scan.html:850 +msgid "Todo Description" +msgstr "Description du Todo" + +#: startScan/templates/startScan/detail_scan.html:868 +msgid "IP Addresses" +msgstr "Adresses IP" + +#: startScan/templates/startScan/detail_scan.html:869 +msgid "*IP Addresses highlighted with yellow are CDN IP" +msgstr "*Les adresses IP surlignées en jaune sont des IP CDN" + +#: startScan/templates/startScan/detail_scan.html:879 +msgid "Discovered Ports" +msgstr "Ports découverts" + +#: startScan/templates/startScan/detail_scan.html:880 +msgid "*Ports highlighted with red are uncommon Ports" +msgstr "*Les ports surlignés en rouge sont des ports peu communs" + +#: startScan/templates/startScan/detail_scan.html:890 +msgid "Discovered Technologies" +msgstr "Technologies découvertes" + +#: startScan/templates/startScan/detail_scan.html:915 +msgid "Region" +msgstr "Région" + +#: startScan/templates/startScan/detail_scan.html:916 +msgid "Provider" +msgstr "Fournisseur" + +#: startScan/templates/startScan/detail_scan.html:918 +msgid "Objects Count" +msgstr "Nombre d'objets" + +#: startScan/templates/startScan/detail_scan.html:919 +msgid "Bucket Size" +msgstr "Taille du bucket" + +#: startScan/templates/startScan/detail_scan.html:920 +msgid "Auth Users Permission" +msgstr "Autorisation des utilisateurs authentifiés" + +#: startScan/templates/startScan/detail_scan.html:921 +msgid "All Users Permission" +msgstr "Autorisation de tous les utilisateurs" + +#: startScan/templates/startScan/detail_scan.html:933 +msgid "Display Name" +msgstr "Nom d'affichage" + +#: startScan/templates/startScan/detail_scan.html:940 +#: startScan/templates/startScan/detail_scan.html:949 +msgid "READ" +msgstr "LIRE" + +#: startScan/templates/startScan/detail_scan.html:941 +#: startScan/templates/startScan/detail_scan.html:950 +msgid "WRITE" +msgstr "ÉCRIRE" + +#: startScan/templates/startScan/detail_scan.html:942 +#: startScan/templates/startScan/detail_scan.html:951 +msgid "Read_ACP" +msgstr "Lire_ACP" + +#: startScan/templates/startScan/detail_scan.html:943 +#: startScan/templates/startScan/detail_scan.html:952 +msgid "WRITE_ACP" +msgstr "ÉCRIRE_ACP" + +#: startScan/templates/startScan/detail_scan.html:944 +#: startScan/templates/startScan/detail_scan.html:953 +msgid "FULL_CONTROL" +msgstr "CONTRÔLE TOTAL" + +#: startScan/templates/startScan/detail_scan.html:977 +msgid "Filter Screenshots" +msgstr "Filtrer les captures d'écran" + +#: startScan/templates/startScan/detail_scan.html:988 +#: startScan/templates/startScan/detail_scan.html:1250 +#: startScan/templates/startScan/detail_scan.html:1277 +msgid "HTTP Status" +msgstr "Statut HTTP" + +#: startScan/templates/startScan/detail_scan.html:993 +msgid "IP Address" +msgstr "Adresse IP" + +#: startScan/templates/startScan/detail_scan.html:999 +msgid "Running Services" +msgstr "Services en cours d'exécution" + +#: startScan/templates/startScan/detail_scan.html:1004 +msgid "Ports" +msgstr "Ports" + +#: startScan/templates/startScan/detail_scan.html:1010 +msgid "Technology" +msgstr "Technologie" + +#: startScan/templates/startScan/detail_scan.html:1030 +msgid "Loading Screenshots..." +msgstr "Chargement des captures d'écran..." + +#: startScan/templates/startScan/detail_scan.html:1057 +msgid "Display" +msgstr "Afficher" + +#: startScan/templates/startScan/detail_scan.html:1061 +#: startScan/templates/startScan/detail_scan.html:1063 +#: startScan/templates/startScan/detail_scan.html:1300 +#: startScan/templates/startScan/detail_scan.html:1318 +#: startScan/templates/startScan/history.html:84 +#: startScan/templates/startScan/subscan_history.html:84 +msgid "Status" +msgstr "Statut" + +#: startScan/templates/startScan/detail_scan.html:1062 +#: startScan/templates/startScan/detail_scan.html:1248 +#: startScan/templates/startScan/detail_scan.html:1298 +#: startScan/templates/startScan/detail_scan.html:1316 +msgid "Subdomain" +msgstr "Sous-domaine" + +#: startScan/templates/startScan/detail_scan.html:1064 +#: startScan/templates/startScan/detail_scan.html:1249 +#: startScan/templates/startScan/detail_scan.html:1299 +#: startScan/templates/startScan/detail_scan.html:1317 +msgid "Page Title" +msgstr "Titre de la page" + +#: startScan/templates/startScan/detail_scan.html:1066 +#: startScan/templates/startScan/detail_scan.html:1252 +msgid "HTTP URL" +msgstr "URL HTTP" + +#: startScan/templates/startScan/detail_scan.html:1067 +msgid "Is Intereting" +msgstr "Est intéressant" + +#: startScan/templates/startScan/detail_scan.html:1090 +msgid "Dorking Results" +msgstr "Résultats de dorking" + +#: startScan/templates/startScan/detail_scan.html:1112 +#, python-format +msgid "Employees/People associated with %(domain_name)s" +msgstr "Employés/Personnes associés à %(domain_name)s" + +#: startScan/templates/startScan/detail_scan.html:1117 +msgid "Employee Name" +msgstr "Nom de l'employé" + +#: startScan/templates/startScan/detail_scan.html:1118 +msgid "Designation" +msgstr "Désignation" + +#: startScan/templates/startScan/detail_scan.html:1134 +msgid "Discovered Email addresses" +msgstr "Adresses e-mail découvertes" + +#: startScan/templates/startScan/detail_scan.html:1139 +msgid "Email Address" +msgstr "Adresse e-mail" + +#: startScan/templates/startScan/detail_scan.html:1156 +msgid "Discovered Metadata" +msgstr "Métadonnées découvertes" + +#: startScan/templates/startScan/detail_scan.html:1161 +msgid "Document" +msgstr "Document" + +#: startScan/templates/startScan/detail_scan.html:1162 +msgid "User" +msgstr "Utilisateur" + +#: startScan/templates/startScan/detail_scan.html:1163 +msgid "Metadata" +msgstr "Métadonnées" + +#: startScan/templates/startScan/detail_scan.html:1187 +msgid "    Expand all nodes" +msgstr "    Développer tous les nœuds" + +#: startScan/templates/startScan/detail_scan.html:1196 +msgid "Download Visualization as png" +msgstr "Télécharger la visualisation en png" + +#: startScan/templates/startScan/detail_scan.html:1206 +msgid "Loading..." +msgstr "Chargement..." + +#: startScan/templates/startScan/detail_scan.html:1209 +msgid "Loading Recon Visualization..." +msgstr "Chargement de la visualisation de la reconnaissance..." + +#: startScan/templates/startScan/detail_scan.html:1218 +msgid "*Subdomains highlighted with green are 20X (OK) HTTP status" +msgstr "*Les sous-domaines surlignés en vert ont un statut HTTP 20X (OK)" + +#: startScan/templates/startScan/detail_scan.html:1219 +msgid "*Subdomains highlighted with orange are 30X (Redirect) HTTP status" +msgstr "" +"*Les sous-domaines surlignés en orange ont un statut HTTP 30X (Redirection)" + +#: startScan/templates/startScan/detail_scan.html:1220 +msgid "*Subdomains highlighted with red are 40X (Not found) HTTP status" +msgstr "" +"*Les sous-domaines surlignés en rouge ont un statut HTTP 40X (Non trouvé)" + +#: startScan/templates/startScan/detail_scan.html:1244 +msgid "Interesting Subdomains" +msgstr "Sous-domaines intéressants" + +#: startScan/templates/startScan/detail_scan.html:1251 +#: startScan/templates/startScan/detail_scan.html:1278 +#: startScan/templates/startScan/detail_scan.html:1301 +#: startScan/templates/startScan/detail_scan.html:1319 +msgid "Content Length" +msgstr "Longueur du contenu" + +#: startScan/templates/startScan/detail_scan.html:1253 +msgid "Tech Stack" +msgstr "Pile technologique" + +#: startScan/templates/startScan/detail_scan.html:1271 +msgid "Interesting Endpoints" +msgstr "Points de terminaison intéressants" + +#: startScan/templates/startScan/detail_scan.html:1275 +msgid "URL" +msgstr "URL" + +#: startScan/templates/startScan/detail_scan.html:1276 +msgid "Title" +msgstr "Titre" + +#: startScan/templates/startScan/detail_scan.html:1294 +msgid "Subdomain Changes" +msgstr "Changements de sous-domaine" + +#: startScan/templates/startScan/detail_scan.html:1302 +#: startScan/templates/startScan/detail_scan.html:1320 +msgid "Change" +msgstr "Changement" + +#: startScan/templates/startScan/detail_scan.html:1312 +msgid "Endpoint Changes" +msgstr "Changements de point de terminaison" + +#: startScan/templates/startScan/history.html:8 +msgid "Scan history" +msgstr "Historique des analyses" + +#: startScan/templates/startScan/history.html:19 +msgid "Quick Scan History" +msgstr "Historique des analyses rapides" + +#: startScan/templates/startScan/history.html:30 +#: startScan/templates/startScan/subscan_history.html:30 +msgid "Filter" +msgstr "Filtre" + +#: startScan/templates/startScan/history.html:36 +#: startScan/templates/startScan/start_scan_ui.html:67 +#: startScan/templates/startScan/subscan_history.html:36 +msgid "Filters" +msgstr "Filtres" + +#: startScan/templates/startScan/history.html:38 +#: startScan/templates/startScan/subscan_history.html:38 +msgid "Filter by Organization" +msgstr "Filtrer par organisation" + +#: startScan/templates/startScan/history.html:43 +#: startScan/templates/startScan/subscan_history.html:43 +msgid "Filter by Targets" +msgstr "Filtrer par cibles" + +#: startScan/templates/startScan/history.html:48 +#: startScan/templates/startScan/subscan_history.html:48 +msgid "Filter by Scan Type" +msgstr "Filtrer par type d'analyse" + +#: startScan/templates/startScan/history.html:53 +#: startScan/templates/startScan/subscan_history.html:53 +msgid "Filter by Scan Status" +msgstr "Filtrer par statut d'analyse" + +#: startScan/templates/startScan/history.html:59 +#: startScan/templates/startScan/subscan_history.html:59 +msgid "Reset Filters" +msgstr "Réinitialiser les filtres" + +#: startScan/templates/startScan/history.html:63 +msgid "Delete Multiple Scans" +msgstr "Supprimer plusieurs analyses" + +#: startScan/templates/startScan/history.html:78 +#: startScan/templates/startScan/history.html:79 +#: startScan/templates/startScan/subscan_history.html:78 +#: startScan/templates/startScan/subscan_history.html:79 +msgid "Serial Number" +msgstr "Numéro de série" + +#: startScan/templates/startScan/history.html:80 +msgid "Domain Name" +msgstr "Nom de domaine" + +#: startScan/templates/startScan/history.html:82 +msgid "Scan Engine Used" +msgstr "Moteur d'analyse utilisé" + +#: startScan/templates/startScan/history.html:83 +msgid "Last Scan" +msgstr "Dernière analyse" + +#: startScan/templates/startScan/history.html:85 +msgid "Progress" +msgstr "Progression" + +#: startScan/templates/startScan/history.html:86 +#: startScan/templates/startScan/schedule_scan_list.html:36 +#: startScan/templates/startScan/subscan_history.html:85 +msgid "Action" +msgstr "Action" + +#: startScan/templates/startScan/history.html:98 +#, python-format +msgid "" +"Domain %(scan_history.domain.name)s belongs to organization " +"%(organization.name)s" +msgstr "" +"Le domaine %(scan_history.domain.name)s appartient à l'organisation " +"%(organization.name)s" + +#: startScan/templates/startScan/history.html:103 +msgid "Endpoints" +msgstr "Points de terminaison" + +#: startScan/templates/startScan/history.html:104 +#, python-format +msgid "" +"%(critVulnCount)s Critical, %(highVulnCount)s High, %(medVulnCount)s Medium " +"Vulnerabilities" +msgstr "" +"Vulnérabilités : %(critVulnCount)s critiques, %(highVulnCount)s élevées, " +"%(medVulnCount)s modérées" + +#: startScan/templates/startScan/history.html:114 +#: startScan/templates/startScan/subscan_history.html:114 +msgid "Waiting for other scans to complete" +msgstr "En attente de la fin des autres analyses" + +#: startScan/templates/startScan/history.html:117 +#, python-format +msgid "Scan Failed due to: %(errMsg)s" +msgstr "L'analyse a échoué en raison de : %(errMsg)s" + +#: startScan/templates/startScan/history.html:121 +#: startScan/templates/startScan/subscan_history.html:120 +msgid "Successful" +msgstr "Réussi" + +#: startScan/templates/startScan/history.html:162 +#: startScan/templates/startScan/subscan_history.html:130 +msgid "View Results" +msgstr "Voir les résultats" + +#: startScan/templates/startScan/history.html:171 +msgid "Rescan" +msgstr "Réanalyser" + +#: startScan/templates/startScan/history.html:176 +msgid "Stop Scan" +msgstr "Arrêter l'analyse" + +#: startScan/templates/startScan/history.html:182 +msgid "Delete Scan Results" +msgstr "Supprimer les résultats de l'analyse" + +#: startScan/templates/startScan/history.html:188 +msgid "Scan Report" +msgstr "Rapport d'analyse" + +#: startScan/templates/startScan/history.html:207 +#: startScan/templates/startScan/history.html:226 +msgid "Download Report" +msgstr "Télécharger le rapport" + +#: startScan/templates/startScan/history.html:208 +msgid "Close" +msgstr "Fermer" + +#: startScan/templates/startScan/history.html:213 +msgid "Report alert message" +msgstr "Message d'alerte du rapport" + +#: startScan/templates/startScan/history.html:216 +msgid "Report Type" +msgstr "Type de rapport" + +#: startScan/templates/startScan/history.html:223 +msgid "Ignore Informational Vulnerabilities" +msgstr "Ignorer les vulnérabilités informationnelles" + +#: startScan/templates/startScan/history.html:227 +msgid "Preview Report" +msgstr "Aperçu du rapport" + +#: startScan/templates/startScan/schedule_scan_list.html:8 +msgid "Scheduled Scan" +msgstr "Scan planifié" + +#: startScan/templates/startScan/schedule_scan_list.html:16 +#: startScan/templates/startScan/schedule_scan_list.html:20 +msgid "Scheduled Scans" +msgstr "Scans planifiés" + +#: startScan/templates/startScan/schedule_scan_list.html:30 +msgid "Description" +msgstr "Description" + +#: startScan/templates/startScan/schedule_scan_list.html:31 +msgid "Frequency" +msgstr "Fréquence" + +#: startScan/templates/startScan/schedule_scan_list.html:32 +msgid "Last Run" +msgstr "Dernière exécution" + +#: startScan/templates/startScan/schedule_scan_list.html:33 +msgid "Run Count" +msgstr "Nombre de passes" + +#: startScan/templates/startScan/schedule_scan_list.html:34 +msgid "One Off Task" +msgstr "Tâche unique" + +#: startScan/templates/startScan/schedule_scan_list.html:35 +msgid "Enabled" +msgstr "Activé" + +#: startScan/templates/startScan/schedule_scan_list.html:47 +#, python-format +msgid "Will run %(interval)s" +msgstr "Sera exécuté %(interval)s" + +#: startScan/templates/startScan/schedule_scan_list.html:49 +#, python-format +msgid "Will run exactly at %(clocked_time)s UTC" +msgstr "Sera exécuté exactement à %(clocked_time)s UTC" + +#: startScan/templates/startScan/schedule_scan_list.html:70 +msgid "Delete Scheduled Task" +msgstr "Supprimer la tâche planifiée" + +#: startScan/templates/startScan/schedule_scan_ui.html:18 +#: startScan/templates/startScan/start_multiple_scan_ui.html:14 +#: startScan/templates/startScan/start_scan_ui.html:16 +msgid "Target" +msgstr "Cible" + +#: startScan/templates/startScan/schedule_scan_ui.html:20 +#, python-format +msgid "%(domain_name)s" +msgstr "%(domain_name)s" + +#: startScan/templates/startScan/schedule_scan_ui.html:24 +#, python-format +msgid "Scheduling scan for %(domain_name)s" +msgstr "Lancement du scan pour %(domain_name)s" + +#: startScan/templates/startScan/schedule_scan_ui.html:89 +#: startScan/templates/startScan/start_scan_ui.html:43 +msgid "Import/Ignore Subdomains" +msgstr "Importer/Ignorer les sous-domaines" + +#: startScan/templates/startScan/schedule_scan_ui.html:92 +#: startScan/templates/startScan/start_scan_ui.html:46 +msgid "Import Subdomains(Optional)" +msgstr "Importer des sous-domaines (Optionnel)" + +#: startScan/templates/startScan/schedule_scan_ui.html:93 +#: startScan/templates/startScan/schedule_scan_ui.html:103 +#: startScan/templates/startScan/start_scan_ui.html:47 +#: startScan/templates/startScan/start_scan_ui.html:57 +#, python-format +msgid "" +"You can import subdomains for %(domain_name)s using your private " +"recon tools." +msgstr "" +"Vous pouvez importer des sous-domaines pour %(domain_name)s en " +"utilisant vos outils de reconnaissance privés." + +#: startScan/templates/startScan/schedule_scan_ui.html:96 +#: startScan/templates/startScan/start_scan_ui.html:50 +#, python-format +msgid "" +"Separate the subdomains using new line. If the subdomain does not " +"belong to %(domain_name)s it will be skipped." +msgstr "" +"Séparez les sous-domaines en utilisant un saut de ligne. Si le sous-" +"domaine n'appartient pas à %(domain_name)s, il sera ignoré." + +#: startScan/templates/startScan/schedule_scan_ui.html:98 +#: startScan/templates/startScan/start_scan_ui.html:52 +msgid "Subdomains List" +msgstr "Liste des sous-domaines" + +#: startScan/templates/startScan/schedule_scan_ui.html:102 +#: startScan/templates/startScan/start_scan_ui.html:56 +msgid "Out of Scope Subdomains(Optional)" +msgstr "Sous-domaines hors périmètre (Optionnel)" + +#: startScan/templates/startScan/schedule_scan_ui.html:106 +#: startScan/templates/startScan/start_scan_ui.html:60 +msgid "" +"Separate the out of scope subdomains/keywords using new line.(No regex " +"currently supported.)" +msgstr "" +"Séparez les sous-domaines/mots-clés hors périmètre en utilisant un saut de " +"ligne. (Les expressions régulières ne sont actuellement pas prises en " +"charge.)" + +#: startScan/templates/startScan/schedule_scan_ui.html:108 +#: startScan/templates/startScan/start_scan_ui.html:62 +msgid "Out of Scope Subdomains List" +msgstr "Liste des sous-domaines hors périmètre" + +#: startScan/templates/startScan/start_multiple_scan_ui.html:15 +msgid "Initiate Multiple Scans" +msgstr "Lancer des analyses multiples" + +#: startScan/templates/startScan/start_multiple_scan_ui.html:19 +msgid "Initiate Scan for Multiple Targets" +msgstr "Lancer une analyse pour plusieurs cibles" + +#: startScan/templates/startScan/start_multiple_scan_ui.html:27 +#, python-format +msgid "Initiating multiple scan for %(domain_count)s targets:" +msgstr "Lancement d'une analyse multiple pour %(domain_count)s cibles :" + +#: startScan/templates/startScan/start_multiple_scan_ui.html:33 +msgid "Select the scan type" +msgstr "Sélectionnez le type d'analyse" + +#: startScan/templates/startScan/start_scan_ui.html:22 +#, python-format +msgid "Initiating scan for %(domain_name)s" +msgstr "Lancement de l'analyse pour %(domain_name)s" + +#: startScan/templates/startScan/start_scan_ui.html:70 +msgid "Filters (Optional)" +msgstr "Filtres (Optionnel)" + +#: startScan/templates/startScan/start_scan_ui.html:71 +#, python-format +msgid "You can filter on a specific path for %(domain_name)s." +msgstr "" +"Vous pouvez filtrer sur un chemin spécifique pour %(domain_name)s." + +#: startScan/templates/startScan/start_scan_ui.html:73 +msgid "Path filter" +msgstr "Filtre de chemin" + +#: startScan/templates/startScan/subdomains.html:8 +msgid "All subdomains" +msgstr "Tous les sous-domaines" + +#: startScan/templates/startScan/subdomains.html:134 +msgid "WAF Detected" +msgstr "WAF détecté" + +#: startScan/templates/startScan/subscan_history.html:8 +msgid "Subscan History" +msgstr "Historique des sous-analyses" + +#: startScan/templates/startScan/subscan_history.html:19 +msgid "SubScan History" +msgstr "Historique des sous-analyses" + +#: startScan/templates/startScan/subscan_history.html:64 +msgid "Delete Multiple SubScans" +msgstr "Supprimer plusieurs sous-analyses" + +#: startScan/templates/startScan/subscan_history.html:80 +#: startScan/templates/startScan/subscan_history.html:94 +msgid "Scanned Subdomain" +msgstr "Sous-domaine analysé" + +#: startScan/templates/startScan/subscan_history.html:81 +msgid "Task" +msgstr "Tâche" + +#: startScan/templates/startScan/subscan_history.html:82 +msgid "Engine" +msgstr "Moteur" + +#: startScan/templates/startScan/subscan_history.html:83 +msgid "Scan Started" +msgstr "Analyse démarrée" + +#: startScan/templates/startScan/subscan_history.html:98 +#, python-format +msgid "Domain %(domain_name)s belongs to organization %(organization_name)s" +msgstr "" +"Le domaine %(domain_name)s appartient à l'organisation %(organization_name)s" + +#: startScan/templates/startScan/subscan_history.html:101 +msgid "Recent Scan" +msgstr "Analyse récente" + +#: startScan/templates/startScan/subscan_history.html:138 +msgid "Stop Subscan" +msgstr "Arrêter la sous-analyse" + +#: startScan/templates/startScan/subscan_history.html:142 +msgid "Delete Subscan" +msgstr "Supprimer la sous-analyse" + +#: startScan/templates/startScan/vulnerabilities.html:8 +msgid "All Vulnerabilities" +msgstr "Toutes les vulnérabilités" + +#: startScan/views.py:295 +#, python-format +msgid "Scan Started for %(domainName)s" +msgstr "Scan démarré pour %(domainName)s" + +#: startScan/views.py:351 +msgid "Scan Started for multiple targets" +msgstr "Scan démarré pour plusieurs cibles" + +#: startScan/views.py:440 +msgid "Scan history successfully deleted!" +msgstr "Historique de scan supprimé avec succès!" + +#: startScan/views.py:447 startScan/views.py:604 +msgid "Oops! something went wrong!" +msgstr "Oups ! quelque chose s'est mal passé!" + +#: startScan/views.py:471 +msgid "Scan aborted" +msgstr "Scan annulé" + +#: startScan/views.py:476 +msgid "Scan successfully stopped!" +msgstr "Scan arrêté avec succès!" + +#: startScan/views.py:484 +#, python-format +msgid "Scan failed to stop ! Error: %(errMsg)s" +msgstr "Scan échoué à arrêter ! Erreur: %(errMsg)s" + +#: startScan/views.py:557 +#, python-format +msgid "Scan Scheduled for %(domainName)s" +msgstr "Scan planifié pour %(domainName)s" + +#: startScan/views.py:598 +msgid "Scheduled Scan successfully deleted!" +msgstr "Scan planifié supprimé avec succès!" + +#: startScan/views.py:655 +msgid "All Scan History successfully deleted!" +msgstr "Tout l'historique des scans supprimé avec succès!" + +#: startScan/views.py:667 +msgid "Screenshots successfully deleted!" +msgstr "Les captures d'écran ont été supprimées avec succès!" + +#: startScan/views.py:710 startScan/views.py:798 +#, python-format +msgid "Scan Started for %(domainCount)d domains in organization %(orgName)s" +msgstr "" +"Scan démarré pour %(domainCount)d domaines dans l'organisation %(orgName)s" + +#: startScan/views.py:828 +msgid "All Scans deleted!" +msgstr "Tout l'historique des scans supprimé avec succès!" + +#: startScan/views.py:852 +msgid "Reconnaissance Report" +msgstr "Rapport de reconnaissance" + +#: startScan/views.py:856 +msgid "Vulnerability Report" +msgstr "Rapport de vulnérabilité" + +#: startScan/views.py:861 +msgid "Full Scan Report" +msgstr "Rapport de scan complet" diff --git a/web/startScan/locale/fr/LC_MESSAGES/djangojs.mo b/web/startScan/locale/fr/LC_MESSAGES/djangojs.mo new file mode 100644 index 000000000..d2555f31a Binary files /dev/null and b/web/startScan/locale/fr/LC_MESSAGES/djangojs.mo differ diff --git a/web/startScan/locale/fr/LC_MESSAGES/djangojs.po b/web/startScan/locale/fr/LC_MESSAGES/djangojs.po new file mode 100644 index 000000000..d3f2b8baa --- /dev/null +++ b/web/startScan/locale/fr/LC_MESSAGES/djangojs.po @@ -0,0 +1,439 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-11 22:08+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: startScan/static/startScan/js/detail_scan.js:35 +msgid "CDN IP Address" +msgstr "Adresse IP du CDN" + +#: startScan/static/startScan/js/detail_scan.js:78 +msgid "Processing... Please wait..." +msgstr "Traitement en cours... Veuillez patienter..." + +#: startScan/static/startScan/js/detail_scan.js:79 +#: startScan/static/startScan/js/detail_scan.js:80 +msgid "No endpoint detected" +msgstr "Aucun point de terminaison détecté" + +#: startScan/static/startScan/js/detail_scan.js:119 +msgid "Web Server" +msgstr "Serveur Web" + +#: startScan/static/startScan/js/detail_scan.js:126 +msgid "Copy Url!" +msgstr "Copier l'URL !" + +#: startScan/static/startScan/js/detail_scan.js:287 +#: startScan/static/startScan/js/detail_scan.js:288 +msgid "No subdomain change" +msgstr "Aucune modification de sous-domaine" + +#: startScan/static/startScan/js/detail_scan.js:325 +msgid "CDN" +msgstr "CDN" + +#: startScan/static/startScan/js/detail_scan.js:329 +msgid "Interesting" +msgstr "Interessant" + +#: startScan/static/startScan/js/detail_scan.js:337 +msgid "CNAME" +msgstr "CNAME" + +#: startScan/static/startScan/js/detail_scan.js:373 +#: startScan/static/startScan/js/detail_scan.js:445 +msgid "Added" +msgstr "Ajouté" + +#: startScan/static/startScan/js/detail_scan.js:375 +#: startScan/static/startScan/js/detail_scan.js:447 +msgid "Removed" +msgstr "Supprimé" + +#: startScan/static/startScan/js/detail_scan.js:397 +#: startScan/static/startScan/js/detail_scan.js:398 +msgid "No endpoint change" +msgstr "Aucune modification de point de terminaison" + +#: startScan/static/startScan/js/detail_scan.js:467 +msgid "No Users discovered." +msgstr "Aucun utilisateur découvert." + +#: startScan/static/startScan/js/detail_scan.js:715 +msgid "Subdomain" +msgstr "Sous-domaine" + +#: startScan/static/startScan/js/detail_scan.js:866 +msgid "Informational" +msgstr "Informationnelle" + +#: startScan/static/startScan/js/detail_scan.js:869 +msgid "Low" +msgstr "Faible" + +#: startScan/static/startScan/js/detail_scan.js:872 +msgid "Medium" +msgstr "Modérée" + +#: startScan/static/startScan/js/detail_scan.js:875 +msgid "High" +msgstr "Élevée" + +#: startScan/static/startScan/js/detail_scan.js:878 +msgid "Critical" +msgstr "Critique" + +#: startScan/static/startScan/js/detail_scan.js:1093 +msgid "Todo Added." +msgstr "Tâche ajoutée" + +#: startScan/static/startScan/js/detail_scan.js:1099 +#: startScan/static/startScan/js/detail_scan.js:1154 +#: startScan/static/startScan/js/detail_scan.js:1250 +#: startScan/static/startScan/js/detail_scan.js:1256 +msgid "Okay" +msgstr "OK" + +#: startScan/static/startScan/js/detail_scan.js:1153 +msgid "Error!" +msgstr "Erreur !" + +#: startScan/static/startScan/js/detail_scan.js:1165 +msgid "Querying Subdomains..." +msgstr "Requête des sous-domaines..." + +#: startScan/static/startScan/js/detail_scan.js:1199 +#: startScan/static/startScan/js/detail_scan.js:1246 +#: startScan/static/startScan/js/detail_scan.js:1343 +#: startScan/static/startScan/js/detail_scan.js:1570 +msgid "Download Subdomains as txt" +msgstr "Télécharger les sous-domaines sous forme de txt" + +#: startScan/static/startScan/js/detail_scan.js:1200 +#: startScan/static/startScan/js/detail_scan.js:1247 +#: startScan/static/startScan/js/detail_scan.js:1344 +#: startScan/static/startScan/js/detail_scan.js:1401 +#: startScan/static/startScan/js/detail_scan.js:1571 +msgid "Copy Subdomains!" +msgstr "Copier les sous-domaines!" + +#: startScan/static/startScan/js/detail_scan.js:1200 +#: startScan/static/startScan/js/detail_scan.js:1247 +#: startScan/static/startScan/js/detail_scan.js:1344 +#: startScan/static/startScan/js/detail_scan.js:1571 +msgid "Copy Subdomains" +msgstr "Copier les sous-domaines" + +#: startScan/static/startScan/js/detail_scan.js:1202 +#: startScan/static/startScan/js/detail_scan.js:1207 +msgid "No Subdomains" +msgstr "Aucun sous-domaine" + +#: startScan/static/startScan/js/detail_scan.js:1202 +#: startScan/static/startScan/js/detail_scan.js:1207 +msgid "Could not find any subdomains." +msgstr "Impossible de trouver de sous-domaine." + +#: startScan/static/startScan/js/detail_scan.js:1215 +#: startScan/static/startScan/js/detail_scan.js:1311 +msgid "Querying Interesting Subdomains..." +msgstr "Requête des sous-domaines intéressants..." + +#: startScan/static/startScan/js/detail_scan.js:1249 +#: startScan/static/startScan/js/detail_scan.js:1255 +msgid "No Interesting Subdomains" +msgstr "Aucun sous-domaine intéressant" + +#: startScan/static/startScan/js/detail_scan.js:1249 +#: startScan/static/startScan/js/detail_scan.js:1255 +msgid "Could not find any interesting subdomains." +msgstr "Impossible de trouver de sous-domaine intéressant." + +#: startScan/static/startScan/js/detail_scan.js:1263 +msgid "Querying Interesting Endpoints..." +msgstr "Requête des points de terminaison intéressants..." + +#: startScan/static/startScan/js/detail_scan.js:1293 +#: startScan/static/startScan/js/detail_scan.js:1397 +#: startScan/static/startScan/js/detail_scan.js:1399 +msgid "Download Endpoints as txt" +msgstr "Télécharger les points de terminaison en txt" + +#: startScan/static/startScan/js/detail_scan.js:1294 +msgid "Copy Endpoints!" +msgstr "Copier les points de terminaison !" + +#: startScan/static/startScan/js/detail_scan.js:1294 +#: startScan/static/startScan/js/detail_scan.js:1401 +msgid "Copy Endpoints" +msgstr "Copier les points de terminaison" + +#: startScan/static/startScan/js/detail_scan.js:1296 +#: startScan/static/startScan/js/detail_scan.js:1302 +msgid "No Interesting Endpoints" +msgstr "Aucun point de terminaison intéressant" + +#: startScan/static/startScan/js/detail_scan.js:1296 +#: startScan/static/startScan/js/detail_scan.js:1302 +msgid "Could not find any interesting Endpoints." +msgstr "Impossible de trouver de point de terminaison intéressant." + +#: startScan/static/startScan/js/detail_scan.js:1346 +#: startScan/static/startScan/js/detail_scan.js:1351 +msgid "No Important Endpoints" +msgstr "Aucun point de terminaison" + +#: startScan/static/startScan/js/detail_scan.js:1346 +#: startScan/static/startScan/js/detail_scan.js:1351 +msgid "No subdomains has been marked as important." +msgstr "Aucun sous-domaine n'a été marqué comme important." + +#: startScan/static/startScan/js/detail_scan.js:1359 +msgid "Querying Endpoints..." +msgstr "Requête des points de terminaison..." + +#: startScan/static/startScan/js/detail_scan.js:1362 +msgid "Loading..." +msgstr "Chargement..." + +#: startScan/static/startScan/js/detail_scan.js:1418 +msgid "Oops!" +msgstr "Oups !" + +#: startScan/static/startScan/js/detail_scan.js:1419 +msgid "No subtasks selected. Please choose at least one subtask !" +msgstr "" +"Aucune sous-tâche sélectionnée. Veuillez choisir au moins une sous-tâche !" + +#: startScan/static/startScan/js/detail_scan.js:1430 +msgid "Initiating subtask..." +msgstr "Initialisation de la sous-tâche..." + +#: startScan/static/startScan/js/detail_scan.js:1448 +msgid "Subtask initiated successfully!" +msgstr "Sous-tâche initiée avec succès !" + +#: startScan/static/startScan/js/detail_scan.js:1454 +msgid "Could not initiate subtask!" +msgstr "Impossible d'initier la sous-tâche !" + +#: startScan/static/startScan/js/detail_scan.js:1528 +#: startScan/static/startScan/js/detail_scan.js:1587 +msgid "Oops! No Subdomains has been selected!" +msgstr "Oups ! Aucun sous-domaine n'a été sélectionné !" + +#: startScan/static/startScan/js/detail_scan.js:1534 +msgid "Querying Selected Subdomains..." +msgstr "Requête des sous-domaines sélectionnés..." + +#: startScan/static/startScan/js/detail_scan.js:1574 +msgid "Oops! Could not download selected subdomains." +msgstr "Oups ! Impossible de télécharger les sous-domaines sélectionnés." + +#: startScan/static/startScan/js/detail_scan.js:1596 +msgid "" +"Do you really want to delete these subdomains? This action cannot be undone." +msgstr "" +"Voulez-vous vraiment supprimer ces sous-domaines? Cette action ne peut pas " +"être annulée." + +#: startScan/static/startScan/js/detail_scan.js:1598 +msgid "Delete" +msgstr "Supprimer" + +#: startScan/static/startScan/js/detail_scan.js:1599 +#: startScan/static/startScan/js/detail_scan.js:1674 +msgid "Cancel" +msgstr "Annuler" + +#: startScan/static/startScan/js/detail_scan.js:1603 +msgid "Deleting Subdomain..." +msgstr "Suppression du sous-domaine..." + +#: startScan/static/startScan/js/detail_scan.js:1635 +msgid "Subdomain successfully deleted!" +msgstr "Sous-domaine supprimé avec succès!" + +#: startScan/static/startScan/js/detail_scan.js:1641 +msgid "Could not delete Subdomain!" +msgstr "Impossible de supprimer le sous-domaine!" + +#: startScan/static/startScan/js/detail_scan.js:1662 +msgid "" +"reNgine has earlier identified that this subdomain did not return any HTTP " +"status and likely the subdomain is not alive. reNgine may not be able to " +"detect any CMS, would you still like to continue?" +msgstr "" +"reNgine a déjà identifié que ce sous-domaine n'a pas retourné de statut HTTP " +"et probablement le sous-domaine n'est pas en ligne. reNgine ne pourra pas " +"détecter de CMS, voulez-vous toujours continuer?" + +#: startScan/static/startScan/js/detail_scan.js:1670 +#: startScan/static/startScan/js/detail_scan.js:1673 +msgid "Detect CMS" +msgstr "Détecter CMS" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:39 +#: startScan/static/startScan/js/subdomains-suggestions.js:43 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:43 +msgid "Equals" +msgstr "Égal à" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:39 +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:42 +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:45 +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:48 +#: startScan/static/startScan/js/subdomains-suggestions.js:43 +#: startScan/static/startScan/js/subdomains-suggestions.js:46 +#: startScan/static/startScan/js/subdomains-suggestions.js:49 +#: startScan/static/startScan/js/subdomains-suggestions.js:52 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:43 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:46 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:49 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:52 +msgid "Some Value" +msgstr "Un valeur" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:42 +#: startScan/static/startScan/js/subdomains-suggestions.js:46 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:46 +msgid "Not Equals" +msgstr "Pas égal à" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:45 +#: startScan/static/startScan/js/subdomains-suggestions.js:49 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:49 +msgid "Greater than" +msgstr "Plus que" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:48 +#: startScan/static/startScan/js/subdomains-suggestions.js:52 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:52 +msgid "Less than" +msgstr "Moins que" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:51 +#: startScan/static/startScan/js/subdomains-suggestions.js:55 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:55 +msgid "and" +msgstr "et" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:51 +msgid "" +"Match endpoint if all args " +"are true" +msgstr "" +"Sélectionner l'endpoint si touts les " +"arguments sont vrais" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:54 +#: startScan/static/startScan/js/subdomains-suggestions.js:58 +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:58 +msgid "or" +msgstr "ou" + +#: startScan/static/startScan/js/endpoint-datatables-suggestions.js:54 +msgid "" +"Match endpoint if either of one is true" +msgstr "" +"Sélectionner à l'endpoint si un des " +"arguments est vrai" + +#: startScan/static/startScan/js/subdomains-suggestions.js:55 +msgid "" +"Match subdomain if all args " +"are true" +msgstr "" +"Sélectionner le sous-domaine si tous " +"les arguments sont vrais" + +#: startScan/static/startScan/js/subdomains-suggestions.js:58 +msgid "" +"Match subdomain if either of one is true" +msgstr "" +"Sélectionner le sous-domaine si un " +"des arguments est vrai" + +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:55 +msgid "" +"Match vulnerability if all args are true" +msgstr "" +"Séléctionner la vulnérabilité si tous les arguments sont vrais" + +#: startScan/static/startScan/js/vulnerability-datatables-suggestions.js:58 +msgid "" +"Match vulnerability if either of " +"one is true" +msgstr "" +"Séléctinnner la vulnérabilité si un " +"des arguments est vrai" + +msgid "Showing page _PAGE_ of _PAGES_" +msgstr "Affichage de la page _PAGE_ sur _PAGES_" + +msgid "Results : _MENU_" +msgstr "Résultats : _MENU_" + +msgid "Search..." +msgstr "Rechercher..." + +# Embedded JS +msgid "Hackerone Configuration" +msgstr "Configuration Hackerone" + +msgid "Test my hackerone API Key" +msgstr "Tester ma clé API Hackerone" + +msgid "This will test if your hackerone API keys are working." +msgstr "Ceci va tester si vos clés API Hackerone fonctionnent." + +msgid "Your hackerone Credentials are working." +msgstr "Vos identifiants Hackerone fonctionnent." + +msgid "" +"Oops! Your hackerone Credentials are not working, check your username and/" +"or api_key." +msgstr "" +"Oups! Vos identifiants Hackerone ne fonctionnent pas, vérifiez votre nom " +"d'utilisateur et/ou votre clé API." + +msgid "Unable to get your public IP" +msgstr "Impossible de récupérer votre adresse IP publique" + +msgid "No vulnerability detected" +msgstr "Aucune vulnérabilité détectée" + +msgid "No subscan yet" +msgstr "Aucun sous-scan pour l'instant" + +msgid "No scan scheduled yet" +msgstr "Aucun scan planifié pour l'instant" + +msgid "No scan yet" +msgstr "Aucun scan pour l'instant" + +msgid "No directory detected" +msgstr "Aucun dossier détecté" + +msgid "No S3 Bucket detected" +msgstr "Aucun Bucket S3 détecté" diff --git a/web/startScan/models.py b/web/startScan/models.py index e1d9c57d2..00de4e225 100644 --- a/web/startScan/models.py +++ b/web/startScan/models.py @@ -3,6 +3,7 @@ from django.contrib.postgres.fields import ArrayField from django.db import models from django.utils import timezone +from django.utils.translation import gettext_lazy from reNgine.definitions import (CELERY_TASK_STATUSES, NUCLEI_REVERSE_SEVERITY_MAP) from reNgine.utilities import * @@ -159,18 +160,7 @@ def get_elapsed_time(self): return self.get_time_ago(self.start_scan_date) def get_time_ago(self, time): - duration = timezone.now() - time - days, seconds = duration.days, duration.seconds - hours = days * 24 + seconds // 3600 - minutes = (seconds % 3600) // 60 - seconds = seconds % 60 - if not hours and not minutes: - return f'{seconds} seconds' - elif not hours: - return f'{minutes} minutes' - elif not minutes: - return f'{hours} hours' - return f'{hours} hours {minutes} minutes' + return get_time_taken(timezone.now(), time) class Subdomain(models.Model): @@ -331,16 +321,16 @@ def get_elapsed_time(self): def get_task_name_str(self): taskmap = { - 'subdomain_discovery': 'Subdomain discovery', - 'dir_file_fuzz': 'Directory and File fuzzing', - 'port_scan': 'Port Scan', - 'fetch_url': 'Fetch URLs', - 'vulnerability_scan': 'Vulnerability Scan', - 'screenshot': 'Screenshot', - 'waf_detection': 'Waf Detection', - 'osint': 'Open-Source Intelligence' + 'subdomain_discovery': gettext_lazy('Subdomain discovery'), + 'dir_file_fuzz': gettext_lazy('Directory and File fuzzing'), + 'port_scan': gettext_lazy('Port Scan'), + 'fetch_url': gettext_lazy('Fetch URLs'), + 'vulnerability_scan': gettext_lazy('Vulnerability Scan'), + 'screenshot': gettext_lazy('Screenshot'), + 'waf_detection': gettext_lazy('Waf Detection'), + 'osint': gettext_lazy('Open-Source Intelligence') } - return taskmap.get(self.type, 'Unknown') + return taskmap.get(self.type, gettext_lazy('Unknown')) class EndPoint(models.Model): id = models.AutoField(primary_key=True) diff --git a/web/startScan/static/startScan/js/detail_scan.js b/web/startScan/static/startScan/js/detail_scan.js index 1e3314c6e..6893e01e0 100644 --- a/web/startScan/static/startScan/js/detail_scan.js +++ b/web/startScan/static/startScan/js/detail_scan.js @@ -1,1727 +1,1683 @@ -function get_ips_from_port(port_number, history_id){ - document.getElementById("detailScanModalLabel").innerHTML='IPs with port ' + port_number + ' OPEN'; - var ip_badge = ''; - fetch('../port/ip/'+port_number+'/'+history_id+'/') - .then(response => response.json()) - .then(data => render_ips(data)); -} - -function get_ports_for_ip(ip, history_id){ - console.log(ip, history_id); - document.getElementById("detailScanModalLabel").innerHTML='Open Ports identified for ' + ip; - var port_badge = ''; - fetch('../ip/ports/'+ip+'/'+history_id+'/') - .then(response => response.json()) - .then(data => render_ports(data)); -} - -function render_ports(data) -{ - var port_badge = '' - ip_address_content = document.getElementById("detailScanModalContent"); - Object.entries(JSON.parse(data)).forEach(([key, value]) => { - badge_color = value[3] ? 'danger' : 'info'; - title = value[3] ? 'Uncommon Port - ' + value[2] : value[2]; - port_badge += `${value[0]}/${value[1]}` - }); - ip_address_content.innerHTML = port_badge; - $('.bs-tooltip').tooltip(); -} - -function render_ips(data) -{ - var ip_badge = '' - content = document.getElementById("detailScanModalContent"); - Object.entries(JSON.parse(data)).forEach(([key, value]) => { - badge_color = value[1] ? 'warning' : 'info'; - title = value[1] ? 'CDN IP Address' : ''; - ip_badge += `${value[0]}` - }); - content.innerHTML = ip_badge; - $('.bs-tooltip').tooltip(); -} - - -function get_endpoints(project, scan_history_id=null, domain_id=null, gf_tags=null){ - var is_endpoint_grouping = false; - var endpoint_grouping_col = 6; - - var lookup_url = '/api/listEndpoints/?format=datatables&project=' + project; - - if (scan_history_id) { - lookup_url += `&scan_history=${scan_history_id}`; - } - else if (domain_id) { - lookup_url += `&target_id=${domain_id}`; - } - - if (gf_tags){ - lookup_url += `&gf_tag=${gf_tags}` - } - var endpoint_datatable_columns = [ - {'data': 'id'}, - {'data': 'http_url'}, - {'data': 'http_status'}, - {'data': 'page_title'}, - {'data': 'matched_gf_patterns'}, - {'data': 'content_type'}, - {'data': 'content_length', 'searchable': false}, - {'data': 'techs'}, - {'data': 'webserver'}, - {'data': 'response_time', 'searchable': false}, - ]; - var endpoint_table = $('#endpoint_results').DataTable({ - "destroy": true, - "processing": true, - "oLanguage": { - "oPaginate": { "sPrevious": '', "sNext": '' }, - "sInfo": "Showing page _PAGE_ of _PAGES_", - "sLengthMenu": "Results : _MENU_", - "sProcessing": "Processing... Please wait..." - }, - "dom": "<'dt--top-section'<'row'<'col-12 mb-3 mb-sm-0 col-sm-4 col-md-3 col-lg-4 d-flex justify-content-sm-start justify-content-center'l><'dt--pages-count col-12 col-sm-6 col-md-4 col-lg-4 d-flex justify-content-sm-middle justify-content-center'i><'dt--pagination col-12 col-sm-2 col-md-5 col-lg-4 d-flex justify-content-sm-end justify-content-center'p>>>" + - "<'table-responsive'tr>" + - "<'dt--bottom-section'<'row'<'col-12 mb-3 mb-sm-0 col-sm-4 col-md-3 col-lg-4 d-flex justify-content-sm-start justify-content-center'l><'dt--pages-count col-12 col-sm-6 col-md-4 col-lg-4 d-flex justify-content-sm-middle justify-content-center'i><'dt--pagination col-12 col-sm-2 col-md-5 col-lg-4 d-flex justify-content-sm-end justify-content-center'p>>>", - "stripeClasses": [], - "lengthMenu": [100, 200, 300, 500, 1000], - "pageLength": 100, - 'serverSide': true, - "ajax": { - 'url': lookup_url, - }, - "rowGroup": { - "startRender": function(rows, group) { - return group + ' (' + rows.count() + ' Endpoints)'; - } - }, - "order": [[ 6, "desc" ]], - "columns": endpoint_datatable_columns, - "columnDefs": [ - { - "targets": [ 0 ], - "visible": false, - "searchable": false, - }, - { - "targets": [ 7, 8 ], - "visible": false, - "searchable": true, - }, - { - "render": function ( data, type, row ) { - var tech_badge = ''; - var web_server = ''; - if (row['techs']){ - tech_badge = `
        ` + parse_technology(row['techs'], "primary", outline=true); - } - - if (row['webserver']) { - web_server = `${row['webserver']}`; - } - - var url = split_into_lines(data, 70); - var action_icons = ` -
        - - - - -
        - `; - tech_badge += web_server; - - return `
        ` + "`+ url +"" + tech_badge + "
        " + action_icons ; - }, - "targets": 1, - }, - { - "render": function ( data, type, row ) { - // display badge based on http status - // green for http status 2XX, orange for 3XX and warning for everything else - if (data) { - return get_http_status_badge(data); - } - return ''; - - }, - "targets": 2, - }, - { - "render": function ( data, type, row ) { - if (data){ - return parse_comma_values_into_span(data, "info"); - } - return ""; - }, - "targets": 8, - }, - { - "render": function ( data, type, row ) { - if (data){ - return parse_comma_values_into_span(data, "danger", outline=true); - } - return ""; - }, - "targets": 4, - }, - { - "render": function ( data, type, row ) { - if (data){ - return get_response_time_text(data); - } - return ""; - }, - "targets": 9, - }, - ], - "initComplete": function(settings, json) { - api = this.api(); - endpoint_datatable_col_visibility(endpoint_table); - $(".dtrg-group th:contains('No group')").remove(); - }, - "drawCallback": function () { - $("body").tooltip({ selector: '[data-toggle=tooltip]' }); - // $('.dataTables_wrapper table').removeClass('table-striped'); - $('.badge').tooltip({ template: '' }) - $('.dtrg-group').remove(); - $('.bs-tooltip').tooltip(); - var clipboard = new Clipboard('.copyable'); - $('.bs-tooltip').tooltip(); - clipboard.on('success', function(e) { - setTooltip(e.trigger, 'Copied!'); - hideTooltip(e.trigger); - }); - drawCallback_api = this.api(); - setTimeout(function() { - $(".dtrg-group th:contains('No group')").remove(); - }, 1); - } - }); - - var radioGroup = document.getElementsByName('grouping_endpoint_row'); - radioGroup.forEach(function(radioButton) { - radioButton.addEventListener('change', function() { - if (this.checked) { - var groupRows = document.querySelectorAll('tr.group'); - // Remove each group row - var col_index = get_datatable_col_index(this.value, endpoint_datatable_columns); - api.page.len(-1).draw(); - api.order([col_index, 'asc']).draw(); - endpoint_table.rowGroup().dataSrc(this.value); - Snackbar.show({ - text: 'Endpoints grouped by ' + this.value, - pos: 'top-right', - duration: 2500 - }); - } - }); - }); - - $('#endpoint-search-button').click(function () { - endpoint_table.search($('#endpoints-search').val()).draw() ; - }); - $('input[name=end_http_status_filter_checkbox]').change(function() { - if ($(this).is(':checked')) { - endpoint_table.column(2).visible(true); - } else { - endpoint_table.column(2).visible(false); - } - window.localStorage.setItem('end_http_status_filter_checkbox', $(this).is(':checked')); - }); - $('input[name=end_page_title_filter_checkbox]').change(function() { - if ($(this).is(':checked')) { - endpoint_table.column(3).visible(true); - } else { - endpoint_table.column(3).visible(false); - } - window.localStorage.setItem('end_page_title_filter_checkbox', $(this).is(':checked')); - }); - $('input[name=end_tags_filter_checkbox]').change(function() { - if ($(this).is(':checked')) { - endpoint_table.column(4).visible(true); - } else { - endpoint_table.column(4).visible(false); - } - window.localStorage.setItem('end_tags_filter_checkbox', $(this).is(':checked')); - }); - $('input[name=end_content_type_filter_checkbox]').change(function() { - if ($(this).is(':checked')) { - endpoint_table.column(5).visible(true); - } else { - endpoint_table.column(5).visible(false); - } - window.localStorage.setItem('end_content_type_filter_checkbox', $(this).is(':checked')); - }); - $('input[name=end_content_length_filter_checkbox]').change(function() { - if ($(this).is(':checked')) { - endpoint_table.column(6).visible(true); - } else { - endpoint_table.column(6).visible(false); - } - window.localStorage.setItem('end_content_length_filter_checkbox', $(this).is(':checked')); - }); - $('input[name=end_response_time_filter_checkbox]').change(function() { - if ($(this).is(':checked')) { - endpoint_table.column(9).visible(true); - } else { - endpoint_table.column(9).visible(false); - } - window.localStorage.setItem('end_response_time_filter_checkbox', $(this).is(':checked')); - }); -} - -function get_subdomain_changes(scan_history_id){ - $('#table-subdomain-changes').DataTable({ - "drawCallback": function(settings, start, end, max, total, pre) { - if (this.fnSettings().fnRecordsTotal() > 0) { - $('#subdomain_change_count').empty(); - $("#subdomain_change_count").html(`${this.fnSettings().fnRecordsTotal()}`); - $('.recon-changes-tab-show').removeAttr('style'); - $('#subdomain_changes_alert').html(`${this.fnSettings().fnRecordsTotal()} Subdomain changes.`) - } - else{ - $('#recon_changes_subdomain_div').remove(); - } - $("#subdomain-changes-loader").remove(); - }, - "oLanguage": { - "oPaginate": { "sPrevious": '', "sNext": '' }, - "sInfo": "Showing page _PAGE_ of _PAGES_", - "sSearch": '', - "sSearchPlaceholder": "Search...", - "sLengthMenu": "Results : _MENU_", - }, - "processing": true, - "dom": "<'dt--top-section'<'row'<'col-12 mb-3 mb-sm-0 col-sm-4 col-md-3 col-lg-4 d-flex justify-content-sm-start justify-content-center'l><'dt--pages-count col-12 col-sm-6 col-md-4 col-lg-4 d-flex justify-content-sm-middle justify-content-center'i><'dt--pagination col-12 col-sm-2 col-md-5 col-lg-4 d-flex justify-content-sm-end justify-content-center'p>>>" + - "<'table-responsive'tr>" + - "<'dt--bottom-section'<'row'<'col-12 mb-3 mb-sm-0 col-sm-4 col-md-3 col-lg-4 d-flex justify-content-sm-start justify-content-center'l><'dt--pages-count col-12 col-sm-6 col-md-4 col-lg-4 d-flex justify-content-sm-middle justify-content-center'i><'dt--pagination col-12 col-sm-2 col-md-5 col-lg-4 d-flex justify-content-sm-end justify-content-center'p>>>", - "destroy": true, - "stripeClasses": [], - 'serverSide': true, - "ajax": `/api/listSubdomainChanges/?scan_id=${scan_history_id}&format=datatables`, - "order": [[ 3, "desc" ]], - "columns": [ - {'data': 'name'}, - {'data': 'page_title'}, - {'data': 'http_status'}, - {'data': 'content_length'}, - {'data': 'change'}, - {'data': 'http_url'}, - {'data': 'is_cdn'}, - {'data': 'is_interesting'}, - ], - "bInfo": false, - "columnDefs": [ - { - "targets": [ 5, 6, 7 ], - "visible": false, - "searchable": false, - }, - {"className": "text-center", "targets": [ 2, 4 ]}, - { - "render": function ( data, type, row ) { - badges = ''; - cdn_badge = ''; - tech_badge = ''; - interesting_badge = ''; - if (row['is_cdn']) - { - cdn_badge = "CDN" - } - if(row['is_interesting']) - { - interesting_badge = "Interesting" - } - if(cdn_badge || interesting_badge) - { - badges = cdn_badge + interesting_badge + '
        '; - } - if (row['http_url']) { - if (row['cname']) { - return badges + ``+data+`
        CNAME
        ` + row['cname'].replace(',', '
        ')+`
        `; - } - return badges + ``+data+``; - } - return badges + ``+data+``; - }, - "targets": 0 - }, - { - "render": function ( data, type, row ) { - // display badge based on http status - // green for http status 2XX, orange for 3XX and warning for everything else - if (data >= 200 && data < 300) { - return ""+data+""; - } - else if (data >= 300 && data < 400) { - return ""+data+""; - } - else if (data == 0){ - // datatable throws error when no data is returned - return ""; - } - return ``+data+``; - }, - "targets": 2, - }, - { - "render": function ( data, type, row ) { - if (data){ - return `${data}`; - } - return ""; - }, - "targets": 3, - }, - { - "render": function ( data, type, row ) { - if (data == 'added'){ - return ` Added`; - } - else{ - return ` Removed`; - } - }, - "targets": 4, - }, - ], - }); -} - -function get_endpoint_changes(scan_history_id){ - $('#table-endpoint-changes').DataTable({ - "drawCallback": function(settings, start, end, max, total, pre) { - if (this.fnSettings().fnRecordsTotal() > 0) { - $("#endpoint_change_count").empty(); - $("#endpoint_change_count").html(`${this.fnSettings().fnRecordsTotal()}`); - $('.recon-changes-tab-show').removeAttr('style'); - } - else{ - $("#endpoint-changes-div").remove(); - } - $("#endpoint-changes-loader").remove(); - }, - "oLanguage": { - "oPaginate": { "sPrevious": '', "sNext": '' }, - "sInfo": "Showing page _PAGE_ of _PAGES_", - "sSearch": '', - "sSearchPlaceholder": "Search...", - "sLengthMenu": "Results : _MENU_", - }, - "processing": true, - "dom": "<'dt--top-section'<'row'<'col-12 mb-3 mb-sm-0 col-sm-4 col-md-3 col-lg-4 d-flex justify-content-sm-start justify-content-center'l><'dt--pages-count col-12 col-sm-6 col-md-4 col-lg-4 d-flex justify-content-sm-middle justify-content-center'i><'dt--pagination col-12 col-sm-2 col-md-5 col-lg-4 d-flex justify-content-sm-end justify-content-center'p>>>" + - "<'table-responsive'tr>" + - "<'dt--bottom-section'<'row'<'col-12 mb-3 mb-sm-0 col-sm-4 col-md-3 col-lg-4 d-flex justify-content-sm-start justify-content-center'l><'dt--pages-count col-12 col-sm-6 col-md-4 col-lg-4 d-flex justify-content-sm-middle justify-content-center'i><'dt--pagination col-12 col-sm-2 col-md-5 col-lg-4 d-flex justify-content-sm-end justify-content-center'p>>>", - "destroy": true, - "stripeClasses": [], - 'serverSide': true, - "ajax": `/api/listEndPointChanges/?scan_id=${scan_history_id}&format=datatables`, - "order": [[ 3, "desc" ]], - "columns": [ - {'data': 'http_url'}, - {'data': 'page_title'}, - {'data': 'http_status'}, - {'data': 'content_length'}, - {'data': 'change'}, - ], - "bInfo": false, - "columnDefs": [ - {"className": "text-center", "targets": [ 2 ]}, - { - "render": function ( data, type, row ) { - var url = split_into_lines(data, 70); - return ""+url+""; - }, - "targets": 0 - }, - { - "render": function ( data, type, row ) { - // display badge based on http status - // green for http status 2XX, orange for 3XX and warning for everything else - if (data >= 200 && data < 300) { - return ""+data+""; - } - else if (data >= 300 && data < 400) { - return ""+data+""; - } - else if (data == 0){ - // datatable throws error when no data is returned - return ""; - } - return ``+data+``; - }, - "targets": 2, - }, - { - "render": function ( data, type, row ) { - if (data == 'added'){ - return ` Added`; - } - else{ - return ` Removed`; - } - }, - "targets": 4, - }, - ], - }); -} - -function get_osint_users(scan_id){ - $.getJSON(`/api/queryOsintUsers/?scan_id=${scan_id}&format=json`, function(data) { - $('#osint-users-count').empty(); - for (var val in data['users']){ - user = data['users'][val] - $("#osint-users").append(`${user['author']}`); - } - $('#osint-users-count').html(`${data['users'].length}`); - $("body").tooltip({ selector: '[data-toggle=tooltip]' }); - }).fail(function(){ - $('#osint-users-count').empty(); - $("#osint-users").append(`

        No Users discovered.

        `); - }); -} - -function get_screenshot(scan_id){ - var port_array = []; - var service_array = []; - var tech_array = []; - var ip_array = []; - var gridzyElement = document.querySelector('.gridzy'); - gridzyElement.classList.add('gridzySkinBlank'); - gridzyElement.setAttribute('data-gridzy-layout', 'waterfall'); - gridzyElement.setAttribute('data-gridzy-spaceBetween', 10); - gridzyElement.setAttribute('data-gridzy-desiredwidth', 350); - gridzyElement.setAttribute('data-gridzySearchField', "#screenshot-search"); - var interesting_badge = `Interesting`; - $.getJSON(`/api/listSubdomains/?scan_id=${scan_id}&no_page&only_screenshot`, function(data) { - $("#screenshot-loader").remove(); - $("#filter-screenshot").show(); - for (var subdomain in data) { - var figure = document.createElement('figure'); - var link = document.createElement('a'); - // return ``; - // currently lookup is supported only for http_status, page title & subdomain name, - interesting_field = data[subdomain]['is_interesting'] ? 'interesting' : ''; - var ips = data[subdomain]['ip_addresses']; - var ip_search_values = ''; - for(var ip in ips){ - ip_address = ips[ip]['address']; - ip_search_values += ip_address + ' '; - } - search_field = `${data[subdomain]['page_title']} ${data[subdomain]['name']} ${data[subdomain]['http_status']} ${ip_search_values} ${interesting_field}`; - link.setAttribute('data-lightbox', 'screenshot-gallery') - link.setAttribute('href', '/media/' + data[subdomain]['screenshot_path']) - link.setAttribute('data-title', `

        `+data[subdomain]['name']+`

        `); - link.classList.add('img-fluid'); - link.classList.add('rounded'); - link.classList.add('screenshot-gallery'); - link.classList.add('mb-4'); - link.classList.add('mt-4'); - link.setAttribute('data-gridzySearchText', search_field); - var newImage = document.createElement('img'); - newImage.setAttribute('data-gridzylazysrc', '/media/' + data[subdomain]['screenshot_path']); - // newImage.setAttribute('data-gridzylazysrc', 'https://placeimg.com/1440/900/any?' + subdomain); - newImage.setAttribute('height', 500); - newImage.setAttribute('width', 500); - newImage.setAttribute('class', 'gridzyImage'); - var figcaption = document.createElement('figcaption'); - figcaption.setAttribute('class', 'gridzyCaption'); - http_status_badge = 'danger'; - if (data[subdomain]['http_status'] >=200 && data[subdomain]['http_status'] < 300){ - http_status_badge = 'success'; - } - else if (data[subdomain]['http_status'] >=300 && data[subdomain]['http_status'] < 400){ - http_status_badge = 'warning'; - } - page_title = data[subdomain]['page_title'] ? data[subdomain]['page_title'] + '
        ': '' ; - subdomain_link = data[subdomain]['http_url'] ? `${data[subdomain]['name']}` : `${data[subdomain]['name']}` - http_status = data[subdomain]['http_status'] ? `${data[subdomain]['http_status']}` : ''; - figcaption.innerHTML = data[subdomain]['is_interesting'] ? page_title + subdomain_link + interesting_badge + http_status : page_title + subdomain_link + http_status; - figure.appendChild(figcaption); - link.appendChild(newImage); - link.appendChild(figure); - gridzyElement.appendChild(link); - - // add http status to filter values - filter_values = 'http_' + data[subdomain]['http_status'] + ' '; - - // dynamic filtering menu - http_status = data[subdomain]['http_status']; - http_status_select = document.getElementById('http_select_filter'); - if(!$('#http_select_filter').find("option:contains('" + http_status + "')").length){ - var option = document.createElement('option'); - option.value = ".http_" + http_status; - option.innerHTML = http_status; - http_status_select.appendChild(option); - } - - // ip, port and services filtering - ips = data[subdomain]['ip_addresses'] - for(var ip in ips){ - ip_address = ips[ip]['address']; - filter_values += 'ip_' + ip_address.replace(/\./g,"_") + ' '; - if (ip_array.indexOf(ip_address) === -1){ - ip_array.push(ip_address); - } - - ports = ips[ip]['ports']; - for(var port in ports){ - port_number = ips[ip]['ports'][port]['number']; - service_name = ips[ip]['ports'][port]['service_name']; - - filter_values += 'port_' + port_number + ' '; - if (port_array.indexOf(port_number) === -1){ - port_array.push(port_number); - } - - filter_values += 'service_' + service_name + ' '; - if (service_array.indexOf(service_name) === -1){ - service_array.push(service_name); - } - } - } - - // technology stack filtering - technology = data[subdomain]['technologies']; - for(var tech in technology){ - tech_name = technology[tech]['name'] - filter_values += 'tech_' + tech_name.replace(/ /g,"_").toLowerCase() + ' '; - if (tech_array.indexOf(tech_name) === -1){ - tech_array.push(tech_name); - } - - } - - link.setAttribute('class', filter_values); - } - - // add port and service and tech to options - port_select = document.getElementById('ports_select_filter'); - if (port_select) { - port_array.sort((a, b) => a - b); - for(var port in port_array){ - if(!$('#ports_select_filter').find("option:contains('" + port_array[port] + "')").length){ - var option = document.createElement('option'); - option.value = ".port_" + port_array[port]; - option.innerHTML = port_array[port]; - port_select.appendChild(option); - } - } - } - - // add ip to select - ip_select = document.getElementById('ips_select_filter'); - for(var ip in ip_array){ - if(!$('#ips_select_filter').find("option:contains('" + ip_array[ip] + "')").length){ - var option = document.createElement('option'); - option.value = ".ip_" + ip_array[ip]; - option.innerHTML = ip_array[ip]; - ip_select.appendChild(option); - } - } - - service_array.sort(); - service_select = document.getElementById('services_select_filter'); - if (service_select) { - for(var service in service_array){ - if(!$('#services_select_filter').find("option:contains('" + service_array[service] + "')").length){ - var option = document.createElement('option'); - option.value = ".service_" + service_array[service]; - option.innerHTML = service_array[service]; - service_select.appendChild(option); - } - } - } - - tech_select = document.getElementById('tech_select_filter'); - for(var tech in tech_array){ - if(!$('#tech_select_filter').find("option:contains('" + tech_array[tech] + "')").length){ - var option = document.createElement('option'); - option.value = ".tech_" + tech_array[tech].replace(/ /g,"_").toLowerCase(); - option.innerHTML = tech_array[tech]; - tech_select.appendChild(option); - } - } - - $(".tagging").select2({ - tags: true - }); - // search functionality - var gridzyElements = document.querySelectorAll('.gridzySkinBlank[data-gridzySearchField]'), - pos = gridzyElements.length; - - while (pos--) { - (function(gridzyElement) { - var searchField = document.querySelector(gridzyElement.getAttribute('data-gridzySearchField')); - var gridzyInstance = gridzyElement.gridzy; - var gridzyItems = gridzyElement.children; - - if (searchField) { - searchField.addEventListener('input', search); - } - - function search() { - var pos = gridzyItems.length, - child, - itemContent, - found = false, - searchValue = searchField.value.toLowerCase(); - - if (searchValue) { - while (pos--) { - child = gridzyItems[pos]; - itemContent = (child.getAttribute('data-gridzySearchText') || child.innerText).toLowerCase(); - found = -1 < itemContent.search(searchValue); - child.classList[found ? 'add' : 'remove']('searchResult'); - } - if (gridzyInstance.getOption('filter') !== '.searchResult') { - gridzyInstance.setOptions({filter:'.searchResult'}); - } - } else { - while (pos--) { - gridzyItems[pos].classList.remove('searchResult'); - } - if (gridzyInstance.getOption('filter') !== Gridzy.getDefaultOption('filter')) { - gridzyInstance.setOptions({filter:null}); - } - } - } - })(gridzyElements[pos]); - } - - //filter functionality - var gridzyInstance = document.querySelector('.gridzySkinBlank').gridzy; - $('#http_select_filter, #ips_select_filter, #services_select_filter, #ports_select_filter, #tech_select_filter').on('change', function() { - values = $(this).val(); - console.log(values); - if(values.length && this.id == 'ips_select_filter'){ - var replaces_str = values.map(function(values){return values.replace(/(?<=\..*)\./g, '_');}); - console.log(replaces_str); - gridzyInstance.setOptions({ - filter: replaces_str - }); - } - else if(values.length && this.id != 'ips_select_filter'){ - gridzyInstance.setOptions({ - filter: values - }); - } - else{ - gridzyInstance.setOptions({ - filter: '*' - }); - } - }); - }); -} - -function get_metadata(scan_id){ - // populate detail table - $.getJSON(`/api/queryMetadata/?scan_id=${scan_id}&format=json`, function(data) { - $('#metadata-count').empty(); - $('#metadata-table-body').empty(); - for (var val in data['metadata']){ - doc = data['metadata'][val]; - rand_id = get_randid(); - $('#metadata-table-body').append(`
        ${filename}
        ${subdomain}
        ${doc['author']} ${metadata}
        ${email['address']}${email['password']}
        ${emp['name']}${emp['designation']}
        ${filename}
        ${subdomain}
        ${doc['author']} ${metadata}
        ${email['address']}${email['password']}
        ${emp['name']}${emp['designation']}
        -

        Subdomain Discovery +

        {% translate "Subdomain Discovery" %}

        {% if 'subdomain_discovery' in engine.tasks %} @@ -34,7 +35,7 @@

        -

        WAF Detection +

        {% translate "WAF Detection" %}

        {% if 'waf_detection' in engine.tasks %} @@ -46,7 +47,7 @@

        -

        Screenshot +

        {% translate "Screenshot" %}

        {% if 'screenshot' in engine.tasks %} @@ -58,7 +59,7 @@

        -

        OSINT +

        {% translate "OSINT" %}

        {% if 'osint' in engine.tasks %} @@ -70,7 +71,7 @@

        -

        Port Scan

        +

        {% translate "Port Scan" %}

        {% if 'port_scan' in engine.tasks%} @@ -82,7 +83,7 @@

        -

        Directory and Files Search

        +

        {% translate "Directory and Files Search" %}

        {% if 'dir_file_fuzz' in engine.tasks %} @@ -94,7 +95,7 @@

        -

        Fetch Endpoints(URLs)

        +

        {% translate "Fetch Endpoints(URLs)" %}

        {% if 'fetch_url' in engine.tasks %} @@ -106,7 +107,7 @@

        -

        Vulnerability Scan

        +

        {% translate "Vulnerability Scan" %}

        {% if 'vulnerability_scan' in engine.tasks %} @@ -119,7 +120,7 @@

        diff --git a/web/startScan/templates/startScan/detail_scan.html b/web/startScan/templates/startScan/detail_scan.html index b24d1bb86..c58dc12c6 100644 --- a/web/startScan/templates/startScan/detail_scan.html +++ b/web/startScan/templates/startScan/detail_scan.html @@ -1,10 +1,11 @@ {% extends 'base/base.html' %} +{% load i18n %} {% load static %} {% load humanize %} {% load custom_tags %} {% load mathfilters %} {% block title %} -Detailed Scan +{% translate "Detailed Scan" %} {% endblock title %} {% block custom_js_css_link %} @@ -22,13 +23,13 @@ {% endblock custom_js_css_link %} {% block breadcrumb_title %} - - + + {% endblock breadcrumb_title %} {% block page_title %} -Scan Findings +{% translate "Scan Findings" %} {% endblock page_title %} {% block main_content %} @@ -38,36 +39,36 @@
        @@ -104,27 +105,27 @@
        - Scan Status for {{history.domain.name}} + {% translate "Scan Status for" %} {{history.domain.name}}

        {% if history.scan_status == -1 %} - Pending + {% translate "Pending" %} {% elif history.scan_status == 0 %} - Failed + {% translate "Failed" %} {% elif history.scan_status == 1 %} - In Progress + {% translate "In Progress" %} {% elif history.scan_status == 2 %} - Completed + {% translate "Completed" %} {% elif history.scan_status == 3 %} - Aborted + {% translate "Aborted" %} {% else %} - Unknown + {% translate "Unknown" %} {% endif %}

        @@ -133,42 +134,42 @@
        {% if history.scan_status == 0 %} {% if history.error_message %} -

        Scan failed due to ERROR: {{history.error_message}}

        +

        {% translate "Scan failed due to ERROR:" %} {{history.error_message}}

        {% endif %} {% endif %} -
        Scan Logs
        - Logs -
        Scan Engine
        +
        {% translate "Scan Logs" %}
        + {% translate "Logs" %} +
        {% translate "Scan Engine" %}
        {{history.scan_type.engine_name}} -
        Scan Duration
        +
        {% translate "Scan Duration" %}
        {% if history.scan_status == -1 %} -

        Scan not yet started.

        +

        {% translate "Scan not yet started." %}

        {% elif history.scan_status == 0 %} {{ history.start_scan_date|timesince:history.stop_scan_date }} {% elif history.scan_status == 1 %} {{ history.get_elapsed_time }} {% elif history.scan_status == 2 %} {% if history.get_total_scan_time_in_sec < 60 %} - Completed in < 1 minutes + {% translate "Completed in < 1 minutes" %} {% else %} - Completed in {{ history.start_scan_date|timesince:history.stop_scan_date }} + {% translate "Completed in" %} {{ history.start_scan_date|timesince:history.stop_scan_date }} {% endif %} {% elif history.scan_status == 3 %} - Aborted in {{ history.start_scan_date|timesince:history.stop_scan_date }} + {% translate "Aborted in" %} {{ history.start_scan_date|timesince:history.stop_scan_date }} {% endif %} -

        Scan Progress

        +

        {% translate "Scan Progress" %}

        {% if history.scan_status == -1 %}
        @@ -194,13 +195,13 @@

        Scan Progress

        {% if history.domain.get_organization %} -

        Tagged to Organization

        +

        {% translate "Tagged to Organization" %}

        {% for organization in history.domain.get_organization %} - {{ organization.name }} + {{ organization.name }} {% endfor %} {% endif %} -
        Scan Timeline
        +
        {% translate "Scan Timeline" %}
          @@ -208,17 +209,15 @@
          Scan Timeline
        • {{activity.title}} - {% if activity.status == 0 %}Failed - {% elif activity.status == 1 %}In progress - {% elif activity.status == 2 %}Completed + {% if activity.status == 0 %}{% translate "Failed" %} + {% elif activity.status == 1 %}{% translate "In progress" %} + {% elif activity.status == 2 %}{% translate "Completed" %} {% endif %}

          {{activity.time|naturaltime}}
          {{activity.time}}

          - {% if activity.status == 0 %} - {% if activity.error_message %} -

          Error: {{activity.error_message}}

          - {% endif %} + {% if activity.status == 0 and activity.error_message %} +

          {% blocktranslate with errorMsg=activity.error_message %}Error: {{errorMsg}}{% endblocktranslate %}

          {% endif %} Logs
        • @@ -233,7 +232,7 @@
          {{activity.title}}
          - Recent Scans for {{history.domain.name}} + {% translate "Recent Scans for" %} {{history.domain.name}}
            @@ -243,41 +242,38 @@
            {% if history.id == scan.id %} - Current Scan {% endif %} {{scan.scan_type.engine_name}} {% if scan.scan_status == -1 %} - Pending + {% translate "Pending" %} {% elif scan.scan_status == 0 %} - Failed + {% translate "Failed" %} {% elif scan.scan_status == 1 %} - Scanning + {% translate "Scanning" %} {% elif scan.scan_status == 2 %} - Completed + {% translate "Completed" %} {% elif scan.scan_status == 3 %} - Aborted + {% translate "Aborted" %} {% else %} - Unknown + {% translate "Unknown" %} {% endif %}

            {{scan.start_scan_date|naturaltime}}
            {{scan.start_scan_date}}

            - {{scan.get_subdomain_count}} Subdomains Discovered + {% blocktranslate with subdomainCount=scan.get_subdomain_count %}{{subdomainCount}} Subdomains Discovered{% endblocktranslate %} {% with next_element=most_recent_scans|next:forloop.counter0 %} {% if next_element.get_subdomain_count and scan.get_subdomain_count and next_element.get_subdomain_count > scan.get_subdomain_count %} - {{scan.get_subdomain_count|sub:next_element.get_subdomain_count}} Subdomains + {% blocktranslate with diff_count=scan.get_subdomain_count|sub:next_element.get_subdomain_count %}{{diff_count}} Subdomains{% endblocktranslate %} {% elif next_element.get_subdomain_count and scan.get_subdomain_count and next_element.get_subdomain_count < scan.get_subdomain_count %} - {{scan.get_subdomain_count|sub:next_element.get_subdomain_count}} Subdomains + {% blocktranslate with diff_count=scan.get_subdomain_count|sub:next_element.get_subdomain_count %}{{diff_count}} Subdomains{% endblocktranslate %} {% endif %} {% endwith %}

            - {% if scan.scan_status == 0 %} - {% if scan.error_message %} -

            ERROR: {{scan.error_message}}

            - {% endif %} + {% if scan.scan_status == 0 and scan.error_message %} +

            {% blocktranslate with scanErrorMessage=scan.error_message %}ERROR: {{scanErrorMessage}}{% endblocktranslate %}

            {% endif %} @@ -293,7 +289,7 @@
            - Sub Scan History for {{history.domain.name}} + {% translate "Sub Scan History for" %} {{history.domain.name}}
            @@ -309,11 +305,11 @@
            - -

            Subdomains Discovered

            + +

            {% translate "Subdomains Discovered" %}

            {{subdomain_count|intcomma}}


            -

            Alive Subdomains: {{alive_count}}

            +

            {% translate "Alive Subdomains" %}: {{alive_count}}

            @@ -321,11 +317,11 @@

            {{subdom
            - -

            Endpoints Discovered

            + +

            {% translate "Endpoints Discovered" %}

            {{endpoint_count|intcomma}}


            -

            Alive Endpoints: {{endpoint_alive_count}}

            +

            {% translate "Alive Endpoints" %}: {{endpoint_alive_count}}

            @@ -333,17 +329,17 @@

            {{endpoi
            - -

            Vulnerabilities Discovered

            + +

            {% translate "Vulnerabilities Discovered" %}

            {{total_vulnerability_count|intcomma}}

            {% if total_vulnerability_count > 0 %}

            - {{critical_count}} Critical, {{high_count}} High, {{medium_count}} Medium + {{critical_count}} {% translate "Critical" %}, {{high_count}} {% translate "High" %}, {{medium_count}} {% translate "Medium" %}
            - {{low_count}} Low, {{info_count}} Info, and {{unknown_count}} Unknown Vulnerabilities + {{low_count}} {% translate "Low" %}, {{info_count}} {% translate "Info" %}{% translate ", and"%} {{unknown_count}} {% translate "Unknown Vulnerabilities" %}>

            {% else %} -

            No vulnerabilities found.

            +

            {% translate "No vulnerabilities found." %}


            {% endif %}
            @@ -353,16 +349,16 @@

            {{total_v
            - -

            OSINT

            + +

            {% translate "OSINT" %}

            {% if 'osint' in history.tasks %} -
            {{exposed_count}} Exposed Credentials
            -

            {{email_count}} Email Address Discovered

            -

            {{employees_count}} Employees Found

            +
            {{exposed_count}} {% translate "Exposed Credentials" %}
            +

            {{email_count}} {% translate "Email Address Discovered" %}

            +

            {{employees_count}} {% translate "Employees Found" %}


            {% else %}
             
            -

            OSINT hasn't been performed.

            +

            {% translate "OSINT hasn't been performed." %}

             



            @@ -373,20 +369,20 @@
             
            {% if history.domain.domain_info.related_domains.all %} {% endif %} @@ -394,7 +390,7 @@
             
            {% endif %} @@ -402,7 +398,7 @@
             
            {% endif %} @@ -410,25 +406,25 @@
             
            - +
            -

             Target Information

            +

             {% translate "Target Information" %}

         CountryAssets{% translate "Country" %}{% translate "Assets" %}
        NameRegionProviderOwnerObjects CountBucket SizeAuth Users PermissionAll Users Permission{% translate "Name" %}{% translate "Region" %}{% translate "Provider" %}{% translate "Owner" %}{% translate "Objects Count" %}{% translate "Bucket Size" %}{% translate "Auth Users Permission" %}{% translate "All Users Permission" %}
        {{bucket.num_objects}} {{bucket.size}}
          - {% if bucket.perm_auth_users_read == 1 %}
        • READ
        • {% endif %} - {% if bucket.perm_auth_users_write == 1 %}
        • WRITE
        • {% endif %} - {% if bucket.perm_auth_users_read_acl == 1 %}
        • Read_ACP
        • {% endif %} - {% if bucket.perm_auth_users_write_acl == 1 %}
        • WRITE_ACP
        • {% endif %} - {% if bucket.perm_auth_users_full_control == 1 %}
        • FULL_CONTROL
        • {% endif %} + {% if bucket.perm_auth_users_read == 1 %}
        • {% translate "READ" %}
        • {% endif %} + {% if bucket.perm_auth_users_write == 1 %}
        • {% translate "WRITE" %}
        • {% endif %} + {% if bucket.perm_auth_users_read_acl == 1 %}
        • {% translate "Read_ACP" %}
        • {% endif %} + {% if bucket.perm_auth_users_write_acl == 1 %}
        • {% translate "WRITE_ACP" %}
        • {% endif %} + {% if bucket.perm_auth_users_full_control == 1 %}
        • {% translate "FULL_CONTROL" %}
        • {% endif %}
          - {% if bucket.perm_all_users_read == 1 %}
        • READ
        • {% endif %} - {% if bucket.perm_all_users_write == 1 %}
        • WRITE
        • {% endif %} - {% if bucket.perm_all_users_read_acl == 1 %}
        • Read_ACP
        • {% endif %} - {% if bucket.perm_all_users_write_acl == 1 %}
        • WRITE_ACP
        • {% endif %} - {% if bucket.perm_all_users_full_control == 1 %}
        • FULL_CONTROL
        • {% endif %} + {% if bucket.perm_all_users_read == 1 %}
        • {% translate "READ" %}
        • {% endif %} + {% if bucket.perm_all_users_write == 1 %}
        • {% translate "WRITE" %}
        • {% endif %} + {% if bucket.perm_all_users_read_acl == 1 %}
        • {% translate "Read_ACP" %}
        • {% endif %} + {% if bucket.perm_all_users_write_acl == 1 %}
        • {% translate "WRITE_ACP" %}
        • {% endif %} + {% if bucket.perm_all_users_full_control == 1 %}
        • {% translate "FULL_CONTROL" %}
        • {% endif %}
        - - - - - - - + + + + + + +
        StatusSubdomainStatusPage TitleDirectoriesHTTP URLIs Intereting{% translate "Status" %}{% translate "Subdomain" %}{% translate "Status" %}{% translate "Page Title" %}{% translate "Directories" %}{% translate "HTTP URL" %}{% translate "Is Intereting" %}
        @@ -1090,7 +1087,7 @@
        Loading Screenshots...
        -

        Dorking Results

        +

        {% translate "Dorking Results" %}

        -

        Interesting Endpoints

        +

        {% translate "Interesting Endpoints" %}

        - - - - + + + +
        URLTitleHTTP StatusContent Length{% translate "URL" %}{% translate "Title" %}{% translate "HTTP Status" %}{% translate "Content Length" %}
        @@ -1294,15 +1291,15 @@

        -

        Subdomain Changes

        +

        {% translate "Subdomain Changes" %}

        - - - - - + + + + +
        SubdomainPage TitleStatusContent LengthChange{% translate "Subdomain" %}{% translate "Page Title" %}{% translate "Status" %}{% translate "Content Length" %}{% translate "Change" %}
        @@ -1312,15 +1309,15 @@

        -

        Endpoint Changes

        +

        {% translate "Endpoint Changes" %}

        - - - - - + + + + +
        SubdomainPage TitleStatusContent LengthChange{% translate "Subdomain" %}{% translate "Page Title" %}{% translate "Status" %}{% translate "Content Length" %}{% translate "Change" %}
        @@ -1399,7 +1396,7 @@

        ', "sNext": '' }, - "sInfo": "Showing page _PAGE_ of _PAGES_", - "sSearch": '', - "sSearchPlaceholder": "Search...", - "sLengthMenu": "Results : _MENU_", + "language": { + "zeroRecords": gettext("No vulnerability detected"), + "infoEmpty": gettext("No vulnerability detected") }, "processing": true, "dom": "<'dt--top-section'<'row'<'col-12 mb-3 mb-sm-0 col-sm-4 col-md-3 col-lg-4 d-flex justify-content-sm-start justify-content-center'l><'dt--pages-count col-12 col-sm-6 col-md-4 col-lg-4 d-flex justify-content-sm-middle justify-content-center'i><'dt--pagination col-12 col-sm-2 col-md-5 col-lg-4 d-flex justify-content-sm-end justify-content-center'p>>>" + @@ -1566,7 +1567,7 @@

        ${tag.name}`; + tags += `${tag.name}`; }); tags += '

        '; } if (row['cvss_metrics']) { - cvss_metrics_badge = `
        ${row['cvss_metrics']}
        `; + cvss_metrics_badge = `
        ${row['cvss_metrics']}
        `; } if (row['cve_ids'] || row['cwe_ids']) { cve_cwe_badge += '
        '; } if (row['cve_ids']) { row['cve_ids'].forEach(cve => { - cve_cwe_badge += `${cve.name.toUpperCase()}`; + cve_cwe_badge += `${cve.name.toUpperCase()}`; }); } if (row['cwe_ids']) { row['cwe_ids'].forEach(cwe => { - cve_cwe_badge += `${cwe.name.toUpperCase()}`; + cve_cwe_badge += `${cwe.name.toUpperCase()}`; }); } // if (cve_cwe_badge != "") { // cve_cwe_badge // } - hackerone_report = row['hackerone_report_id'] ? `` : ""; + hackerone_report = row['hackerone_report_id'] ? `` : ""; return `` + data + `` + cvss_metrics_badge + cve_cwe_badge + tags + hackerone_report; }, "targets": 3, @@ -1695,7 +1696,7 @@

        ${data}`; + return `${data}`; } return ''; }, @@ -1713,10 +1714,10 @@

          OPEN  ' + return '  ' + gettext("OPEN") + '  ' } else{ - return '  RESOLVED  ' + return '  ' + gettext('RESOLVED') + '  ' } }, "targets": 15, @@ -1730,9 +1731,9 @@

        `; } @@ -1774,7 +1775,7 @@

        ', "sNext": '' }, - "sInfo": "Showing page _PAGE_ of _PAGES_", - "sSearch": '', - "sSearchPlaceholder": "Search...", - "sLengthMenu": "Results : _MENU_", + "language": { + "zeroRecords": gettext("No directory detected"), + "infoEmpty": gettext("No directory detected"), }, "processing": true, "stripeClasses": [], @@ -1880,7 +1878,7 @@

        Interesting`; + interesting_badge = `` + gettext("Interesting") + ``; } return ``+data+``+interesting_badge+`
        `; } @@ -1922,7 +1920,7 @@

        Directory Scan has been performed ${data.length} times.

        `; + html_treeview += `

        ` + interpolate("Directory Scan has been performed %(nbDirScan)s times", {nbDirScan: data.length}, true) + `

        `; } html_treeview += `
          `; var item_pos = 0; @@ -1934,45 +1932,45 @@

          No Directories Discovered during the Scan Performed on ${item.scanned_date}`; + html_treeview += `
        • ` + interpolate("No Directories Discovered during the Scan Performed on %(dateScan)s", {dateScan: item.scanned_date}, true) + `
        • `; html_treeview += `
          `; } else{ - html_treeview += `
        • ${item['directory_files'].length} found on ${item.scanned_date}
        • `; + html_treeview += `
        • ${item['directory_files'].length} ` + interpolate("found on %(scanDate)s", {scanDate: item.scanned_date}) + `
        • `; html_treeview += `
          `; var interesting_badge = ''; // console.log(item['directory_files'][i]['name']); item['directory_files'].forEach(function(file){ interesting_keywords_array.forEach(function(keyword){ if (file.name.includes(keyword)) { - interesting_badge = 'Interesting'; + interesting_badge = '' + gettext("Interesting") + ''; return; } }); // console.log(file); var http_status_badge = ''; if (file.http_status >= 200 && file.http_status < 300) { - http_status_badge = ``+file.http_status+``; + http_status_badge = ``+file.http_status+``; } else if (file.http_status >= 300 && file.http_status < 400) { - http_status_badge = ``+file.http_status+``; + http_status_badge = ``+file.http_status+``; } else{ - http_status_badge = ``+file.http_status+``; + http_status_badge = ``+file.http_status+``; } var http_url = file.url; var lines_word_content = ''; if (file.lines) { - lines_word_content += `${file.lines} Lines`; + lines_word_content += interpolate(`%(nLines)s Lines`, {nLines: file.lines}, true);; } if (file.words) { lines_word_content += ` ${file.words} Words` } var lines_word_badge = '' if (lines_word_content.length > 1) { - lines_word_badge = `${lines_word_content}`; + lines_word_badge = `${lines_word_content}`; } - html_treeview += `
        • ` + htmlEncode(atob(file.name)) + ` (` + file.length / 100 + ` Kb) (` + htmlEncode(file.content_type) + `) ${http_status_badge}${interesting_badge} ${lines_word_badge}
        • `; + html_treeview += `
        • ` + interpolate("%(filename)s (%(fileSize)s Kb)", {filename: htmlEncode(atob(file.name)), fileSize: file.length / 100}, true) + `(` + htmlEncode(file.content_type) + `) ${http_status_badge}${interesting_badge} ${lines_word_badge}
        • `; }); } item_pos++; @@ -2026,10 +2024,10 @@

          + + c +

          `; }, "destroy": true, "processing": true, - "oLanguage": subdomain_oLanguage, + "language": subdomain_oLanguage, "fnCreatedRow": function (nRow, aData, iDataIndex) { $(nRow).attr('id', 'subdomain_row_' + aData['id']); }, @@ -2153,7 +2155,7 @@

          \nc

          '; + return '
          \nc
          '; }}, // subdomain Name { @@ -2190,15 +2192,15 @@

          Interesting

        `; + interesting_badge = `
        ` + gettext("Interesting") + `
        `; } if (row['content_type']) { - content_type = `
        ${row['content_type']}
        `; + content_type = `
        ${row['content_type']}
        `; } if (row['webserver']) { - web_server = `
        ${row['webserver']}
        `; + web_server = `
        ${row['webserver']}
        `; } if (interesting_badge) { @@ -2209,46 +2211,46 @@

        ${todo_icon} ${row['todos_count']} Todos ` + todo_badge = `${todo_icon} ${row['todos_count']} ` + gettext("Todos") + ` ` } endpoint_count_badge = ''; if (row['endpoint_count']) { - endpoint_count_badge = `${row['endpoint_count']} `; + endpoint_count_badge = `${row['endpoint_count']} `; } if(row['waf'].length){ - waf_badge = `
        WAF Detected`; + waf_badge = `
        ` + gettext("WAF Detected") + ``; for (var waf in row['waf']) { var waf_object = row['waf'][waf]; - waf_badge += `${waf_object.name}`; + waf_badge += `${waf_object.name}`; } waf_badge += `
        `; } vuln_count_badge = ''; - total_vuln_badge = `${row['info_count'] + row['low_count'] + row['high_count'] + row['medium_count'] + row['critical_count']} `; - info_badge = `${row['info_count']} Info`; - low_badge = `${row['low_count']} Low`; - medium_badge = `${row['medium_count']} Med`; - high_badge = `${row['high_count']} High`; - critical_badge = `${row['critical_count']} Critical`; + total_vuln_badge = `${row['info_count'] + row['low_count'] + row['high_count'] + row['medium_count'] + row['critical_count']} `; + info_badge = `${row['info_count']} ` + gettext("Info") + ``; + low_badge = `${row['low_count']} ` + gettext("Low") + ``; + medium_badge = `${row['medium_count']} ` + gettext("Med") + ``; + high_badge = `${row['high_count']} ` + gettext("High") + ``; + critical_badge = `${row['critical_count']} ` + gettext("Critical") + ``; vuln_count_badge = `
        ` + (row['info_count'] > 0? info_badge : '') + (row['low_count'] > 0? low_badge : '') + (row['medium_count'] > 0? medium_badge : '') + (row['high_count'] > 0? high_badge : '') + (row['critical_count'] > 0? critical_badge : '') + `
        `; vuln_count_badge = (row['info_count'] + row['low_count'] + row['high_count'] + row['medium_count'] + row['critical_count'] > 0? total_vuln_badge : '') + vuln_count_badge; copy_icon = ` - + `; var directory_count_badge = ''; if (row['directories_count']){ - directory_count_badge = `${row['directories_count']} `; + directory_count_badge = `${row['directories_count']} `; } var subscan_count_badge = ''; if (row['subscan_count']){ - subscan_count_badge = `${row['subscan_count']} `; + subscan_count_badge = `${row['subscan_count']} `; } tech_badge += content_type; @@ -2258,7 +2260,7 @@

        CNAME
        ` + row['cname'].replace(',', '
        ') + `

        `; + cname_badge = `
        ` + gettext("CNAME") + `
        ` + row['cname'].replace(',', '
        ') + `
        `; return badges + `` + cname_badge + waf_badge + end_vuln_badge + tech_badge + todo_badge; } return badges + `` + waf_badge + end_vuln_badge + tech_badge + todo_badge; @@ -2304,7 +2306,7 @@

        ${value.address}` + ip_badge += `${value.address}` } else{ ip_badge += `${value.address}` @@ -2326,7 +2328,7 @@

        ${port_obj['number']}/${port_obj['service_name']}` } } @@ -2373,14 +2375,14 @@

        - - - + + +

        `; @@ -2422,7 +2424,7 @@

        { if (result.isConfirmed) { Swal.fire({ - title: 'Deleting Subdomain...', + title: gettext("Deleting Subdomain..."), allowOutsideClick: false }); swal.showLoading(); @@ -2528,14 +2531,14 @@

        <'dt--pages-count col-12 col-sm-6 col-md-4 col-lg-4 d-flex justify-content-sm-middle justify-content-center'i><'dt--pagination col-12 col-sm-2 col-md-5 col-lg-4 d-flex justify-content-sm-end justify-content-center'p>>>" + "<'table-responsive'tr>" + "<'dt--bottom-section'<'row'<'col-12 mb-3 mb-sm-0 col-sm-4 col-md-3 col-lg-4 d-flex justify-content-sm-start justify-content-center'l><'dt--pages-count col-12 col-sm-6 col-md-4 col-lg-4 d-flex justify-content-sm-middle justify-content-center'i><'dt--pagination col-12 col-sm-2 col-md-5 col-lg-4 d-flex justify-content-sm-end justify-content-center'p>>>", - "oLanguage": { - "oPaginate": { "sPrevious": '', "sNext": '' }, - "sInfo": "Showing page _PAGE_ of _PAGES_", - "sSearch": '', - "sSearchPlaceholder": "Search...", - "sLengthMenu": "Results : _MENU_", + "language": { + "zeroRecords": gettext("No S3 Bucket detected"), + "infoEmpty": gettext("No S3 Bucket detected"), }, "stripeClasses": [], "lengthMenu": [[50, 100, 200, 300, 400, -1], [50, 100, 200, 300, 400, 'All']], diff --git a/web/startScan/templates/startScan/endpoints.html b/web/startScan/templates/startScan/endpoints.html index 1ae10e8e4..6ccedcd6d 100644 --- a/web/startScan/templates/startScan/endpoints.html +++ b/web/startScan/templates/startScan/endpoints.html @@ -1,45 +1,46 @@ -{% extends 'base/base.html' %} -{% load static %} -{% load humanize %} -{% load custom_tags %} -{% block title %} -All Endpoints -{% endblock title %} - -{% block custom_js_css_link %} - -{% endblock custom_js_css_link %} - -{% block main_content %} -
        - {% include 'base/_items/endpoint_tab_content.html' with all_endpoints=True%} -
        -{% endblock main_content %} - - -{% block page_level_script %} - - - - - -{% endblock page_level_script %} +{% extends 'base/base.html' %} +{% load static %} +{% load humanize %} +{% load i18n %} +{% load custom_tags %} +{% block title %} +{% translate "All Endpoints" %} +{% endblock title %} + +{% block custom_js_css_link %} + +{% endblock custom_js_css_link %} + +{% block main_content %} +
        + {% include 'base/_items/endpoint_tab_content.html' with all_endpoints=True%} +
        +{% endblock main_content %} + + +{% block page_level_script %} + + + + + +{% endblock page_level_script %} diff --git a/web/startScan/templates/startScan/history.html b/web/startScan/templates/startScan/history.html index 4af7877e6..c9f49e79d 100644 --- a/web/startScan/templates/startScan/history.html +++ b/web/startScan/templates/startScan/history.html @@ -2,20 +2,21 @@ {% load static %} {% load humanize %} {% load permission_tags %} +{% load i18n %} {% block title %} -Scan history +{% translate "Scan history" %} {% endblock title %} {% block custom_js_css_link %} {% endblock custom_js_css_link %} {% block breadcrumb_title %} - + {% endblock breadcrumb_title %} {% block page_title %} -Quick Scan History +{% translate "Quick Scan History" %} {% endblock page_title %} {% block main_content %} @@ -26,40 +27,40 @@

        @@ -74,15 +75,15 @@

        Filters

        - - - - - - - - - + + + + + + + + + @@ -94,34 +95,34 @@

        Filters

        {{ scan_history.domain.name }}
        {% for organization in scan_history.domain.get_organization %} - {{ organization.name }} + {{ organization.name }} {% endfor %}
        Serial NumberSerial NumberDomain NameSummaryScan Engine UsedLast ScanStatusProgressAction{% translate "Serial Number" %}{% translate "Serial Number" %}{% translate "Domain Name" %}{% translate "Summary" %}{% translate "Scan Engine Used" %}{% translate "Last Scan" %}{% translate "Status" %}{% translate "Progress" %}{% translate "Action" %}
        - {{scan_history.get_subdomain_count}} - {{scan_history.get_endpoint_count}} - {{scan_history.get_vulnerability_count}} + {{scan_history.get_subdomain_count}} + {{scan_history.get_endpoint_count}} + {{scan_history.get_vulnerability_count}} {{ scan_history.scan_type }} - {{scan_history.start_scan_date|naturaltime}} + {{ scan_history.start_scan_date|naturaltime}} {% if scan_history.scan_status == -1 %} - Pending + {% translate 'Pending' %} {% elif scan_history.scan_status == 0 %} - Failed - {% if scan_history.error_message %}

        Scan Failed due to: {{scan_history.error_message}}

        {% endif %} + {% translate 'Failed' %} + {% if scan_history.error_message %}

        {% blocktranslate with errMsg=scan_history.error_message %}Scan Failed due to: {{ errMsg }}{% endblocktranslate %}

        {% endif %} {% elif scan_history.scan_status == 1 %} - In Progress + {% translate 'In Progress' %} {% elif scan_history.scan_status == 2 %} - Successful + {% translate 'Successful' %} {% elif scan_history.scan_status == 3 %} - Aborted + {% translate 'Aborted' %} {% else %} - Unknown + {% translate 'Unknown' %} {% endif %}
        @@ -158,7 +159,7 @@

        Filters

        - View Results + {% translate "View Results" %}
        @@ -203,26 +204,27 @@

        Filters

        @@ -250,12 +252,9 @@ "dom": "<'dt--top-section'<'row'<'col-12 col-sm-6 d-flex justify-content-sm-start justify-content-center mt-sm-0 mt-3'f><'col-12 col-sm-6 d-flex justify-content-sm-end justify-content-center'l>>>" + "<'table-responsive'tr>" + "<'dt--bottom-section d-sm-flex justify-content-sm-between text-center'<'dt--pages-count mb-sm-0 mb-3'i><'dt--pagination'p>>", - "oLanguage": { - "oPaginate": { "sPrevious": '', "sNext": '' }, - "sInfo": "Showing page _PAGE_ of _PAGES_", - "sSearch": '', - "sSearchPlaceholder": "Search...", - "sLengthMenu": "Results : _MENU_", + "language": { + "zeroRecords": gettext("No scan yet"), + "infoEmpty": gettext("No scan yet"), }, "stripeClasses": [], "lengthMenu": [5, 10, 20, 30, 40, 50], @@ -321,22 +320,23 @@ // filtering for scan status var status_types = ['Pending', 'Scanning', 'Aborted', 'Successful', 'Failed']; + var status_types_lang_map = [gettext("Pending"), gettext("Scanning"), gettext("Aborted"), gettext("Successful"), gettext("Failed")]; for (status in status_types) { select = document.getElementById('filterByScanStatus'); var option = document.createElement('option'); option.value = status_types[status]; - option.innerHTML = status_types[status]; + option.innerHTML = status_types_lang_map[status]; select.appendChild(option); } var org_filter = document.getElementById('filterByOrganization'); org_filter.addEventListener('click', function() { table.search(this.value).draw(); - document.getElementById('filteringText').innerHTML = `Organization: ${this.value} + document.getElementById('filteringText').innerHTML = `` + interpolate("Organization: %(orgName)s", {orgName: this.value}, true) + ` X `; Snackbar.show({ - text: `Filtering by organization ${this.value}`, + text: interpolate(`Filtering by organization %(orgName)s`, {orgName: this.value}, true), pos: 'top-center' }); }, false); @@ -363,11 +363,11 @@ default: badge_color = 'primary' } - document.getElementById('filteringText').innerHTML = `Scan Status: ${this.value} + document.getElementById('filteringText').innerHTML = `` + interpolate("Scan Status : %(scanStatus)s", {scanStatus: this.value}, true) + ` X `; Snackbar.show({ - text: `Filtering by scan status ${this.value}`, + text: interpolate(`Filtering by scan status %(filter)s`, {filter: this.value}, true), pos: 'top-center' }); }, false); @@ -375,11 +375,11 @@ var engine_filter = document.getElementById('filterByScanType'); engine_filter.addEventListener('click', function() { table.search(this.value).draw(); - document.getElementById('filteringText').innerHTML = `Scan Engine: ${this.value} + document.getElementById('filteringText').innerHTML = `` + interpolate("Scan Engine: %(scanEngine)s", {scanEngine: this.value}, true) + ` X `; Snackbar.show({ - text: `Filtering by Engine ${this.value}`, + text: interpolate(`Filtering by Engine %(filter)s`, {filter: this.value}, true), pos: 'top-center' }); }, false); @@ -387,11 +387,11 @@ var target_filter = document.getElementById('filterByTarget'); target_filter.addEventListener('click', function() { table.search(this.value).draw(); - document.getElementById('filteringText').innerHTML = `Target/Domain: ${this.value} + document.getElementById('filteringText').innerHTML = `` + interpolate("Target/Domain : %(target)s", {target: this.value}, true) + ` X `; Snackbar.show({ - text: `Filtering by Engine ${this.value}`, + text: interpolate(`Filtering by Target %(filter)s`, {filter: this.value}, true), pos: 'top-center' }); }, false); @@ -448,18 +448,19 @@ if (!checkedCount()) { swal({ title: '', - text: "Oops! No targets has been selected!", + text: gettext("Oops! No targets has been selected!"), type: 'error', padding: '2em' }) } else { // atleast one target is selected swal.queue([{ - title: 'Are you sure you want to delete ' + checkedCount() + ' Scans?', - text: "This action is irreversible.\nThis will delete all the scan data and vulnerabilities related to the scan.", + title: interpolate("Are you sure you want to delete %(nbScans)s Scans?", {nbScans: checkedCount()}, true), + text: gettext("This action is irreversible.\nThis will delete all the scan data and vulnerabilities related to the scan."), type: 'warning', showCancelButton: true, - confirmButtonText: 'Delete', + cancelButtonText: gettext("Cancel"), + confirmButtonText: gettext("Delete"), padding: '2em', showLoaderOnConfirm: true, preConfirm: function() { @@ -477,8 +478,7 @@ if(report_type.value == "recon") { $("#report_info_vuln_div").hide(); - } - else{ + } else{ $("#report_info_vuln_div").show(); } }); @@ -488,35 +488,29 @@ $('#report_alert_message').empty(); $('#report_type_select').empty(); if (is_subdomain_scan == 'True' && is_vulnerability_scan == 'True') { - $('#report_alert_message').append(` - Full Scan will include both Reconnaissance and Vulnerability Report.
        - `); + $('#report_alert_message').append(`` + gettext("Full Scan") + ` ` + gettext(`will include both Reconnaissance and Vulnerability Report.`) + `
        `); $('#report_type_select').append($('