Linux 基础教程 28-nc命令
nc
nc命名netcat,直译为网络猫。在CentOS 7查看帮助的解释如下所示:
ncat - Concatenate and redirect sockets
翻译过来就是可以连接和重定向Sockets。通过查询其他资料,可以看到nc命令功能确实非常多,它可以打开TCP连接,发送UDP包,监听TCP/UDP端口,进行端口扫描等等。
基本语法
nc [选项] [主机名] [端口]
常用参数如下所示:
参数 | 说明 |
---|---|
-4 | 仅使用IPv4 |
-6 | 仅使用IPv6 |
-c,--sh-exec [command] | 执行给定的命令,同/bin/sh |
-e,--exec [command] | 执行给定的命令 |
-m,--max-conns [n] | 设置同时连接的最大数 |
-d,--delay [time] | 设置读/写的等待时间 |
-o,--output [filename] | 将会话的数据保存为文件 |
-i,--idle-timeout [time] | 读/写空闲超时时间 |
-p,--source-port port | 指定本机使用的通信端口 |
-s,--source addr | 指定远程通信的主机地址 |
-l,--listen | 监听传入的连接信息 |
-k,--keep-open | 在监听模式中接收多个连接信息 |
-n,--nodns | 直接使用IP地址,不解析域名 |
-t,--telnet | 响应telnet请求 |
-u,--udp | 使用UDP替换默认的TCP |
-v,--verbose | 显示详细的输出信息 |
-w,--wait [time] | 设置连接超时时间,单位为秒 |
-z | 建立连接后马上断开,不发送和接收任何数据,即Zero-I/O模式,仅用于测试连接状态 |
示例
1.实现QQ的功能
- 在本地终端监听一个端口
nc -l 9999
- 在另一台服务器中输入以下命令建立连接
nc 连接服务器IP 9999
- 在任何一个服务器上输入的信息都将发送到另一台服务器上面
2.端口扫描
在Linux中虽然有专业的端口扫描端口工具,如nmap,但如果我们只想知道端口是否处理开放状态,nc命令其实也是可以胜任的。下面演示就是扫描本机端口20-25
[root@localhost ~]# nc -z -v -n -w 2 127.0.0.1 20-25
nc: connect to 127.0.0.1 port 20 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 21 (tcp) failed: Connection refused
Connection to 127.0.0.1 22 port [tcp/*] succeeded!
nc: connect to 127.0.0.1 port 23 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 24 (tcp) failed: Connection refused
Connection to 127.0.0.1 25 port [tcp/*] succeeded!
当连接到服务器上的某个端口时,监听该端口的服务会传送一个Banner(类似于一条欢迎消息)信息,这个Banner一般都会显示自身程序的版本号等信息。而黑客就要可以利用这些信息做入侵策略。从上面我们可以看到22端口处于开放状态,因此我们就可以获取端口22的Banner信息
[root@localhost ~]# nc -v 127.1 22
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:22.
SSH-2.0-OpenSSH_7.4
从上面信息可以看到SSH的版本,如果这个版本的SSH有漏洞的话,就可以被黑客给利用了。
3.传输文件
在Linux传输文件,通常使用FTP和SCP,为什么还需要使用nc命令了?其实nc命令传输文件有其独有的优势,即只需要选择一个端口就可以在两台服务器间传输文件,而不需要进行任何配置,也不需要像FTP和SCP那样验证用户名和密码等信息。
- 在文件的发送端,启动监听端口并准备好相应的文件
nc -v -l 9999 < out.txt
- 在文件的接收端,使用以下命令接收数据
[root@localhost ~]# nc -v -n 服务器IP地址 9999 > in.txt
[root@localhost ~]# ll in.txt
-rw-r--r-- 1 root root 25 7月 23 00:08 in.txt
- 此时在发送端可以看到如下信息
[root@localhost ~]# nc -v -l 9999 < out.txt
Connection from 客户端IP地址 port 9999 [tcp/distinct] accepted
4.传输文件夹
如果需要传输多个文件或文件夹,nc是不是就无法完成了?这时就需要使用tar命令了。
- 使用管道技术,将tar的输出通过管道传给nc
[root@localhost~]# tar -cvPf - ~/out | nc -l 9999
/root/out/
/root/out/out.txt
/root/out/eip.sh
- 在客户端连接9999端口,然后将接收到数据通过tar解压
[root@localhost ~]# nc -n 服务器IP地址 9999 | tar -xvPf -
/root/out/
/root/out/out.txt
/root/out/eip.sh
本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:
Linux 基础教程 28-nc命令的更多相关文章
- Linux 基础教程 37-进程命令
pidof 我们知道每个小孩一出生就会一个全国唯一的编号来对其进行标识,用于以后上学,办社保等,就是我们的身份证号.那么在Linux系统中,用来管理运行程序的标识叫做PID,就是大家熟知的进程 ...
- Linux 基础教程 32-解压缩命令
将文件压缩后对提升数据传输效率,降低传输带宽,管理备份数据都有非常重要的功能,因此文件压缩解压技能就成为必备技能.相对于Windows中的文件解压缩工具百花争艳,在Linux中的解压缩工具则要 ...
- 嵌入式LINUX基础教程 第2版
嵌入式LINUX基础教程 第2版 目录 第1章 入门 11.1 为什么选择Linux 11.2 嵌入式Linux现状 21.3 开源和GPL 21.4 标准及相关组织 31.4.1 Linux标准基 ...
- Linux基础01 学会使用命令帮助
Linux基础01 学会使用命令帮助 概述 在linux终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助文档:linux系统内置的帮助文档很详细,通常能解决我们的问题, ...
- Linux基础 - 系统优化及常用命令
目录 Linux基础系统优化及常用命令 Linux基础系统优化 网卡配置文件详解 ifup,ifdown命令 ifconfig命令 ifup,ifdown命令 ip命令 用户管理与文件权限篇 创建普通 ...
- Linux基础系统优化及常用命令
# Linux基础系统优化及常用命令 [TOC] ## Linux基础系统优化 Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. - ...
- Linux基础教程 linux中使用find命令搜索文件常用方法记录
find是linux非常强大的搜索命令,通过man find查看find手册,可以发现find的说明一屏接一屏,估计要看完也得花不少时间.兄弟连Linux培训 小编总结了下,整理出find常用的使用方 ...
- Embedded Linux Primer----嵌入式Linux基础教程--2.4节--嵌入式Linux发行版
嵌入式Linux发行版 究竟什么是Linux发行版?在Linux内核引导之后,它期望找到并挂载根文件系统.当一个匹配的根文件系统已经挂载上,启动脚本开始运行大量程序和系统要求的工具.这些程序经常调用其 ...
- Linux基础教程
Linux基础教程之<Linux就该这么学>之学习笔记第一篇... ========================= 一.Basic Linux Commands 基本的Linux ...
随机推荐
- c# 爬虫(二) 模拟登录
有了上一篇的介绍,这次我们来说说模拟登录,上一篇见 :c# 爬虫(一) HELLO WORLD 原理 我们知道,一般需要登录的网站,服务器和客户端都会有一段时间的会话保持,而这个会话保持是在登录时候建 ...
- RK3288 device descriptor read/64, error -32
CPU:RK3288 系统:Android 5.1 主板有两个USB接口,一个接USB摄像头,一个接身份证模块. 插入摄像头可以正常打开,再插入身份证模块时,摄像头就会卡主,而且身份证模块无法识别,内 ...
- 【python】常用的日期和时间操作
#-*- coding: utf-8 -*- import datetime #给定日期向后N天的日期 def dateadd_day(days): d1 = datetime.datetime.no ...
- ruby里面的毒瘤
转自https://ruby-china.org/topics/26120 由于ruby的灵活性,如何很好的使用,其实是比较有技巧的,其实总结起来,可以大概归类如下 常规业务,不到万不得已,不使用元编 ...
- XSS获取cookie并利用
获取cookie利用代码cookie.asp <html> <title>xx</title> <body> <%testfile = Serve ...
- springboot中filter的用法
一.在spring的应用中我们存在两种过滤的用法,一种是拦截器.另外一种当然是过滤器.我们这里介绍过滤器在springboot的用法,在springmvc中的用法基本上一样,只是配置上面有点区别. 二 ...
- IPv4正则表达式匹配
IP地址的长度为32位,分为4段,每段8位.用十进制数字表示,每段数字范围为0~255,段与段之间用英文句点“.”隔开.例如:某台计算机IP地址为111.22.33.4. 分析IP地址的组成特点:25 ...
- XE7 update1
- 跟我学算法- tensorflow VGG模型进行测试
我们使用的VGG模型是别人已经训练好的一个19层的参数所做的一个模型 第一步:定义卷积分部操作函数 mport scipy.io import numpy as np import os import ...
- zookeeper简绍
先一句话概括下zookeeper:zookeeper可谓是目前使用最广泛的分布式组件了.其功能和职责单一,但却非常重要. zookeeper到底是什么?(技术文) 1)zookeeper实际上是yah ...