如何从base64编码userPassword和其他属性中停止ldapsearch(1)?

时间:2016-08-02 01:32:08

标签: bash ldap

ldapsearch(1)命令从LDAP服务器检索对象,并将它们打印为LDIF结构,如下所示(不是真实数据): dn: mail=foo@domain.com,dc=domain,dc=com objectclass: top objectclass: person mail: foo@domain.com userPassword:: hdfy74dhn79wdhyr74hy7489fhw46789f 如果属性包含非ASCII数据,则它是Base64编码的,在属性名称后面用双::表示。此外,似乎任何名为userPassword的属性总是都会被编码,即使它是ASCII清除的。

我想要做的是告诉ldapsearch不要这样做。我无法找到一个选项标志来传递以抑制此行为;仅重新编译禁用LDAP_PASSWD_DEBUG的来源。

是否有未记录的选项来阻止此编码?

(不考虑安全问题等,因为这是出于测试目的)

1 个答案:

答案 0 :(得分:4)

如果没有重新编译ldapsearch,似乎没有办法用简单的标志来做到这一点。

但是你可以创建一个像这样的shell别名,只要你安装了Perl MIME :: Base64模块就会产生相同的效果。

myldapsearch() { ldapsearch $* | perl -MMIME::Base64 -n -00 -e 's/\n +//g;s/(?<=:: )(\S+)/decode_base64($1)/eg;print' } alias ldapsearch=myldapsearch