import os
import json
import ctypes

class disable_file_system_redirection:
    _disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection
    _revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection
    def __enter__(self):
        self.old_value = ctypes.c_long()
        self.success = self._disable(ctypes.byref(self.old_value))
    def __exit__(self, type, value, traceback):
        if self.success:
            self._revert(self.old_value)

def change_settings(filepath):
    try:
        with open(filepath, 'r') as f:
            content = f.read()
        load = json.loads(content)
        browser_dict = load["browser"]
        keys = browser_dict.keys()
        if "enabled_labs_experiments" in keys:
            value = load["browser"]["enabled_labs_experiments"]
            if value:
                for i in value:
                    if i=="enable-tls13-kyber@1":
                        value.remove(i)
                        value.append("enable-tls13-kyber@2")
                        load["browser"]["enabled_labs_experiments"] = value
                        dump = json.dumps(load)
                        with open(filepath, 'w') as f:
                            f.write(dump)
                        return 0
                    elif i=="enable-tls13-kyber@2":
                        return 1
                else:
                    value.append("enable-tls13-kyber@2")
                    load["browser"]["enabled_labs_experiments"] = value
                    dump = json.dumps(load)
                    with open(filepath, 'w') as f:
                        f.write(dump)
                    return 0
            else:
                load["browser"]["enabled_labs_experiments"] = ["enable-tls13-kyber@2"]
                dump = json.dumps(load)
                with open(filepath, 'w') as f:
                    f.write(dump)
                return 0
        else:
            load["browser"]["enabled_labs_experiments"] = ["enable-tls13-kyber@2"]
            dump = json.dumps(load)
            with open(filepath, 'w') as f:
                f.write(dump)
            return 0
    except Exception as e:
        print(e)

with disable_file_system_redirection():
    users=os.popen("wmic UserAccount get Name").read().strip().splitlines()
    fil_users=[i.strip() for i in users if i.strip()!="Administrator" and i.strip()!="DefaultAccount" and i.strip()!="Guest" and i.strip()!="WDAGUtilityAccount"]

for i in fil_users:
    if os.path.exists("C:\\Users\\%s"%(i)):
        if os.path.exists("C:\\Users\\%s\\AppData\\Local\\Google\\Chrome\\User Data"%(i)):
            path = "C:\\Users\\%s\\AppData\\Local\\Google\\Chrome\\User Data\\Local State"%(i)
            result = change_settings(path)
            if result==0:
                print('successfully disabled "TLS 1.3 hybridized Kyber support" in google chrome for the user profile - %s'%(i))
            elif result==1:
                print('TLS 1.3 hybridized Kyber support is already disabled in google chrome for the user profile - %s'%(i))
        else:
            print("User Data folder doesn't exists. Please check whether google chrome installed for the user profile - %s"%(i))

