Kali Linux

端口复用简单实现

2017-10-20  本文已影响345人  王一航

端口复用 :

举一个简单的例子
一台内网服务器 , 一台出口路由器 , 路由器将内网的 80 端口映射到公网
在不了解端口复用技术以前 , 笔者就会单纯地觉得 , 当然用户直接访问 80 端口就只能访问到内网服务器的 HTTP 服务
其实使用端口复用技术是可以达到浏览器访问就会是正常的网页 , 而用 ssh 连接就会是 ssh 终端登录的情况的
事实上 , 我们熟悉的 socks 协议就是高级的端口复用技术的产物

原理 :

  1. 首先实现一个端口转发工具
  2. 在端口转发工具的基础上增加一些逻辑 , 如下
a. 在 accept 到一个新的客户端请求的时候 , 首先读取前几个字节
b. 根据前几个字节判断这个请求是在请求什么服务 ? 
例如 : 
HTTP => GET / POST / HEAD / OPTIONS ...
SSH => SSH-2.0-OpenSSH
  1. 根据第二步中的判断确定要转发的目的端口
  2. 连接目标端口 , 并将之前接收到的数据首先发过去再进行双向传输

给出一个简单的实现 :

端口复用 : https://gist.github.com/WangYihang/517fbc8e1875938aa62e942be250cf8e
端口转发 : https://gist.github.com/WangYihang/e7d36b744557e4673d2157499f6c6b5e


参考文档 :

RFC1928 (SOCKS5)

上一篇下一篇

猜你喜欢

热点阅读