netcat(nc)的替代产品 Socat

GPL
C/C++
Linux
2010-08-02
红薯

socat是一個netcat(nc)的替代產品,可以稱得上nc++。socat的特點就是在兩個流之間建立一個雙向的 通道。socat的地址類型很 多,有ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,等等。看一個例子:

c:\>socat - tcp:192.168.1.18:80

這個命令等同於 nc 192.168.1.18 80。 socat裡面,必須有兩個流,所以第一個參數-代表標準的輸入輸出,第二個流連接到192.168.1.18的80端口。再看一個反向telnet的例子:

on server:
c:\>socat tcp-listen:23 exec:cmd,pty,stderr

這個命名把cmd綁定到端口23,同時把cmd的Stderr重定向到stdout。

on client:
c:\>socat readline tcp:server:23

連接到服務器的23端口,即可獲得一個cmd shell。readline是gnu的命令行編輯器,具有歷史功能。

再看文件傳遞的例子。nc也經常用來傳遞文件,但是nc有一個缺點,就是不知道文件什麼時候傳完了,一般要用Ctrl+c來終止,或者估計一個時間,用-w參數來讓他自動終止。用socat就不用這麼麻煩了:

on host 1:
c:\>socat -u open:myfile.exe,binary tcp-listen:999

on host 2:
c:\>socat -u tcp:host1:999 open:myfile.exe,create,binary

這個命令把文件myfile.exe用二進制的方式,從host 1 傳到host 2。-u 表示數據單向流動,從第一個參數到第二個參數,-U表示從第二個到第一個。文件傳完了,自動退出。

再來一個大家喜歡用的例子。在一個NAT環境,如何從外部連接到內部的一個端口呢?只要能夠在內部運行socat就可以了。

外部:
c:\>socat tcp-listen:1234 tcp-listen:3389

內部:
c:\>socat tcp:outerhost:1234 tcp:192.168.12.34:3389

這樣,你外部機器上的3389就影射在內部網192.168.12.34的3389端口上。

socat還具有一個獨特的讀寫分流功能,比如:

c:\>socat open:read.txt!!open:write.txt,create,append tcp-listen:80,reuseaddr,fork

這個命令實現一個假的web server,客戶端連過來之後,就把read.txt裡面的內容發過去,同時把客戶的數據保存到write.txt裡面。”!!”符號用戶合併讀寫流,前面的用於讀,後面的用於寫。

加载中

评论(0)

暂无评论

Socat 1.7.2.3 发布,netcat 的替代品

Socat 1.7.2.3 发布,此版本修复了一个安全问题:socats PROXY-CONNECT 地址很脆弱,容易导致命令行提供的数据缓存区溢出。(CVE-2014-0019). socat是一個netcat(nc)的替代產品,可以稱得上n...

2014/01/30 08:02

Socat 1.7.2.2 发布,netcat 的替代品

Socat 1.7.2.2 修复了一个安全性问题 (CVE-2013-3571),在特定的情况下出现的文件描述符的泄漏,这会导致以服务器下运行 Socat 时的拒绝服务攻击。 socat是一個netcat(nc)的替代產品,可以稱...

2013/05/27 06:06

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

Linux下的UDP/TCP端口映射(netcat and socat)

转载:http://www.wenquan.name/?p=1158 说起来有点土,事到如今才第一次用socat. 不过今天看了一眼,netcat(nc)这东西ms已经N年没有人维护了.最先有个叫nc110的东西,由于太普及, 以至于人们都...

2012/09/04 15:15
794
1
Docker on Mac上的Remote API 远程控制

Docker提供了Remote API,可以通过REST接口进行Docker服务的控制,包括pull/push等所有操作,结果与本机的操作完全一样。使用Docker Remote API可以通过脚本进行Docker集群的自动化控制。 **...

2016/10/29 10:37
3K
0
安全的Java远程Debug

``` java远程调试功能可导致远程执行任意命令,默认情况下在生产禁止使用。如有需要在beta/dev环境使用,必须监听在127.0.0.1,避免被远程调用。 监听到127.0.0.1的方法 修改java 远程调试参...

2015/09/01 14:09
239
0
git 使用代理大全

HTTP 代理 直接配置 http_proxy 环境变量 git config http.proxy http.proxy Override the HTTP proxy, normally configured using the http_proxy, https_proxy, and all_proxy environment...

2016/06/20 16:03
6
0
git 使用代理大全

HTTP 代理 直接配置 http_proxy 环境变量 git config http.proxy http.proxy Override the HTTP proxy, normally configured using the http_proxy, https_proxy, and all_proxy environment...

2016/06/20 16:04
3
0
Virtual Serial Port - RFC2217

Virtual Serial Port for Linux RFC-2217 The COM Port Control Protocol pyserial - RFC 2217 NetSerial - Windows Telnet COM Port - RFC Official Using Python, How do I make a virtual...

2018/07/22 22:16
46
0
mac下开启docker API远程调用

Socat 安装 通过源码方式安装 1 2 3 4 5 6 $ wget http://www.dest-unreach.org/socat/download/socat-1.7.3.2.tar.gz $ tar zxf socat-1.7.3.2.tar.gz $ cd socat-1.7.3.2 $ ./configure $...

2018/12/26 15:58
16
0
使用socat实现对asok的远程访问

使用socat实现对asok的远程访问,方便集中管理ceph各种进程信息

2015/12/23 12:03
130
0
git 使用代理大全

HTTP 代理 直接配置 http_proxy 环境变量 git config http.proxy http.proxy Override the HTTP proxy, normally configured using the http_proxy, https_proxy, and all_proxy environment...

2016/06/20 16:04
4
0
在windows上通过代理访问github.com

公司上网用代理,但是git 与ssh似乎没开代理。导致无没访问github.com 来更新我 的配置文件。下面是解法。 github.com 的git 提供了三种方式: http:// git:// 与ssh 方式 git:// 需要用到s...

2012/05/16 07:08
670
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部