C++使用Socks5协议进行代理上网(一)
网上已经有很多文档详细介绍了协议内容以及怎么去使用,最近在做这个项目,已经完成了TCP协议的全部部分,在这里做下笔记顺便和大家分享下,如果有需要的同志们可以用我这个作为模板,已经精通这些的大神们希望看到问题能给我提出来,我也有几个地方是一知半解,其中有些我遇到的注意事项我会单独注明,防止自己后再犯同样的错误。。。
下面是协议第一部分代码(注意,和代理服务器的连接在这一部分已经完成,这里只贴出了关于通信协议的主要代码,C++中怎么样和代理服务器进行连接如果不了解的话,可以参考我的另一篇博客:https://blog.csdn.net/hu421160052/article/details/87262226)
int index = 0;byte Msg1[100];//socks5协议部分(1.发送数据至服务器)//|--------|-------------|-------------| //| VER | NMETHOD | METHODS | //|--------|-------------|-------------|//| 1 | 1 | 1-255 |//|--------|-------------|-------------|// VER是SOCKS版本,这里应该是0x05.// NMETHODS是METHODS部分的长度.// METHODS是客户端支持的认证方式列表,每个方法占1字节。当前的定义是: // 0x00 不需要认证// 0x01 GSSAPI// 0x02 用户名、密码认证// 0x03 - 0x7F由IANA分配(保留)// 0x80 - 0xFE为私人方法保留// 0xFF 无可接受的方法Msg1[index++] = 0x05; //Version 版本号Msg1[index++] = 0x01; //Method 方法Msg1[index++] = 0x02; //Username/Password 认证用户名/认证密码//第一次发送数据send(sockClient, (const char*)Msg1, index, 0);char Send_Msg[100];sprintf(Send_Msg, "VER:0x%d%d\r\n METHOD:0x%d%d\r\n Method:0x%d%d\r\n", (Msg1[0] / 16),(Msg1[0] % 16), (Msg1[1] / 16), (Msg1[1] % 16), (Msg1[2] / 16), (Msg1[2] % 16));MessageBoxA(NULL, (const char*)Send_Msg, "发送数据:", NULL);byte RecvMsg1[10];numl=recv(sockClient, (char*)RecvMsg1, sizeof((const char*)RecvMsg1), 0);int q00 = (RecvMsg1[0] / 16),q01= (RecvMsg1[0] % 16);int q10 = (RecvMsg1[1] / 16), q11 = (RecvMsg1[1] % 16); char result[1024];//socks5协议部分(2.服务器响应数据)//|--------|-------------|//| VER | METHOD |//|--------|-------------|//| 1 | 1 |//|--------|-------------|//VER是SOCKS版本,这里应该是0x05;//METHOD是服务端选中的方法。如果返回0xFF表示没有一个认证方法被选中,客户端需要关闭连接。sprintf(result,"Length:%d\r\n VER:0x%d%d\r\nMETHOD:0x%d%d\r\n", numl,q00,q01,q10,q11);MessageBoxA(NULL, result, "服务器返回结果:", NULL);
在这里,接受完数据后,socks5第一部分协议内容就算完成了,因为我选择的是账号密码认证方式,也只给服务器发送了那种连接方式,所以服务器最后返回我了一个5和2,如果是没有账号密码的认证方式,可以仔细看下协议内容这一部分是怎么发送消息。
下面是第二部分:
https://blog.csdn.net/hu421160052/article/details/88870940
C++使用Socks5协议进行代理上网(一)相关推荐
- C# Socket使用代理 及 Http协议、Socks5协议
Http协议: http://www.w3.org/Protocols/rfc2068/rfc2068 socks5 协议: http://www.faqs.org/rfcs/rfc1928.htm ...
- CentOS 7作为客户端使用socks5代理上网
GitHub这两天好像抽风了,正常访问都很难,自己搞了个gogs服务器后准备将github上的项目迁移到本地,先记录一下CentOS7作为客户端设置全局代理的方法 安装privoxy Linux貌似默 ...
- DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网...
我自己的命令: server端: dns2tcpd -F -d 1 -f ./dns2tcpd.conf 输出: 09:08:59 : Debug options.c:97 Add resource ...
- Proxifier设置代理上网详细操作
分享知识 传递快乐 Proxifier配置上网代理 Proxifier 是一款功能非常强大的socks5客户端,可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链.支持X ...
- socks5 转 http 代理
socks5 转 http 代理 在linux系统上安装shadowsocks软件,但是它使用的协议是socks5,对于一些只能使用http代理上网的软件就无能为力了,这就需要一个神器来把socks5 ...
- Regeorg 从python2改造为python3-从实战中学习socks5协议
Regeorg 从python2改造为python3-从实战中学习socks5协议 问题描述 解决过程 环境准备 过程 这两天没啥工作,一般这时候我都不会发挥自己的主观能动性去主动找活,于是乎只能上网 ...
- 基于WFP等网络驱动实现局域网内所有设备通过代理上网
by fanxiushu 2020-10-13 转载或引用请注明原始作者 开始之前,我们先来理解标题是什么意思. 这里所说的局域网内的所有设备通过代理上网,并不是在每台设备上安装某个代理软件然后再通过 ...
- Centos系统使用代理上网时 yum的代理设置
yum的存在使centos上软件的安装.配置.升级.卸载变得十分的方便,但是当安装centos的机器是通过代理服务器访问外网的话,yum的 使用就变得无从下手了,以下介绍以下怎样为yum配置代理地址及 ...
- linux命令行模式下实现代理上网 专题
有些公司的局域网环境,例如我们公司的只允许使用代理上网,图形界面的很好解决就设置一下浏览器的代理就好了,但是linux纯命令行的界面就....下面简单几步就可以实现了! 一.命令行界面的一般代理设置方 ...
- Maven工作笔记003---公司只允许代理上网_给maven配置代理下载jar包
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 公司只允许代理上网_给maven配置代理_下载jar包啊 配置很简单: 找到maven的setti ...
最新文章
- tomcat安装及使用详解
- 业务流程、长周期服务和微服务
- 页面加载完毕执行多个JS函数
- 距离传感器控制灯泡代码_生迪全彩智能 LED 灯泡体验评测
- 释放内容化势能 聚划算《划算8点档》给出新思路
- android开发我的新浪微博客户端系列教程
- 【论文写作】学位论文写作过程中应注意的7个问题,非常实用
- c语言实现语音检测vad_AI大语音(二)——语音预处理
- java wifi开发教程_WiFi技术
- md5加盐(MySQL,PHP)
- echarts 画正弦曲线
- 虚拟机安装python3_虚拟机如何安装python
- 程序识别验证码图片(一)
- Pta题目集:汽车加油问题 (20 分)
- 实现网页购物车功能,完成基本的商品价格计算等功能
- 实现响应式布局有几种方法
- 用于威胁情报分析的虚拟机
- Redis安装(完整版)
- selenium 成功绕过淘宝登录反爬机制
- Jan. 1, 2020 at 7:47 a.m. GMT+8遇到这种时间,转换成中国标准时间
热门文章
- matlab正弦信号采样,matlab模拟信号的欠采样及原理理解
- 用Python批量生成字幕图片用于视频剪辑
- [篇五章二]_使用 USB 系统安装盘在真机上安装激活 Windows 10 LTSC 2021 中文企业版系统
- php代码上传工具,php中文网重磅推出“php程序员工具箱” v0.1版本!
- 也来谈谈自己做为面试官的面试流程
- linux socket非阻塞之 send 和sendto函数
- 手写原笔迹输入_手写原笔迹
- android ts流解码,DVB开发之TS流的接收,解码与播放
- 如何写软件设计文档?
- 计算机科学与技术 未来,浅析计算机科学与技术的未来发展趋势