瑞士军刀NC

nc是网络调试的一款强大的工具,是用于处理TCP或UDP数据的通用实用程序,是黑客界的瑞士军刀

看看的常规用法:

> tldr nc
Netcat is a versatile utility for working with TCP or UDP data.
More information: 
https://nmap.org/ncat

 - Listen on a specified port and print any data received:
   nc -l {{port}}

 - Connect to a certain port (you can then write to this port):
   nc {{ip_address}} {{port}}

 - Set a timeout:
   nc -w {{timeout_in_seconds}} {{ipaddress}} {{port}}

 - Serve a file:
   nc -l {{port}} < {{file}}

 - Receive a file:
   nc {{ip_address}} {{port}} > {{file}}

 - Server stay up after client detach:
   nc -k -l {{port}}

 - Client stay up after EOF:
   nc -q {{timeout}} {{ip_address}}

 - Scan the open ports of a specified host:
   nc -v -z {{ip_address}} {{port}}

 - Act as proxy and forward data from a local TCP port to the given remote host:
   nc -l {{local_port}} | nc {{hostname}} {{remote_port}}

nc对于网络的操作可以分为接受发送这两种操作

区别是参数 -l, -l 是监听端口的参数,有这个参数,说明启动的是一个服务端

其他没有-l的操作,则是向其他网络端发起网络操作,是一个客户端

两个终端实时通讯

如:

开一个服务端

nc -l 1234 # 打开本地的1234端口,可以通过这个接口接受数据

开一个客户端,向上面这个服务端传数据

nc localhost 1234

然后,你在客户端里面输入的任何内容都会在跑服务端这段print出来。

服务端保存接受到的数据成文件

之前的服务端print的内容是标准输出到终端窗口,我们也可以改一下输出到一个文件

touch log.txt | nc -l 1234 > server.txt #  所有的接受到的数据会保存到server.txt

我们刚才上面是用 nc localhost 1234来向服务端发数据,其实也可以直接用telnet

telnet localhost 1234 # 所有telnet命令下的敲入的数据都会被传到服务器,直到telnet客户端断开连接

传输文件

也可以直接向服务端传输文件

echo 'this is client' > client.txt
nc localhost 1234 < client.txt # client.txt的重定向到nc,然后传给服务端,server.txt的内容就变成client.txt的内容

那么如果要从服务端下载内容怎么做?

echo 'this is server' > server.txt
nc -l 1234 < server.txt # 把server.txt重定向给nc,作为服务内容
nc localhost 1234 # server.txt的内容会在客户端打印出来
nc -n localhost 1234 > client.txt # server的内容会保持到client.txt

如果我们平时想临时搭建一个服务在两台机器间传输文件,用nc是非常方便的,那么这种传输的其他用途,大家可以发挥自己的想象力

传输整个目录

传输目录要借助压缩工具,比如tar,把目录压缩成一个文件然后通过管道流到nc

tar -cvf - . | nc -l 1234 # 压缩当前目录传输出去
nc localhost 1234 > server.tar # 接受到的目录压缩包保存位server.tar
nc localhost 1234 | tar -xvf - # 直接解压压缩到的目录到当前目录

加密传输

mcrypt –flush –bare -F -q -m ecb < server.txt | nc -l 1234
nc localhost 1234 | mcrypt –flush –bare -F -q -d -m ecb > server.txt

通过mcrypt加密后重定向给nc,客户端收到后,同样的解密,两端需要数同样的加密密码

反向代理

上面我们知道,可以通过命令单方面向服务端发起数据,反向代理需要我们服务端自动响应,所以我们借助命令管道来实现

mkfifo reply # 创建命名管道 replay
# reply重定向给nc server,
# nc server又通过管道把接收到的内容交给另外一个nc客户端
# 然后这个客户端接收到内容重定向给命名管道replay, 
# 由于reply已经重定向给server,所以就能接收到client请求的结果
nc -k -l 1234 < reply | nc localhost 8080 > reply 

打开浏览器输入http://localhost:1234,就能看到localhost:8080的内容

结束后,记得把执行** rm reply** 把命名管道删除掉

克隆一个linux系统

借助dd来读取磁盘的原始数据重定向给server

dd if=/dev/sda | nc -l 1234 # 已有机器,假设系统装在设备sda上
nc -n {ip from linux device} 1234 | dd of=/dev/sda 

远程执行shell(代替ssh)

有时候,我们没有安装ssh的时候,也可以用nc来帮我们对服务器做远程的shell操作,原理也是借助命名管道来实现

rm -f /tmp/f; mkfifo /tmp/f # 先删除可能以前遗留的命名管道f(应该起一个独特的名字)
# 把命名管道的内容导入到给shell, 
# shell启动交互模式,执行的结果错误也重新通过管道写到标准输出,标准输出又通过管道交给nc
# 然后nc接收到输入命令又重定向给/tmp/f命名管道,形成闭环
cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f 

在客户端输入,就会出现一个可交互的命令终端

nc localhost 1234
$ ls
server.txt
...

扫描端口

nc -zv localhost 20-80      
nc: connect to localhost port 20 (tcp) failed: Connection refused
nc: connect to localhost port 21 (tcp) failed: Connection refused
Connection to localhost 22 port [tcp/ssh] succeeded!
nc: connect to localhost port 23 (tcp) failed: Connection refused

好了

最后想说,技术无知,人有分别,请大家管好自己的键(欲)盘(望).


扩展阅读:

新手该如何选择云服务器
个人玩家和中小企业云服务器选择对比

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,585评论 4 365
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,923评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,314评论 0 248
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,346评论 0 214
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,718评论 3 291
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,828评论 1 223
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,020评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,758评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,486评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,722评论 2 251
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,196评论 1 262
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,546评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,211评论 3 240
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,132评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,916评论 0 200
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,904评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,758评论 2 274

推荐阅读更多精彩内容