⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gliu.cpp

📁 BQYAHOO的Visual C++源代码
💻 CPP
字号:
//生成登录URL

#include "stdafx.h"
#include "GLIU.h"
#include "md5.h"
#include "StdString.h"



const char HTTP_LOGIN[]="http://edit.bjs.yahoo.com/config/login";

inline void rhex(unsigned int num, char *data);



CGLIU::CGLIU(const char * u , const char * p ,const char * c)
{
	
	//初始化
	ChallengeText[0]=0;
	password[0]=0;
	data[0]=0;
	LogInUrl[0]=0;
	user[0]=0;
	
	strcpy(user,u);
	strcpy(password,p);
	strcpy(ChallengeText,c);
	

}



const char * CGLIU::GetLogInUrl()
{
		//以下代码计算登录URL,来自于开源项目YPOPs!
		//下面的MD5加密完全再现了雅虎中国网页上的加密过程
		

		char hash[256];
		
		MD5_CTX ctx;
		MD5_Init(&ctx);
		MD5_Update(&ctx, password, strlen(password));
		MD5_Final(reinterpret_cast<unsigned char *>(hash), &ctx);
		
		hash[0] = '\0';
		rhex(ctx.A, data);
		strcat(hash, data);
		rhex(ctx.B, data);
		strcat(hash, data);
		rhex(ctx.C, data);
		strcat(hash, data);
		rhex(ctx.D, data);
		strcat(hash, data);
		strcat(hash, ChallengeText);

		MD5_Init(&ctx);
		MD5_Update(&ctx, hash, strlen(hash));
		MD5_Final(reinterpret_cast<unsigned char *>(hash), &ctx);
		
		hash[0] = '\0';
		rhex(ctx.A, data);
		strcat(hash, data);
		rhex(ctx.B, data);
		strcat(hash, data);
		rhex(ctx.C, data);
		strcat(hash, data);
		rhex(ctx.D, data);
		strcat(hash, data);


		sprintf(data, 
			"%s?login=%s&passwd=%s&.save=1&.intl=cn&.src=ym&.challenge=%s&.hash=1&.js=1&.md5=1", 
			HTTP_LOGIN, user, hash, ChallengeText);

		strcpy(LogInUrl,data);

		return (const char *)LogInUrl;

}




inline void rhex(unsigned int num, char *data)
{
	CStdString hex_chr = "0123456789abcdef";
	CStdString str;
	
	for(int j = 0; j <= 3; j++)
	{
		str += hex_chr[(num >> (j * 8 + 4)) & 0x0F];
		str += hex_chr[(num >> (j * 8)) & 0x0F];
	}
	
	strcpy(data, str);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -