Anitalink.com  
Регистр. Справка Юзеры Календарь Поиск Свежее
Вернуться   Anitalink.com > International English forum > Other games > On-line games
Перезагрузить страницу MxO emulator (Emulator of The matrix online server)
On-line games Discussing on-line games

Ответ
Опции темы Опции просмотра
MxO emulator (Emulator of The matrix online server)
Непрочитано
  (#1)
@[email protected] is Offline
Green eyed cat
5 lvl
@n!t@ Живёт и здравствует@n!t@ Живёт и здравствует
 
Аватар для @n!t@
 
Сообщения: 2,079
Сказал(а) спасибо: 106
Поблагодарили 131 раз(а) в 120 сообщениях
Регистрация: 17.10.2007
Адрес: Shlisselburg
Возраст: 31
Вес репутации: 10
 Отправить сообщение для  @n!t@ с помощью ICQ Отправить сообщение для @n!t@ с помощью MSN Отправить сообщение для @n!t@ с помощью Skype™ 
По умолчанию MxO emulator (Emulator of The matrix online server) - 08.05.2009, 15:51

Here will be news about searching or writing of The matrix online emulator.




Life is unfair from time to time... But love gives a sense to this injustice...
  
Ответить с цитированием
Непрочитано
  (#2)
@[email protected] is Offline
Green eyed cat
5 lvl
@n!t@ Живёт и здравствует@n!t@ Живёт и здравствует
 
Аватар для @n!t@
 
Сообщения: 2,079
Сказал(а) спасибо: 106
Поблагодарили 131 раз(а) в 120 сообщениях
Регистрация: 17.10.2007
Адрес: Shlisselburg
Возраст: 31
Вес репутации: 10
 Отправить сообщение для  @n!t@ с помощью ICQ Отправить сообщение для @n!t@ с помощью MSN Отправить сообщение для @n!t@ с помощью Skype™ 
По умолчанию 08.05.2009, 16:33

All news for this day:
I had 3 discussions: 1st at emupedia.com, which close now, second at russian forum gamedev.ru, 3rd at forum.ragezone.com.
Information finded:
It was developed by 2 projects mxoemu, 2nd was mxosim. Mxoemu didn't take to us their files, but Mxosim take us some things:
LoginServer: http://lozhki.net/games/mxo/LoginServer.rar
The Matrix Online beta 2: ftp://217.30.208.125/GameDemos/TheMa...er_v7.2016.zip
Part of server, which passworded and i try to get this password: http://stepload.de/uploads/ipSMqiiLP...No_/index.html

C++ codes:
LoginClient:

Код:
/* LoginClient.cpp
 *
 * Copyright (C) 2007 MxoSim
 *
 */

#include "Reality.h"

list_c LoginClients;

LoginClient::LoginClient()
{
	Port = 0;
}

LoginClient::LoginClient(string pIP,port_t pPort)
{
	IPaddr = pIP;
	Port = pPort;
}

void StripMultiLevelOmni(byte **data,unsigned int *sizeresult)
{
	MultiLevelPacketOmni_t *stuff;
	stuff = (MultiLevelPacketOmni_t *)*data;

	unsigned int skippo;

	skippo = 2 + stuff->sizefirstpacket + 2;
	*sizeresult = stuff->sizenextpacket;

	stuff = NULL;

	data = &data[skippo];	
}

void LoginClient::ProcessPacket(byte *data,size_t datasize,byte *result,int *l)
{
	unsigned short opcode = (data[0] << 16) + data[1];
	*l = 0;

	cout << "Parse: " << opcode << endl;

	if (opcode == 0x0001) // Handshake opcode
	{
		FirstLoginPacketClient_t *stuff;
		stuff = (FirstLoginPacketClient_t *)data;
		sessionkey = stuff->clientKey;

		FirstLoginPacketServer_t response;
		memset(&response,0,sizeof(FirstLoginPacketServer_t));
		response.opcode = 512;
		response.clientKey = stuff->clientKey;
		srand((unsigned)time(0)); 
		response.serverKey = (unsigned int)(rand()*5);
		response.unk1 = 512;
		response.unk2 = 512;

		*l = sizeof(FirstLoginPacketServer_t);
		memcpy(result,&response,*l);
	}
	else if (opcode == 0x0009)
	{
		if (data[4] == 3) //Halloween packet
		{
			SecondLoginPacketServer_t stuff;
			memset(&stuff,0,sizeof(SecondLoginPacketServer_t));

			stuff.header.packettype = 768; // 00 03
			stuff.header.sizefirstpacket = sizeof(stuff.header.ackchan) + sizeof(stuff.header.ackpacketnum);
			stuff.header.ackchan = 5376;
			stuff.header.sizenextpacket = sizeof(stuff.channel) + sizeof(stuff.packetnum) + sizeof(stuff.maxrandom1)
				+ sizeof(stuff.maxrandom2) + sizeof(stuff.pad1) + sizeof(stuff.pad2);
			stuff.channel = 2304;
			stuff.packetnum = 0;
			stuff.maxrandom1 = stuff.maxrandom2 = 32752;
			
			*l = sizeof(SecondLoginPacketServer_t);
			memcpy(result,&stuff,*l);
		}
	}
	else if (opcode == 0x0003) // Multi protocol level packet
	{
//		unsigned int resultsize;
//		StripMultiLevelOmni(&data,&resultsize);
//		ProcessPacket(data,resultsize,result,l);

		Username1PacketClient_t *stuff;
		stuff = (Username1PacketClient_t *)data;
		char *usernam2 = (char *)(data + sizeof(Username1PacketClient_t));
		username = string(usernam2);

		Username2PacketClient_t *garbage;
		garbage = (Username2PacketClient_t *)(data + sizeof(Username1PacketClient_t) + strlen(usernam2) +1);
		memcpy(passhash,garbage->hash,garbage->hashsize);

		ofstream filez;

		filez.open("Files.dat",ios::out | ios::binary);

		CryptoPP::SHA256 hash;		

		byte hashorz[CryptoPP::SHA256::DIGESTSIZE];
		std::string tobehashed = "testhash";

        hash.Update( (const byte *)tobehashed.c_str(), tobehashed.size() );
        hash.Final( hashorz );

		filez.write((const char *)hashorz,CryptoPP::SHA256::DIGESTSIZE);
		filez.close();

		filez.open("Files2.dat",ios::out | ios::binary);

		filez.write((const char *)passhash,32);
		filez.close();
	}

}

LoginClient *GetLoginClient(string pIP,port_t pPort)
{
	for (int i = 0; i < LoginClients.size();i++)
	{
		if (pPort != 0)
		{
			if (LoginClients[i]->IPaddr == pIP && LoginClients[i]->Port == pPort)
				return LoginClients[i];
		}
		else
		{
			if (LoginClients[i]->IPaddr == pIP)
				return LoginClients[i];
		}
	}
	
	return NULL;
}
Decryptor codes:
Код:
bool GameClient::Decrypt(char *pData, uint16 nLength,std::string &output)
{
    std::string vector(pData+1,16);
    TFDecrypt->Resynchronize((const byte *)vector.c_str());
    std::string input(pData+17,nLength-17);
    output.clear();
    CryptoPP::StringSource(input, true, new
CryptoPP::StreamTransformationFilter(*TFDecrypt, new
CryptoPP::StringSink(output)));
    //output now contains crc len time data
    std::string crc32 = std::string(output.c_str(),sizeof(uint32));
    uint16 length;
    memcpy(&length,output.c_str()+sizeof(uint32),sizeof(uint16));
 
    std::string computedcrc;
    CryptoPP::CRC32 hash;
    CryptoPP::StringSource(std::string(output.c_str()+sizeof(uint32),length+sizeof(uint32)+sizeof(uint16)),
true,new CryptoPP::HashFilter(hash,new
CryptoPP::StringSink(computedcrc)));
 
    if (memcmp(crc32.c_str(),computedcrc.c_str(),sizeof(uint32)))
        return false;
 
    output = std::string(output.c_str()+sizeof(uint32)+sizeof(uint16)+sizeof(uint32),length);
    return true;
}
Funktion 2 :

Код:
void GameClient::Send(std::string &contents)
{
    server_sequence++;
 
    if (server_sequence == 4096)
        server_sequence=0;
 
    OutgoingPacket packet(PlayerSetupState,client_sequence,server_sequence);
    packet.FromString(contents);
 
    std::string buffer = packet.ToString();
    uint16 lenght = (uint16)buffer.size();
    uint32 time = getTime();
    std::string input = std::string((const char*)&lenght,sizeof(lenght))
+ std::string((const char*)&time,sizeof(time)) + buffer;
//len+time+data
    std::string crc32;
    std::string output;
 
    CryptoPP::CRC32 hash;
    CryptoPP::StringSource(input, true,new CryptoPP::HashFilter(hash,new
CryptoPP::StringSink(crc32))); //output2 now has crc
    output = crc32 + input; //add the rest onto the crc,output now
contains crc len time data
 
    byte vector[16];
 
    for (uint32 i=0;i < sizeof(vector); i++)
    {
        vector[i] = rand()%255;
    }
 
    TFEncrypt->Resynchronize(vector);
    input.clear();
    CryptoPP::StringSource(output, true, new
CryptoPP::StreamTransformationFilter(*TFEncrypt, new
CryptoPP::StringSink(input))); // output now has encrypted shit
    input = char(0x01) + std::string((const char*)vector,sizeof(vector))
+ input; // input has whole packet now
 
    int clientlen=sizeof(_address);
    sendto(*_sock, input.data(), (int)input.size(), 0, (struct
sockaddr*)&_address,clientlen);
}
Status of projects:

Project: Cancelled.
http://sourceforge.net/projects/mxoemu/ Login Server
100%
Margin Server
80%
Game Server
10%http://www.mxosim.com/ Was looking for decompilers and then they found them. Now they are working on finishing the project.




Life is unfair from time to time... But love gives a sense to this injustice...
  
Ответить с цитированием
Непрочитано
  (#3)
@[email protected] is Offline
Green eyed cat
5 lvl
@n!t@ Живёт и здравствует@n!t@ Живёт и здравствует
 
Аватар для @n!t@
 
Сообщения: 2,079
Сказал(а) спасибо: 106
Поблагодарили 131 раз(а) в 120 сообщениях
Регистрация: 17.10.2007
Адрес: Shlisselburg
Возраст: 31
Вес репутации: 10
 Отправить сообщение для  @n!t@ с помощью ICQ Отправить сообщение для @n!t@ с помощью MSN Отправить сообщение для @n!t@ с помощью Skype™ 
По умолчанию 04.10.2009, 15:32

MxoEmu is not dead! All info here: http://mxoemu.info




Life is unfair from time to time... But love gives a sense to this injustice...
  
Ответить с цитированием
Ответ
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Вкл.
Быстрый переход