in reply to Re^2: Peculiar problem with Net::LDAPS and AD LDAP
in thread Peculiar problem with Net::LDAPS and AD LDAP
I am convinced now it's a bug, that Net::LDAP::Filter's regexes are inadvertently matching things in the binary data causing the ->new() call to fail and return undef, but I found a work-around. When I looked up the objectGUID reference at LDAPWiki the proper way to create the search term for LDAP is (objectGUID=\12\34\56\78\9a\bc\de\f1) as a kind of escaped byte code.
When I hand-constructed a searchfilter from a 'broken' objectGUID, the search worked
So I wrote the following bit of code to turn the binary objectGUID into a hex string matching that format and I now can properly get all the info for the extant accounts.
sub enc_hex { my @h = split(//,unpack('H*',(shift)); my ($i, $out, $first); foreach $i(@h) {if (!$first){$out.="\\$i"; $first=1;} else {$o +ut.=$i;$first='';}} return $out; }
Plugging that into my actual module that gets a sAMAccountName from a stored uuencoded objectGUID worked.
There is probably some Perl Master way to write this as a one-liner, but I'll be able to look at this three years from now and understand what I'm doing, so it'll do!
Thanks again for the help!
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Peculiar problem with Net::LDAPS and AD LDAP
by jcb (Parson) on Feb 21, 2021 at 04:32 UTC |