Skip to content

Instantly share code, notes, and snippets.

@itc-lab
Last active November 21, 2021 09:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save itc-lab/2c57c4aadc44f3c50b9b286fe3f4ff82 to your computer and use it in GitHub Desktop.
Save itc-lab/2c57c4aadc44f3c50b9b286fe3f4ff82 to your computer and use it in GitHub Desktop.
<?php
# Create LDIF for Active Directory
# 70200 AD users, 702 groups.
# Each group has 100 people from 001 to 100.
# Usage:
# php create_ad_users_groups_ldif.php > dummy.ldif
# ldapadd -H ldaps://example.contoso.com -x -D "CN=administrator,CN=Users,DC=ad,DC=contoso,DC=com" -w "password" -f dummy.ldif
define("PASSWORD", "password$01");
$unicodePwd = base64_encode(iconv("UTF-8", "UTF-16LE", '"' . PASSWORD . '"'));
for ($i = 0; $i < 702; $i++) {
$alpha = num2alpha($i);
$group = <<<EOM
dn: CN=Group{$alpha},CN=Users,DC=ad,DC=contoso,DC=com
objectClass: top
objectClass: group
cn: Group{$alpha}
distinguishedName: CN=Group{$alpha},CN=Users,DC=ad,DC=contoso,DC=com
name: Group{$alpha}
sAMAccountName: Group{$alpha}
objectCategory: CN=Group,CN=Schema,CN=Configuration,DC=ad,DC=contoso,DC=com
groupType: -2147483646
EOM;
for ($j = 1; $j <= 100; $j++) {
$number = sprintf('%03d', $j);
$member = "member: CN=TEST{$number}{$alpha} User{$number}{$alpha},CN=Users,DC=ad,DC=contoso,DC=com";
$user = <<<EOM
dn: CN=TEST{$number}{$alpha} User{$number}{$alpha},CN=Users,DC=ad,DC=contoso,DC=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: TEST{$number}{$alpha} User{$number}{$alpha}
sn: TEST{$number}{$alpha}
givenName: User{$number}{$alpha}
distinguishedName: CN=TEST{$number}{$alpha} User{$number}{$alpha},CN=Users,DC=ad,DC=contoso,DC=com
name: TEST{$number}{$alpha} User{$number}{$alpha}
sAMAccountName: TEST{$number}{$alpha}
userPrincipalName: TEST{$number}{$alpha}@contoso.com
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=ad,DC=contoso,DC=com
userAccountControl: 512
unicodePwd:: {$unicodePwd}
EOM;
$group .= "\n" . $member;
echo $user . "\n\n";
}
echo $group . "\n\n";
}
function num2alpha($n)
{
$r = '';
for ($i = 1; $n >= 0 && $i < 10; $i++) {
$r = chr(0x41 + ($n % pow(26, $i) / pow(26, $i - 1))) . $r;
$n -= pow(26, $i);
}
return $r;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment