2017-08-08 13:53:47 +02:00
|
|
|
#include "LobbyPacketContainer.h"
|
2018-07-03 00:01:26 +02:00
|
|
|
#include <Network/CommonNetwork.h>
|
2018-03-06 22:22:19 +01:00
|
|
|
#include <Network/GamePacketNew.h>
|
|
|
|
#include <Crypt/blowfish.h>
|
2018-07-03 00:01:26 +02:00
|
|
|
#include <Common.h>
|
2017-08-08 13:53:47 +02:00
|
|
|
|
2018-07-03 00:01:26 +02:00
|
|
|
using namespace Core::Common;
|
|
|
|
using namespace Core::Network::Packets;
|
|
|
|
|
|
|
|
Core::Network::Packets::LobbyPacketContainer::LobbyPacketContainer( uint8_t* encKey )
|
|
|
|
{
|
|
|
|
memset( &m_header, 0, sizeof( Core::Network::Packets::FFXIVARR_PACKET_HEADER ) );
|
|
|
|
m_header.size = sizeof( Core::Network::Packets::FFXIVARR_PACKET_HEADER );
|
|
|
|
|
|
|
|
m_encKey = encKey;
|
|
|
|
|
|
|
|
memset( m_dataBuf, 0, 0x1570 );
|
|
|
|
}
|
|
|
|
|
|
|
|
Core::Network::Packets::LobbyPacketContainer::~LobbyPacketContainer()
|
|
|
|
{
|
|
|
|
m_entryList.clear();
|
|
|
|
}
|
|
|
|
|
|
|
|
void Core::Network::Packets::LobbyPacketContainer::addPacket( FFXIVPacketBasePtr pEntry )
|
|
|
|
{
|
|
|
|
memcpy( m_dataBuf + m_header.size, &pEntry->getData()[0], pEntry->getSize() );
|
|
|
|
|
|
|
|
// encryption key is set, we want to encrypt this packet
|
|
|
|
if( m_encKey != nullptr )
|
|
|
|
{
|
|
|
|
BlowFish blowfish;
|
|
|
|
blowfish.initialize( m_encKey, 0x10 );
|
|
|
|
blowfish.Encode( m_dataBuf + m_header.size + 0x10, m_dataBuf + m_header.size + 0x10, pEntry->getSize() - 0x10 );
|
|
|
|
}
|
|
|
|
|
|
|
|
m_header.size += pEntry->getSize();
|
|
|
|
m_header.count++;
|
|
|
|
}
|
|
|
|
|
|
|
|
uint16_t Core::Network::Packets::LobbyPacketContainer::getSize() const
|
|
|
|
{
|
|
|
|
return m_header.size;
|
|
|
|
}
|
|
|
|
|
|
|
|
uint8_t* Core::Network::Packets::LobbyPacketContainer::getRawData( bool addstuff )
|
|
|
|
{
|
|
|
|
if( addstuff )
|
|
|
|
{
|
|
|
|
m_header.unknown_0 = 0xff41a05252;
|
|
|
|
m_header.timestamp = Core::Util::getTimeMs();
|
2017-08-08 13:53:47 +02:00
|
|
|
}
|
2018-07-03 00:01:26 +02:00
|
|
|
memcpy( m_dataBuf, &m_header, sizeof( Core::Network::Packets::FFXIVARR_PACKET_HEADER ) );
|
|
|
|
return m_dataBuf;
|
2017-08-08 13:53:47 +02:00
|
|
|
}
|