Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг > Шифрации серверов
Войти через OpenID

Шифрации серверов Здесь разбираемся с алгоритмами шифрации различных серверов

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
 
 
Опции темы Опции просмотра
Старый 19.09.2016, 05:20   #4
Местный
 
Регистрация: 04.11.2009
Адрес: Где-то в жопе европы
Сообщений: 316
Сказал Спасибо: 32
Имеет 42 спасибок в 39 сообщенях
wimax пока неопределено
По умолчанию

Трафик дишыфруеца с 3 пакета

Добавлено через 7 минут
Код:
public class Crypt implements ICrypt
{
	private final L2GameClient _client;
	private final byte[] _inKey = new byte[16];
	private final byte[] _outKey = new byte[16];
	private boolean _isEnabled;
	
	public Crypt(L2GameClient client)
	{
		_client = client;
	}
	
	public void setKey(byte[] key)
	{
		System.arraycopy(key, 0, _inKey, 0, 16);
		System.arraycopy(key, 0, _outKey, 0, 16);
	}
	
	@Override
	public void encrypt(ByteBuf buf)
	{
		if (!_isEnabled)
		{
			_isEnabled = true;
			onPacketSent(buf);
			return;
		}
		
		onPacketSent(buf);
		
		int a = 0;
		while (buf.isReadable())
		{
			final int b = buf.readByte() & 0xFF;
			a = b ^ _outKey[(buf.readerIndex() - 1) & 15] ^ a;
			buf.setByte(buf.readerIndex() - 1, a);
		}
		
		shiftKey(_outKey, buf.writerIndex());
	}
	
	@Override
	public void decrypt(ByteBuf buf)
	{
		if (!_isEnabled)
		{
			onPacketReceive(buf);
			return;
		}
		
		int a = 0;
		while (buf.isReadable())
		{
			final int b = buf.readByte() & 0xFF;
			buf.setByte(buf.readerIndex() - 1, b ^ _inKey[(buf.readerIndex() - 1) & 15] ^ a);
			a = b;
		}
		
		shiftKey(_inKey, buf.writerIndex());
		
		onPacketReceive(buf);
	}
	
	private void onPacketSent(ByteBuf buf)
	{
		byte[] data = new byte[buf.writerIndex()];
		buf.getBytes(0, data);
		EventDispatcher.getInstance().notifyEvent(new OnPacketSent(_client, data));
	}
	
	private void onPacketReceive(ByteBuf buf)
	{
		byte[] data = new byte[buf.writerIndex()];
		buf.getBytes(0, data);
		EventDispatcher.getInstance().notifyEvent(new OnPacketReceived(_client, data));
	}
	
	private void shiftKey(byte[] key, int size)
	{
		int old = key[8] & 0xff;
		old |= (key[9] << 8) & 0xff00;
		old |= (key[10] << 0x10) & 0xff0000;
		old |= (key[11] << 0x18) & 0xff000000;
		
		old += size;
		
		key[8] = (byte) (old & 0xff);
		key[9] = (byte) ((old >> 0x08) & 0xff);
		key[10] = (byte) ((old >> 0x10) & 0xff);
		key[11] = (byte) ((old >> 0x18) & 0xff);
	}
}

Последний раз редактировалось wimax, 19.09.2016 в 05:20. Причина: Добавлено сообщение
wimax вне форума   Ответить с цитированием
За это сообщение wimax нажился спасибкой от:
 

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг > Шифрации серверов



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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 21:45.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!