Мне вот интересно. Если делать отправку только по жёлтому проводу, а клиент игры будет получать только результаты по синему, все ли в порядке будет с клиентом? Не кританёт от того что он получил пакет инвентаря без запроса? Мне кажется что ничего не случится, клиент это же по сути марионетка а сервер кукловод.
Brave, пардон, у меня для таких целей как раз почти написан асинхронный сокс прокси, но я отказался от этой затеи именно из за шифрации, неужели расшифровать трафик на столько легко?
Brave, пардон, у меня для таких целей как раз почти написан асинхронный сокс прокси, но я отказался от этой затеи именно из за шифрации, неужели расшифровать трафик на столько легко?
Шифрацией как раз сейчас сам занимаюсь. Только для AION. BlowFish,XOR,RSA являются открытыми алгоритмами шифрации. Примеров масса. Сейчас систематизирую.
Brave, с шифрацией особо не разбирался но на сколько я знаю расшифровать RSA не зная приватного ключа практически нереально, что в принципе не особо важно ибо нужен только при авторизации. Что насчет фришек, как обстоят дела с ними? И самый главный вопрос, какие ограничения накладывает клиент, каким образом он определяет как зашифрован пакет?
Смотри исходники Java серверов. Для тестов и ковыряния, я ставлю себе какой нибудь free сервер.
Цитата:
Сообщение от Sinn3r
Самый главный вопрос, какие ограничения накладывает клиент, каким образом он определяет как зашифрован пакет?
Это определяется версией протокола. О каких либо надстройках над протоколом клиента я не знаю. Может кто подскажет? Я что то не встечал защит, которые бы дополнительно шифровали сетевой поток игры. То есть защищали его от перехвата на прокси. Имеются только некоторые доработки пакетов.
Последний раз редактировалось Brave, 20.02.2013 в 23:05.
Все нормальные люди уже отказались от шифроебства. Мельчайшие изменения шифрования, и знание
XOR-а тут не поможет
Все нормальные люди хукают?
А как же тогда прятаться от руткита Frost? Который молча шуршит по папкам , памяти,ищет ботов, следит за игроком используя веб камеру, и палит, действительно ли человек сидит за компьютером
О каких либо надстройках над протоколом клиента я не знаю. Может кто подскажет? Я что то не встечал защит, которые бы дополнительно шифровали сетевой поток игры. То есть защищали его от перехвата на прокси. Имеются только некоторые доработки пакетов.
забавно это читать...
допустим фрост заменяет стандартные функцию клиента сендпакет/реквпакет накладывая на трафик доп шифрацию.
так что твой прокси тебе поможет только с "локальным" сервером =)
забавно это читать...
допустим фрост заменяет стандартные функцию клиента сендпакет/реквпакет накладывая на трафик доп шифрацию.
так что твой прокси тебе поможет только с "локальным" сервером =)
Вот я нуб. Точно. Это же тоже возможно. Тогда согласен с тем, что лучше хукать и прятатся от фроста.
Нашел у себя в захромах этот код можно использовать как пример) это к слову как расклеивать пакеты на сервере работает с линейкой прекрасно хоть и написан криво(писался давно)) показывает размер пакета и сам пакет(не дешефруя) можете посмотреть как текут пакеты на руофе ну и 1 - 2 пакет дальше будут шифрованы
как пример может кому пригодится:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Threading;
namespace L2_test
{
class Program
{
static void Main(string[] args)
{
////////////////////////////////////////////////////////////////////////////////////////////
Socket outsoc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
byte[] buf = new byte[1000];
int ibuf;
string port;
string ipa = "";
int iport = 0;
int temp;
NetworkStream nsout;
//////////////////////////////////////////////////////////////////////////////////////
Socket ssockclient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
ssockclient.Bind(new IPEndPoint(IPAddress.Any, 5555));
ssockclient.Listen(100);
Socket ss = ssockclient.Accept();
Console.WriteLine("Запущен 1 поток "+ss.RemoteEndPoint);
NetworkStream nsin = new NetworkStream(ss);
ibuf = nsin.Read(buf, 0, buf.Length);
Console.WriteLine("Принят первый пакет: 1 \n");
if (buf[0] == 5 && buf[1] == 1 && buf[2] == 0)
{
buf[0] = 5;
buf[1] = 0;
nsin.Write(buf, 0, 2);
Console.WriteLine("Отправлен пакет: 1 \n");
ibuf = nsin.Read(buf, 0, buf.Length);
Console.WriteLine("Принят пакет: 2 \n");
if (buf[3] == 1)
{
Console.WriteLine("строка содержит ип адресс \n");
ipa = Convert.ToString(buf[4]);
for (int v = 5; v < 8; v++)
{
ipa = ipa + "." + Convert.ToString(buf[v]);
}
if (buf[8] != 0)
{
port = Convert.ToString(buf[8] * 256 + buf[9]) ;
}
else
{
port = Convert.ToString(buf[9]);
}
Console.WriteLine(ipa);
Console.WriteLine(port);
iport = Convert.ToInt32(port);
}
buf[1] = 0;
nsin.Write(buf, 0, 10);
Console.WriteLine("Отправлен пакет: 2 \n");
}
////////////////////////////////////
outsoc.Connect(new DnsEndPoint(ipa, iport));
nsout = new NetworkStream(outsoc);
while (true)
{
while (nsin.DataAvailable)
{
Console.Write("\n Пакет принят от клиента\n");
nsin.Read(buf, 0, 2);
temp = (buf[0] + buf[1] * 256)-2;
Console.WriteLine(temp);
nsout.Write(buf, 0, 2);
ibuf = nsin.Read(buf, 0, temp);
for (int v = 0; v < ibuf; v++)
{
Console.Write(buf[v] + " ");
}
Console.Write("\n");
nsout.Write(buf, 0, ibuf);
}
while (nsout.DataAvailable)
{
Console.Write("\n Пакет принят от сервера\n");
ibuf = nsout.Read(buf, 0, 2);
temp = (buf[0] + buf[1] * 256) - 2;
Console.WriteLine(temp);
nsin.Write(buf, 0, 2);
ibuf = nsout.Read(buf, 0, temp);
for (int v = 0; v < ibuf; v++)
{
Console.Write(buf[v] + " ");
}
nsin.Write(buf, 0, ibuf);
}
}
// проксифицировать через проксифиер или тп, протокол сокс 5)
Последний раз редактировалось Deadly, 23.02.2013 в 00:45.