socat netcat nc 网络工具/黑客工具「建议收藏」

socat2016/05/11Chenxin整理socat简介黑客小工具—socatsocat被称为是NC的plus,plus版,号称NC的最强的衍生版本。socat是一款双向数据流通道工具。具有许多强大的功能:端口的连接、端口侦听、收发文件、传递shell、端口转发、端口扫描等官方网站:socatsocat是一个多功能的网络工具,名字来由是”SocketCAT”,可以看作是netcat的N倍加强版,socat的官方网站:socat。Socat是一个两个独立数据通道之间..

大家好,又见面了,我是你们的朋友全栈君。

socat
2016/05/11 Chenxin整理
socat简介
黑客小工具—socat
socat 被称为是NC的plus,plus版,号称NC的最强的衍生版本。socat是一款双向数据流通道工具。具有许多强大的功能:端口的连接、端口侦听、收发文件、传递shell、端口转发、端口扫描等
官方网站:socat

socat是一个多功能的网络工具,名字来由是” Socket CAT”,可以看作是 netcat 的 N 倍加强版,socat 的官方网站: socat 。
Socat是一个两个独立数据通道之间的双向数据传输的继电器。这些数据通道包含文件、管道、设备(终端或调制解调器等)、插座(Unix,IP4,IP6 – raw,UDP,TCP)、SSL、SOCKS4客户端或代理CONNECT。
Socat支持广播和多播、抽象Unix sockets、Linux tun/tap、GNU readline 和 PTY。它提供了分叉、记录和进程间通信的不同模式。多个选项可用于调整socat和其渠道,Socat可以作为TCP中继(一次性或守护进程),作为一个守护进程基于socksifier,作为一个shell Unix套接字接口,作为IP6的继电器,或面向TCP的程序重定向到一个串行线。
socat的主要特点就是在两个数据流之间建立通道;且支持众多协议和链接方式 ip,tcp,udp,ipv6,pipe,exec,system,open,proxy,openssl,socket等。

下载socat源代码包
Index of /socat/download

socat的基本用法

监听端口:
socat tcp-l:12345 –
发送数据到端口:
echo xxx | socat – tcp:127.0.0.1:12345
其中tcp-l是tcp-listen的简写,tcp是tcp-connect的简写,简写后就不比nc长多少了。

udp: udp-listen, udp-connect
unix socket: unix-listen, unix-connect
unix datagram socket: unix-recvfrom, unix-sendto

发送文件:
ip1 # socat -u open:a.txt tcp-listen:8888
ip2 # socat -u tcp:ip1:8888 open:a.txt,create

开telnet:
ip1 # socat tcp-listen:8888 exec:bash,pty,stderr
ip2 # socat readline tcp:ip1:888

端口转发(好像是这样,没用过):
ip1(外网机器的内网地址) # socat tcp-listen:1234 tcp-listen:3389
ip2(内网机器) # socat tcp:ip1的外网地址:1234 tcp:ip1:3389

socat手册部分

7.2.1 TCP TCP:: 目标机器host对应端口portTCP-LISTEN: 本机监听端口。
7.2.2 UDP UDP:: 目标机器host对应端口portUDP-LISTEN: 本机监听端口。

7.3.4 本地开启端口
socat tcp-l:7777,reuseaddr,fork system:bash 同nc -l -p 7777 -e bash。

7.3.5 执行bash的完美用法
在目标上 socat tcp-l:8888 system:bash,pty,stderr 本地socat readline tcp:$target:8888 用readline替代-,就能支持历史功能了。
在这个模式下的客户端有本地一样的效果

7.3.6 文件传递
再看文件传递的例子。nc也经常用来传递文件,但是nc有一个缺点,就是不知道文件什么时候传完了,一般要用Ctrl+c来终止,或者估计一个时间,用-w参数来让他自动终止。用socat就不用这么麻烦了:
on host 1: socat -u open:myfile.exe,binary tcp-listen:999
on host 2: socat -u tcp:host1:999 open:myfile.exe,create,binary
这个命令把文件myfile.exe用二进制的方式,从host 1 传到host 2。-u 表示数据单向流动,从第一个参数到第二个参数,-U表示从第二个到第一个。文件传完了,自动退出。

7.3.7 转发

7.3.7.1 本地端口转向远程主机
socat TCP4-LISTEN:8888 TCP4:www.qq.com:80
如果需要使用并发连接,则加一个fork,如下
socat TCP4-LISTEN:8888,fork TCP4:www.qq.com:80
本地监听8888端口,来自8888的连接重定向到目标www.qq.com:80

7.3.7.2 端口映射
再来一个大家喜欢用的例子。在一个NAT环境,如何从外部连接到内部的一个端口呢?只要能够在内部运行socat就可以了。
外部:
socat tcp-listen:1234 tcp-listen:3389
内部:
socat tcp:outerhost:1234 tcp:192.168.12.34:3389
这样,你外部机器上的3389就映射在内部网192.168.12.34的3389端口上。

7.3.7.3 VPN
服务端
socat -d -d TCP-LISTEN:11443,reuseaddr TUN:192.168.255.1/24,up
客户端
socat TCP:1.2.3.4:11443 TUN:192.168.255.2/24,up

7.3.8 重定向
socat TCP4-LISTEN:80,reuseaddr,fork TCP4:192.168.123.12:8080
TCP4-LISTEN:在本地建立的是一个TCP ipv4协议的监听端口;
reuseaddr:绑定本地一个端口;
fork:设定多链接模式,即当一个链接被建立后,自动复制一个同样的端口再进行监听
socat启动监听模式会在前端占用一个shell,因此需使其在后台执行。
socat -d -d tcp4-listen:8900,reuseaddr,fork tcp4:10.5.5.10:3389 # 端口转发 或者
socat -d -d -lf /var/log/socat.log TCP4-LISTEN:15000,reuseaddr,fork,su=nobody TCP4:static.5iops.com:15000 “-d -d -lf /var/log/socat.log”是参数,前面两个连续的-d -d代表调试信息的输出级别,-lf则指定输出信息的保存文件。 “TCP4-LISTEN:15000,reuseaddr,fork,su=nobody”是一号地址,代表在15000端口上进行TCP4协议的监听,复用绑定的IP,每次有连接到来就fork复制一个进程进行处理,同时将执行用户设置为nobody用户。 “TCP4:static.5iops.com:15000″是二号地址,代表将socat监听到的任何请求,转发到static.5iops.com:15000上去。

7.3.9 读写分流
socat还具有一个独特的读写分流功能,比如: socat open:read.txt!!open:write.txt,create,append tcp-listen:80,reuseaddr,fork 这个命令实现一个假的web server,客户端连过来之后,就把read.txt里面的内容发过去,同时把客户的数据保存到write.txt里面。”!!”符号用户合并读写流,前面的用于读,后面的用于写。

7.3.10 通过openssl来加密传输过程
7.3.10.1 证书生成
FILENAME=server openssl genrsa -out $FILENAME.key 1024openssl req -new
-key $FILENAME.key -x509 -days
3653 -out $FILENAME.crtcat $FILENAME.key $FILENAME.crt >$FILENAME.pem 在当前目录下生成 server.pem server.crt
7.3.10.2 使用
在服务端 socat openssl-listen:4433,reuseaddr,cert=srv.pem,cafile=srv.crt system:bash,pty,stderr
在本地 socat readline openssl:localhost:4433,cert=srv.pem,cafile=srv.crt

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126310.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux文件句柄数上限_怎么清除文件句柄

    linux文件句柄数上限_怎么清除文件句柄文章目录查看修改查看cat/proc/sys/fs/nr_open每个进程最大限制ulimit-n当前用户的当前shell最大限制(多个shell,每个都能到达最大限制)cat/proc/sys/fs/file-max系统级别最大限制记住前三个就好了cat/proc/sys/fs/file-nr:[root@izm3mkp4g43hdqz~]#ca…

    2022年10月17日
    3
  • 在pycharm中配置Anaconda的python工具包_anaconda pycharm环境配置

    在pycharm中配置Anaconda的python工具包_anaconda pycharm环境配置anacondaanaconda是一个工具包平台,里面有一系列Python编程过程中需要使用的工具包,安装了anaconda就相当于配置好了Python环境,不需要在额外安装一次Python,也不需要再一个个安装工具包,避免了从入门到放弃,anaconda的安装流程如下:首先下载anaconda安装包,可以直接在官网下载,anaconda下载地址根据自身需求下载合适的版本即可。下载完成后,双击安装程序点击next点击Iagree选择AllUsers选择自己的安装路径,点击nex

    2022年8月27日
    4
  • spring boot vue跨域_vue怎么解决跨域问题

    spring boot vue跨域_vue怎么解决跨域问题一、什么是跨域在springboot+vue前后端分离项目中,请求资源的端口号,域名(ip地址)不同。二、跨域的解决方案1、springboot后端处理:在每个controller上加上@CrossOrigin注解或在controller的基类上添加@CrossOrigin注解,其他controller类加上@Controller即可。2、在vue前端进行处理:通过代理的方式访问后端接口。…

    2022年9月17日
    2
  • 使用Chrome Frame插件解决IE浏览器兼容问题

    使用Chrome Frame插件解决IE浏览器兼容问题时不时碰到客户的浏览器为IE7,IE8,甚至IE6的,他们不能升级浏览器,因为升级后,机器中其它的重要系统无法访问。而新系统的前端又需要浏览器的支持,比如H5,SVG等等,换框架结构,成本无疑是巨大的,而且风险不可控。针对此种情况,安装GoogleFrame是相对非常完美的解决方案,不要求升级浏览器,只安装一个插件,且对原系统无任何干扰,新系统也可根据情况对是否使用GoogleFrame插件进…

    2022年7月16日
    15
  • mipi协议中文详解

    mipi协议中文详解https://blog.csdn.net/weixin_39558208/article/details/77067735一、MIPIMIPI(移动行业处理器接口)是MobileIndustryProcessorInterface的缩写。MIPI(移动行业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准。已经完成和正在计划中的规范如下:二、MIPI联盟的MIPID…

    2022年4月29日
    130
  • glassfish是什么_glasses of

    glassfish是什么_glasses of一:安装下载:    必须预先安装Jdk,并且设置JAVA_HOME环境变量。从官网下载GlassFish,是一个jar文件。下载后运行:F:\>java-Xmx256m-jarglassfish-installer-v2ur2-b04-windows.jar如果这里不加上-Xmx256m,很有可能会报OutOfMemoryException。这个命令会产生一个名为glassf

    2022年8月20日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号