VC显示网页验证码、模拟CSDN网页登录
摘要:by:koma 这两天,本来想花点时间研究一下QQ空间、农场外挂,于是抓包分析一了下,只可惜,在QQ网页登录时进行了加密处理,可惜我对网页编程一窍不通。有些朋友曾讲过那些是通过JS代码进行加密,可惜我JS也是一片空白,真是出师未杰身先死,惭愧惭愧...... 于...
by:koma
这两天,本来想花点时间研究一下QQ空间、农场外挂,于是抓包分析一了下,只可惜,在QQ网页登录时进行了加密处理,可惜我对网页编程一窍不通。有些朋友曾讲过那些是通过JS代码进行加密,可惜我JS也是一片空白,真是“出师未杰身先死”,惭愧惭愧......
于是只好挑CSDN这类简易一些的尝试学习一下(仅供学习交流),下面是学习笔记:
程序运行截图:
1、本机环境:Windows XP SP3、ADSL
2、开发工具:WildPackets OmniPeek V5.1.4
Visual C++ 6.0
IE6.0
FlexEdit V2.3.1871
3、数据包截图:
(QQ登录时,在密码2222加密时卡壳了,我尝试过很多加密算法,最终以失败告终......)
4、验证码显示使用IStream和IPicture来显示:
view plaincopy to clipboardprint?
/************************************************************************/
/* 函数说明:获取应用程序当前目录
/* 参 数:无
/* 返 回 值:返回目录路径、CString类型字符串
/* By:Koma 2009.10.13 11:23
/************************************************************************/
CString C***Dlg::GetExePath()
{
char pathbuf[260];
int pathlen = ::GetModuleFileName(NULL,pathbuf,260);
// 替换掉单杠
while(TRUE)
{
if(pathbuf[pathlen--]=='\\')
break;
}
pathbuf[++pathlen]= 0x0;
CString fname = pathbuf;
return fname;
}
/************************************************************************/
/* 函数说明:获取应用程序当前目录
/* 参 数:无
/* 返 回 值:返回目录路径、CString类型字符串
/* By:Koma 2009.10.13 11:23
/************************************************************************/
CString C***Dlg::GetExePath()
{
char pathbuf[260];
int pathlen = ::GetModuleFileName(NULL,pathbuf,260);
// 替换掉单杠
while(TRUE)
{
if(pathbuf[pathlen--]=='\\')
break;
}
pathbuf[++pathlen]= 0x0;
CString fname = pathbuf;
return fname;
}
view plaincopy to clipboardprint?
/************************************************************************/
/* 函数说明:下载验证码图片
/* 参 数:无
/* 返 回 值:无
/* By:Koma 2009.10.13 11:50
/************************************************************************/
void C***Dlg::DownURLImage()
{
CInternetSession session;
CString strUrl;
CFile *pFile,out;
char buff[512];
CString strPath;
// 产生八位随机数数组成验证码
int nRand1 = rand()%100000+10000;
int nRand2 = rand()%200000+10000;
strUrl.Format(");
strPath = GetExePath() + "\\test.tmp";
pFile = session.OpenURL(strUrl);
out.Open(strPath, CFile::modeCreate | CFile::modeWrite);
while(pFile->Read(buff,512)){
out.Write(buff,512);
}
out.Flush();
out.Close();
}
/************************************************************************/
/* 函数说明:下载验证码图片
/* 参 数:无
/* 返 回 值:无
/* By:Koma 2009.10.13 11:50
/************************************************************************/
void C***Dlg::DownURLImage()
{
CInternetSession session;
CString strUrl;
CFile *pFile,out;
char buff[512];
CString strPath;
// 产生八位随机数数组成验证码
int nRand1 = rand()%100000+10000;
int nRand2 = rand()%200000+10000;
strUrl.Format(");
strPath = GetExePath() + "\\test.tmp";
pFile = session.OpenURL(strUrl);
out.Open(strPath, CFile::modeCreate | CFile::modeWrite);
while(pFile->Read(buff,512)){
out.Write(buff,512);
}
out.Flush();
out.Close();
}
view plaincopy to clipboardprint?
/************************************************************************/
/* 函数说明:显示验证码图片
/* 参 数:无
/* 返 回 值:无
/* By:Koma 2009.10.13 13:12
/************************************************************************/
void C***Dlg::ShowImage()
{
::CoInitialize(NULL); // 初始化COM
HRESULT hr;
CFile file;
CString strPath;
CPaintDC dc(this);
strPath = GetExePath() + "\\test.tmp";
file.Open(strPath, CFile::modeRead | CFile::shareDenyNone);
DWORD dwSize = file.GetLength();
HGLOBAL hMem = ::GlobalAlloc( GMEM_MOVEABLE, dwSize );
LPVOID lpBuf = ::GlobalLock( hMem );
file.ReadHuge( lpBuf, dwSize );
file.Close();
::GlobalUnlock( hMem );
// 由HGLOBAL得到IStream,参数TRUE 表示释放IStream的同时,释放内存
hr = ::CreateStreamOnHGlobal(hMem,TRUE,&pStream );
ASSERT(SUCCEEDED(hr));
hr = ::OleLoadPicture(pStream, dwSize, TRUE, IID_IPicture,(LPVOID *)&pPicture);
ASSERT(hr==S_OK);
long nWidth,nHeight; // 宽高 MM_HIMETRIC模式,单位是0.01毫米
pPicture->get_Width( &nWidth ); // 宽
pPicture->get_Height( &nHeight ); // 高
CSize sz(nWidth,nHeight); // 原大显示
dc.HIMETRICtoDP(&sz); // 转换MM_HIMETRIC模式单位为MM_TEXT像素单位
pPicture->Render(dc.m_hDC,10,100,sz.cx,sz.cy,0,nHeight,nWidth,-nHeight,NULL);
CRect rect(10,100,sz.cx + 10,sz.cy + 100);
// 将图片区域保存,以便后面只刷新图片区域
m_PicRect = rect;
if(pPicture) // 释放IPicture指针
pPicture->Release();
if(pStream) // 释放IStream指针,同时释放hMem
pStream->Release();
::CoUninitialize();
}
/************************************************************************/
/* 函数说明:显示验证码图片
/* 参 数:无
/* 返 回 值:无
/* By:Koma 2009.10.13 13:12
/************************************************************************/
void C***Dlg::ShowImage()
{
::CoInitialize(NULL); // 初始化COM
HRESULT hr;
CFile file;
CString strPath;
CPaintDC dc(this);
strPath = GetExePath() + "\\test.tmp";
file.Open(strPath, CFile::modeRead | CFile::shareDenyNone);
DWORD dwSize = file.GetLength();
HGLOBAL hMem = ::GlobalAlloc( GMEM_MOVEABLE, dwSize );
LPVOID lpBuf = ::GlobalLock( hMem );
file.ReadHuge( lpBuf, dwSize );
file.Close();
::GlobalUnlock( hMem );
// 由HGLOBAL得到IStream,参数TRUE 表示释放IStream的同时,释放内存
hr = ::CreateStreamOnHGlobal(hMem,TRUE,&pStream );
ASSERT(SUCCEEDED(hr));
hr = ::OleLoadPicture(pStream, dwSize, TRUE, IID_IPicture,(LPVOID *)&pPicture);
ASSERT(hr==S_OK);
long nWidth,nHeight; // 宽高 MM_HIMETRIC模式,单位是0.01毫米
pPicture->get_Width( &nWidth ); // 宽
pPicture->get_Height( &nHeight ); // 高
CSize sz(nWidth,nHeight); // 原大显示
dc.HIMETRICtoDP(&sz); // 转换MM_HIMETRIC模式单位为MM_TEXT像素单位
pPicture->Render(dc.m_hDC,10,100,sz.cx,sz.cy,0,nHeight,nWidth,-nHeight,NULL);
CRect rect(10,100,sz.cx + 10,sz.cy + 100);
// 将图片区域保存,以便后面只刷新图片区域
m_PicRect = rect;
if(pPicture) // 释放IPicture指针
pPicture->Release();
if(pStream) // 释放IStream指针,同时释放hMem
pStream->Release();
::CoUninitialize();
}
VC显示网页验证码、模拟CSDN网页登录的更多相关文章
- 使用webdriver+urllib爬取网页数据(模拟登陆,过验证码)
urilib是python的标准库,当我们使用Python爬取网页数据时,往往用的是urllib模块,通过调用urllib模块的urlopen(url)方法返回网页对象,并使用read()方法获得ur ...
- delphi WebBrowser控件上网页验证码图片识别教程(一)
步骤一:获取网页中验证码图片的url地址 在delphi中加入一个BitBtn和一个memo以及WebBrowser控件实现网页中验证码图片的url地址的获取 程序如下:procedure TForm ...
- (转)request模拟知乎登录(无验证码机制
原文:http://www.itnose.net/detail/6755805.html import request try: import cookielib #python2版本 except: ...
- request模拟知乎登录(无验证码机制)
import request try: import cookielib #python2版本 except: import http.cookiejar as cookielib #python3版 ...
- CROW-5 WEB APP引擎商业计划书(HTML5方向)-微信网页版微信公众平台登录-水仙谷
CROW-5 WEB APP引擎商业计划书(HTML5方向)-微信网页版微信公众平台登录-水仙谷 CROW-5 WEB APP引擎商业计划书(HTML5方向)
- 网页手机wap2.0网页的head里加入下面这条元标签,在iPhone的浏览器中页面将以原始大小显示,并不允许缩放
网页手机wap2.0网页的head里加入下面这条元标签,在iPhone的浏览器中页面将以原始大小显示,并不允许缩放. <meta name="viewport" conten ...
- iPhone 收藏网址[添加到书签] 和 [添加到主屏幕] 显示自定义图标,而不是网页截图
iPhone 收藏网址[添加到书签] 和 [添加到主屏幕] 显示自定义图标,而不是网页截图: <!-- Safari浏览器[添加到书签] --> <link rel="sh ...
- API文档打开显示'已取消到该网页的导航'的解决方法
从网上下载的API,点击目录右边显示框显示“已取消到该网页的导航”.出现这样的问题并不是文档本身的问题,而是文档属性设置的问题. 这时候只要右键文件选择“属性”-在打开的界面中点击“解除锁定”-点击” ...
- 验证码模拟登录TestHome
前面我们做了一个xsrf的知乎的模拟登录,那么今天将会给大家分享一下小弟写的一段带验证码的登录脚本. 今天我们要做的是testerhome的模拟登录,在做这个模拟登录的时候,我发现需要验证码才能登 ...
随机推荐
- Hadoop记录-Hadoop监控指标汇总
系统参数监控metrics load_one 每分钟的系统平均负载 load_fifteen 每15分钟的系统平均负载 load_five 每5 ...
- 8种提升ASP.NET Web API性能的方法
英文原文:8 ways to improve ASP.NET Web API performance ASP.NET Web API 是非常棒的技术.编写 Web API 十分容易,以致于很多开发者没 ...
- springboot打包成war,部署到tomcat无法访问的问题
如题:实在是太坑.平时本地测试觉得很方便,但是到了项目打包发布掉链子了. 如很多帖子一样: 首先springboot内嵌的tomcat,再依赖servlet-api,修改启动类继承SpringBoot ...
- parseFloat()为什么没有效果
parseFloat() 函数可解析一个字符串,并返回一个浮点数.看清楚说明是操作字符串,如果是数值类型parseFloat([],x)会失去效果. 正确的用法:parseFloat().toFixe ...
- SpringBoot集成原生redis
redis的使用之一是Spring-data-redis,前面有介绍. 本篇介绍原生redis也就是jedis.这个效率更高 1.maven引入依赖 <!--springBoot-->&l ...
- ASP.NET MVC 4 (十) 模型验证
模型验证是在模型绑定时检查从HTTP请求接收的数据是否合规以保证数据的有效性,在收到无效数据时给出提示帮助用户纠正错误的数据. 显式模型验证 验证数据最直接的方式就是在action方法中对接收的数据验 ...
- 【六】Hystrix Dashboard
除了隔离依赖服务的调用以外,Hystrix还提供了准实时的调用监控(Hystrix Dashboard) , Hystrix会持续地记录所有通过 Hystrix发起的请求的执行信息,并以统计报表和图形 ...
- MySQL触发器实现表数据同步
其中old表示tab2(被动触发),new表示tab1(主动触发,外部应用程序在此表里执行insert语句) 1.插入:在一个表里添加一条记录,另一个表也添加一条记录DROP TABLE IF EXI ...
- 一、linux 内核介绍
参考文档: linux 内核剖析:https://www.ibm.com/developerworks/cn/linux/l-linux-kernel/ 1.1 linux 内核历史 在 20 世纪 ...
- 快速学习 javascript
// js 6种数据类型:字符串.数值.布尔值.undefined.null.object // 三种非数字的数字类型:Infinity -Infinity NaN var str = "H ...