首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PHP枚举AD域

用PHP枚举AD域
EN

Stack Overflow用户
提问于 2012-12-07 08:32:03
回答 2查看 143关注 0票数 0

我们有超过80个其他“受信任”域附加的域名。这意味着我们的一些组是交叉链接的,一个域的用户,另一个域上的组,等等。我已经编写了一个脚本,从其中一个域上的特定组创建用户列表,但其中一些来自其他域,因此我只获得了外部标识符。我需要链接到其他域,但我需要每个域的SID。

是否有相当于Win32 32的DsEnumerateDomainTrusts的PHP?我不想手动写出所有的SID,然后在添加新域或删除旧域时继续手动更新它们。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-19 16:31:43

您可以在域的系统容器中对trustedDomain对象执行LDAP查询。对我来说,域的sid位于securityIdentifier属性中。

票数 1
EN

Stack Overflow用户

发布于 2014-02-09 14:03:55

以下是我的解决办法:

代码语言:javascript
复制
function ldap_sidconvert($ldapbytes)
{
    $d_proc=unpack("H*",$ldapbytes);
    $d_proc['hex1']=str_split(substr($d_proc[1],-24),2);
    foreach ($d_proc['hex1'] as $key=>$value)
    {
        $d_proc['hex2'][floor($key/4)][]=$value;
    }
    foreach ($d_proc['hex2'] as $key=>$value)
    {
        $d_proc['hex3'][$key]=hexdec(implode(array_reverse($d_proc['hex2'][$key],FALSE)));
    }
    return implode("-",$d_proc['hex3']);
}

然后,您可以通过将security标识符字段的值传递给它来调用它:

代码语言:javascript
复制
ldap_sidconvert($domains[0]['securityidentifier'][0])

在本例中,它只是查看列表中的第一个域,将前0替换为1,2,3.等如有需要。这只是转换最后24个十六进制数字,我不知道如何处理前24,但我相信他们不是唯一的,所以他们不应该是必需的。

这可能不是最好的方式,所以我很高兴接受批评我的编码,但希望它将有助于在未来的人。

这可能是一个有用的参考:小岛屿发展中国家

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13759495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档