@@ -92,32 +92,28 @@ def safe_str(obj):
9292 return False
9393 try :
9494 resp = samr .hSamrGetMembersInGroup (dce , group_handle )
95- if resp ["Members" ]["Members" ]:
96- for member in resp ["Members" ]["Members" ]:
95+ for member in resp ["Members" ]["Members" ]:
96+ rid = int .from_bytes (member .getData (), byteorder = "little" )
97+ try :
98+ user_handle = samr .hSamrOpenUser (dce , domain_handle , samr .MAXIMUM_ALLOWED , rid )["UserHandle" ]
99+ username = samr .hSamrQueryInformationUser2 (dce , user_handle , samr .USER_INFORMATION_CLASS .UserAllInformation )["Buffer" ]["All" ]["UserName" ]
100+
101+ full_username = f"{ domain } \\ { username } "
102+ admin_users .add (f"{ full_username } (Member of { group_name } )" )
103+
104+ # map sid string of user to username
105+ user_sid = f"{ domain_sid } -{ rid } "
106+ self .sid_to_user [user_sid ] = full_username
107+
108+ samr .hSamrCloseHandle (dce , user_handle )
109+ except Exception as name_e :
97110 try :
98- rid = int .from_bytes (member .getData (), byteorder = "little" )
99- try :
100- user_handle = samr .hSamrOpenUser (dce , domain_handle , samr .MAXIMUM_ALLOWED , rid )["UserHandle" ]
101- username = samr .hSamrQueryInformationUser2 (dce , user_handle , samr .USER_INFORMATION_CLASS .UserAllInformation )["Buffer" ]["All" ]["UserName" ]
102-
103- full_username = f"{ domain } \\ { username } "
104- admin_users .add (f"{ full_username } (Member of { group_name } )" )
105-
106- # map sid string of user to username
107- user_sid = f"{ domain_sid } -{ rid } "
108- self .sid_to_user [user_sid ] = full_username
109-
110- samr .hSamrCloseHandle (dce , user_handle )
111- except Exception as name_e :
112- try :
113- sid_str = domain_sid
114- full_sid = f"{ sid_str } -{ rid } "
115- except Exception :
116- full_sid = "[unrepresentable SID]"
117- context .log .debug (f"Failed to get user info for RID { rid } : { name_e !s} " )
118- admin_users .add (f"{ domain } \\ { full_sid } (Member of { group_name } )" )
119- except Exception as member_e_inner :
120- context .log .debug (f"Error processing group member: { member_e_inner !s} " )
111+ sid_str = domain_sid
112+ full_sid = f"{ sid_str } -{ rid } "
113+ except Exception :
114+ full_sid = "[unrepresentable SID]"
115+ context .log .debug (f"Failed to get user info for RID { rid } : { name_e !s} " )
116+ admin_users .add (f"{ domain } \\ { full_sid } (Member of { group_name } )" )
121117 except Exception as e :
122118 context .log .exception (e )
123119 context .log .debug (f"Failed to get members of group { group_name } : { e !s} " )
0 commit comments