Dump msDS-SupportedEncryptionTypes in adssearch.
[ira/wip.git] / examples / misc / adssearch.pl
index b880366c88208c219f6255e8a94c2d4578d060f0..d17e680ec8e9b0fefe5c83ccd35c33cf738944c8 100755 (executable)
@@ -3,7 +3,7 @@
 # adssearch.pl         - query an Active Directory server and
 #                display objects in a human readable format
 #
-# Copyright (C) Guenther Deschner <gd@samba.org> 2003-2007
+# Copyright (C) Guenther Deschner <gd@samba.org> 2003-2008
 #
 # TODO: add range retrieval
 #      write sddl-converter, decode userParameters
@@ -230,6 +230,7 @@ my %ads_mixed_domain = (
 my %ads_ds_func = (
 "DS_BEHAVIOR_WIN2000"                  => 0,   # untested
 "DS_BEHAVIOR_WIN2003"                  => 2,
+"DS_BEHAVIOR_WIN2008"                  => 3,
 );
 
 my %ads_instance_type = (
@@ -244,6 +245,14 @@ my %ads_uacc = (
        "ACCOUNT_LOCKED_OUT"            => 0x800010, # 8388624
 );
 
+my %ads_enctypes = (
+       "DES-CBC-CRC"                           => 0x01,
+       "DES-CBC-MD5"                           => 0x02,
+       "RC4_HMAC_MD5"                          => 0x04,
+       "AES128_CTS_HMAC_SHA1_96"               => 0x08,
+       "AES128_CTS_HMAC_SHA1_128"              => 0x10,
+);
+
 my %ads_gpoptions = (
        "GPOPTIONS_INHERIT"             => 0,
        "GPOPTIONS_BLOCK_INHERITANCE"   => 1,
@@ -518,6 +527,7 @@ my %attr_handler = (
        "modifyTimeStamp"               => \&dump_timestr,
        "msDS-Behavior-Version"         => \&dump_ds_func,      #unsure
        "msDS-User-Account-Control-Computed" => \&dump_uacc,
+       "msDS-SupportedEncryptionTypes" => \&dump_enctypes,
        "mS-DS-CreatorSID"              => \&dump_sid,
 #      "msRADIUSFramedIPAddress"       => \&dump_ipaddr,
 #      "msRASSavedFramedIPAddress"     => \&dump_ipaddr,
@@ -837,7 +847,8 @@ sub get_base_from_rootdse {
 
        my $server = shift || "";
        $dse = shift || get_dse($server,$async_ldap_hd) || return -1;
-       return $dse->get_value('defaultNamingContext');
+       return $dse->get_value($opt_dump_schema ? 'schemaNamingContext':
+                                                 'defaultNamingContext');
 }
 
 sub get_realm_from_rootdse {
@@ -1208,6 +1219,10 @@ sub dump_uacc {
        return dump_bitmask_equal(@_,%ads_uacc); 
 }
 
+sub dump_enctypes {
+       return dump_bitmask_and(@_,%ads_enctypes);
+}
+
 sub dump_uf {
        return dump_bitmask_and(@_,%ads_uf);
 }
@@ -1499,7 +1514,7 @@ sub gen_controls {
                critical => 'true',
                value => "");
 
-       if (defined($opt_paging)) {
+       if (defined($opt_paging) || $opt_dump_schema) {
                push(@ctrls, $ctl_paged);
                push(@ctrls_s, "LDAP_PAGED_RESULT_OID_STRING" );
        }
@@ -1787,9 +1802,9 @@ sub main () {
 
        if ($opt_dump_schema) {
                print "Dumping Schema:\n";
-               my $ads_schema = $async_ldap_hd->schema;
-               $ads_schema->dump;
-               exit 0;
+#              my $ads_schema = $async_ldap_hd->schema;
+#              $ads_schema->dump;
+#              exit 0;
        }
 
        while (1) {