Port Scan, File Transfer and More Features Of Linux netcat Command

I love working with the netcat utility. In this article I will share some simple practical examples of netcat for the linux user.

What is Netcat?

nc, also known as the TCP/IP swiss army knife is a feature rich network utility which can be used to read and write data to network connections using TCP or UDP.

You can learn how to install netcat in your Ubuntu linux machine in one of our previous articles about the netcat utility.

Or open a new terminal (CTRL+ALT+T) and run the following command.

sudo apt-get install netcat

After the netcat installation is finished is time to learn some knowledge that you can easily put in practise.

Note: Before going any further open a new tab in your terminal. You will need it to practise the following commands.netcat features


Use netcat As A Client And Server

The netcat tool can operate in two modes, as a client and as a server. The -l option puts netcat in the listening mode (server).

The following command will create a listener in your local machine. The -p option is used to specify the port where your simple small server will listen on.

nc -l -p 123

The above server is listening for incoming connections on port 123. You can use any port that is free at the moment you are running the listener.

Can we connect to the server? Yes, we can. Open another tab in your terminal and run the following command.

nc localhost 123

The above command is used to put netcat in client mode. We connect to the listener that is running in our local machine on port 123.

Congratulations my friend! You have created your first chat with netcat. Try to type some plain text in one of the tabs, hit Enter and see what is going to happen.

I have created a detailed article on creating simple chat with netcat  for you guys. Feel free to read and ask me any question about it.

Scan Ports With netcat

Ok guys, do you like to use netcat as a port scanner? I do!

Port scanning is the act of systematically scanning a computer’s ports.

Open a new terminal (CTRL+ALT+T) and run the following commands. The following command will perform a TCP scan.

Note: We are performing port scan in our local machine.

nc -v -z 25

The following output is the result of the above command.

[email protected]:/home/oltjano# nc -v -z 25
localhost [] 25 (smtp): Connection refused

The -v option is used to run netcat in verbose mode and the -z option tells netcat to not make a full connection since we are only interested to know the state of the port.

Is the port you are scanning open or closed? Maybe it is filtered.

If you like you can read a very detailed article on port scanning with netcat that I wrote for linoxide reader.

Transfer Files With Netcat

You can also use netcat to transfer your files. Suppose we have a file named test.txt on machine A and we wan to transfer its content on machine B. The machine B will listen for a connection. Run the following command on machine B in order to wait and get the test.txt file.

nc -l -p 123 > test.txt

Then run the following command on machine A.

cat test.txt | nc localhost 123

Note: I have only one machine in my network so A and B are the same. What matters is that this technique works.

Stream A Video With Netcat

This is very useful when you want to watch a long video or movie from your server (another machine in your network) but you don't have time to copy it. Make sure you have mplayer installed in the machine that you want to watch the video. Ubuntu geeks and users can install mplayer with the following command.

sudo apt-get install mplayer

In the server side (the machine where your video is stored) run the following command. It is very similar to the file transfer with netcat, but here we do not copy the file in our local machine, we play it with mplayer.

cat video_name.avi | nc -l 13

Run the following command in the client side and everything should be ok. You will easily understand if this technique worked because a video will start to play.

nc server_ip_address 13 | mplayer -vo x11 -cache 3000

Grab Banners With Netcat

To perform a banner grab with netcat run the following command.

nc -v 22

Note: Specify the port based on the service you are looking for. The port 22 is used by ssh.
The following is the output of the above command.

localhost [] 22 (ssh) open
SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1

It works like a charm. This is one of the reasons that I love netcat so much.

Does netcat Support IPV6 Connectivity

Yes it does. You can use the -6 to force netcat to use IPV6.


nc -6 -l 13


nc -6 localhost 13


One article is not enough to cover netcat utility and its usage, but this article is the guide for every new user to netcat. We covered chats, video streaming, file transferring, banner grabbing, port scanning etc. Feel free to suggest your netcat tips in the comments.

Oltjano Terpollari 3:00 am

About Oltjano Terpollari

Oltjano Terpollari is a very passionate computer geek studying python, linux, netcat power tools and living a binary life. He goes by the nickname Ambition and is very happy living a science life. He also loves technical blogging and sharing his knowledge with others.

Author Archive Page

Have anything to say?

Your email address will not be published. Required fields are marked *

All comments are subject to moderation.