From 4599fa0271e9c11624ca63059b25a70be8c1ed9f Mon Sep 17 00:00:00 2001 From: Dee Jayh Date: Fri, 28 Apr 2017 08:19:37 -0400 Subject: modified: dwt.py modified: dwt_util.py --- dwt.py | 414 ++++++++++++++++++++++++++++++++---------------------------- dwt_util.py | 62 +++++---- 2 files changed, 259 insertions(+), 217 deletions(-) diff --git a/dwt.py b/dwt.py index 73ae66b..036ce6c 100644 --- a/dwt.py +++ b/dwt.py @@ -28,7 +28,6 @@ from wx.lib.itemspicker import ItemsPicker, IP_SORT_SELECTED, IP_SORT_CHOICES, I import dwt_about import dwt_util - class RedirectText(io.StringIO): def __init__(self, console, old_stdout): super(RedirectText, self).__init__() @@ -74,7 +73,7 @@ class ConsoleDialog(wx.Dialog): class MainFrame(wx.Frame): def __init__(self): super(MainFrame, self).__init__(parent=wx.GetApp().GetTopWindow(), title="Disable Windows 10 Tracking", - size=(415, 520)) + size=(415, 245)) self.SetMinSize(self.GetSize()) panel = MainPanel(self) @@ -107,148 +106,156 @@ class MainFrame(wx.Frame): class MainPanel(wx.Panel): def __init__(self, parent): - super(MainPanel, self).__init__(parent) - - self.parent = parent - self.picked_normal = [] - self.picked_extra = [] - self.picked_ips = [] - - self.service_check = wx.CheckBox(self, label="Services") - self.service_check.SetToolTip("Disables or deletes tracking services. Choose option in 'Services Method'") - - self.diagtrack_check = wx.CheckBox(self, label="Clear DiagTrack log") - self.diagtrack_check.SetToolTip("Clears Dianostic Tracking log and prevents modification to it. " - "Cannot be undone automatically.") - - # Telemetry checkbox - self.telemetry_check = wx.CheckBox(self, label="Telemetry") - self.telemetry_check.SetToolTip("Sets 'AllowTelemetry' to 0. " - "On non-Enterprise OS editions, requires HOSTS file modification.") - - # HOSTS file checkbox - self.host_check = wx.CheckBox(self, label="Block tracking domains") - self.host_check.SetToolTip("Adds known tracking domains to HOSTS file. Required to disable Telemetry") - - # Extra HOSTS checkbox - self.extra_host_check = wx.CheckBox(self, label="Block even more tracking domains") - self.extra_host_check.SetToolTip("For the paranoid. Adds extra domains to the HOSTS file.\n" - "May cause issues with Skype, Dr. Watson, Hotmail and/or Error Reporting.") - - # IP block checkbox - self.ip_check = wx.CheckBox(self, label="Block tracking IP addresses") - self.ip_check.SetToolTip("Blocks known tracking IP addresses with Windows Firewall.") - - # Windows Privacy Regs (Policy Manager) - self.defender_check = wx.CheckBox(self, label="Windows Defender collection") - self.defender_check.SetToolTip("Modifies registry to prevent Defender collection") - - # WifiSense checkbox - self.wifisense_check = wx.CheckBox(self, label="WifiSense") - - # OneDrive uninstall checkbox - self.onedrive_check = wx.CheckBox(self, label="Uninstall OneDrive") - self.onedrive_check.SetToolTip("Uninstalls OneDrive from your computer and removes it from Explorer.") - - self.service_rad = wx.RadioBox(self, label="Service Method", choices=("Disable", "Delete")) - self.service_rad.SetItemToolTip(item=0, text="Simply disables the services. This can be undone.") - self.service_rad.SetItemToolTip(item=1, text="Deletes the services completely. This can't be undone.") - - self.mode_rad = wx.RadioBox(self, label="Mode", choices=("Privacy", "Revert")) - self.mode_rad.SetItemToolTip(item=0, text="Applies the selected settings.") - self.mode_rad.SetItemToolTip(item=1, text="Reverts the selected settings.") - - go_button = wx.Button(self, label="Go!") - - self.app_box = wx.StaticBoxSizer(wx.VERTICAL, self, "Built-in Apps") - stat_box = self.app_box.GetStaticBox() - top_app_sizer = wx.BoxSizer(wx.HORIZONTAL) - button_app_sizer = wx.BoxSizer(wx.HORIZONTAL) - left_app_sizer = wx.BoxSizer(wx.VERTICAL) - middle_app_sizer = wx.BoxSizer(wx.VERTICAL) - right_app_sizer = wx.BoxSizer(wx.VERTICAL) - - # wx.CheckBox(app_box.GetStaticBox(), label="Name", name="search_name") - wx.CheckBox(stat_box, label="3D Builder", name="3dbuilder") - wx.CheckBox(stat_box, label="Alarms && Clocks", name="windowsalarms") - wx.CheckBox(stat_box, label="Calendar and Mail", name="windowscommunicationsapps") - wx.CheckBox(stat_box, label="Camera", name="windowscamera") - wx.CheckBox(stat_box, label="Drawboard PDF", name="drawboardpdf") - wx.CheckBox(stat_box, label="Feedback Hub", name="windowsfeedbackhub") - wx.CheckBox(stat_box, label="Food && Drink", name="bingfoodanddrink") - wx.CheckBox(stat_box, label="Get Office App", name="officehub") - wx.CheckBox(stat_box, label="Get Skype App", name="skypeapp") - wx.CheckBox(stat_box, label="Get Started App", name="getstarted") - wx.CheckBox(stat_box, label="Groove Music", name="zunemusic") - wx.CheckBox(stat_box, label="Health && Fitness", name="binghealthandfitness") - wx.CheckBox(stat_box, label="Maps", name="windowsmaps") - wx.CheckBox(stat_box, label="Messaging", name="messaging") - wx.CheckBox(stat_box, label="Money", name="bingfinance") - wx.CheckBox(stat_box, label="Movies && TV", name="zunevideo") - wx.CheckBox(stat_box, label="News", name="bingnews") - wx.CheckBox(stat_box, label="OneNote App", name="onenote") - wx.CheckBox(stat_box, label="People", name="people") - wx.CheckBox(stat_box, label="Phone Companion", name="windowsphone") - wx.CheckBox(stat_box, label="Photos", name="photos") - wx.CheckBox(stat_box, label="Reader", name="reader") - wx.CheckBox(stat_box, label="Reading List", name="windowsreadinglist") - wx.CheckBox(stat_box, label="Solitaire Collection", name="solitairecollection") - wx.CheckBox(stat_box, label="Sports", name="bingsports") - wx.CheckBox(stat_box, label="Sticky Notes", name="microsoftstickynotes") - wx.CheckBox(stat_box, label="Sway App", name="sway") - wx.CheckBox(stat_box, label="Travel", name="bingtravel") - wx.CheckBox(stat_box, label="Voice Recorder", name="soundrecorder") - wx.CheckBox(stat_box, label="Weather", name="bingweather") - wx.CheckBox(stat_box, label="Xbox", name="xboxapp") - remove_app_button = wx.Button(stat_box, label="Remove selected apps") - select_all_check = wx.CheckBox(stat_box, label="Select all") - - sorted_list = sorted(stat_box.GetChildren(), key=lambda x: x.GetLabel()) - for index, item in enumerate([x for x in sorted_list if isinstance(x, wx.CheckBox) and x != select_all_check]): - n = len(sorted_list) // 3 - if index <= n: - left_app_sizer.Add(item, 1, wx.ALL, 1) - elif index <= n * 2: - middle_app_sizer.Add(item, 1, wx.ALL, 1) - else: - right_app_sizer.Add(item, 1, wx.ALL, 1) - - top_app_sizer.Add(left_app_sizer, 1, wx.ALL, 1) - top_app_sizer.Add(middle_app_sizer, 1, wx.ALL, 1) - top_app_sizer.Add(right_app_sizer, 1, wx.ALL, 1) - button_app_sizer.Add(remove_app_button, 0, wx.ALL, 1) - button_app_sizer.Add(select_all_check, 1, wx.ALL, 5) - self.app_box.Add(top_app_sizer) - self.app_box.Add(button_app_sizer) - - top_sizer = wx.BoxSizer(wx.VERTICAL) - top_row_sizer = wx.BoxSizer(wx.HORIZONTAL) - check_sizer = wx.BoxSizer(wx.VERTICAL) - rad_sizer = wx.BoxSizer(wx.VERTICAL) - - top_sizer.Add(top_row_sizer, 0, wx.ALL, 5) - top_sizer.Add(self.app_box, 0, wx.ALL, 5) - top_row_sizer.Add(check_sizer, 0, wx.ALL) - top_row_sizer.Add(rad_sizer, 0, wx.ALL) - rad_sizer.Add(self.service_rad, 0, wx.ALL, 10) - rad_sizer.Add(go_button, 0, wx.ALL ^ wx.BOTTOM | wx.ALIGN_CENTER, 10) - rad_sizer.Add(self.mode_rad, 0, wx.ALL, 10) - check_sizer.Add(self.service_check, 0, wx.ALL, 1) - check_sizer.Add(self.diagtrack_check, 0, wx.ALL, 1) - check_sizer.Add(self.telemetry_check, 0, wx.ALL, 1) - check_sizer.Add(self.host_check, 0, wx.ALL, 1) - check_sizer.Add(self.extra_host_check, 0, wx.ALL, 1) - check_sizer.Add(self.ip_check, 0, wx.ALL, 1) - check_sizer.Add(self.defender_check, 0, wx.ALL, 1) - check_sizer.Add(self.wifisense_check, 0, wx.ALL, 1) - check_sizer.Add(self.onedrive_check, 0, wx.ALL, 1) - - self.Bind(wx.EVT_CHECKBOX, handler=self.select_all_apps, source=select_all_check) - self.Bind(wx.EVT_CHECKBOX, handler=self.hosts_warn, source=self.extra_host_check) - self.Bind(wx.EVT_BUTTON, handler=self.remove_apps, source=remove_app_button) - self.Bind(wx.EVT_BUTTON, handler=self.go, source=go_button) - - self.SetSizer(top_sizer) + super(MainPanel, self).__init__(parent) + + self.parent = parent + self.picked_normal = [] + self.picked_extra = [] + self.picked_ips = [] + + self.service_check = wx.CheckBox(self, label="Services") + self.service_check.SetToolTip("Disables or deletes tracking services. Choose option in 'Services Method'") + + self.diagtrack_check = wx.CheckBox(self, label="Clear DiagTrack log") + self.diagtrack_check.SetToolTip("Clears Dianostic Tracking log and prevents modification to it. " + "Cannot be undone automatically.") + + # Telemetry checkbox + self.telemetry_check = wx.CheckBox(self, label="Telemetry") + self.telemetry_check.SetToolTip("Sets 'AllowTelemetry' to 0. " + "On non-Enterprise OS editions, requires HOSTS file modification.") + + # HOSTS file checkbox + self.host_check = wx.CheckBox(self, label="Block tracking domains") + self.host_check.SetToolTip("Adds known tracking domains to HOSTS file. Required to disable Telemetry") + + # Extra HOSTS checkbox + self.extra_host_check = wx.CheckBox(self, label="Block even more tracking domains") + self.extra_host_check.SetToolTip("For the paranoid. Adds extra domains to the HOSTS file.\n" + "May cause issues with Skype, Dr. Watson, Hotmail and/or Error Reporting.") + + # IP block checkbox + self.ip_check = wx.CheckBox(self, label="Block tracking IP addresses") + self.ip_check.SetToolTip("Blocks known tracking IP addresses with Windows Firewall.") + + # Windows Privacy Regs (Policy Manager) + self.defender_check = wx.CheckBox(self, label="Windows Defender collection") + #self.defender_check.SetToolTip("Modifies registry to prevent Defender collection") + #Disable defender option until a solution is found. + self.defender_check.SetToolTip("Disable due to limitation set by windows kernel.") + self.defender_check.Enable(False) + + # WifiSense checkbox + self.wifisense_check = wx.CheckBox(self, label="WifiSense") + + # OneDrive uninstall checkbox + self.onedrive_check = wx.CheckBox(self, label="Uninstall OneDrive") + self.onedrive_check.SetToolTip("Uninstalls OneDrive from your computer and removes it from Explorer.") + + self.service_rad = wx.RadioBox(self, label="Service Method", choices=("Disable", "Delete")) + self.service_rad.SetItemToolTip(item=0, text="Simply disables the services. This can be undone.") + self.service_rad.SetItemToolTip(item=1, text="Deletes the services completely. This can't be undone.") + + self.mode_rad = wx.RadioBox(self, label="Mode", choices=("Privacy", "Revert")) + self.mode_rad.SetItemToolTip(item=0, text="Applies the selected settings.") + self.mode_rad.SetItemToolTip(item=1, text="Reverts the selected settings.") + + go_button = wx.Button(self, label="Go!") + + #Temporarily removed due to issues with not being able to restore apps properly + #This was honestly beyond the scope of the project to begin with and shouldn't have been implemented + + + '''self.app_box = wx.StaticBoxSizer(wx.VERTICAL, self, "Built-in Apps") + stat_box = self.app_box.GetStaticBox() + top_app_sizer = wx.BoxSizer(wx.HORIZONTAL) + button_app_sizer = wx.BoxSizer(wx.HORIZONTAL) + left_app_sizer = wx.BoxSizer(wx.VERTICAL) + middle_app_sizer = wx.BoxSizer(wx.VERTICAL) + right_app_sizer = wx.BoxSizer(wx.VERTICAL) + + # wx.CheckBox(app_box.GetStaticBox(), label="Name", name="search_name") + + wx.CheckBox(stat_box, label="3D Builder", name="3dbuilder") + wx.CheckBox(stat_box, label="Alarms && Clocks", name="windowsalarms") + wx.CheckBox(stat_box, label="Calendar and Mail", name="windowscommunicationsapps") + wx.CheckBox(stat_box, label="Camera", name="windowscamera") + wx.CheckBox(stat_box, label="Drawboard PDF", name="drawboardpdf") + wx.CheckBox(stat_box, label="Feedback Hub", name="windowsfeedbackhub") + wx.CheckBox(stat_box, label="Food && Drink", name="bingfoodanddrink") + wx.CheckBox(stat_box, label="Get Office App", name="officehub") + wx.CheckBox(stat_box, label="Get Skype App", name="skypeapp") + wx.CheckBox(stat_box, label="Get Started App", name="getstarted") + wx.CheckBox(stat_box, label="Groove Music", name="zunemusic") + wx.CheckBox(stat_box, label="Health && Fitness", name="binghealthandfitness") + wx.CheckBox(stat_box, label="Maps", name="windowsmaps") + wx.CheckBox(stat_box, label="Messaging", name="messaging") + wx.CheckBox(stat_box, label="Money", name="bingfinance") + wx.CheckBox(stat_box, label="Movies && TV", name="zunevideo") + wx.CheckBox(stat_box, label="News", name="bingnews") + wx.CheckBox(stat_box, label="OneNote App", name="onenote") + wx.CheckBox(stat_box, label="People", name="people") + wx.CheckBox(stat_box, label="Phone Companion", name="windowsphone") + wx.CheckBox(stat_box, label="Photos", name="photos") + wx.CheckBox(stat_box, label="Reader", name="reader") + wx.CheckBox(stat_box, label="Reading List", name="windowsreadinglist") + wx.CheckBox(stat_box, label="Solitaire Collection", name="solitairecollection") + wx.CheckBox(stat_box, label="Sports", name="bingsports") + wx.CheckBox(stat_box, label="Sticky Notes", name="microsoftstickynotes") + wx.CheckBox(stat_box, label="Sway App", name="sway") + wx.CheckBox(stat_box, label="Travel", name="bingtravel") + wx.CheckBox(stat_box, label="Voice Recorder", name="soundrecorder") + wx.CheckBox(stat_box, label="Weather", name="bingweather") + wx.CheckBox(stat_box, label="Xbox", name="xboxapp") + remove_app_button = wx.Button(stat_box, label="Remove selected apps") + select_all_check = wx.CheckBox(stat_box, label="Select all") + + sorted_list = sorted(stat_box.GetChildren(), key=lambda x: x.GetLabel()) + for index, item in enumerate([x for x in sorted_list if isinstance(x, wx.CheckBox) and x != select_all_check]): + n = len(sorted_list) // 3 + if index <= n: + left_app_sizer.Add(item, 1, wx.ALL, 1) + elif index <= n * 2: + middle_app_sizer.Add(item, 1, wx.ALL, 1) + else: + right_app_sizer.Add(item, 1, wx.ALL, 1) + + top_app_sizer.Add(left_app_sizer, 1, wx.ALL, 1) + top_app_sizer.Add(middle_app_sizer, 1, wx.ALL, 1) + top_app_sizer.Add(right_app_sizer, 1, wx.ALL, 1) + button_app_sizer.Add(remove_app_button, 0, wx.ALL, 1) + button_app_sizer.Add(select_all_check, 1, wx.ALL, 5) + self.app_box.Add(top_app_sizer) + self.app_box.Add(button_app_sizer)''' + + top_sizer = wx.BoxSizer(wx.VERTICAL) + top_row_sizer = wx.BoxSizer(wx.HORIZONTAL) + check_sizer = wx.BoxSizer(wx.VERTICAL) + rad_sizer = wx.BoxSizer(wx.VERTICAL) + + top_sizer.Add(top_row_sizer, 0, wx.ALL, 5) + #top_sizer.Add(self.app_box, 0, wx.ALL, 5) + top_row_sizer.Add(check_sizer, 0, wx.ALL) + top_row_sizer.Add(rad_sizer, 0, wx.ALL) + rad_sizer.Add(self.service_rad, 0, wx.ALL, 10) + rad_sizer.Add(go_button, 0, wx.ALL ^ wx.BOTTOM | wx.ALIGN_CENTER, 10) + rad_sizer.Add(self.mode_rad, 0, wx.ALL, 10) + check_sizer.Add(self.service_check, 0, wx.ALL, 1) + check_sizer.Add(self.diagtrack_check, 0, wx.ALL, 1) + check_sizer.Add(self.telemetry_check, 0, wx.ALL, 1) + check_sizer.Add(self.host_check, 0, wx.ALL, 1) + check_sizer.Add(self.extra_host_check, 0, wx.ALL, 1) + check_sizer.Add(self.ip_check, 0, wx.ALL, 1) + check_sizer.Add(self.defender_check, 0, wx.ALL, 1) + check_sizer.Add(self.wifisense_check, 0, wx.ALL, 1) + check_sizer.Add(self.onedrive_check, 0, wx.ALL, 1) + + #self.Bind(wx.EVT_CHECKBOX, handler=self.select_all_apps, source=select_all_check) + self.Bind(wx.EVT_CHECKBOX, handler=self.hosts_warn, source=self.extra_host_check) + #self.Bind(wx.EVT_BUTTON, handler=self.remove_apps, source=remove_app_button) + self.Bind(wx.EVT_BUTTON, handler=self.go, source=go_button) + + self.SetSizer(top_sizer) def select_all_apps(self, event): # Iters through all children of the wxStaticBox of the wxStaticBoxSizer and checks/un checks all wxCheckBoxes. @@ -310,11 +317,12 @@ class MainPanel(wx.Panel): app_list = [child.GetName() for child in children if isinstance(child, wx.CheckBox) and child.IsChecked()] dwt_util.app_manager(app_list, undo=False) - def settings(self, event): - dialog = wx.Dialog(parent=self, title="Settings", style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) - sizer = wx.BoxSizer(wx.VERTICAL) - - normal_domains = ( + def settings(self, event, silent=False): + if silent == False: + dialog = wx.Dialog(parent=self, title="Settings", style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) + sizer = wx.BoxSizer(wx.VERTICAL) + + normal_domains = ( 'a-0001.a-msedge.net', 'a-0002.a-msedge.net', 'a-0003.a-msedge.net', 'a-0004.a-msedge.net', 'a-0005.a-msedge.net', 'a-0006.a-msedge.net', 'a-0007.a-msedge.net', 'a-0008.a-msedge.net', 'a-0009.a-msedge.net', 'a-msedge.net', 'a.ads1.msn.com', 'a.ads2.msads.net', 'a.ads2.msn.com', @@ -345,9 +353,9 @@ class MainPanel(wx.Panel): 'vortex-win.data.metron.live.com.nsatc.net', 'vortex-win.data.microsoft.com', 'vortex.data.glbdns2.microsoft.com', 'vortex.data.microsoft.com', 'watson.live.com', 'web.vortex.data.microsoft.com', 'www.msftncsi.com' - ) + ) - extra_domains = ( + extra_domains = ( 'fe2.update.microsoft.com.akadns.net', 's0.2mdn.net', 'statsfe2.update.microsoft.com.akadns.net', 'survey.watson.microsoft.com', 'view.atdmt.com', 'watson.microsoft.com', 'watson.ppe.telemetry.microsoft.com', 'watson.telemetry.microsoft.com', @@ -355,48 +363,50 @@ class MainPanel(wx.Panel): 'pricelist.skype.com', 'apps.skype.com', 'm.hotmail.com', 's.gateway.messenger.live.com' ) - ip_addresses = ( + ip_addresses = ( '2.22.61.43', '2.22.61.66', '65.39.117.230', '65.55.108.23', '23.218.212.69', '134.170.30.202', '137.116.81.24', '157.56.106.189', '204.79.197.200', '65.52.108.33', '64.4.54.254' ) - normal_domain_picker = ItemsPicker(dialog, choices=[], selectedLabel="Domains to be blocked", + normal_domain_picker = ItemsPicker(dialog, choices=[], selectedLabel="Domains to be blocked", ipStyle=IP_SORT_SELECTED | IP_SORT_CHOICES | IP_REMOVE_FROM_CHOICES) - if self.picked_normal: - normal_domain_picker.SetSelections(self.picked_normal) - normal_domain_picker.SetItems([domain for domain in normal_domains if domain not in self.picked_normal]) - else: - normal_domain_picker.SetSelections(normal_domains) + if self.picked_normal: + normal_domain_picker.SetSelections(self.picked_normal) + normal_domain_picker.SetItems([domain for domain in normal_domains if domain not in self.picked_normal]) + else: + normal_domain_picker.SetSelections(normal_domains) - extra_domain_picker = ItemsPicker(dialog, choices=[], selectedLabel="Extra domains to be blocked", + extra_domain_picker = ItemsPicker(dialog, choices=[], selectedLabel="Extra domains to be blocked", ipStyle=IP_SORT_SELECTED | IP_SORT_CHOICES | IP_REMOVE_FROM_CHOICES) - if self.picked_extra: - extra_domain_picker.SetSelections(self.picked_extra) - extra_domain_picker.SetItems([domain for domain in extra_domains if domain not in self.picked_extra]) - else: - extra_domain_picker.SetSelections(extra_domains) + if self.picked_extra: + extra_domain_picker.SetSelections(self.picked_extra) + extra_domain_picker.SetItems([domain for domain in extra_domains if domain not in self.picked_extra]) + else: + extra_domain_picker.SetSelections(extra_domains) - ip_picker = ItemsPicker(dialog, choices=[], selectedLabel="IP addresses to be blocked", + ip_picker = ItemsPicker(dialog, choices=[], selectedLabel="IP addresses to be blocked", ipStyle=IP_SORT_SELECTED | IP_SORT_CHOICES | IP_REMOVE_FROM_CHOICES) - if self.picked_ips: - ip_picker.SetSelections(self.picked_ips) - ip_picker.SetItems([ip for ip in ip_addresses if ip not in self.picked_ips]) - else: - ip_picker.SetSelections(ip_addresses) - - sizer.Add(normal_domain_picker, 0, wx.EXPAND) - sizer.Add(extra_domain_picker, 0, wx.EXPAND) - sizer.Add(ip_picker, 0, wx.EXPAND) - if event is not None: - dialog.SetSizerAndFit(sizer) - dialog.Center() - dialog.ShowModal() - dialog.Destroy() - self.picked_normal = normal_domain_picker.GetSelections() - self.picked_extra = extra_domain_picker.GetSelections() - self.picked_ips = ip_picker.GetSelections() - - + if self.picked_ips: + ip_picker.SetSelections(self.picked_ips) + ip_picker.SetItems([ip for ip in ip_addresses if ip not in self.picked_ips]) + else: + ip_picker.SetSelections(ip_addresses) + + if silent == False: + sizer.Add(normal_domain_picker, 0, wx.EXPAND) + sizer.Add(extra_domain_picker, 0, wx.EXPAND) + sizer.Add(ip_picker, 0, wx.EXPAND) + if event is not None: + dialog.SetSizerAndFit(sizer) + dialog.Center() + dialog.ShowModal() + dialog.Destroy() + + self.picked_normal = normal_domain_picker.GetSelections() + self.picked_extra = extra_domain_picker.GetSelections() + self.picked_ips = ip_picker.GetSelections() + + def setup_logging(): global logger logger = logging.getLogger('dwt') @@ -440,13 +450,31 @@ def exception_hook(error, value, trace): error_dialog.Destroy() sys.exit(1) - +def silent(): + + setup_logging() + + dwt_util.clear_diagtrack() + dwt_util.disable_service("dmwappushsvc") + dwt_util.disable_service("DiagTrack") + dwt_util.services(0) + dwt_util.telemetry(0) + #dwt_util.defender(0) + dwt_util.wifisense(0) + dwt_util.onedrive(0) + + logger.info("COMPLETE") + if __name__ == '__main__': - wx_app = wx.App() - frame = MainFrame() - console = ConsoleDialog(sys.stdout) - setup_logging() - sys.excepthook = exception_hook - dwt_about.update_check(None) - frame.Show() - wx_app.MainLoop() + if '-silent' in sys.argv: + silent() + sys.exit(0) + + wx_app = wx.App() + frame = MainFrame() + console = ConsoleDialog(sys.stdout) + setup_logging() + sys.excepthook = exception_hook + dwt_about.update_check(None) + frame.Show() + wx_app.MainLoop() diff --git a/dwt_util.py b/dwt_util.py index 440de67..630d347 100644 --- a/dwt_util.py +++ b/dwt_util.py @@ -17,6 +17,7 @@ import logging import os import platform +from collections import OrderedDict import pywintypes import shutil import subprocess @@ -83,26 +84,38 @@ def ip_block(ip_list, undo): def clear_diagtrack(): - file = os.path.join(os.environ['SYSTEMDRIVE'], ('/ProgramData/Microsoft/Diagnosis/ETLLogs/AutoLogger/' - 'AutoLogger-Diagtrack-Listener.etl')) - own_cmd = "takeown /f {file} && icacls {file} /grant administrators:F".format(file=file) - lock_cmd = "echo y|cacls {file} /d SYSTEM".format(file=file) - - try: - subprocess_handler(shlex.split(own_cmd)) - except CalledProcessError as e: - logger.exception("DiagTrack: Failed to clear DiagTrack log -- could not take ownership of file") - logger.critical("DiagTrack: Error output:\n" + e.output.decode('ascii', 'replace')) - return - - try: - open(file, 'w').close() - subprocess_handler(shlex.split(lock_cmd)) - logger.info("DiagTrack: Successfully cleared and locked DiagTrack log.") - except CalledProcessError as e: - logger.exception("DiagTrack: Failed to clear DiagTrack log -- could not clear or lock") - logger.critical("DiagTrack: Error output:\n" + e.output.decode('ascii', 'replace')) - + file = os.path.join(os.environ['SYSTEMDRIVE'], ('\\ProgramData\\Microsoft\\Diagnosis\\ETLLogs\\AutoLogger\\AutoLogger-Diagtrack-Listener.etl')) + + ''' + This is an ORDERED dictionary. It will always run in order, not subject to the devastation + of a standard dictionary, so no worries. + ''' + cmds = OrderedDict() + cmds["takeown /f {0}".format(file)]="Take Ownership" + cmds["icacls {0} /grant administrators:F".format(file)]="Grant Admin Privilege" + cmds["icacls {0} /inheritance:r /deny SYSTEM:F /grant Administrators:F".format(file)]="Deny System Privilege" + + i = 0 + + for x, y in cmds.iteritems(): + i += 1 + + if i == 3: + try: + open(file, 'w').close() + logger.info("DiagTrack: Cleared AutoLogger-Diagtrack-Listener.etl") + except: + logger.exception("DiagTrack: Couldn't open AutoLogger-Diagtrack-Listener.etl for writing") + + p = subprocess.Popen(x, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) + output = p.communicate() + logger.info("DiagTrack: {0} of AutoLogger-Diagtrack-Listener.etl was successful".format(y)) + + if p.returncode: + logger.exception(p.returncode.decode()) + + if i == 3: + logger.info("DiagTrack: Successfully cleared and locked DiagTrack log.") def delete_service(service): try: @@ -257,10 +270,11 @@ def app_manager(apps, undo): def subprocess_handler(cmd): - p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) - output = p.communicate() - if p.returncode: - raise CalledProcessError(returncode=p.returncode, cmd=cmd, output=output[0], stderr=output[1]) + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, shell=True) + output = p.communicate() + + if p.returncode: + return p.returncode # Old reinstall code, does not work: # if reinstall: -- cgit v1.2.3 From 51048640ab1085400f8b76190e77c4a9a5904e15 Mon Sep 17 00:00:00 2001 From: Ruined1 Date: Fri, 28 Apr 2017 08:42:15 -0400 Subject: Version update --- dwt_about.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dwt_about.py b/dwt_about.py index 1c95a13..c89e619 100644 --- a/dwt_about.py +++ b/dwt_about.py @@ -26,7 +26,7 @@ import wx import wx.adv import wx.lib.scrolledpanel as sp -__version__ = "3.0.1" +__version__ = "3.1.0" def about_dialog(parent): -- cgit v1.2.3