NETCAT

netcat是Linux常用的网络工具之一,它能通过TCP和UDP在网络中读写数据,通过与其他工具结合和重定向,可以在脚本中以多种方式使用它。

netcat所做的就是在两台电脑之间建立链接并返回两个数据流,我们可以建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端。

准备工作:

1)首先我们先打开两台Linux虚拟机(位于同一局域网,vmware虚拟机网络均选择桥接模式即可) 当然netcat在windows中也有应用 现在我们只考虑Linux情况

2)关闭防火墙并使用root权限

  以centos7为例 输入 systemctl stop firewalld.service 命令关闭防火墙  输入su命令得到root权限

3)输入命令 ifconfig 查看 ip 地址


我们对于nc命令来做一个简单介绍,我们在两台机子上使用nc,所以会有一个服务端与客户端的建立,其实就是一台机子打开一个侦听端口,另一个去连接那个端口

我们可以在shell中输入 nc -h 可以查看它的参数都有什么用

命令有很多就不再赘述 下面讲最常见的几个

  1)打开服务端口我们通常使用例如   nc -lp 333   333端口只是示例也可以选择其他端口

  2)服务端连接端口使用 例如 nc -nv 192.168.0.115 333  其中192.168.0.115是目标ip 333是目标ip的开放端口

  3)执行相关指令时我们可以在命令后添加例如 -q 1 实现完成命令后1秒关闭连接

需要注意的是 连接是双向的 无论后续进行什么操作,服务端与客户端都可以进行,例如服务端可以向客户端传输文件,同样的客户端也可以向服务端传输文件


传输文本信息

我们可以使用nc 传输文本信息就像聊天一项 下面进行演示

首先两台机子ip已查

我们用左边的机子作为服务端打开端口 输入命令:

[root@bogon chenyuhong]# nc -lp 333

右边机子去连接左边机子 输入命令:

root@Ksha:~# nc -nv 192.168.0.115
(UNKNOWN) [192.168.0.115] (?) open

现在我们就可以实现简单的信息交流了 直接在shell打字回车键即可


传输文件与目录

我们可以传输文本信息 那么可以传输文件吗 当然可以了 我们使用到重定向与nc结合就可以做到这点

例如我们传输一个mp4文件

1)服务端向客户端传输文件

服务端命令:

[root@bogon mvmp4]# nc -lp  < .mp4

客户端命令:

root@Ksha:~/桌面/test# nc -nv 192.168.0.115  > .mp4 -p 

然后我们打开客户端文件夹 发现文件已经传输过来了

2)客户端向服务端传输文件

此步骤其实只需要把上边两条命令的重定向符号交换即可  下面讲的各种操作均是如此 之后不再赘述

那么我们如何传输文件夹(目录)呢

我们可以使用打包解包命令 即把文件夹先弄成压缩包然后对方再解压

服务端向客户端传输目录

服务端命令:

[root@bogon 下载]# tar -cvf - mvmp4/  | nc -lp
mvmp4/
mvmp4/.mp4
mvmp4/test.py

客户端命令:

root@Ksha:~/桌面/test# nc  192.168.0.115  | tar -xvf -
mvmp4/
mvmp4/.mp4
mvmp4/test.py

注意:注意命令中的空格

然后发现文件夹已经传输过来了

我们还可以配合加密命令以及管道来进行加密传输 可以自己多尝试


流媒体服务

我们甚至可以使用nc来做一个流媒体服务器

服务端:

[root@bogon mvmp4]# cat .mp4 | nc -lp 

客户端:

root@Ksha:~/桌面/test# nc -nv 192.168.0.115  | mplayer -vo x11 -cache  -

3000是缓存大小  mplayer播放器需要自己安装在系统种

效果


端口扫描

是的 nc甚至可以用来端口扫描,不过我们也知道端口扫描都不是百分百准确的所以我们只用来参考就好

扫描器端:使用命令 nc -nvz ip地址 端口范围

root@Ksha:~/桌面/test# nc -nvz 192.168.0.115 -
(UNKNOWN) [192.168.0.115] (x11) open
(UNKNOWN) [192.168.0.115] (sunrpc) open
(UNKNOWN) [192.168.0.115] (ssh) open

注意,此命令是扫描tcp 如果扫描udp 需要把命令变为  nc -nvzu

nc -nvzu 192.168.0.115 -


远程硬盘克隆

我们可以远程复制对方硬盘代码如下

被克隆方:

 dd if=/dev/sda | nc -nv 1.1.1.1  –q  

克隆方(接收方):

 nc -lp  | dd of=/dev/sda 

远程控制

我们还可以远程控制对方系统,即控制shell效果

被控制方代码:

[root@bogon mvmp4]# nc -lp  -c bash

控制方代码:


root@Ksha:~/桌面/test# nc -nv 192.168.0.115 333
(UNKNOWN) [192.168.0.115] 333 (?) open
ls
1.mp4
test.py

发现我们现在在窗口敲得命令已经是对方的反馈了 同样的我们上面讲过服务是双向的  所以也可以让监听端口方控制连接端口方 只需要把 -c bash换下位置即可如下图

如上所述,netcat配合命令重定向可以完成的事情简直不要太多 熟悉掌握nc对于网络学习有很大用处

Linux 网络工具netcat(nc)的应用的更多相关文章

  1. linux网络工具nc命令

    nc是netcat的简写,有着网络界的瑞士军刀美誉.因为它短小精悍.功能实用,被设计为一个简单.可靠的网络工具. nc命令的作用 (1)实现任意TCP/UDP端口的侦听,nc可以作为server以TC ...

  2. 【转】Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备

    原文:https://www.cnblogs.com/bakari/p/10449664.html -------------------------------------------------- ...

  3. 网络工具 NetCat

    http://netcat.sourceforge.net/ windows 版本 https://joncraton.org/blog/46/netcat-for-windows/ https:// ...

  4. Linux 网络工具

    1 nethogs nethogs 是一个免费的工具,当要查找哪个 PID (注:即 process identifier,进程 ID) 给你的网络流量带来了麻烦时,它是非常方便的.它按每个进程来分组 ...

  5. 常用linux网络工具

    iftop netstat nethogs可以查看进程占用网络的情况 nc -u -z -w2 192.168.0.1 1-1000 //扫描192.168.0.3 的端口 范围是 1-1000

  6. Linux 网络工具中的瑞士军刀 - socat & netcat

    独立博客阅读:https://ryan4yin.space/posts/socat-netcat/ 文中的命令均在 macOS Big Sur 和 Opensuse Tumbleweed 上测试通过 ...

  7. Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 在前面一篇文章 ...

  8. linux网络工具iproute2的使用简介

    一.写本文的目的 本文完全是自己在学习iproute2的过程中搜集的大杂烩,记录在这里,方便以后自己查询学习,图片都是来自网络,在此表示感谢! 二.简单了解iproute2工具套装 iproute2是 ...

  9. Linux网络工具lsof和netstat

    lsof全名为list opened files,即列举系统中已经被打开的文件,基本使用如下: (1) 查看/etc/passwd使用情况 lsof /etc/password (2) 查看监听的so ...

随机推荐

  1. ASP.NET的MVC设计模式

    当开发者听到“设计模式”这个词时,他们通常联想到两个场景.一组开发者正在讨论许多创造性意见,正在开会,但是却没有进行编码.另外一组人能制定出正确的计划,保证系统能够开发成功,代码可以重用. 而现实一般 ...

  2. Axure实现提示文本单击显示后自动消失的效果

    Axure实现提示文本单击显示后自动消失的效果 方法/步骤     如图所示,框出的部分为提示文本(已经命名为tooltip),希望达到的效果是默认加载时不显示,点击帮助图标后显示,且2秒后自动消失. ...

  3. mysql端口3306无法访问

    mysql主备复制,show slave status显示IO一直connecting 一.查看了防火墙,已经处于关闭状态 二.查看使用的复制用户的权限,也已经开放 三.telnet访问另外一台机器端 ...

  4. ? 这是个很好的问题。Go 当前的 GC 显然做了一些额外的工作,但它也跟其他的工作并行执行,所以在具有备用 CPU 的系统上,Go 正在作出合理的选择。请看 https://golang.org/issue/17969 结束语(Closing notes) 通过研究 Go 垃圾收集器,我能够理解 Go GC 当前结构的背景以及它如何克服它的弱点。Go发展得非常快。如果你对 Go感兴趣,最好继

    ? 这是个很好的问题.Go 当前的 GC 显然做了一些额外的工作,但它也跟其他的工作并行执行,所以在具有备用 CPU 的系统上,Go 正在作出合理的选择.请看 https://golang.org/i ...

  5. linux下docker如何指定容器的工作目录?

    答: 启动容器时传入-w <work_dir>参数即可,如: docker run -it -w <work_dir> <container_image_name> ...

  6. 《maven实战》笔记(2)----一个简单maven项目的搭建,测试和打包

    参照<maven实战>在本地创建对应的基本项目helloworld,在本地完成后项目结构如下: 可以看到maven项目的骨架:src/main/java(javaz主代码)src/test ...

  7. SQL-W3School-高级:SQL 通配符

    ylbtech-SQL-W3School-高级:SQL 通配符 1.返回顶部 1. 在搜索数据库中的数据时,您可以使用 SQL 通配符. SQL 通配符 在搜索数据库中的数据时,SQL 通配符可以替代 ...

  8. vue+webpack 实现懒加载的三种方式

    第一种: 引入方式 就是正常的路由引入方式 const router = new Router({ routes: [ { path: '/hyh', component: hyh, name: 'h ...

  9. oracle 中SQL 语句开发语法 SELECT INTO含义

    oracle 中SQL 语句开发语法 SELECT INTO含义 在ORACLE中SELECT INTO是如何使用的,什么意思?和SQL SERVER的不一样?   和sqlserver的不一样sql ...

  10. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_14-页面静态化-数据模型-远程请求接口

    okhttp的官方文档: https://square.github.io/okhttp/ github的地址 https://github.com/square/okhttp/ 如何远程请求轮播图的 ...