如何通过LDAP获取Active Directory组的SID?
获取Active Directory组的名称和SID
要同时获取AD组的名称和SID,你需要修改查询命令明确指定返回属性,再将二进制格式的SID转换为可读字符串。
步骤1:修改查询命令,指定返回属性
原查询未指定要获取的属性,默认仅返回有限字段。添加attributes参数,指定sAMAccountName(组名称)和objectSid(组SID)即可:
conn.search( f'cn=users,DC=dc,DC=testdomain,DC=link', '(objectclass=group)', attributes=['sAMAccountName', 'objectSid'], paged_size=1000 )
步骤2:转换二进制SID为可读字符串
AD返回的objectSid是二进制数据,无法直接读取。如果使用ldap3库,可调用其内置的convert_sid工具函数完成转换:
from ldap3.utils.conv import convert_sid # 遍历查询结果 for entry in conn.entries: group_name = entry.sAMAccountName.value group_sid = convert_sid(entry.objectSid.value) print(f"组名: {group_name}, SID: {group_sid}")
补充说明
sAMAccountName是AD中组的标准登录名称,相比从DN中提取组名更准确直接- 手动解析二进制SID过程繁琐,推荐使用库内置工具完成转换
内容的提问来源于stack exchange,提问作者realPro
相关产品推荐
相关产品推荐

