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