nc命令

  是一个简单、可靠、强大的网络工具,它可以建立TCP连接,发送UDP数据包,监听任意的TCP和UDP端口,进行端口扫描,处理IPv4和IPv6数据包。
    如果系统没有nc命令,那么可以手动安装,安装命令为yum -y install nc。     

nc命令的参数选项及说明

-l    指定监听端口,然后一直等待网络连接
-z    表示zero,表示扫描时不发送任何数据
-v    显示详细输出
-w    设置超时时间,对-l选项失效
-p    指定nc命令使用的端口,不能和-l选项一起使用,可能引起错误
-u    使用UDP连接,默认是TCP连接
-s    指定发送数据的源IP地址,适用于多网卡主机
 
 
[root@cs6 ~]# /etc/init.d/iptables status
表格:filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT)
num target prot opt source destination [root@cs6 ~]# /etc/init.d/iptables stop
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:清除防火墙规则: [确定]
iptables:正在卸载模块: [确定]
[root@cs6 ~]# setenforce 0
[root@cs6 ~]# getenforce
Permissive

模拟 TCP 连接并传输文本内容(远程复制文件

[root@cs6 ~]# nc -l 12345 > lewen.nc  #<=监听12345端口,将数据写入oldboy.nc
#<=执行完上面的命令后,当前窗口挂起。
#<=新开一个窗口执行命令。
[root@cs6 ~]# cat lewen.nc #<=首先查看12345端口。
[root@cs6 ~]# netstat -lntup|grep 12345
tcp 0 0 0.0.0.0:12345 0.0.0.0:* LISTEN 2612/nc
[root@cs6 ~]# cat lewen.log #<=待用的文件。
6.8.0 #<=文件中的内容
[root@cs6 ~]# nc 10.0.0.100 12345 < lewen.log #<=使用nc命令向10.0.0.100 主机12345 端口传输lewen.log文件
[root@cs6 ~]# netstat -lntup|grep 12345 #<==nc命令传输完数据后自动终止。
[root@cs6 ~]# cat lewen.nc #检查结果
6.8.0

用Shell 模拟一个简单的Web 服务器效果案例

[root@cs6 ~]# echo "I love linux www.wenyule.top" >test.txt
[root@cs6 ~]# vim web.sh
#!/bin/bash
while true
do
nc -l 80 < test.txt # 一直监听80端口,test.txt是发送给用户的内容。
done [root@cs6 ~]# sh web.sh &>/dev/null &
[1] 2685
[root@cs6 ~]# [root@cs6 ~]# netstat -lntup|grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2686/nc
[root@cs6 ~]# curl 127.0.0.1
I love linux www.wenyule.top

手动与HTTP服务器建立连接的例子。

[root@cs6 ~]# nc blog.oldboyedu.com 80
GET /about-us/ HTTP/1.1 <=粘贴这两行语句,速度要快,如果慢了程序就会超时自动退出。
host:blog.oldboyedu.com <==HTTP/1.1的要求必须写明hosto
#<==敲两次回车确认发送请求报文,下面就是响应报文的内容。
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 07 May 2019 13:40:50 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://blog.oldboyedu.com/about-us/ <html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>

利用nc 进行端口扫描

[root@cs6 ~]# nc -z 10.0.0.100 20-30
Connection to 10.0.0.100 22 port [tcp/ssh] succeeded!
[root@cs6 ~]# nc -z 10.0.0.100 22
Connection to 10.0.0.100 22 port [tcp/ssh] succeeded!
[root@cs6 ~]# nc -zv 10.0.0.100 20-30 #<=使用-v选项详细显示扫描过程
nc: connect to 10.0.0.100 port 20 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 21 (tcp) failed: Connection refused
Connection to 10.0.0.100 22 port [tcp/ssh] succeeded!
nc: connect to 10.0.0.100 port 23 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 24 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 25 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 26 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 27 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 28 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 29 (tcp) failed: Connection refused
nc: connect to 10.0.0.100 port 30 (tcp) failed: Connection refused

使用nc命令,模拟QQ聊天工具聊天

打开两个命令行窗口,模拟两个人聊天的场景。
首先在第一个窗口执行如下命令,执行完会hang住等待输入状态:
[root@cs6 ~]# nc -l 12345
 
然后在第2个窗口执行如下命令,执行完也会hang住等待输入状态:
[root@cs6 ~]# nc 127.0.0.1 12345
 
此时两个窗口都等待输入内容。我们先新建第3个窗口,查看他们建立的网络连接:
 
[root@cs6 ~]# netstat -ntp|grep nc #<=12345端口是nc指定开放的,52978端口是系统为了和12345就口通信随机开放的,当然也可以使用-p选项指定开放端口。
tcp        0      0 127.0.0.1:12345             127.0.0.1:37060             ESTABLISHED 2748/nc             
tcp        0      0 127.0.0.1:37060             127.0.0.1:12345             ESTABLISHED 2749/nc   
 
怎么聊天呢?很简单,你在第一个窗口中输入想要说的话,然后敲回车键,悄悄话就会自动发送到对方(第二个窗口),和QQ的效果一样:
 
[root@cs6 ~]# nc -l 12345
hi,I am lewen
 
对方(第二个窗口)也只需要输入回复的话然后敲回车键,消息就能发送给你:
[root@cs6 ~]# nc 127.0.0.1 12345
hi,I am lewen
hello,lewen
 
 
 
 
 
 
 

10.13 nc:多功能网络工具的更多相关文章

  1. 2018.10.13 bzoj1834: [ZJOI2010]network 网络扩容(最大流+费用流)

    传送门 网络流水题啊. 第一问直接放心跑最大流(本来还以为有什么tricktricktrick). 第二问就直接把原来的边(u,v,c,w)(u,v,c,w)(u,v,c,w)变成(u,v,c,0)( ...

  2. 功能超级强大的网络工具nc

    摘自:http://www.linuxso.com/command/nc.html 功能说明:功能强大的网络工具语 法:nc [-hlnruz][-g<网关...>][-G<指向器数 ...

  3. linux网络工具nc命令

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

  4. Linux 网络工具netcat(nc)的应用

    NETCAT netcat是Linux常用的网络工具之一,它能通过TCP和UDP在网络中读写数据,通过与其他工具结合和重定向,可以在脚本中以多种方式使用它. netcat所做的就是在两台电脑之间建立链 ...

  5. 项目实战10.1—企业级自动化运维工具应用实战-ansible

    实战环境: 公司计划在年底做一次大型市场促销活动,全面冲刺下交易额,为明年的上市做准备.公司要求各业务组对年底大促做准备,运维部要求所有业务容量进行三倍的扩容,并搭建出多套环境可以共开发和测试人员做测 ...

  6. Android高效率编码-细节,控件,架包,功能,工具,开源汇总,你想要的这里都有

    Android高效率编码-细节,控件,架包,功能,工具,开源汇总 其实写博客的初衷也并不是说什么分享技术,毕竟咱还只是个小程序员,最大的目的就是对自我的知识积累,以后万一编码的时候断片了,也可以翻出来 ...

  7. Linux 网络工具

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

  8. Linux Netcat 命令——网络工具中的瑞士军刀

    原文:http://www.oschina.net/translate/linux-netcat-command netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据.通过与其他 ...

  9. NetCat,在网络工具中有“瑞士军刀”美誉

    nc命令详解   NetCat,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本.因为它短小精悍(1.84版本也不过25k,旧版本或缩减版甚至更小).功能实用,被设计为一个简单.可 ...

随机推荐

  1. Spring(四)Spring JdbcTemplate&声明式事务

    JdbcTemplate基本使用 01-JdbcTemplate基本使用-概述(了解) JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装.spr ...

  2. Spring Boot demo系列(三):Spring Web+MyBatis Plus

    2021.2.24 更新 1 概述 Spring Web+MyBatis Plus的一个Demo,内容和上一篇类似,因此重点放在MyBatis Plus这里. 2 dao层 MyBatis Plus相 ...

  3. Go-16-map

    map的value可以是任何数据类型.map和切片一样,也是一种引用类型. map声明: (1)使用var关键字定义map var 变量名 map[key类型] value 类型 (2)使用make( ...

  4. mysql架构与存储引擎 (Myisam与Innodb)

    mysql抽象架构:可以分为SQL Layer和Storage Engine Layer mysql的engine层是基于表的,不是基于库的,创建表的语句可以指定engine Mysql的架构 Mys ...

  5. Linux 文件系统和目录结构

    1. Linux 文件系统 2. linux 目录结构 3. 磁盘分区.文件系统和目录的关系 1. Linux 文件系统 Linux 支持多种的文件系统种类,除了 linux 通常使用的 ext 系列 ...

  6. PE文件加节感染之Win32.Loader.bx.V病毒分析

    一.病毒名称:Win32.Loader.bx.V 二.分析工具:IDA 5.5.OllyDebug.StudPE 三.PE文件加节感染病毒简介 PE病毒感染的方式比较多,也比较复杂也比较难分析,下面就 ...

  7. Windows核心编程 第25章 未处理异常和C ++异常(下)

    这一节东西比较少,本应该归并在上一节里,但是昨天太晚了.就先把那些东西分为上了.这节里面就一个问题,C++异常与结构性异常的对比(try和__try的区别): C++异常与结构性异常的对比 S E H ...

  8. android Javah生成JNI头文件

    项目要用到c语言库,因此来学习下jni 首先是在cmd中使用javah,出现了javah不是内部或外部命令的错误提示,javah是jdk自带的工具,提示说明在系统环境变量中没有jdk的路径,或者配置错 ...

  9. 安装google cloud sdk报错解决方法总结(超全)

    前提:python环境最好是2.7,如果是python3可能会出很多小毛病:能用64位系统就尽量用64位,32位系统安装也很多毛病 一.Error1:Unzip Failed: Error openi ...

  10. (Py练习)判断101-200之间的素数个数并输出

    判断素数的方法之一:用一个数分别去除以2到squrt(这个数),如果能被整除,则不是素数. import math h = 0 leap = 1 for m in range(101, 201): k ...