linux网络传输 ncat、socat

2018-07-02 21:30:53

ncat/nc

netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。

-l:监听端口
-c/--sh-exec:执行shell
-e/--exec:执行命令
-m/--max-conns:最大连接数
--allow:允许的ip
-deny:拒绝指定ip
-v/--verbose:显示详细信息

-u:udp
-U:unix domain

例子

#监听tcp端口8888
nc -l 8888

#连接到远程tcp端口
nc xx.xx.xx.xx 8888
#端口转发
#将建立777端口并把包转发给8888端口
ncat  -c  "ncat localhost 8888"  -l  777  --keep-open
#远程连接过来并执行shell命令
ncat  -e  "/bin/bash"  -l  8081  --keep-open  -m  3  --allow  192.168.0.0/24
#临时传输文件
ncat  -l  8888  <  tmp.sql
ncat  192.168.1.3  8888  >  tmp.sql

#也可以反过来
ncat  -l  8888  >  tmp.sql
ncat  192.168.1.3  8888  <  tmp.sql
#监听udp
nc -lu 8888

#连接udp
nc -u xx.xx.xx.xx 8888

#创建unix domain
nc -lU unix_file

#连接unix domain
nc -U unix_file


socat

socat,其功能与ncat类似,不过可以看做ncat的加强版。的确如此,它有一些ncat所不具备的功能,例如ssl连接这种。nc因为比较久没有维护,确实显得有些陈旧。

socat [options] <address> <address>

其中这2个 address 是关键,address就类似于一个文件描述符,socat所做的工作就是在2个address指定的描述符间建立一个pipe用于发送和接收数据。

#直接回显
socat - ./tmp.txt

#类似于cat tmp.txt
socat - ./tmp.txt

#写文件
echo hello | socat - ./tmp.txt
#tcp监听
socat tcp-listen:8888 -

#tcp连接
socat - tcp:xx.xx.xx.xx:8888

#tcp连接并把\n转成\r\n
socat - tcp:xx.xx.xx.xx:8888,crnl

#udp监听
socat udp-listen:8888 -

#udp连接
socat - udp:192.168.1.3:8888

#unix domain监听
socat unix-listen:/tmp/unix.socket -

#unix domain连接
socat - unix:/tmp/unix.sock
#临时传文件
cat tmp.zip | socat tcp-listen:8888 -
socat - tcp:192.168.1.242:8888 > tmp.zip
#ssl监听
socat openssl-listen:443,cert=/cert.pem -

#ssl连接
socat - openssl:localhost:443
#监听端口并执行接收到的数据
socat tcp-listen:8888 exec:/bin/bash

#监听8888端口并把接收到的数据转发到7777端口
socat tcp-listen:8888,fork tcp:localhost:7777


备注:
1.本系列命令都在centos7里测试,其他发行版如ubuntu、debian、fedora、opensuse等可能略微不同
2.本文只讲解常用用法,详细用法请自行利用 man 命令查看
3.原文地址http://www.freecls.com/a/2712/6e

 

©著作权归作者所有
收藏
推荐阅读
简介
天降大任于斯人也,必先苦其心志。