Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Eudemons Online
You last visited: Today at 13:20

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Help]C++ RC5 Decrypt/Encrypt Account Serevr

Discussion on [Help]C++ RC5 Decrypt/Encrypt Account Serevr within the Eudemons Online forum part of the MMORPGs category.

Closed Thread
 
Old   #1
 
Mr_PoP's Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 759
Received Thanks: 285
[Help]C++ RC5 Decrypt/Encrypt Account Serevr

Greetings guys,

i was working on my own server and am coding it in c++, i heared i must decrypt the msg from the client so i can check if the user is exist or not (geting server name,account id and password) .

so i was wondering if someone can help me and correct what am doing wrong here is my code hopefully someone can help me

RC5.h
Code:
#ifndef	RC5_H
#define RC5_H

#define	RC5_32			32

#define	RC5_12			12
#define	RC5_SUB			(RC5_12*2 + 2)

#define	RC5_16			16
#define	RC5_KEY			(RC5_16/4)

const unsigned long	RC5_PW32	= 0xB7E15163;
const unsigned long	RC5_QW32	= 0x61C88647;

const unsigned char RC5PASSWORD_KEY[16] = {	0x3C, 0xDC, 0xFE, 0xE8, 0xC4, 0x54, 0xD6, 0x7E, 
											0x16, 0xA6, 0xF8, 0x1A, 0xE8, 0xD0, 0x38, 0xBE };
const unsigned char RC5BARPASSWORD_KEY[16] = {	0x44, 0xD0, 0xE2, 0xBA, 0x4A, 0x38, 0x14, 0x44, 
												0x64, 0xE0, 0x12, 0xAE, 0xDA, 0x56, 0x1C, 0xF8 };

////////////////////////////////////////////////////////////////////////////////////////////////

class	CRc5
{
public:
	void Rc5InitKey(const unsigned char bufKey[RC5_16]);
	void Rc5Encrypt(void* buf, int nLen8);
	void CRc5::Rc5Decrypt(void* buf, int nLen8);

protected:
	unsigned long	m_bufKey[RC5_KEY];
	unsigned long	m_bufSub[RC5_SUB];
};

#endif // RC5_H
RC5.cpp
Code:
#include "RC5.h"


unsigned long	rotate_left(unsigned long nData, unsigned long nCount);
unsigned long	rotate_right(unsigned long nData, unsigned long nCount);

void CRc5::Rc5InitKey(const unsigned char bufKey[RC5_16])
{
	try{
		memcpy(m_bufKey, bufKey, RC5_16);
	}catch(...) {
#ifdef	_DEBUG
		assert(!"InitRc5Key()");
#endif
	}
	m_bufSub[0] = RC5_PW32;
	for(int i = 1; i < RC5_SUB; i++)
	{
		m_bufSub[i] = m_bufSub[i-1] + RC5_QW32;
	}
	int				i, j;
	unsigned long	x, y;
	i = j = x = y = 0;
	for(int k = 0; k < 3 * __max(RC5_KEY, RC5_SUB); k++)
	{
		m_bufSub[i] = rotate_left((m_bufSub[i] + x + y), 3);
		x = m_bufSub[i];
		i = (i + 1) % RC5_SUB;
		m_bufKey[j] = rotate_left((m_bufKey[j] + x + y), (x + y));
		y = m_bufKey[j];
		j = (j + 1) % RC5_KEY;
	}
}


void CRc5::Rc5Encrypt(void* buf, int nLen8)
{
	assert(nLen8 % 8 == 0);
	nLen8 = (nLen8/8) * 8;
	if(nLen8 <= 0)
		return;

	unsigned long* bufData = (unsigned long*)buf;
	for(int k = 0; k < nLen8/8; k++)
	{
		unsigned long	a = bufData[2*k];
		unsigned long	b = bufData[2*k + 1];

		unsigned long	le	= a + m_bufSub[0];
		unsigned long	re	= b + m_bufSub[1];
		for(int i = 1; i <= RC5_12; i++)
		{
			le = rotate_left((le ^ re), re) + m_bufSub[2*i];
			re = rotate_left((re ^ le), le) + m_bufSub[2*i + 1];
		}

		bufData[2*k]		= le;
		bufData[2*k + 1]	= re;
	}
}

////////////////////////////////////////////////////////////////////////////////////////////////
void CRc5::Rc5Decrypt(void* buf, int nLen8)
{
	assert(nLen8 % 8 == 0);
	nLen8 = (nLen8/8) * 8;
	if(nLen8 <= 0)
		return;

	unsigned long* bufData = (unsigned long*)buf;
	for(int k = 0; k < nLen8/8; k++)
	{
		unsigned long	ld	= bufData[2*k];
		unsigned long	rd	= bufData[2*k + 1];
		for(int i = RC5_12; i >= 1; i--)
		{
			rd = rotate_right((rd - m_bufSub[2*i + 1]),  ld) ^ ld;
			ld = rotate_right((ld - m_bufSub[2*i]),  rd) ^ rd;
		}

		unsigned long	b = rd - m_bufSub[1];
		unsigned long	a = ld - m_bufSub[0];

		bufData[2*k]		= a;
		bufData[2*k + 1]	= b;
	}
}



unsigned long	rotate_left(unsigned long nData, unsigned long nCount)
{
	 return (nData << (nCount & 0x1F) | nData >> 0x20 - (nCount & 0x1F));
}

////////////////////////////////////////////////////////////////////////////////////////////////
unsigned long	rotate_right(unsigned long nData, unsigned long nCount)
{
	return (nData << (nCount & 0x1F) | nData >> 0x20 - (nCount & 0x1F));
}
main.cpp
Code:
//all the stuff.....
char buf[4000];
recv(sConnect,buf,sizeof(buf),0);
CRc5 dec;
dec.Rc5Decrypt(buf,sizeof(buf));
it's not working !!....
so please if am doing something wrong tell me thnx
Mr_PoP is offline  
Old 02/10/2011, 15:10   #2
 
King_Arthur's Avatar
 
elite*gold: 246
Join Date: Jan 2008
Posts: 1,712
Received Thanks: 896
Please stick to one thread: C++ RC5 Decrypt/Encrypt

#Closed
King_Arthur is offline  
Closed Thread


Similar Threads Similar Threads
C++ RC5 Decrypt/Encrypt
02/10/2011 - CO2 Private Server - 2 Replies
Greetings guys, i was working on my own server and am coding it in c++, i heared i must decrypt the msg from the client so i can check if the user is exist or not (geting server name,account id and password) for patch 5290 or more so i was wondering if someone can help me and correct what am doing wrong here is my code hopefully someone can help me RC5.h #ifndef RC5_H #define RC5_H
Encrypt/Decrypt
09/01/2010 - EO PServer Hosting - 9 Replies
Who can tell me how can i decrypt a password mage by the register page?:D
Encrypt/Decrypt Function
10/03/2009 - CO2 Programming - 12 Replies
I think I've found the wrapper for send() at 00536FDB but I cannot find any calls just before the actual winsock send that would encrypt data. Am I looking in the wrong place?
(Request) DeCrypt / Encrypt
05/04/2009 - RF Online - 6 Replies
Do you have any DeCrypt/Encrypt program what works for Item.edf in RFOph ? Thanks. :D
encrypt/decrypt guide .INI
12/01/2007 - Archlord - 4 Replies
I put this little guide together to make it more understandable and easier to read, this is in regards to the other guys post (menasculio) who posted the source code/compiled Put that file in the INI folder of archlord. start>run>CMD type in CD C:\Program Files\Codemasters\Archlord\ini once you have done that you can rename the .exe you downloaded to a shorter name, i named mine DEC.



All times are GMT +1. The time now is 13:20.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.