SSLSplit源码可实现中间人攻击,源码处理流程及连接过程如下:
一、主流程:
Main->参数解析->proxy_new->proxy_run.
Main
1、参数解析如x509证书或公钥信息设置opts,解析natengine即代理IP和端口设置opts->spec的监听IP和端口。2、利用proxy_new初始化proxy_ctx_t,将opts赋值给ctx设置线程数, proxy_listener_setup设置代理监听到事件中。
3、proxy_run创建线程,用于每个连接使用,每个连接对应一个evbase事件。
二、连接过程:
1、连接服务器
proxy_listener_setup->proxy_listener_acceptcb(cb callback)->pxy_conn_setup(获取未使用的线程ID供此连接使用,获取真正服务器的IP和端口)->pxy_fd_readcb->pxy_conn_connect(建立目的连接)->pxy_bufferevent_setup(创建Bufferevent用于接收发送目的连接的报文)->bufferevent_setcb设置连接回调函数读写数据。
回调函数
bufferevent_setcb(bev, pxy_bev_readcb,pxy_bev_writecb,