Last active
November 21, 2021 09:15
-
-
Save itc-lab/c751e9c731365b744af3f3a27b8c41ad to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Create LDIF for Active Directory | |
# 70200 AD users, 702 groups. | |
# Each group has 100 people from 001 to 100. | |
# Usage: | |
# python3 create_ad_users_groups_ldif.py > 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 | |
import base64 | |
PASSWORD = "password$01" | |
def num2alpha(n): | |
r = "" | |
for i in range(1, 10): | |
if n < 0: | |
break | |
r = chr(0x41 + (n % pow(26, i) // pow(26, i - 1))) + r | |
n -= pow(26, i) | |
return r | |
unicodePwd = base64.b64encode(('"' + PASSWORD + '"').encode("utf-16-le")) | |
for i in range(702): | |
alpha = num2alpha(i) | |
group = """ | |
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 | |
""".format( | |
alpha=alpha | |
).strip() | |
for j in range(1, 101): | |
number = "{0:03d}".format(j) | |
member = f"member: CN=TEST{number}{alpha} User{number}{alpha},CN=Users,DC=ad,DC=contoso,DC=com" | |
user = """ | |
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} | |
""".format( | |
number=number, alpha=alpha, unicodePwd=unicodePwd.decode() | |
).strip() | |
group += "\n" + member | |
print(user + "\n") | |
print(group + "\n") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment