使用python socket 搭建ftp服务器

发布于 2022-09-06 03:21:16 字数 1337 浏览 26 评论 0

使用python socket搭建ftp服务器的时候,客户端无法识别是ftp协议,虽然可以传输文本但是指令如主被动模式就无法识别。

这是访问正常ftp服务器的包,客户端可以识别是ftp协议

图片描述

下图是我用socket自己搭建的服务器,无法识别出ftp

图片描述

这是我测试用的代码

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    s.bind(('192.168.233.129', 31503))
    s.listen(5) 
    print 'Waiting for connection...'


    clientSock, addr = s.accept()
    print 'Accept new connection from %s:%s...' % addr

    clientSock.send('220-\r\n220 end\r\n'.encode('utf-8')) 
     print clientSock.recv(65536)
     clientSock.send('331 password\r\n'.encode('utf-8'))
     print clientSock.recv(65536)
     clientSock.send('230 login\r\n'.encode('utf-8'))
     print clientSock.recv(65536)
     clientSock.send('215 UnixType\r\n'.encode('utf-8'))
    print clientSock.recv(65536)
    clientSock.send('227 Entering Passive Mode (192,168,233,129,105,160).\r\n'.encode('utf-8'))

结果就是client并不会认为pasv指令是pasv模式,请问如何能让消息被client辨别出是ftp协议的呢

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

〗斷ホ乔殘χμё〖 2022-09-13 03:21:16

wirshark是通过端口号来区别不同协议的,你没有使用标准的FTP 20/21端口,当然就无法识别了。解决办法有两个:

  1. 在你自己写的程序里使用标准的20/21端口。
  2. 在wireshark和ftp客户端里修改ftp协议的端口号为你程序所使用的端口号。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文