# Transfer files over FTP using netcat Note that you cannot receive files using [[FTP]] with a *single* telnet/[[netcat]] session, as file transfers are conducted over a separate channel (either a channel originating from port 20 on the server for "active" mode or a random port above 1023 on the client for "passive" mode). [However, you *can* retrieve files using *two* sessions.](https://stackoverflow.com/questions/50324402/how-to-list-ftp-directories-using-telnet#comment126707507_50324402) - Switch to passive mode (PASV). - The [[FTP]] server will reply with a string of the form (o1,o2,o3,o4,p1,p2), where o1 - o4 are the four octets of the server's IP address and p1 - p2 are the high + low bytes of the port number to connect to. - Use (256 x p1) + p2 to determine the decimal port number. For example, if p1 = 117 and p2 = 85, then then port number you need to connect to is 30037. - Connect a *second* telnet/[[netcat]] client to the IP + port provided by the server. - Issue the appropriate file retrieval (RETR) command in the original telnet/[[netcat]] client. The file will be sent to the second client. Which is a lot of work, but sometimes you just don't have an [[FTP]] client.