zoukankan      html  css  js  c++  java
  • Linux 网络工具netcat(nc)的应用

    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 333
    (UNKNOWN) [192.168.0.115] 333 (?) open

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


    传输文件与目录

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

    例如我们传输一个mp4文件 

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

    服务端命令:

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

    客户端命令:

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

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

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

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

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

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

    服务端向客户端传输目录

    服务端命令:

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

    客户端命令:

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

    注意:注意命令中的空格

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

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


    流媒体服务

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

    服务端:

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

    客户端:

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

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

    效果


    端口扫描

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

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

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

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

    nc -nvzu 192.168.0.115 1-100


    远程硬盘克隆

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

    被克隆方:

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

    克隆方(接收方):

     nc -lp 333 | dd of=/dev/sda 

    远程控制

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

    被控制方代码:

    [root@bogon mvmp4]# nc -lp 333 -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对于网络学习有很大用处

  • 相关阅读:
    考察数据结构(An Extensive Examination of Data Structures)
    考察数据结构——第一部分:数据结构简介[译]
    老生常谈
    使用DataSet的ReadXml和WriteXml方法
    要掌握Sql Server,我还差得远啊!
    新浪短信Web Service
    还是水晶报表
    两种报表组件的功能分析
    无限级分类(非递归算法/存储过程版/GUID主键)完整数据库示例_(4)显示记录
    c#方法中调用参数的值传递方式和引用传递方式,以及ref与out的区别
  • 原文地址:https://www.cnblogs.com/CYHISTW/p/11302382.html
Copyright © 2011-2022 走看看