继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

[干货]命令行网络通信工具:Telnet, Netcat(NC), NCAT

慕标0246214
关注TA
已关注
手记 39
粉丝 251
获赞 1274

Telnet

telnet程序可以直接与web服务器进行对话。
通过telnet可以打开一条到某台机器上某个端口的TCP连接,然后直接向那个端口输入一些字符。web服务器会将telnet程序作为一个web客户端来处理,所有回送给TCP连接的数据都会显示在屏幕上。

telnet www.xxx.com 80
GET /tools.html HTTP/1.1
Host: www.xxx.com

response:

HTTP/1.1 200 OK
DATE: Sun, 01 Oct 2000 23:25:17 GMT
Server: Apache/1.3.11 BSafe-SSL/1.38 (Unix) FrontPage/4.0.4.3
Last-Modified: Tue, 04 Jul 2000 09:46:21 GMT
ETag: "373979-193-3961b26d"
Accept-Ranges: bytes
Content-length: 403
Connection: close
Content-Type: text/html

<html>
<head><title>xxxx</title></head>
<body>
<h1>Tools page</h1>
...
</body>
</html>
Connection closed by foreign host.

Telnet 会查找主机名并打开一条连接,连接到在www.xxx.com的端口80上监听的web服务器。

Telnet可以很好的模拟HTTP客户端,但是不能作为服务器使用。而且对telnet做脚本自动化非常麻烦。如果想要更灵活的工具,可以看看下面的netcat。通过nc可以很方便滴操纵基于UDP和TCP的流量(包括HTTP),还可以为其编写脚本。

Netcat(NC)

Netcat在网络工具中有“瑞士军刀”美誉。它是一个非常简单的Unix工具,可以读、写TCP或UDP网络连接(network connection)。它被设计成一个可靠的后端(back-end) 工具,通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。同时,它又是一个功能丰富的网络调试和开发工具,因为它可以建立你可能用到的几乎任何类型的连接,以及一些非常有意思的内建功能。Netcat,它的实际可运行的名字叫nc,是一个很早就被提供,但没有公开的事实标准的Unix工具。使用NC命令所能完成的事情令人惊讶。

Netcat还可以当服务器使用,监听任意指定端口的连接请求(inbound connection),并可做同样的读写操作。除了较小限制外,它实际并不关心自己以“客户端”模式还是“服务器”模式运行,它都会来回运送全部数据。在任何一种模式下,都可以设置一个非活动时间来强行关闭连接。  它还可以通过UDP来完成这些功能,因此它就象一个telnet那样的UDP程序,用来测试你的UDP服务器。正如它的“U”所指的,UDP跟TCP相比是一种不可靠的数据传输,一些系统在使用UDP 传送大量数据时会遇到麻烦,但它还有一些用途。

NC所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了。你能建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端。

Netcat使用

主要用途

一般我们使用netcat做的最多的事情为以下三种:
1、扫描指定IP端口情况
2、端口转发数据(重点)
3、提交自定义数据包

参数格式

连接到某处:   nc [-options] hostname port[s] [ports] …   
监听端口等待连接:   nc -l -p port [-options] [hostname] [port]   
主要参数:  
options:
 
-d              无命令行界面,使用后台模式
 
-e prog          程序重定向 [危险!!]
 
-g gateway       源路由跳跃点, 不超过8
 
-G num          源路由指示器: 4, 8, 12, ...
 
-h              获取帮助信息
 
-i secs           延时设置,端口扫描时使用
 
-l               监听入站信息
 
-L              监听知道NetCat被结束(可断开重连)
 
-n              以数字形式表示的IP地址
 
-o file           使进制记录
 
-p port          打开本地端口
 
-r               随机本地和远程的端口
 
-s addr          本地源地址
 
-t               以TELNET的形式应答入站请求
 
-u              UDP 模式
 
-v               显示详细信息 [使用=vv获取更详细的信息]
 
-w secs          连接超时设置
 
-z               I/O 模式 [扫描时使用]
 
端口号可以是单个的或者存在一个范围: m-n [包含值]。

Ncat

Nc缺乏加密和身份验证的能力,容易被人嗅探,发生中间人劫持!
基于nc的弱点,引入NCAT工具。

首先NCAT并不是Linux自带的一款工具,Ncat包含于nmap工具中,用来弥补nc明文连接传输通道的不足!

A:kali 192.168.14.23 B:ubuntu 192.168.14.20
A:kali作为服务器端进行侦听端口,allow参数即是允许那个ip连接,-ssl进行管道传输加密!

ncat -c bash --allow 192.168.14.20 -vnl 333 --ssl

B端作为接收端:
B:ubuntu

ncat -nv 192.168.14.23 333 --ssl

通过ncat建立的远程连接与nc建立的远程连接是有本质区别的,ncat建立一起已经进行了秘钥的交换,并且在此后的传输通道也是经过加密的哦!此时即是有人来嗅探也是无济于事的ssl还是挺有保障的!nc所能实现的所有功能在ncat上都能实现。

参考资料:

打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP