A Gentle Introduction to netcat - Zheng Hao Tan - Medium



A Gentle Introduction to netcat - Zheng Hao Tan - Medium

Netcat can be regarded as the Swiss Army knife of TCP/IP tools. It allows you to send/receive TCP/UDP packets to diagnose networking issues in your machine.

netcat is also widely available and comes preinstalled on most UNIX based operating systems, including MacOS and popular Linux distros like Ubuntu.

There are many tips and tricks out there to use netcat well, but I'm going to do my best to try to summarize it's core use case below.

There are two main ways to use netcat: invoking it with the netcat command or its alias, nc.

Sending TCP packets

$ echo '<YOUR MESSAGE HERE>' | nc <HOST> <PORT>

Example:

# Sending 'hello world!' to localhost on port 12345.
$ echo 'hello world' | nc localhost 12345

Listening to incoming TCP packets

$ nc -l <PORT>

Example:

$ nc -l 12345 # Tell netcat to listen to port 12345 for TCP packets

With this two basic features, here are some creative use cases:

Let's say we have a file named example-netcat.txt that contains the a message "hi there, netcat!":

$ cat example-netcat.txt
hi there, netcat! # contents of example-netcat.txt

Since it can establish and perform two way transfer of data packets, we could easily pipe files from source to destination host like this:

Sender:

nc localhost 12345 < example-netcat.txt

Receiver:

nc -l 12345 > example-netcat2.txt

If this executes successfully, example-netcat2.txt will contain the same contents as example-netcat.txt .

$ cat example-netcat2.txt
hi there, netcat! # which is the same as in the original file.

You can also choose to see packets being transferred by netcat in real time by firing up programs like WireShark or tcpdump.

nmap is a great tool for port scanning, but you can also use netcat to do basic port scanning tasks.

$ nc -z <HOST> <PORT RANGE>

Example:

# Scan 'host.example.com' with ports ranging from 10 to 50.
$ nc -z host.example.com 10–50

The -z flag basically tells netcat to report open ports only and to not establish connections.

Note that this can take a while, and the time spent here is linearly proportial to the size of the port range being searched.


Read full article from A Gentle Introduction to netcat - Zheng Hao Tan - Medium


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts