ImageVerifierCode 换一换
格式:DOCX , 页数:42 ,大小:39.60KB ,
资源ID:18034988      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18034988.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(代理穿透技术Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

代理穿透技术Word文件下载.docx

1、 NULL, NULL);pHttpFile = pConnection-OpenRequest(GET, szObject, NULL, 0, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION);/here for proxy /这里设置代理服务器和端口、用户名和密码INTERNET_PROXY_INFO proxyinfo;proxyinfo.dwAccessType = INTERNET_OPEN_TYPE_PROXY;proxyinfo.lpszProxy = strProxyList;proxyinfo.lpszProxyBypass = NULL;

2、mysession.SetOption(INTERNET_OPTION_PROXY, (LPVOID)&proxyinfo, sizeof(INTERNET_PROXY_INFO);pHttpFile-SetOption(INTERNET_OPTION_PROXY_USERNAME, strUsername, strlen(strUsername)+1);SetOption(INTERNET_OPTION_PROXY_PASSWORD, strPassword, strlen(strPassword)+1);SendRequest(NULL);/输出string信息 分行放到m_SiteInf

3、oCString myData;while(pHttpFile-ReadString(myData) strContent=strContent+rn; strContent+=myData;/DWORD nFileSize = pHttpFile-GetLength();/LPSTR rbuf = szContent.GetBuffer(nFileSize);/UINT uBytesRead = pHttpFile-Read(rbuf, nFileSize);/szContent.ReleaseBuffer();Close();delete pHttpFile;pConnection-del

4、ete pConnection;mysession.Close();return strContent;内容:以下内容是根据我在写远程控制工具时的工作日记整理而成的,一些方法思路是借鉴了前辈的,在此感谢,同时有一点心得,拿出来与大家分享,希望对大家有用。正文:1、现状简介当今大型机构、企业为了保障网络安全、实现统一的安全管理,多采用域控、代理、网关等相关的手段,因此对于这些环境下的网络通信必然会面临代理穿透的问题。代理软件主要用于网页浏览、下载文件、邮件收发等多种用途。常见的代理类型有:FTPHTTPHTTPSSOCKSGropher其中最常用的代理主要有Http、Https和Socks,以下

5、将以http为例说明代理穿透技术。2、HTTP代理穿透2.1 HTTP CONNECTHTTP代理服务器中能够提供一种HTTP CONNECT代理服务,能够允许用户建立TCP连接到任何端口。进一步讲,这种代理不仅可用于HTTP,还包括FTP、IRC、RM流服务等,甚至扫描、攻击。通过CONNECT方法穿透代理的实现步骤为:connect代理服务器的代理端口(如:8080);如果成功返回就可以按照正常的Socket进行通讯。注:ISA防火墙会默认封阻SSL端口以外的其它connect端口,以防被人滥用作扫描,攻击或发送垃圾邮件。因此穿透ISA,我们可以connect 443端口,然后把443映射

6、为我们需要连接的真正端口。2.2 HTTP GET/POSTHttp GET/POST代理穿透的原理都是通过发送HTTP协议的数据报文来实现,所要传输的数据隐含在HTTP的请求/应答报文中,即网络数据的通信被HTTP协议封装,并且传输的过程遵循HTTP协议本身。2.2.1HTTP报文格式(1)请求报文HTTP请求报文格式为:请求消息 = 请求行(实体头信息)CRLF实体内容请求行 = 方法URLHTTP版本号CRLF方法 = GET|HEAD|POST|扩展方法URL = 协议名称 宿主名 目录与文件名其中CRLF表示回车换行。请求行中的方法描述了对指定资源执行的动作,常用的方法、HEAD和P

7、OST等3种,它们的含义如表表 1 HTTP请求方法取值 描述GET 从WEB服务器中获取对象,不同类型的对象将获取不同的信息,比如: 文件类型对象,获取该文件的内容。 程序类型对象,获取该程序执行的结果。 数据库查询类型对象,获取该查询的结果。POST 从客户端向WEB服务器发送数据。HEAD 要求服务器查找对象的元信息。实体头信息中记载了报文的属性,利用这些信息可以实现客户端与WEB服务器之间的请求或应答,它包括报文的数据类型、压缩方法、语言、长度、压缩方法、最后一次修改时间、数据有效期等信息。实体内容是报文传送的附加信息,一般供POST请求填写。以下是GET请求报文的例子:GEThttp

8、:/192.168.0.1/test.asp?value=testinfoHTTP/1.1Accept: */*Accept-Language: zh-cnAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)Host:/192.168.0.1/Connection: Keep-Alive/test.php?value=testinfo是URL信息,语句ACCEPT:*/*及其后的语句是。注意:在语句Connection:Keep-Alive下的空行是必须的。以下是

9、POST请求报文的例子:POST /test.cgi HTTP/1.0 /* 请求行,服务程序为test.cgi */* 以下为实体头信息 */ 192.168.0.1Authorization: Basic Content-Length: /* 以下为POST请求的实体信息 */=CommandValue44一般情况下,采用POST报文传送信息的数据存储在实体部分中。(2)应答报文HTTP协议的应答报文格式为:应答报文 = 状态行(实体头信息)CRLF 实体内容状态行 = HTTP版本号状态码原因叙述状态码描述了WEB服务器执行客户机请求的状态信息,其取值含义如表表 2 HTTP响应应答码含

10、义1xx 保留2xx 成功接收3xx 客户需进一步细化请求4xx 客户错误5xx 服务错误GET应答报文例子HTTP/1.1 200 OK keep-aliveDate: Thu, 26 Jul 2007 14:00:02 GMTServer: Microsoft-IIS/6.0X-Powered-By: ASP.NET 190Content-Type: text/htmlSet-Cookie: ASPSESSIONIDSAATTCSQ=JOPPKDCAMHHBEOICJPGPBJOB; path=/Cache-control: privatehtmlheadtitleTestPage/hea

11、dbodyfont size=4HelleWorld!/font/body/html语句HTTP/1.1 200 OK中,200是响应码,OK是原因描述。POST应答报文例子HTTP/1.0 200 OK /* 状态行,应答成功 */ Tue, 13 Mar 2001 02:45:12 GMT Apache/1.3.12 (Unix) close/* 以下为POST应答的实体信息 */949494Result0一般情况下,POST应答报文的部分存储实际传输的信息。(3)GET和POST数据报文的区别:GET和POST若用作数据传输时,响应报文的数据存放区别不大,重点在于请求报文中数据的存放。首

12、先GET方式提交的数据存放在URL中,根据HTTP协议规范,并没有对URL的长度进行限制,但是特定的浏览器和服务器对它有限制,如IE对URL的限制长度为2083字节(2K+35),而其它浏览器(如:Netscape、FireFox等)理论上没有长度限制,但限制取决于操作系统的支持。上述的限制是整个URL长度,而不仅仅是你的参数值数据长度。再者理论上讲POST是没有大小限制的,HTTP协议规范也没有大小限制,但服务器的处理程序的处理能力限制了其大小。如:对于ASP程序,Request对象处理每个表单域时存在100K的数据长度限制,但如果使用Request.BinaryRead则没有这个限制。对于

13、IIS6.0,MS出于安全考虑,加大了限制:IIS6.0默认ASP POST数据量最大为200KB,每个表单域限制是100KB;IIS6.0默认上传文件大小是4MB;IIS6.0默认最大请求头是16KB;IIS6.0之前没有这些限制,并且这些参数可以自己设置,具体参见IIS配置文档。2.2.2 GET和POST数据包的构造(1)伪装GET请求数据包由于GET请求的数据会附在URL之后(HTTP协议头中),以?分割URL和传输数据,参数之间以&连接。如果数据是英文字母/数字,则直接发送,如果是空格,转化为+,如果是中文/其它字符串,则用BASE64加密。以下是用GET进行数据传输的举例说明:va

14、lue=TestRequest HTTP/1.1Test Request就是我们要传输的数据(2)伪装GET响应数据包伪转GET响应包比较简单,直接将数据写入HTTP包的实体中,举例如下:TestResponseInfoTestResponseInfo为响应的数据,当然为了保证较好的安全性可以将真正的数据放入特定的网页标记中如下:TestResponseInfo!(3)伪装POST请求数据包POST把需要传输的数据直接放在HTTP包的实体中,如下:POST /test.php HTTP/1.0RequestCommandTestRequestRequestCommandValueTestReq

15、uest44就是两个请求的数据(4)伪装POST响应数据包POST的响应数据与请求数据的存放相似,如下:HTTP/1.0 200 OKResponseCommandTestResponseResponseValue其中其中TestResponse9494就是两个响应的数据,而此处用作传输结束标志,主要用于大量数据传输时,判断数据包是否是最后一个报文。2.2.3 HTTP GET/POST代理穿透的实现(1)Sockers实现Socket实现的Http代理穿透的流程使用关键字的过程一样,只是提取数据的时候,需要解析HTTP头部、对应的定制标志或字符,而整个发送过程与普通的Socket网络通讯一样

16、,首先创建socket套接字,然后connect代理服务器和端口,接着send构造的特殊请求数据包,之后就等待接受数据包。此时还需要做的就是伪造相应的HTTP服务端。在接受特定的HTTP相应后,解析请求,然后将响应的HTTP头加上特定的响应数据发送回请求端。(2)WinInet实现WinInet允许应用程序向Internet服务器增加连接,而不用考虑基本的通信协议,它是程序员可以在较高的层次上建立Internet客户应用程序,提供专业性客户端程序支持,较Winsock有许多的优点。而此处说的WinInet包括WinInet类、WinInet API和MFC WinInet类,其中WinInet

17、类封装了WinInet API但不全面,WinInet API提供了全部的接口操作,而MFC WinInet类也是封装WinInet API,但其为用户提供了更加方便的编程接口。而WinInet编程从数据包收发的角度上说是和Winsock的实现是等价的,以下以WinInet API为例说明请求数据包的发送和接收过程:/ 1、建立与服务端的连接,并测试InternetOpen()InternetConnect()InternetAttemptConnect()/ 2、添加HTTP请求头和URIHttpOpenRequest()HttpAddRequestHeaders()/ 3、接受数据Inte

18、rnetReadFile()当然使用哪种构造的WinInet可由具体的需求灵活决定。WinInet只能用户编写Internet的客户端程序,不能用于服务端的编写,因此伪装的服务端还是由Winsock来完成。2.3 总结本文总结出的HTTP代理的穿透方法主要分为两种方法来实现,即CONNECTGET/POST,前者主要利用代理服务可以建立到指定端口的连接来实现,后者主要的思想就是如何伪装成正常的HTTP程序和服务,并进行网络数据的通信。另外,HTTP GET/POST代理穿透的实现的前提条件是开启了Http代理服务,再者有时可能还要看具体代理设置的情况,如有的代理服务不允许请求。HTTP代理穿透

19、原理通过CONNECT方法穿透代理的实现方法为:CONNECT代理服务器的代理端口(如:当然在此之前需要先获得代理相关的信息。如何获取HTTP代理相关信息程序中是通过读取注册表来获取计算机HTTP代理相关信息的,在注册表的SoftwareMicrosoftWindowsCurrentVersionInternetSettings键值下就保存着HTTP代理服务器及端口等信息,根据该键值下的ProxyEnable值可以判断是否有HTTP代理,没有代理的情况下ProxyEnable值为0。当然一般情况下程序去中访问该键值可能是受限的,所有就需要获取到访问令牌不受限制的UserSid,使用该UserS

20、id去读取HTTP代理信息。通过HTTP代理代码片段网络上摘一点代码,原理大概上能实现了的memset(buff,0,sizeof(buff);sprintf(buff,CONNECT %s:%d HTTP/1.1rnAccept: */*rnContent-Type: text/htmlrnProxy-Connection: Keep-AlivernContent-length: 0rnrn,lpszHost,nPort);send(m_Socket,buff,strlen(buff),0);.recv(m_Socket, buff, sizeof(buff), 0);if(strstr(b

21、uff,200 Connection)!=NULL)return true;/连接成功此外,如果是GET/POST代理你也可以模拟发post和get包,这个没什么说的,熟悉http协议就可以游刃有余的去编程了!主要是需要用大白鲨或其他http截包工具去分析调试。但是,对于客户服务端程序这样就需要额外添加一个中间跳板空间来中转数据。这本身又是很影响速度的。而post每次传输的数据还是有点经不起用。穿透代理服务器编程发信站:BBS大漠孤烟站(TueApr821:20:342003)关键字代理服务器、Socks4、Socks5、Http代理原作者姓名allfresh文章原始出处正文在网络程序设计过程中,我们经常要与各种类型的代理服务器打交道,比如在企业内部网通过代理去访问Internet网上的服务器等等,一般代理服务器支持几种常见的代理协议标准,如Socks4,Socks5,Http代理,其中Socks5需要用户验证,代理相对复杂我在查阅RFC文档和相关资料后,特总结一些TCP协议穿透代理服务器的程序片断,希望对大家有所帮助。/使用到的结构structsock4req1charVN;CD;unsignedshortPort;longIPAddr;other1;sock4ans1sock5req1Ver;nMethods;Methods255;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1