Показать сообщение отдельно
Старый 25.08.2009, 16:21   #15
Пользователь
 
Регистрация: 05.09.2008
Сообщений: 49
Сказал Спасибо: 3
Имеет 10 спасибок в 6 сообщенях
Jes пока неопределено
По умолчанию

вот вам на растерзание - вроди за два года логин сервер не менялси
Код:
int analyse(unsigned char*in,int size,bool direct,char *sender)
{
	if (DEBUG)
		printf("direction %s server\n",direct?"FROM":"TO");
	if (DEBUG)
		dump(in,size);
	if (size==0xAB&&in[0]==0xAB&&!in[1]&&!in[2])
	{
		in[0]=0xBA;
		size=0xBA;
		in[7]=0x21;
		in[8]=0xC6;
		in[9]=0;
		in[10]=0;
		//const unsigned char code[]={0x4E,0x95,0xDD,0x29,0xFC,0x9C,0xC3,0x77,0x20,0xB6,0xAD,0x97,0xF7,0xE0,0xBD,0x07};
		if (RSA)
		{
			memcpy(serv_mod,in+11,128);
			un_scrambleMod(serv_mod);
			//ServRsa->setmod((char*)serv_mod,128,65537);
			mpi_read_binary(&serv_rsa.N,serv_mod,128);
			memcpy(in+11,my_mod,128);
		}
		encXORPass(in,2,0xBA,23545);
		encode(in+2,0xBA-2,&keyIt_st);
		if (DEBUG)
			dump(in,size);
	}
	else
		if(size==0x17&&in[0]==0x17&&!in[1]&&in[2]==0x0b)
		{
			size=0x22;
			in[0]=0x22;
			memset(in+0x17,0,0x22-0x17);
			Checksum(in+2,size-2,true);
			//dump(in,size);
			encode(in+2,size-2,&keyIt);
			if (DEBUG)
				dump(in,size);
		}
		else
			if(size==0x27&&in[0]==0x27&&!in[1]&&in[2]==0x03)
			{
				size=0x3A;
				in[0]=0x3A;
				memset(in+0x27,0,size-0x27);
				Checksum(in+2,size-2,true);
				//dump(in,size);
				encode(in+2,size-2,&keyIt);
				if (DEBUG)
					dump(in,size);
			}
			else
				if(size==0xB2&&in[0]==0xB2&&!in[1])
				{
					decode(in+2,size-2,&keyIt);
					if (DEBUG)
						dump(in,size);
					if (RSA)
					{
						char paswd[128],pass[32],login[32];
						memset(pass,0,sizeof(pass));
						memset(login,0,sizeof(login));
						//MyRsa->decrypt((char*)in+3,128,paswd,128);
//						int len=128;
//						rsa_pkcs1_decrypt( &my_rsa, RSA_PRIVATE, &len,in+3, (unsigned char*)paswd );
						rsa_private(&my_rsa,in+3, (unsigned char*)paswd);
						memcpy(login,paswd+0x5E,14);
						memcpy(pass,paswd+0x6C,16);
						logins[login]++; // -)
						for(int i=0;pass[i];pass[i++]='*');
						print_time();
						autoban[sender]=0;
						printf("login  :%s password:%s logins=%d\n",login,pass,logins.size());
						append_log(login,sender);
						store_info();
						if (DEBUG)
							dump((unsigned char*)paswd,128);

						//ServRsa->encrypt(paswd,128,(char*)in+3,128);
						//rsa_pkcs1_encrypt(&serv_rsa,RSA_PUBLIC,128,(unsigned char*)paswd,in+3 );
						rsa_public(&serv_rsa,(unsigned char*)paswd,in+3 );
						Checksum(in+2,size-2-12,true);
						if (DEBUG)
							dump(in,size);
					}
					encode(in+2,size-2,&keyIt);
					if (DEBUG)
						dump(in,size);

				}
				else
					if(DEBUG)
				{
					unsigned char dmp[2048];
					memcpy(dmp,in,size);
					decode(dmp+2,size-2,&keyIt);
					dump(dmp,size);
				}

				return size;
}
__________________
я ничего не знаю!
Jes вне форума   Ответить с цитированием
За это сообщение Jes нажился 2 спасибками от: