首页
社区
课程
招聘
[求助][求助]已知道解密函数求加密函数(已经完成)
发表于: 2011-11-6 21:22 5089

[求助][求助]已知道解密函数求加密函数(已经完成)

2011-11-6 21:22
5089
#include "stdafx.h"
#include "XCrypt.h"

#define x_Password            "1.0.0.0"
wstring ConvertMultiByteToWideChar(const std::string &input)
{
  DWORD dwSize = MultiByteToWideChar(CP_ACP, 0, input.c_str(), -1, NULL, 0);
  wchar_t * pBuffer = new wchar_t[dwSize];
  MultiByteToWideChar(CP_ACP, 0, input.c_str(), -1, pBuffer, dwSize);
  wstring ouput(pBuffer);
  delete[] pBuffer;

  return ouput;
}

wstring Decrypt(LPCSTR lpszInput)
{
  Xstring crypt(x_Password);

  std::string output;
  if(!crypt.DecryptString(lpszInput, output))
    return L"";
  return ConvertMultiByteToWideChar(output);
}

int main(int argc, wchar_t* argv[])
{

  /*
  加密后----------------加密前
  "EeCpOoClBpPgFkFnBnCfFdPlBfOkIl"  //WMOptimizer.txt
  "HaFiPnAdEgMnFcEhAoCeEeLlBfLmJdFfPn"  //c:\X-Resident.log
  "ElEpPdDoBiPgFdFbAjDeAmJmApObIlFlPgPhHiDb"  //X-Resident-Installer
  "ElEpPdDoBiPgFdFbAjDe"  //X-Resident
  "EeAlMpDpAeOiEeBeCkCfEfLmAaLcLaEkOoPcHaCkFcNlHk";//Windows Media Optimizer
  */
string de="EeAlMpDpAeOiEeBeCkCfEfLmAaLcLaEkOoPcHaCkFcNlHk";//Windows Media Optimizer
cout<<de<<endl<<"length:"<<de.size()<<endl;
wstring out=Decrypt(de.c_str());
wcout<<out<<endl<<"length:"<<out.size()<<endl;

  system("pause");
}

/*主要解密码函数如下:
BOOL Xstring::DecryptString(const std::string& input, std::string& output)
{
  output = "";
  if(!m_bSucceed || input.length() % 2 != 0) return false;
  
  DWORD dwSize = input.length();
  BYTE* lpTemp = new BYTE[dwSize];
  memcpy_s(lpTemp, dwSize, input.c_str(), dwSize);

  for(DWORD i=0; i<dwSize; i+=2)
    lpTemp[i/2] = ((lpTemp[i] - 'A') << 4) | (lpTemp[i + 1] - 'a');

  lpTemp[dwSize /= 2] = '\0';
  BOOL bSucceed = ::CryptDecrypt(m_hKey, NULL, TRUE, 0, lpTemp, &dwSize);
  if(bSucceed)
    output = (char*)lpTemp;
  
  delete[] lpTemp;
  return bSucceed;
}
*/
求加密码函数
全部源码在附件

[课程]Linux pwn 探索篇!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
BOOL Xstring::EncryptString(const std::string& input, std::string& output)
{	
	DWORD dwLen = input.length();
	byte *lpTemp = new byte[dwLen + 1];
	byte *lpRetString = new byte[dwLen * 2 + 1];
	memset(lpTemp, 0, dwLen+1);
	strcpy((char *)lpTemp, input.c_str());
	
	memset(lpRetString, 0, dwLen*2+1);

	if (!::CryptEncrypt(m_hKey, NULL, TRUE, 0, (byte*)lpTemp, &dwLen, dwLen))
	{
		delete [] lpTemp;
		delete [] lpRetString;

		return FALSE;
	}
	for (int i=0; i<dwLen; i++)
	{
		lpRetString[i*2]= ((lpTemp[i] & 0xf0)>>4) + 'A';
		lpRetString[i*2+1] = ((lpTemp[i]) & 0x0f) + 'a';
	}
	output = (char *)lpRetString;
	delete [] lpTemp;
	delete [] lpRetString;

	return TRUE;
}
上传的附件:
2011-11-8 17:46
0
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
只想说谢谢!
2011-11-8 18:35
0
游客
登录 | 注册 方可回帖
返回
//