netcat——Useful netcat examples on Linux
http://xmodulo.com/useful-netcat-examples-linux.html
Often referred to as the "swiss army of knife" for TCP/IP networking, Netcat is an extremely versatile Linux utility that allows you to do anything under the sun using TCP/UDP sockets. It is one of the most favorite tools for system admins when they need to do networking related troubleshooting and experimentation.
In this tutorial, I am sharing a few useful netcat examples, although the sky is the limit when it comes to possible netcat use cases. If you are using netcat regularly, feel free to share your use case.
Note that when you are binding to well-known ports (0-1023) with nc, you need root privilege. Otherwise, run nc as a normal user.
1. Test if a particular TCP port of a remote host is open.
nc: connect to 192.168.233.208 5000 (tcp) failed: Connection refused
Connection to 192.168.233.208 22 port [tcp/ssh] succeeded! SSH-2.0-OpenSSH_6.0p1 Debian-4
2. Send a test UDP packet to a remote host.
The command below sends a test UDP packet with 1 second timeout to a remote host at port 5000.
3. Perform TCP port scanning against a remote host.
The command below scans ports in the ranges of [1-1000] and [2000-3000] to check which port(s) are open.
4. Copy a file (e.g., my.jpg) from hostA.com to hostB.com.
On hostB.com (receiver):
On hostA.com (sender):
5. Transfer a whole directory (including its content) from hostA.com to hostB.com.
On hostB.com (receiver):
On hostA.com (sender):
6. Perform UDP port scanning against a remote host.
Connection to 192.168.1.8 68 port [udp/*] succeeded! Connection to 192.168.1.8 5353 port [udp/*] succeeded! Connection to 192.168.1.8 16389 port [udp/*] succeeded! Connection to 192.168.1.8 38515 port [udp/*] succeeded! Connection to 192.168.1.8 45103 port [udp/*] succeeded!
The above command checks which UDP port(s) of a remote host are open and able to receive traffic.
7. Listen on a UDP port and dump received data in text format.
The command below listens on UDP port for incoming messages (lines of text).
Note that this command dies after receiving one message. If you want to receive multiple messages, use while loop as follows.
8. Back up a (compressed) hard drive (e.g., /dev/sdb) to a remote server.
On a remote server:
On a local host with a hard drive:
9. Restore a hard drive from a compressed disk image stored in a remote server.
On a local host:
On a remote server with a backup disk image (e.g., /backup/sdb.img.gz):
10. Serve a static web page as a web server.
Type the command below to launch a web server that serves test.html on port 8000.
Now go to http://<host_ip_address>:8000/test.html to access it. Note that in order to use a well known port 80, you will need to run nc with root privilege as follows.
11. (Insecure) online chat between two hosts.
On one host (192.168.233.203):
On another host:
After running the above commands, anything typed on either host appears on the other host's terminal.
12. Launch a "remote shell" which allows you run from local host any commands to be executed on a remote host.
On a remote host (192.168.233.208):
On local host:
After running the above command on local host, you can start running any command from local host's terminal. The command will be executed on the remote host, and the output of the command will appear on local host. This setup can be used to create a backdoor on a remote host.
13. Create a web proxy for a particular website (e.g., google.com).
The above commands create a named pipe proxypipe, and use nc to redirect all incoming TCP/5000 connections to http://www.google.com via the bidirectional pipe. With this setup, you can access Google by going to http://127.0.0.1:5000.
14. Create an SSL proxy for a particular website (e.g., google.com).
while true do; openssl s_client -connect www.google.com:443 -quiet < proxypipe > proxypipe2; done
The above commands use nc to proxy SSL connections to Google.com.
15. Stream a video file from a server, and client watches the streamed video using mplayer.
On a video server (192.168.233.208):
On a client host:
16. Listen on a TCP port using IPv6 address.
The following command let nc use IPv6 address when listening on a TCP port. This may be useful to test IPv6 setup.
tcp6 0 0 :::5000 :::* LISTEN 4099/nc
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通