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

Ste*_*way 5 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禁用的情况下重新编译源代码。

是否有未公开的选项来防止这种编码?

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

Ste*_*way 6

缺少重新编译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