前几天项目中需要一个抓取并分析TCP包的工具,在网上倒腾了一阵子整理了一个工具,现在发布在这儿提供参考。 这个工具是使用C语言开发的一个TCP Proxy,实现TCP转发的功能并dump出来数据包的内容。#include <stdio.h> #include <stdlib.h> #include <unistd.h> #...
proxy -l local_port -h remote_host -p remote_port [-i "input parser"] [-o "output parser"] [-f (stay in foreground)] Suppose you want to open port 8080 on a public host and forward all TCP packets to port 80 on machine 192.168.1.2 in the local network. In this case you will...
CProxy是一个反向代理,用户可在自己内网环境中启动一个业务服务,并在同一网络下启动CProxyClient,用于向CProxyServer注册服务。CProxyClient和CProxyServer之间会创建一个隧道,外网可以通过访问CProxyServer,数据转发到CProxyClient,从而被业务服务接收到。实现内网服务被外网访问。 项目地址 https://github.com/lzs123/...
PublicClient先将请求打到CProxyServer,CProxyServer识别请求是属于哪个CProxyClient,然后将数据转发到CProxyClient,CProxyClient再识别请求是属于哪个LocalServer的,将请求再转发到LocalServer,完成数据的转发。 工作流程 先介绍CProxyServer端的两个概念: Control:在CProxyServer中会维护一个ControlMap,一个Control对应一...
主要有两个地方,一个是Acceptor中的Channel,主要处理连接事件,另外每个TcpConnection类中会有一个Channel,检测fd的刻可读,关闭,错误消息,触发相应的回调函数。生命周期由Acceptor和TcpConnection控制。 设计: CProxy采用多线程reactor模型, 类型fasthttp模型的设计...
MySQL协议基于tcp(当然也有unix域协议,这里只考虑tcp)。同时Hero采用的是非阻塞IO模式,读取包时,recv系统调用可能在包的任意比特位置上返回。这时候,就需要仔细的处理分包。 MySQL协议外层格式 MySQL协议是通过在帧头部加上length field的设计来处理分包问题。如下图所示: ...
PublicClient先将请求打到CProxyServer,CProxyServer识别请求是属于哪个CProxyClient,然后将数据转发到CProxyClient,CProxyClient再识别请求是属于哪个LocalServer的,将请求再转发到LocalServer,完成数据的转发。 工作流程 先介绍CProxyServer端的两个概念: Control:在CProxyServer中会维护一个ControlMap,一个Control对应一...
All TCP connections requests will be proxied. If your local transparent proxy support DNS address overriding, you can also redirect DNS traffic with--redirect-dns: cproxy --port <destination-local-port> --redirect-dns -- <your-program> --arg1 --arg2 ... ...
1、C语言写的Linux平台socks5代理程序信息來源:邪恶八进制信息安全团队(www. eviloctal. com)前儿天MSN老上不去,我还以为是公司做了防火墙限制。J:是把去年这个时候写 得一个代理程序改了改,拿出來用。结果发现MSN是因为微软的问题,鄙视啊 因为写得比较急,这个只支持TCP代理,UDP的我没写,因为MSN用不上。这个...