@@ -69,19 +69,23 @@ def sid_to_name(self, all_users):
6969 def load_missing_users (self , unloaded_user_objects ):
7070 """Load missing users into registry to access their registry keys."""
7171 for user_object in unloaded_user_objects :
72- # Extract profile Path of NTUSER.DAT
73- reg_handle = rrp .hOpenLocalMachine (self .rrp ._RemoteOperations__rrp )["phKey" ]
74- key_handle = rrp .hBaseRegOpenKey (self .rrp ._RemoteOperations__rrp , reg_handle , f"SOFTWARE\\ Microsoft\\ Windows NT\\ CurrentVersion\\ ProfileList\\ { user_object } " )["phkResult" ]
75- user_profile_path = rrp .hBaseRegQueryValue (self .rrp ._RemoteOperations__rrp , key_handle , "ProfileImagePath" )[1 ].split ("\x00 " )[:- 1 ][0 ]
76- rrp .hBaseRegCloseKey (self .rrp ._RemoteOperations__rrp , key_handle )
72+ try :
73+ # Extract profile Path of NTUSER.DAT
74+ reg_handle = rrp .hOpenLocalMachine (self .rrp ._RemoteOperations__rrp )["phKey" ]
75+ key_handle = rrp .hBaseRegOpenKey (self .rrp ._RemoteOperations__rrp , reg_handle , f"SOFTWARE\\ Microsoft\\ Windows NT\\ CurrentVersion\\ ProfileList\\ { user_object } " )["phkResult" ]
76+ user_profile_path = rrp .hBaseRegQueryValue (self .rrp ._RemoteOperations__rrp , key_handle , "ProfileImagePath" )[1 ].split ("\x00 " )[:- 1 ][0 ]
77+ rrp .hBaseRegCloseKey (self .rrp ._RemoteOperations__rrp , key_handle )
7778
78- # Load Profile
79- reg_handle = rrp .hOpenUsers (self .rrp ._RemoteOperations__rrp )["phKey" ]
80- key_handle = rrp .hBaseRegOpenKey (self .rrp ._RemoteOperations__rrp , reg_handle , "" )["phkResult" ]
79+ # Load Profile
80+ reg_handle = rrp .hOpenUsers (self .rrp ._RemoteOperations__rrp )["phKey" ]
81+ key_handle = rrp .hBaseRegOpenKey (self .rrp ._RemoteOperations__rrp , reg_handle , "" )["phkResult" ]
8182
82- self .context .log .debug (f"LOAD USER INTO REGISTRY: { user_object } " )
83- rrp .hBaseRegLoadKey (self .rrp ._RemoteOperations__rrp , key_handle , user_object , f"{ user_profile_path } \\ NTUSER.DAT" )
84- rrp .hBaseRegCloseKey (self .rrp ._RemoteOperations__rrp , key_handle )
83+ self .context .log .debug (f"LOAD USER INTO REGISTRY: { user_object } " )
84+ rrp .hBaseRegLoadKey (self .rrp ._RemoteOperations__rrp , key_handle , user_object , f"{ user_profile_path } \\ NTUSER.DAT" )
85+ rrp .hBaseRegCloseKey (self .rrp ._RemoteOperations__rrp , key_handle )
86+ except rrp .DCERPCSessionError as e :
87+ self .context .log .fail (f"Error loading user { user_object } into registry: { e } " )
88+ self .context .log .debug (traceback .format_exc ())
8589
8690 def unload_missing_users (self , unloaded_user_objects ):
8791 """If some user were not logged in at the beginning we unload them from registry."""
@@ -92,7 +96,7 @@ def unload_missing_users(self, unloaded_user_objects):
9296 self .context .log .debug (f"UNLOAD USER FROM REGISTRY: { user_object } " )
9397 try :
9498 rrp .hBaseRegUnLoadKey (self .rrp ._RemoteOperations__rrp , key_handle , user_object )
95- except Exception as e :
99+ except rrp . DCERPCSessionError as e :
96100 self .context .log .fail (f"Error unloading user { user_object } in registry: { e } " )
97101 self .context .log .debug (traceback .format_exc ())
98102 rrp .hBaseRegCloseKey (self .rrp ._RemoteOperations__rrp , key_handle )
0 commit comments