如何使用telnet列出FTP目录?

3

我在本地网络的一台服务器上安装了FileZilla FTP服务器。 我可以成功使用FTP命令列出用户user的文件夹(实际上我是通过Microsoft商店在Windows 10上安装Ubuntu的)。

ftp -p 192.168.11.24 21
Connected to 192.168.11.24.
220-FileZilla Server 0.9.60 beta
220-written by Tim Kosse (tim.kosse@filezilla-project.org)
220 Please visit https://filezilla-project.org/
Name (192.168.11.24:ms): user
331 Password required for user
Password:
230 Logged on
Remote system type is UNIX.
ftp> nlist /
227 Entering Passive Mode (192,168,11,24,203,217)
150 Opening data channel for directory listing of "/"
/crm-offers-browse-2018-03-08.xlsx
/log_file.txt
/model.png
226 Successfully transferred "/"

如果我使用 telnet 尝试相同的操作(我使用 Wireshark 捕获了命令),则命令 nlist 无法正常工作。它会返回 425 Can't open data connection。我错过了什么?

enter image description here

telnet -e _ 192.168.11.24 21
Telnet escape character is '_'.
Trying 192.168.11.24...
Connected to 192.168.11.24.
Escape character is '_'.
220-FileZilla Server 0.9.60 beta
220-written by Tim Kosse (tim.kosse@filezilla-project.org)
220 Please visit https://filezilla-project.org/
USER user
331 Password required for user
PASS user
230 Logged on
SYST
215 UNIX emulated by FileZilla
PASV
227 Entering Passive Mode (192,168,11,24,205,245)
NLST /
425 Can't open data connection for transfer of "/"

1
在执行PASV命令后,打开另一个telnet连接(数据通道)到从PASV返回的地址/端口(这里是192.168.11.24 52725,最后两个数字是端口号的高字节和低字节)。然后,当您在命令通道(第一个telnet连接)中触发NLST时,列表将通过数据通道返回。 - Michal Butterweck
@MichalButterweck:我很惊讶你的评论不是一个答案,因为它准确地解决了如何列出FTP目录的问题。对于其他谷歌用户,结构是PORT(h1,h2,h3,h4,p1,p2),其中端口号由(p1 * 256) + p2找到。这就是@Michal所说的,如果您已经了解高位字节和低位字节。 - joshfindit
1个回答

0

这篇文章中描述了答案:Telnet和被动FTP

你不能使用Telnet客户端通过FTP协议检索文件。

虽然你可以通过在Telnet控制台上键入FTP命令来模拟FTP客户端,但你无法通过这种方式进行文件传输。这是因为对于文件传输,你需要一个单独的数据传输连接,而Telnet客户端无法实现。

这就是为什么FTP服务器会失败的原因。在主动模式下,它无法连接回到你的客户端机器,因为没有任何东西在监听。在被动模式下,它会超时等待客户端连接到其数据端口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接