是否可以通过 telnet 发送 LDAP“请求”?
Posted
技术标签:
【中文标题】是否可以通过 telnet 发送 LDAP“请求”?【英文标题】:Is it possible to send LDAP "requests" via telnet? 【发布时间】:2012-07-17 23:33:56 【问题描述】:我想知道是否有可能通过 telnet(或其他程序)建立与 LDAP 服务器的连接,并开始发出请求和接收响应,就像我通常使用 HTTP 所做的那样。其实这个问题比较笼统,和我对网络连接和通信协议的误解有关。让我告诉你我对这个话题的想法:
所有应用程序协议都定义了通信协议(即服务器将要理解并在其传递时采取行动的消息)。如果我知道应用程序协议是如何工作的,我可以建立与服务器的连接(控制该协议服务器端的守护程序)并开始与服务器通信。例如,使用 HTTP,我可以通过 telnet 建立与 HTTP SERVER 的连接,并开始使用以下请求与他交谈:
GET /users/pepito HTTP/1.1
Host: ***
Content-Type: text/html
我预计任何应用程序协议都会发生此过程。这个概念对吗?
我看过LDAP Protocol Specification RFC,但我不明白消息的格式。我的意思是,我期待阅读诸如 HTTP 协议规范之类的内容;但这太笼统了。您能举个例子说明如何进行 LDAP 搜索吗?
【问题讨论】:
为什么您“希望任何应用程序协议都会发生这种情况”?它在哪里说它们看起来都像 HTTP,在行中带有可读的标头? 其中一些 可以(FTP、SMTP、...)。他们中的更多人没有。 因为我无法想象其他方式可以建立通信。我需要向服务器发送一些东西,这些东西必须是可读的(可能是编码的,但是编码的“字符串”在第一个实例中是不可读的?)。其他协议如何管理?你能给我一个例子吗?谢谢朋友。 你不需要一个例子。您需要 LDAP 协议规范,并且需要被告知不能通过将其键入 Telnet 客户端手动发送。 为什么不呢?我认为一个例子对我非常有用。我的意思是,给出一个 ASN1 规范,这是以这种方式编码的,信息就是这样。我会发现这非常有用。至于你的最后一句话,为什么我不能通过直接输入 Telnet 客户端手动发送?如果我按照 LDAP 所说的 (ASN1 BER) 手动编码消息并通过 Telnet 发送该消息怎么办?这不可能吗?谢谢。 这没有任何意义。你不能举一个不存在的例子,不管它有多么有用。您根本无法在 Telnet 会话中键入二进制数据,并且如果不添加不属于协议一部分的换行符,您将无法让它发送任何内容。 【参考方案1】:在某种程度上,你可以在一些命令行朋友的帮助下 :-)
这是一个简单 LDAP 查询的 hexdump ——它相当于ldapsearch -x -b "" -s base objectclass=top
:
30 0c 02 01 01 60 07 02 01 03 04 00 80 00
30 2c 02 01 02 63 27 04 00 0a 01 00 0a 01 00 02 01 00 02 01 1e 01 01 00 a3 12 04 0b 6f 62 6a 65 63 74 63 6c 61 73 73 04 03 74 6f 70 30 00
将此保存到一个名为 ldap.hexdump 的文件中,然后就可以使用 nc:
xxd -r -p ldap.hexdump | nc ldapserver 389
如果要查看解析后的输出,可以使用 unber:
xxd -r -p ldap.hexdump | nc ldapserver 389 | unber -m -
如果您由于某种原因不能使用 ldapsearch 并且想要使用 nc 或 openssl 来测试 LDAP 服务器是否正确响应,这可能会派上用场。它假定服务器接受匿名绑定来查询空的基本 DN(根 DSE)。
【讨论】:
【参考方案2】:LDAP RFC 指定 LDAP 消息采用 ASN1 编码。这意味着消息是特殊格式的二进制数据,而不是遵循特殊格式的文本。这使得使用 telnet 手动编写 ladap 查询变得非常困难。
【讨论】:
嗯,谢谢,我开始明白了......所以当我阅读 RFC 时,添加操作是这样描述的:tools.ietf.org/html/rfc4511#section-4.7 你能给我一个例子,我怎么能编码这个在 ASN1 中。 您可以在这里查看 ASN1 编码示例:en.wikipedia.org/wiki/Abstract_Syntax_Notation_One 因此编码的 ASN1 PDU 可能如下所示(十六进制):30 13 02 01 05 16 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f 谢谢我的朋友以上是关于是否可以通过 telnet 发送 LDAP“请求”?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法向 telnet 设备发送 GET 请求? [关闭]