qq号申请工具的编写原理

2014/4/10 12:54:00  人气 1409    怀旧国机论坛  
大家都知道现在有很多申请qq号的软件,只要填写软件上的验证码,就可以帮你自动申请一个qq,并保存下来。 它简化了 注册的流程。 通常这类软件有两种,一个编程时用了ie的控件,直接向这些表单填写数据,另一种就是今天要讲的,用封包的方法来实现自动申请qq。 想一下,我们面临的难题有: 1.验证码的gif图片在哪,如何让程序获取图片,并显示出来。 2.http请求中包的分析和构建。 当然第二个是重点。 先完成第一项任务。 我们打开 www.reg.qq.com ,会有这个http请求 用文字就是: get: http://captcha.qq.com /getimage?aid=1007901 &0.3621022082160978 accept: */* referer: http://reg.qq.com/ accept-language: zh-cn accept-encoding: gzip, deflate user-agent: mozilla/4.0 (compatible; msie 7.0; windows nt 6.1; trident/4.0; user-agent: mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; sv1; http://bsalsa.com) ; slcc2; .net clr 2.0.50727; .net clr 3.5.30729; .net clr 3.0.30729; media center pc 6.0; .net4.0e; .net4.0c) host: captcha.qq.com connection: keep-alive --------------------------------------------- http://captcha.qq.com /getimage?aid=1007901 &0.3621022082160978 看这个url,有两个数据,是否是定值呢。 再重新登陆 reg.qq.com,会发现 aid=后面的数字没有变,但第二个数据变化了。
大家都知道现在有很多申请qq号的软件,只要填写软件上的验证码,就可以帮你自动申请一个qq,并保存下来。 它简化了 注册的流程。 通常这类软件有两种,一个编程时用了ie的控件,直接向这些表单填写数据,另一种就是今天要讲的,用封包的方法来实现自动申请qq。 想一下,我们面临的难题有: 1.验证码的gif图片在哪,如何让程序获取图片,并显示出来。 2.http请求中包的分析和构建。 当然第二个是重点。 先完成第一项任务。 我们打开 www.reg.qq.com ,会有这个http请求 用文字就是: get: http://captcha.qq.com /getimage?aid=1007901 &0.3621022082160978 accept: */* referer: http://reg.qq.com/ accept-language: zh-cn accept-encoding: gzip, deflate user-agent: mozilla/4.0 (compatible; msie 7.0; windows nt 6.1; trident/4.0; user-agent: mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; sv1; http://bsalsa.com) ; slcc2; .net clr 2.0.50727; .net clr 3.5.30729; .net clr 3.0.30729; media center pc 6.0; .net4.0e; .net4.0c) host: captcha.qq.com connection: keep-alive --------------------------------------------- http://captcha.qq.com /getimage?aid=1007901 &0.3621022082160978 看这个url,有两个数据,是否是定值呢。 再重新登陆 reg.qq.com,会发现 aid=后面的数字没有变,但第二个数据变化了。
这个很容易理解,因为每次登陆会有不同的验证码嘛。 但第一个数据,仔细看看之前发的包,就会知道 1007901,是getday产生的,过一天可能就加1了。呵呵!但今天无论怎么换验证码,都不会改变的。 ok。 gif图片已经获取。 代码: char szaccept** = “accept: */gif“; char szreferer** = “referer: http://reg.qq.com/\r\n\r\n“; cstring strbuffer = _t(““); cstring strrecv = _t(““); hinternet hsession; hinternet hconnect; hinternet hrequest; bool breturn = false; cstring str=_t(“/getimage?aid=1007901&0.0022421072022002497“); // 之前使用socket,现 在使用wininet相关api建立链接 hsession = internetopen(“inetall“,internet_open_type_preconfig,null,null,0); hconnect = internetconnect(hsession,“ captcha.qq.com“,internet_default_http_port,null,null,internet_service_http,0,1); hrequest = httpopenrequest(hconnect,“get“,str,null,“ http://reg.qq.com/“,(pcstr*)szaccept,internet_flag_reload,1); // 提交数据表单 breturn = httpsendrequest(hrequest,null,-1,null,0); if(!breturn) {
messagebox(“发送 http请求失败!“,“提示“,mb_iconerror | mb_ok); return false; } //之后就是生成图片 了。 hfile.open(“temp.dat“, cfile::modewrite | cfile::mode*,null); internetreadfile(h request,szrecvbuf,1024,&dwnumberofbytesread); } 1.2 怎么在vc的对话框窗 口上显示出这个图片呢。 在此结出了一种借助于com接口的ole方法来实现上述功能 要使用ipicture 的com接口,其主要的接口是ipicture和ipicturedisp,后者是由idispatch接口派生以便通过自动化对图像的属性进行访问。图像对象也支持外部接口ipropertynotifysink,以便用户能在图像属性发生改变时作出决定。图像对象也支持ipersiststream接口,所以它能从一个istream接口的实例对象保存、装载自己,而istream接口也支持对流对象的数据读写。 我们可以用函数oleloadpicture从包含有图像数据的流中装载图像。该函数简化了基于流的图像对象的创建过程,可以创建一个新的图像对象并且用流中的内容对它进行初始化。其函数原型为: stdapi oleloadpicture( istream * pstream, //指向包含有图像数据的流的指针 long lsize, //从流中读取的字节数 bool frunmode, //图像属性对应的初值 refiid riid, //涉及到的接口标识,描述要返回的接口指针的类型 void ppvobj // 在rrid中用到的接口指针变量的地址) ; 先将图片数据放入内存 代码: bool cqq号申请工具dlg:oadpic(cstring m_path) { istream *pstm; cfilestatus fstatus; cfile file; long cb; if (
(file.open(m_path,cfile::moderead)&&file.getstatus(m_path,fstatus)&& ((cb = fstatus.m_size) != -1)) { hglobal hglobal = globalalloc(gmem_moveable, cb); lpvoid pvdata = null; if (hglobal != null) { if ((pvdata = globallock(hglobal)) != null) { file.read(pvdata, cb); globalunlock(hgl obal); *streamonh global(hglobal, true, &pstm); } } } return true; } 为工程加一个ipicture *ppic 变量。 直接调用oleloadpicture函数从流中装载图像: oleloadpicture(pstm,fstatus.m_size,true,iid_ipicture,(lpvoid*)&ppic)); 由于该函数有时会导致失败,所以应当用succeeded宏来做一些适当的保护工作,只有在数据装载成功的前提下才能继续下面的图像显示工作: 代码: int cqq号申请工具dlg:rawp

. 给老子摆正不要乱放屁,不要太把自己当回事

发表回复

   


  通知楼主