LINUX教学:Linux网络利器netcatnc

LINUX教学:Linux网络利器netcatnc,第1张

概述介绍《LINUX教学:Linux网络利器netcat/nc》开发教程,希望对您有用。

《liNUX教学:linux网络利器netcat/nc》要点:
本文介绍了liNUX教学:linux网络利器netcat/nc,希望对您有用。如果有疑问,可以联系我们。

netcat或者是nc工具被称为网络上的瑞士军刀,因此netcat也有各个版本出现在各个系统中,而在CentOS 7 开始netcat也被整合到namp项目中.当然如果是开源系统中,如Ubuntu或linux系统中则可以通过apt或yum来进行安装,在DOS系统下可以通过下载nc for windows获取到二进制版的netcat.因为netcat工具实际上可以通过tcp、udp或者是socket等等的方式在两台主机之间建立链接,然后通过链接读取数据流,而在接收传输数据流的过程中可以任意发挥你的想象,因此它的功能十分强大,在这里就简单的介绍阐明一下.

  先说明下nc中比较常用的参数说明:
-4 : 强制nc使用ipv4
-6 : 强制nc使用ipv6
-D : 使用socket的方式
-d : daemon(后台)运行,就可以配置成服务
-l : 监听模式,如果没有特别指定后面常常隐式使用-p参数
-n : 使用ip的,而不使用域名
-p : 使用当地主机的端口,默认是tcp协议的端口
-r : 任意指定当地及远程端口
-s : 设置当地主机送出数据包的IP地址,主机上有多个IP时指定绑定的IP
-U : 使用Unix的socket
-u : 使用udp协议
-v : 详细输出
-z : 将输入输出关掉,即不进行交互,用于扫描时,注意在nmap的版本下没有这个参数
-w : 设置连接超时时间,单位秒

使用也很简单,可以通过简单的测试下:
    1、测试2台主机数据流是否能通信(模拟Clint/Server模型)
host A(192.168.2.200):
[root@localhost ~]# nc -lp 1234#注意防火墙上必要开启相应的监听端口

host B(192.168.2.203):
[root@localhost ~]# nc 192.168.2.200 1234

此时如果hostB能连通hostA的tcp 1234端口时,在host A上的输出任何信息都邑通过nc传送至host B上.
    2、数据传输
host A:
[root@localhost ~]# ls -l
总用量 4
-rw------- 1 root root 1150 8月  9 00:54 file
[root@localhost ~]# nc -l 1234 < file

host B:
[root@localhost ~]# ls -l
总用量 0
[root@localhost ~]# nc 192.168.2.200 1234 > file
[root@localhost ~]# ls -l
总用量 4
-rw-r--r--. 1 root root 1150 9月  10 19:29 file

同理还可以使用tar命令传送数据流的形式压缩传递文件,以节俭带宽
host A:
[root@localhost ~]# du -sh ./*
46M    ./data
[root@localhost ~]# tar -cjf - data | nc -l 1234

host B:
[root@localhost ~]# ls -l
总用量 0
[root@localhost ~]# nc 192.168.2.200 1234 | tar -jxf -
[root@localhost ~]# ls -l
总用量 4
drwxr-xr-x. 9 root root 4096 9月  10 19:57 data

当然应用这个特性还可以用nc模拟web服务器提供静态页面(应用nc搭建临时web服务器):
host A:
[root@localhost ~]# vim test.HTML
123
[root@localhost ~]# vim nc_web.sh
#!/bin/bash
while true; do
    nc -l 80 < test.HTML;
done
[root@localhost ~]# chmod +x nc_web.sh && ./nc_web.sh

host B:
[root@localhost ~]# curl 192.168.2.200
123

当然利用nc的特性,在此功能上还能衍生出其他的很多功能,如:备份、设备克隆,网络测速,下载、压测等等,在此就纷歧一介绍了.
    3、给服务器发送消息
如给一个网址发送一个http的地址头:
[root@localhost ~]# echo -n "GET / http/1.0\\r\\n\\r\\n" | nc www.baIDu.com 80 -v
Connection to www.baIDu.com 80 port [tcp/http] succeeded!

同理应用这个特性也可以使用nc给SMTP服务器发消息用来发邮件等等.
    4、端口探测

在这里nc的功效比telnet好用多了,默认是tcp端口:
[root@localhost test]# nc -zvn 192.168.2.203 22
nc: connect to 192.168.2.203 port 22 (tcp) Failed: Connection refused

udp端口:
[root@localhost ~]# nc -zvun 192.168.2.200 1234

某一端口段:
1 [root@localhost ~]# nc -zvn 192.168.2.200 1-1024

    5、shell/cmd反d:
host A:

[root@localhost ~]# nc -l -p 1234 -t -e /bin/bash

-t:telnet的方式

host B:
[root@localhost ~]# nc 192.168.2.200 1234
ls / 
1
app
bin
boot
data
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

该办法可以绕过防火墙,对目标机shell连接,同理用nc实现端口转发也是利用该原理.

    6、自定义http的头来拜访页面
这里建议用www.try2Hack.nl网站去测试,在其中一些信息可以谁便填

12345 [root@localhost ~]# nc www.try2Hack.nl 80
GET / http/1.1
Host: baIDu.com
Referrer: Mozilla/5.0
User-Agent: my-browser

在2次回车后就把别人的整个http头和相关静态页面都获取下来.
  总之netcat/nc是一个十分实用且的刁悍的工具,发挥你的想象灵活多变它可以实现你很多功能,在这里就不全部一一介绍了.

本文永远更新链接地址

更多liNUX教程,尽在内存溢出PHP学院专栏。欢迎交流《liNUX教学:linux网络利器netcat/nc》!

总结

以上是内存溢出为你收集整理的LINUX教学:Linux网络利器netcat/nc全部内容,希望文章能够帮你解决LINUX教学:Linux网络利器netcat/nc所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1042243.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存