Ejemplo n.º 1
0
    def openNewWindow(self):

        newWindow = Toplevel(self)
        newWindow.title("Security Test")
        newWindow.geometry("800x400")

        newWindow.columnconfigure(1, weight=1)
        newWindow.rowconfigure(1, weight=1)

        a_file = open("test.txt", "w")

        reg = Reg()

        for i in self.list.curselection():
            try:
                z = (item_type[i])[1:]
                if z == 'REGISTRY_SETTING':
                    path = (reg_key[i])[2:-1]
                    y = reg.read_value(path, (reg_item[i])[2:-1])['value']
                    value_data = int((val_data[i])[2:-1])
                    info = (output[i])[2:-1]
                    x = reg.read_value(path, y)['data']

                    print(i + 1, ')', info, '\nreg_item:', y, file=a_file)

                    if x == value_data:
                        print('Success\n', file=a_file)
                        self.list.itemconfig(i, {'bg': 'green'})

                    else:
                        print('value_data is set to:', x, file=a_file)
                        print('value_data must be set to:', value_data, file=a_file)
                        print('Failure\n', file=a_file)
                        self.list.itemconfig(i, {'bg': 'red'})

                if z == 'USER_RIGHTS_POLICY':
                    info = (output[i])[2:-1]
                    print(i + 1, ')', info, file=a_file)
                    print('Not implemented yet.\n', file=a_file)

            except:
                print(i + 1, ')', 'Path not found.', file=a_file)
                print(path, '\n', file=a_file)
                self.list.itemconfig(i, {'bg': 'light gray'})
                pass  # doing nothing on exception

        a_file.close()

        newWindow.textBox = Text(newWindow)
        newWindow.textBox.grid(row=0, column=0, columnspan=5, rowspan=4, sticky=E + W + S + N)

        newWindow.scrollbar = Scrollbar(newWindow)
        newWindow.textBox.config(yscrollcommand=newWindow.scrollbar.set)
        newWindow.scrollbar.config(command=newWindow.textBox.yview)
        newWindow.scrollbar.grid(column=5, row=0, rowspan=4, sticky=N + S + W)

        with open('test.txt', "r") as f:
            data = f.readlines()
        for x in data:
            newWindow.textBox.insert(END, x)
Ejemplo n.º 2
0
def initReg():
    reg = Reg()
    if "vkparser" in reg.read_key(r'HKEY_CURRENT_USER\SOFTWARE')['keys']:
        writeReg("none")
        return
    reg.create_key(r'HKEY_CURRENT_USER\SOFTWARE\vkparser')
    writeReg("none")
Ejemplo n.º 3
0
    def rollback(self):
        reg = Reg()
        for i in self.list.curselection():
            z = (item_type[i])[1:]
            if z == 'REGISTRY_SETTING':
                path = (reg_key[i])[2:-1]
                y = reg.read_value(path, (reg_item[i])[2:-1])['value']

                reg.write_value(path, y, int(rb[i]), 'REG_DWORD')
Ejemplo n.º 4
0
    def rollback(self):
        reg = Reg()
        for i in range(len(structure)):
            z = (item_type[i])[1:]
            if (z == 'REGISTRY_SETTING') & (int(rb[i]) != -1):
                path = (reg_key[i])[2:-1]
                y = reg.read_value(path, (reg_item[i])[2:-1])['value']

                reg.write_value(path, y, int(rb[i]), 'REG_DWORD')
Ejemplo n.º 5
0
def getImageVersion():
    reg = Reg()
    path = r'HKLM\SOFTWARE\TheThirdfloor'
    try:
        reg.read_key(path)
        iv = reg.read_value(path, 'ImageVersion')
        return iv['data']
    except:
        return 0
Ejemplo n.º 6
0
    def enforce(self):
        reg = Reg()

        for i in self.list.curselection():

            z = (item_type[i])[1:]
            if z == 'REGISTRY_SETTING':
                path = (reg_key[i])[2:-1]
                y = reg.read_value(path, (reg_item[i])[2:-1])['value']
                value_data = int((val_data[i])[2:-1])
                x = reg.read_value(path, y)['data']

                if x != value_data:
                    reg.write_value(path, y, value_data, 'REG_DWORD')
 def _check_chrome_version():
     """
         利用產品註冊碼找尋Chrome的版本號,並去掉最後一碼
         :return: Chrome版本號 【String】
     """
     reg = Reg()
     path = r"HKEY_CURRENT_USER\Software\Google\Chrome\BLBeacon"
     chrome_version = None
     for reg_value in reg.read_key(path)["values"]:
         if reg_value["value"].lower() == "version":
             chrome_version = reg_value["data"]
     # 去掉未一碼的version
     chrome_version = chrome_version.split(".")
     del chrome_version[-1]
     chrome_version = ".".join(chrome_version)
     return chrome_version
Ejemplo n.º 8
0
def test_write_entry() -> None:
    with WinRegistry() as client:
        client.create_key(TEST_REG_PATH)
        client.write_entry(TEST_REG_PATH, "remove_me", "test")
        test_entry = client.read_entry(TEST_REG_PATH, "remove_me")
        assert test_entry.value == "test"
        client.delete_entry(TEST_REG_PATH, "remove_me")
Ejemplo n.º 9
0
    def enforce(self):
        f = open("rollback.txt", "w")
        reg = Reg()

        for i in range(len(structure)):
            try:
                path = (reg_key[i])[2:-1]
                y = reg.read_value(path, (reg_item[i])[2:-1])['value']
                x = reg.read_value(path, y)['data']
                print(x, file=f)

            except:
                print('-1', file=f)
                pass  # doing nothing on exception

        f.close()

        global rb
        rb = []
        with open('rollback.txt') as my_file:
            for line in my_file:
                rb.append(line.rstrip())

        for i in self.list.curselection():

                z = (item_type[i])[1:]
                if z == 'REGISTRY_SETTING':
                    path = (reg_key[i])[2:-1]
                    y = reg.read_value(path, (reg_item[i])[2:-1])['value']
                    value_data = int((val_data[i])[2:-1])
                    x = reg.read_value(path, y)['data']

                    if x != value_data:
                        reg.write_value(path, y, value_data, 'REG_DWORD')
 def SvcDoRun(self):
     self.is_running = True
     servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
                           servicemanager.PYS_SERVICE_STARTED,
                           ("hello", ""))
     #current_location = str(os.path.abspath(os.path.dirname(sys.argv[0])))   # 현재 위치 체크
     while self.is_running:  # self.is_running이 True인 경우에만 while 실행
         rc = win32event.WaitForSingleObject(self.hWaitStop, 5000)
         if rc == win32event.WAIT_OBJECT_0:
             break
         else:
             #subprocess.Popen([current_location + "\\Main.exe"]) # 현재 경로에 위치한 Main.exe
             # TEST
             #f = open('e:/download/1/a.log', 'a')
             #f.write(datetime.datetime.now().isoformat())
             #f.close()
             reg = WinRegistry()
             path = r'HKCU\Control Panel\Desktop'
             keyvalue = reg.read_key(path)
             for v in keyvalue['values']:
                 if v['value'] == 'SCRNSAVE.EXE':
                     if v['data'] != 'c:\\Windows\\System32\\PhotoScreensaver.scr':
                         reg.delete_value(path, 'SCRNSAVE.EXE')
                         reg.write_value(
                             path, 'SCRNSAVE.EXE',
                             'c:\\Windows\\System32\\PhotoScreensaver.scr')
         time.sleep(60)
Ejemplo n.º 11
0
def test_get_key_handle() -> None:
    with WinRegistry() as reg:
        # pylint: disable=protected-access
        handler = reg._get_handler(
            r"HKCU\SOFTWARE",
            access=KEY_READ,
            key_wow64_32key=False,
        )
        assert handler
Ejemplo n.º 12
0
def register_project_engine(config, prompt_path=True):
    """
    Register the projects engine
    :return: True on success
    """
    reg = Reg()
    try:
        registered_engines = reg.read_key(config.UE4EngineBuildsReg)['values']
        for engine in registered_engines:
            eng_val = engine['value']  # type:str
            if eng_val.startswith('{') and eng_val.endswith('}'):
                click.secho("Removing arbitrary Engine Association {0}".format(
                    eng_val))
                reg.delete_value(config.UE4EngineBuildsReg, engine['value'])
    except Exception:
        # No entries yet, all good!
        pass

    if check_engine_dir_valid(config.UE4EnginePath):
        click.secho('Setting engine registry key {0} to {1}'.format(
            config.UE4EngineKeyName, config.UE4EnginePath))

        try:
            reg.create_key(config.UE4EngineBuildsReg)
        except Exception:
            pass
        reg.write_value(config.UE4EngineBuildsReg, config.UE4EngineKeyName,
                        config.UE4EnginePath, 'REG_SZ')
    elif prompt_path:
        my_engine_path = input('Enter Engine Path: ')
        if check_engine_dir_valid(my_engine_path):
            click.secho('Setting engine registry key {0} to {1}'.format(
                config.UE4EngineKeyName, my_engine_path))
            reg.write_value(config.UE4EngineBuildsReg, config.UE4EngineKeyName,
                            my_engine_path, 'REG_SZ')
        else:
            print_error(
                "Could not find engine path, make sure you type the full path!"
            )
            return False
    else:
        print_error("Could not find engine path!")
        return False
    return True
Ejemplo n.º 13
0
def test_delete_entry() -> None:
    with WinRegistry() as client:
        client.create_key(TEST_REG_PATH)
        client.write_entry(TEST_REG_PATH, "remove_me", "test")
        client.read_entry(TEST_REG_PATH, "remove_me")
        client.delete_entry(TEST_REG_PATH, "remove_me")
        try:
            client.read_entry(TEST_REG_PATH, "remove_me")
            raise AssertionError
        except FileNotFoundError:
            pass
Ejemplo n.º 14
0
    def update_registry(self):
        a = self._db.cursor().execute(
            "SELECT branch, value, data from registry WHERE selected='*'"
        ).fetchall()
        reg = Reg()
        success = []
        errors = []
        for (key, value, data) in a:
            _key = ''
            if key == 'HKCU':
                _key = r"HKCU\Environment"
            elif key == 'HKLM':
                _key = r"HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

            try:
                reg.write_value(_key, value, data, 'REG_SZ')
            except WindowsError:
                errors.append(value)
            else:
                success.append(value)

                path = reg.read_value(_key, 'PATH')['data']
                # print(path)
                _path = ';' + path + ';'
                _path = _path.replace(';%' + value + '%;', ';')
                _path = _path + f';%{value}%;'
                path = _path[1:-1:]
                path = path.replace(';;', ';')
                path = path.replace(';;', ';')
                try:
                    reg.write_value(_key, 'PATH', path, 'REG_SZ')
                except WindowsError:
                    errors.append(f'PATH for {value}')

        return (success, errors)
Ejemplo n.º 15
0
class Keywords(object):
    def __init__(self, host=None):
        self.reg = Reg(host)

    def read_registry_key(self, key, key_wow64_32key=False):
        """ Reading registry key
        """
        resp = self.reg.read_key(key, key_wow64_32key)
        return resp

    def create_registry_key(self, key, key_wow64_32key=False):
        """ Creating registry key
        """
        self.reg.create_key(key, key_wow64_32key)

    def delete_registry_key(self, key, key_wow64_32key=False):
        """ Deleting registry key
        """
        self.reg.delete_key(key, key_wow64_32key)

    def read_registry_value(self, key, value, key_wow64_32key=False):
        """ Reading value from registry
        """
        return self.reg.read_value(key, value, key_wow64_32key)

    def write_registry_value(self,
                             key,
                             value,
                             data=None,
                             reg_type='REG_SZ',
                             key_wow64_32key=False):
        """ Writing (or creating) data in value
        """
        self.reg.write_value(key, value, data, reg_type, key_wow64_32key)

    def delete_registry_value(self, key, value, key_wow64_32key=False):
        """ Deleting value from registry
        """
        self.reg.delete_value(key, value, key_wow64_32key)
Ejemplo n.º 16
0
def test_delete_key_tree() -> None:
    reg_key = r"HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\test"
    with WinRegistry() as client:
        try:
            client.read_key(reg_key)
            raise AssertionError
        except FileNotFoundError:
            pass
        client.create_key(reg_key + "\\test1\\test3")
        client.write_entry(reg_key + "\\test1", "remove_me", "test")
        client.delete_key_tree(reg_key)
        try:
            client.read_key(reg_key)
            raise AssertionError
        except FileNotFoundError:
            pass
Ejemplo n.º 17
0
def test_create_key() -> None:
    reg_key = r"HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\test\foo"
    with WinRegistry() as client:
        try:
            data = client.read_key(
                r"HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\test")
            raise AssertionError
        except FileNotFoundError:
            pass
        client.create_key(reg_key)
        data = client.read_key(
            r"HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\test")
        assert len(data.reg_keys) == 1, data
        assert "foo" in data.reg_keys, data
        client.delete_key(
            r"HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\test\foo")
        client.delete_key(
            r"HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\test")
Ejemplo n.º 18
0
def test_delete_key() -> None:
    reg_key = r"HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\test"
    with WinRegistry() as client:
        try:
            client.read_key(
                r"HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\test")
            raise AssertionError
        except FileNotFoundError:
            pass
        client.create_key(reg_key)
        client.delete_key(
            r"HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\test")
        try:
            client.read_key(
                r"HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\test")
            raise AssertionError
        except FileNotFoundError:
            pass
Ejemplo n.º 19
0
import os
import sys
from winregistry import WinRegistry as Reg

reg = Reg()
regPath = 'HKEY_CLASSES_ROOT\\*\\shell'
videoViewerPath = regPath + '\\VideoViewer'
commandPath = videoViewerPath + '\\command'
reg.delete_key(commandPath)
reg.delete_key(videoViewerPath)
Ejemplo n.º 20
0
    def openNewWindow(self):

        newWindow = Toplevel(self)
        newWindow.title("Security Test")
        newWindow.geometry("800x400")

        newWindow.columnconfigure(1, weight=1)
        newWindow.rowconfigure(1, weight=1)

        a_file = open("test.txt", "w")

        desc = []
        val_data = []
        reg_key = []
        reg_item = []

        for struct in structure:
            if 'description' in struct:
                desc.append(struct['description'])

            else:
                desc.append(
                    'Tag (description) does not exist for current item.')

        for struct in structure:
            if 'value_data' in struct:
                val_data.append(struct['value_data'])

            else:
                val_data.append(
                    'Tag (value_data) does not exist for current item.')

        for struct in structure:
            if 'reg_key' in struct:
                reg_key.append(struct['reg_key'])

            else:
                reg_key.append(
                    'Tag (reg_key) does not exist for current item.')

        for struct in structure:
            if 'reg_item' in struct:
                reg_item.append(struct['reg_item'])

            else:
                reg_item.append(
                    'Tag (reg_item) does not exist for current item.')

        desc = desc[3:-1]
        val_data = val_data[3:-1]
        reg_key = reg_key[3:-1]
        reg_item = reg_item[3:-1]

        reg = Reg()

        for i in range(len(desc)):
            try:

                path = (reg_key[i])[2:-1]
                y = reg.read_value(path, (reg_item[i])[2:-1])['value']
                value_data = int((val_data[i])[2:-1])
                info = (desc[i])[2:-1]
                x = reg.read_value(path, y)['data']
                print(i + 1, ')', info, '\nreg_item:', y, file=a_file)

                if x == value_data:
                    print('Success\n', file=a_file)
                else:
                    print('value_data is set to:', x, file=a_file)
                    print('value_data must be set to:',
                          value_data,
                          file=a_file)
                    print('Failure\n', file=a_file)

            except:
                print(i + 1, ')', 'Path not found.', file=a_file)
                print(path, '\n', file=a_file)
                pass  # doing nothing on exception

        a_file.close()

        newWindow.textBox = Text(newWindow)
        newWindow.textBox.grid(row=0,
                               column=0,
                               columnspan=5,
                               rowspan=4,
                               sticky=E + W + S + N)

        newWindow.scrollbar = Scrollbar(newWindow)
        newWindow.textBox.config(yscrollcommand=newWindow.scrollbar.set)
        newWindow.scrollbar.config(command=newWindow.textBox.yview)
        newWindow.scrollbar.grid(column=5, row=0, rowspan=4, sticky=N + S + W)

        with open('test.txt', "r") as f:
            data = f.readlines()
        for x in data:
            newWindow.textBox.insert(END, x)
Ejemplo n.º 21
0
 def __init__(self, host=None):
     self.reg = Reg(host)
Ejemplo n.º 22
0
    def openFile(self):
        global output
        output = []
        global item_type
        item_type = []
        global val_data
        val_data = []
        global reg_key
        reg_key = []
        global reg_item
        reg_item = []

        file = filedialog.askopenfile(mode="r", filetypes=(("Audit files", "*.audit"), ("All files", "*.*")))

        if not file:
            return

        if file:
            output = []

        f = open(file.name, "r")

        global structure

        structure = []
        structure = parse_audit_file(f.read())

        structure = structure[3:]

        for struct in structure:
            if 'description' in struct:
                output.append(struct['description'])
            else:
                output.append('Tag (description) does not exist for current item.')

        for struct in structure:
            if 'type' in struct:
                item_type.append(struct['type'])
            else:
                item_type.append('Tag (type) does not exist for current item.')

        for struct in structure:
            if 'value_data' in struct:
                val_data.append(struct['value_data'])
            else:
                val_data.append('Tag (value_data) does not exist for current item.')

        for struct in structure:
            if 'reg_key' in struct:
                reg_key.append(struct['reg_key'])
            else:
                reg_key.append('Tag (reg_key) does not exist for current item.')

        for struct in structure:
            if 'reg_item' in struct:
                reg_item.append(struct['reg_item'])
            else:
                reg_item.append('Tag (reg_item) does not exist for current item.')
        '''
        output = output[3:-1]
        item_type = item_type[3:-1]
        val_data = val_data[3:-1]
        reg_key = reg_key[3:-1]
        reg_item = reg_item[3:-1]
        '''

        f = open("rollback.txt", "w")
        reg = Reg()

        for i in range(len(structure)):
            try:
                path = (reg_key[i])[2:-1]
                y = reg.read_value(path, (reg_item[i])[2:-1])['value']
                x = reg.read_value(path, y)['data']
                print(x, file=f)

            except:
                print('-1', file=f)
                pass  # doing nothing on exception

        f.close()

        global rb
        rb = []
        with open('rollback.txt') as my_file:
            for line in my_file:
                rb.append(line.rstrip())

        # print(rb)

        values = StringVar()
        values.set(output)

        form = '{}'

        self.list.delete(0, END)

        for (text) in output:
            self.list.insert(END, form.format(text))

        self.listContent = self.list.get(0, END)
Ejemplo n.º 23
0
#
from winregistry import WinRegistry as Reg
from pprint import pprint
reg = Reg()

print("-" * 10)

path = r'HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0'
try:
    print(f"Attempting to read {path}")
    pprint(reg.read_key(path), width=100)
except:
    pass

print("-" * 10)

path = r'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\4.0'
try:
    print(f"Attempting to read {path}")
    pprint(reg.read_key(path), width=100)
except:
    pass

print("-" * 10)
Ejemplo n.º 24
0
    def setup_engine_paths(self, custom_engine_path=''):
        # Assume the engine is just back from our project directory. Or check the registry to see where
        # it actually resides.
        if self.UE4EnginePath != '' and custom_engine_path == '':
            return True  # No need, already setup

        result = True
        # Initially do the obvious search, one path back from the project directory
        self.UE4EnginePath = os.path.abspath(
            os.path.join(self.uproject_dir_path, self.engine_path_name))
        if custom_engine_path != '':
            self.UE4EnginePath = custom_engine_path
        if self.UE4EngineKeyName != '' and not os.path.isdir(
                self.UE4EnginePath):
            # search the registry and see if the engine is registered elsewhere
            reg = Reg()
            try:
                registered_engines = reg.read_key(
                    self.UE4EngineBuildsReg)['values']
                for engine in registered_engines:
                    if engine['value'] == self.UE4EngineKeyName:
                        # this is it!
                        self.UE4EnginePath = engine['data']
                        break
                else:
                    self.UE4EnginePath = ''
                    result = False
            except Exception:
                # No keys exist, fresh install!
                self.UE4EnginePath = ''
                result = False
        else:
            result = check_engine_dir_valid(self.UE4EnginePath)

        if result:
            self.editor_running = is_editor_running(self.UE4EnginePath)

        # Set all absolute paths to unreal tools
        self.UE4GenProjFilesPath = str(
            Path(self.UE4EnginePath,
                 'Engine\\Build\\BatchFiles\\GenerateProjectFiles.bat'))
        self.UE4GitDependenciesPath = str(
            Path(self.UE4EnginePath,
                 'Engine\\Binaries\\DotNET\\GitDependencies.exe'))
        self.UE4EnginePrereqPath = str(
            Path(self.UE4EnginePath,
                 'Engine\\Extras\\Redist\\en-us\\UE4PrereqSetup_x64.exe'))
        self.UE4UBTPath = str(
            Path(self.UE4EnginePath,
                 'Engine\\Binaries\\DotNET\\UnrealBuildTool.exe'))
        self.UE4RunUATBatPath = str(
            Path(self.UE4EnginePath, 'Engine\\Build\\BatchFiles\\RunUAT.bat'))
        self.UE4BuildBatchPath = str(
            Path(self.UE4EnginePath, 'Engine\\Build\\BatchFiles\\Build.bat'))
        self.UE4CleanBatchPath = str(
            Path(self.UE4EnginePath, 'Engine\\Build\\BatchFiles\\Clean.bat'))
        self.UE4EditorPath = str(
            Path(self.UE4EnginePath, 'Engine\\Binaries\\Win64\\UE4Editor.exe'))
        self.UE4VersionSelectorPath = str(
            Path(
                self.UE4EnginePath,
                'Engine\\Binaries\\Win64\\UnrealVersionSelector-Win64-Shipping.exe'
            ))
        return result
Ejemplo n.º 25
0
def test_read_entry() -> None:
    reg_key = r"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
    with WinRegistry() as client:
        software_type = client.read_entry(reg_key, "SoftwareType")
    assert software_type.value == "System"
Ejemplo n.º 26
0
def test_read_key() -> None:
    reg_key = r"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
    with WinRegistry() as client:
        data = client.read_key(reg_key)
        assert data.entries
        assert data.reg_keys
Ejemplo n.º 27
0
#Remove tags
from bs4 import BeautifulSoup

import re

TAG_RE = re.compile(r'<[^>]+>')

def remove_tags(text):
 return TAG_RE.sub('',text)

from winregistry import WinRegistry as Reg

path = r'HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
path2 = r'HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\seen_u'
reg = Reg()
kilo = "wax"
try:
 kilo = str(reg.read_value(path,'hog'))
except:
 pass 
#Add Key
def add_key():
 reg.create_key(path + r'\test')
 True if 'hog' in reg.read_key(r'HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run')['keys'] else False
 reg.write_value(path, 'hog', 'C:\hog\hog.exe', 'REG_SZ')

def shithappens():
 commandfile = 'C:\hog\\'+thename+'cc.xml'
 #try:
 thr = threading.Thread(target=start_logger)
Ejemplo n.º 28
0
def register_project_engine(config, prompt_path=True):
    """
    Register the projects engine
    :return: True on success
    """
    reg = Reg()
    # try:
    #     registered_engines = reg.read_key(config.UE4EngineBuildsReg)['values']
    #     for engine in registered_engines:
    #         eng_val = engine['value']  # type:str
    #         if eng_val.startswith('{') and eng_val.endswith('}'):
    #             click.secho("Removing arbitrary Engine Association {0}".format(eng_val))
    #             reg.delete_value(config.UE4EngineBuildsReg, engine['value'])
    # except Exception:
    #     # No entries yet, all good!
    #     pass

    if check_engine_dir_valid(config.UE4EnginePath):
        # Check if the engine is already registered
        try:
            registered_engines = reg.read_key(config.UE4EngineBuildsReg)['values']
            for engine in registered_engines:
                if engine['value'] == config.UE4EngineKeyName:
                    # Check if the data matches the engine path, if not, update the key
                    if engine['data'] != config.UE4EnginePath:
                        click.secho('Updating engine registry key {0}:{1} to {2}'.format(config.UE4EngineKeyName,
                                                                                         engine['data'],
                                                                                         config.UE4EnginePath))
                        click.secho('This is probably because the engine has been moved.')
                        reg.write_value(config.UE4EngineBuildsReg,
                                        config.UE4EngineKeyName,
                                        config.UE4EnginePath,
                                        'REG_SZ')
                    return True
        except Exception:
            pass

        click.secho('Setting engine registry key {0} to {1}'.format(config.UE4EngineKeyName, config.UE4EnginePath))
        try:
            reg.create_key(config.UE4EngineBuildsReg)
        except Exception:
            pass
        reg.write_value(config.UE4EngineBuildsReg,
                        config.UE4EngineKeyName,
                        config.UE4EnginePath,
                        'REG_SZ')
    elif prompt_path:
        my_engine_path = input('Enter Engine Path: ')
        if check_engine_dir_valid(my_engine_path):
            click.secho('Setting engine registry key {0} to {1}'.format(config.UE4EngineKeyName, my_engine_path))
            reg.write_value(config.UE4EngineBuildsReg,
                            config.UE4EngineKeyName,
                            my_engine_path,
                            'REG_SZ')
        else:
            print_error("Could not find engine path, make sure you type the full path!")
            return False
    else:
        print_error("Could not find engine path to register!")
        return False
    return True
Ejemplo n.º 29
0
    def get_Truerngs_from_registry():
        reg = Reg()

        usb_serial_devices = reg.read_key(
            r'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbser\Enum'
        )

        devices_values = usb_serial_devices["values"]

        serialNumber = 'None'

        index = 0
        devicesFound = []

        # Loop through
        for x in devices_values:
            try:
                serialNumber = 'None'
                # TrueRNG V1/V2/V3
                if 'VID_04D8&PID_F5FE' in x["data"]:
                    temp = x["data"].split('\\')
                    vidpid = temp[1]
                    keyid = temp[2]
                    newkey = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\' + str(
                        vidpid) + '\\' + str(keyid)
                    device_info = reg.read_key(newkey)["values"]
                    deviceType = 'TrueRNG V1/V2/V3'
                    for k in device_info:
                        if k['value'] == "FriendlyName":
                            FriendlyName = k['data']
                        if k['value'] == "HardwareID":
                            vidpidrev = k['data'][0].split('\\')[1].split('&')
                    devicesFound.append(deviceType + ' : ' + \
                        vidpidrev[2] + ' : No SN : ' + FriendlyName)

                # TrueRNGpro (FW > 1.39)
                # USB Class 0A
                if 'VID_16D0&PID_0AA0\\' in x["data"]:
                    temp = x["data"].split('\\')
                    vidpid = temp[1]
                    keyid = temp[2]
                    newkey = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\' + str(
                        vidpid) + '\\' + str(keyid)
                    device_info = reg.read_key(newkey)["values"]
                    deviceType = 'TrueRNGpro (V1) '
                    for k in device_info:
                        if k['value'] == "FriendlyName":
                            FriendlyName = k['data']
                        if k['value'] == "HardwareID":
                            vidpidrev = k['data'][0].split('\\')[1].split('&')
                    devicesFound.append(deviceType + ' : ' + \
                        vidpidrev[2] + ' : ' + keyid + ' : ' + FriendlyName)

                # TrueRNGpro (FW <= 1.39)
                # USB Class 02
                if 'VID_16D0&PID_0AA0&MI_00\\' in x["data"]:
                    temp = x["data"].split('\\')
                    vidpid = temp[1]
                    keyid = temp[2]
                    newkey = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\' + str(
                        vidpid) + '\\' + str(keyid)
                    device_info = reg.read_key(newkey)["values"]
                    deviceType = 'TrueRNGpro (V1) '
                    for k in device_info:
                        if k['value'] == "FriendlyName":
                            FriendlyName = k['data']
                        if k['value'] == "HardwareID":
                            vidpidrev = k['data'][0].split('\\')[1].split('&')

                    # Find the info of the parent device since Windows doesn't populate the serial number into the child
                    newkey = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\VID_16D0&PID_0AA0'
                    device_keys = reg.read_key(newkey)['keys']
                    # Iterate through the keys to find our device by it's key id
                    for j in device_keys:
                        newkey = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\VID_16D0&PID_0AA0\\' + j
                        temp_device = reg.read_key(newkey)['values']
                        for a in temp_device:
                            if 'ParentIdPrefix' in a['value']:
                                # If we have the right key entry
                                if a['data'] in keyid:
                                    serialNumber = j
                    if serialNumber != 'None':
                        devicesFound.append(deviceType + ' : ' + \
                            vidpidrev[2] + ' : ' + serialNumber + ' : ' + FriendlyName)
                    else:
                        devicesFound.append(deviceType + ' : ' + \
                            vidpidrev[2] + ' : ' + keyid + ' : ' + FriendlyName)

                # TrueRNGpro V2 (FW > 1.39)
                # USB Class 0A
                if 'VID_04D8&PID_EBB5' in x["data"]:
                    temp = x["data"].split('\\')
                    vidpid = temp[1]
                    keyid = temp[2]
                    newkey = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\' + str(
                        vidpid) + '\\' + str(keyid)
                    device_info = reg.read_key(newkey)["values"]
                    deviceType = 'TrueRNGpro (V2) '
                    for k in device_info:
                        if k['value'] == "FriendlyName":
                            FriendlyName = k['data']
                        if k['value'] == "HardwareID":
                            vidpidrev = k['data'][0].split('\\')[1].split('&')
                    devicesFound.append(deviceType + ' : ' + \
                        vidpidrev[2] + ' : ' + keyid + ' : ' + FriendlyName)

            except:
                i = 1
        return devicesFound
Ejemplo n.º 30
0
 def _load_from_windows(self):
     reg = Reg()
     path = r"HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
     self._reg_hklm = reg.read_key(path)['values']
     path = r"HKCU\Environment"
     self._reg_hkcu = reg.read_key(path)['values']