From d00bb54b93c94aa5643662052cd47c11977c03cb Mon Sep 17 00:00:00 2001 From: Pooky Date: Tue, 4 Mar 2014 00:24:03 +0100 Subject: [PATCH] Little changes with intepreatition --- Controllers/Controller.py | 2 +- KEYS_TESTING | Bin 0 -> 262144 bytes Models/HivexManager.py | 70 +++++++++++++++++++++++++++----------- Models/Type.py | 4 +-- PyRedit.geany | 20 ++++------- hivex-test.py | 57 +++++++++++++++++++++++++------ 6 files changed, 105 insertions(+), 48 deletions(-) create mode 100644 KEYS_TESTING diff --git a/Controllers/Controller.py b/Controllers/Controller.py index 02cf3ed..0935c8f 100644 --- a/Controllers/Controller.py +++ b/Controllers/Controller.py @@ -376,7 +376,7 @@ def initEditFrame(self, keyName = "", keyValue = ""): self.ef.Bind(wx.EVT_BUTTON, self.OnCancelClick, self.ef.btn_cancel) self.ef.key_name.SetValue(keyName) - self.ef.key_value.SetValue(keyValue) + self.ef.key_value.SetValue(str(keyValue)) self.ef.Show() diff --git a/KEYS_TESTING b/KEYS_TESTING new file mode 100644 index 0000000000000000000000000000000000000000..96c2e354a93658d6a5d66f478caa9ecd19d49055 GIT binary patch literal 262144 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 string + Display format value -> readable string ''' - def getIntepretation(self, val_type, val): + def getStringIntepretation(self, val_type, val, edit = False): if val_type == Type.STRING: - res = self.h.value_string(val) + result = str(self.h.value_string(val)) + elif val_type == Type.INTEGER: + result = str(self.h.value_dword(val)) + elif val_type == Type.INTEGER_64: + result = str(self.h.value_dword(val)) elif val_type == Type.SYS_STRING: - res = self.h.value_string(val) + result = str(self.h.value_string(val)) + elif val_type == Type.LIST_STRING: + + result = self.h.value_multiple_strings(val) + if not edit: + result = str(result) + else: + result = '\n'.join(result) + elif val_type == Type.BINARY: - string = self.h.value_value(val)[1] - #print repr(string) - #print type(string) - print "binary" - res = repr(string) - #res = hex(string,2) + result = self.h.value_value(val)[1] # Result is in hexadecimal + if not edit: + result = '0x' + ''.join(['%x' % ord(x) for x in result]) # překodování + else: + result = ''.join(['%x' % ord(x) for x in result]) # překodování + else: + #print typ.getStringType(val_type) + result = self.h.value_value(val)[1] + result = result.decode('utf-16le').encode('utf-8') + + return result + ''' + Interpreatce v realnem formatu pro python + ''' + def getRealIntepretation(self, val_type, val): + + if val_type == Type.STRING: + result = str(self.h.value_string(val)) elif val_type == Type.INTEGER: - res = self.h.value_value(val)[1].decode('utf-16le').encode('utf-8') - elif val_type == Type.INTEGER_BIG_ENDIAN: - res = self.h.value_value(val)[1].decode('utf-16be').encode('utf-8') - elif val_type == Type.LINK: - res = self.h.value_string(val) + result = int(self.h.value_dword(val)) + elif val_type == Type.INTEGER_64: + result = int(self.h.value_dword(val)) + elif val_type == Type.SYS_STRING: + result = str(self.h.value_string(val)) elif val_type == Type.LIST_STRING: - res = self.h.value_multiple_strings(val) + result = self.h.value_multiple_strings(val) + elif val_type == Type.BINARY: + result = self.h.value_value(val)[1] # Result is in hexadecimal + #result = ' '.join(['%x' % ord(x) for x in result]) # překodování else: - res = self.h.value_value(val)[1] + #print typ.getStringType(val_type) + result = self.h.value_value(val)[1] - return str(res) + return result ''' Return format for save string -> value diff --git a/Models/Type.py b/Models/Type.py index 0b9ae66..2a4e3ce 100644 --- a/Models/Type.py +++ b/Models/Type.py @@ -47,11 +47,11 @@ def getStringType(self, x): elif x == self.LINK: res = "REG_LINK" elif x == self.LIST_STRING: - res = "LIST_STRING" + res = "REG_MULTI_SZ" else: res = "Unknow" return res - + diff --git a/PyRedit.geany b/PyRedit.geany index bdb7dc8..e0a2832 100644 --- a/PyRedit.geany +++ b/PyRedit.geany @@ -23,20 +23,12 @@ long_line_behaviour=1 long_line_column=72 [files] -current_page=1 -FILE_NAME_0=1328;Python;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Fsrc%2FViews%2FFrame.py;0;4 -FILE_NAME_1=2986;Python;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Fsrc%2FModels%2FHivexManager.py;0;4 -FILE_NAME_2=182;Python;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Fsrc%2FViews%2FMenuBar.py;0;4 -FILE_NAME_3=337;Python;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Fsrc%2FViews%2FDialog.py;0;4 -FILE_NAME_4=1006;Python;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Fsrc%2Fhivex-test.py;0;4 -FILE_NAME_5=5177;Python;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Ftools%2Fhivex%2Fhivex-1.3.7%2Fpython%2Fhivex.py;0;4 -FILE_NAME_6=141;Python;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Fsrc%2Fapp2.py;0;4 -FILE_NAME_7=20;Markdown;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Fsrc%2FREADME.md;0;4 -FILE_NAME_8=661;Python;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Fsrc%2FControllers%2FController.py;0;4 -FILE_NAME_9=81;Python;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Fsrc%2FModels%2FType.py;0;4 -FILE_NAME_10=19022;C;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Ftools%2Fhivex%2Fhivex-1.3.7%2Fpython%2Fhivex-py.c;0;4 -FILE_NAME_11=5454;C;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Ftools%2Fhivex%2Fhivex-1.3.7%2Flib%2Fhivex.h;0;4 -FILE_NAME_12=77465;C;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Ftools%2Fhivex%2Fhivex-1.3.7%2Flib%2Fhivex.c;0;4 +current_page=3 +FILE_NAME_0=9338;Python;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Fsrc%2FControllers%2FController.py;0;4 +FILE_NAME_1=1151;Python;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Fsrc%2Fhivex-test.py;0;4 +FILE_NAME_2=416;Python;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Fsrc%2FModels%2FType.py;0;4 +FILE_NAME_3=2233;Python;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Fsrc%2FModels%2FHivexManager.py;0;4 +FILE_NAME_4=4635;Python;0;EUTF-8;1;1;0;%2Fhome%2Fworker%2FBachelor%2Ftools%2Fhivex%2Fhivex-1.3.7%2Fpython%2Fhivex.py;0;4 [VTE] last_dir=/home/worker/Bachelor/src/Models diff --git a/hivex-test.py b/hivex-test.py index aad2187..f37f3ef 100644 --- a/hivex-test.py +++ b/hivex-test.py @@ -5,6 +5,17 @@ from Models import Type import struct +def hextobin(hexval): + ''' + Takes a string representation of hex data with + arbitrary length and converts to string representation + of binary. Includes padding 0s + ''' + thelen = len(hexval)*4 + binval = bin(int(hexval, 16))[2:] + while ((len(binval)) < thelen): + binval = '0' + binval + return binval ''' # Use hivex to pull out a registry key. @@ -23,12 +34,12 @@ print values ''' -h = hivex.Hivex ("Data/NTUSER.DAT_CHANGED", write=True) +h = hivex.Hivex ("Data/NTUSER.DAT_key_types", write=True) #h = hivex.Hivex ("DEFAULT") typ = Type() root = h.root () -key = h.node_get_child (root, "Environment") +key = h.node_get_child (root, "Keys") #for child in h.node_children(root): @@ -36,23 +47,24 @@ #print name ''' Test string -''' + value = "čeština" value = value.decode("utf-8").encode("utf-16le") value1 = { "key": "Key3", "t": Type.STRING, "value": value } h.node_set_value(key, value1) - ''' - Test int ''' + Test int + #value = 150 value = struct.unpack("BH', x >> 32, x & 0xFFFF) +hexvalue = hextobin("A5") values = [ - { "key": "Key1", "t": 3, "value": "ABC" }, - { "key": "Key2", "t": 3, "value": "DEF" } + { "key": "TEST-Binary(string)", "t": Type.BINARY, "value": "ABC" }, + { "key": "TEST-Binary(hex)", "t": Type.BINARY, "value": "test" }, + { "key": "TEST-Dword", "t": Type.INTEGER, "value": '15'.decode('utf-8').encode('utf-16le') }, + { "key": "TEST-MultiString", "t": Type.LIST_STRING, "value": stringa + "\x00\x00" + stringb + "\x00\x00\x00\x00" }, ] -h.node_set_values (b, values) +#h.node_set_values (key, values) +value = 150 +value1 = { "key": "Key3", "t": Type.INTEGER, "value": "15" } +h.node_set_value(key, value1) +h.commit("KEYS_TESTING") +''' value1 = { "key": "Key3", "t": 3, "value": "GHI" } h.node_set_value (b, value1) string = "JKL".decode('utf-8').encode('utf-16le')