Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 11.10.2011, 20:18   #1
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 37
Сказал Спасибо: 13
Имеет 1 спасибку в 1 сообщении
glukmaker пока неопределено
По умолчанию Помогите с протоколом la2

Не могу разобраться в протоколе линейки.
Нашел описание. http://www.mmocom.ru/showthread.php?t=1760
Экспериментирую, но нифига не получается...

вобщем читаю:
Цитата:
Порядок авторизации на логин сервере

Во первых сразу замечу что существует две ревизии протокола использующиеся на данный момент(может и больше но мне о них не известно) - c621 и 785a.
Отличие их в том что в c621 используется дополнительное шифрование и авторизация GameGuard. Пакеты Init и RequestAuthLogin также отличаются.
Определить версию можно по размеру пакета Init, для ревизии 785a он составляет 11 байт, для c621 – 170.

1. Сразу после установки соединения сервер отправляет клиенту пакет Init
2. В ответ на него клиент отправляет пакет RequestGGAuth(в ревизии протокола 785a этот пакет не высылается)
3. Сервер отвечает на него пакетом GGAuth (в ревизии протокола 785a этот пакет не высылается)
4. Если сервер ответил, что авторизация прошла успешно, то клиент высылает пакет RequestAuthLogin, содержащий логин и пароль.
5. Проверка логина и пароля, в случае неудачи, сервер высылает пакет LoginFail содержащий причину неудачи, инатче высылается пакет LoginOk, содержащий session key #1.
6. Далее клиент запрашивает список серверов пакетом RequestServerList
7. В ответ на этот пакет сервер высылает клиенту ServerList, в нем содержиться список серверов и их IP адреса с номерами портов.
8. После выбора game-сервера, и нажатия на ОК, клиент отсылает пакет RequestServerLogin
9. Сервер авторизации выполняет проверки на максимальное количество игроков, доступность сервера и т.п., если все проверки пройдены, то высылает пакет PlayOk,содержащий session key #2, этот ключь генерируется из текущего времени системы в мс, номера сокета и еще всякой лабуды. После этого клиент отключается от логин сервера и подключается к гейм серверу.
Подключаюсь к серверу авторизации. Сервер мне выдает 11 байт:

Код:
0B 00 00 BC 19 4C 77 5A 78 00 00
в которых видно, что ревизия 785a
т.е. 2 и 3 пункты нам не нужны.
далее я формирую и отправляю пакет RequestAuthLogin с реальными данными.
Но сервер меня дисконектит...

Согласно вот этого (взято с вышеуказанного сайта):
Цитата:
RequestAuthLogin
Назначение: запрашивает авторизацию на логин сервере
Формат для ревизии 0x785a:

Код:

00
XX XX XX XX 00 // строка содержащая логин. Имеет длинну 14 байт и храниться в формате ASCII а не UNICODE !!!
XX XX XX XX 00 // строка содержащая пароль. Имеет длинну 16 байт и храниться в формате ASCII а не UNICODE !!!
08 // маркер конца секции логин/пароль
00 00 00 00 // не используется
00 00 00 00 // не используется
Делаю так :
Код:
...
type TRequestAuthLogin = packed record  
   s1:byte;
   login:packed array[1..14] of char;
   pass:packed array[1..16] of char;
   s2:byte;
   s3:cardinal;
   s4:cardinal;
   end;
...
var
  login:string='реальный логин';
  password:string='реальный пароль';

...
procedure ...   // процедура формирования  и отправки пакета RequestAuthLogin
var
 str:TRequestAuthLogin;
 i: integer;
begin
 str.s1:=0;
 str.s2:=8;
 str.s3:=0;
 str.s4:=0;
 for i:=1 to 14 do
  if i>length(login)
    then str.login[i]:=chr(0)
    else str.login[i]:=login[i];
 for i:=1 to 16 do
  if i>length(password)
    then str.pass[i]:=chr(0)
    else str.pass[i]:=password[i];
   .....  // Здесь отправляю сформированный пакет...
end;
...
Когда смотрю снифером, что отправляется на сервер при авторизации стандартным клиентом, то все равно не вижу там ничего похожего на свой логин и пароль в ASCII.

Что я неправильно делаю или что я неправильно понял в описании протокола?

Добавлено через 46 минут
Поискал еще информацию.
Понял что забыл передавать размер пакета вначале, ну и как оказалось нужно все шифровать в Blowfish

У кого есть исходники Blowfish на Delphi ?

Последний раз редактировалось glukmaker, 11.10.2011 в 20:18. Причина: Добавлено сообщение
glukmaker вне форума   Ответить с цитированием
Старый 11.10.2011, 21:32   #2
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Цитата:
Сообщение от glukmaker Посмотреть сообщение
У кого есть исходники Blowfish на Delphi ?
воспользуйся поиском, на этом форуме уже выкладывались

Добавлено через 9 минут
хм, сам найти не смог (вложения в найденых сообщениях уже затерялись) так что вот:
http://l2ph.coderx.ru/wsvn/filedetai...as&rev=25&sc=1
http://l2ph.coderx.ru/wsvn/filedetai...nc&rev=25&sc=1
__________________
Я здесь практически не появляюсь!, Skype - ikskor

Последний раз редактировалось xkor, 11.10.2011 в 21:32. Причина: Добавлено сообщение
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился 2 спасибками от:
Старый 12.10.2011, 12:19   #3
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 37
Сказал Спасибо: 13
Имеет 1 спасибку в 1 сообщении
glukmaker пока неопределено
По умолчанию

За ссылки - спасибо.
Но все равно пока я ничего не добился...

Делал все так:
В модуле Blowfish исправил:
Код:
...
L2BlowFish = class
...
далее делаю так:
Код:
type TRequestAuthLogin = packed record
   length:word;
   case byte of
   0:(
      s1:byte;
      login:packed array[1..14] of char;
      pass:packed array[1..16] of char;
      s2:byte;
      s3:cardinal;
      s4:cardinal;
      checksum:cardinal;
      s5:cardinal;
      );
   1: (
      buf:packed array[1..48] of byte; // для удобства криптования
       );
   2: (
      fch:packed array[1..12] of cardinal;  // для удобства вычисления сhecksum
       )
   end;
...

var
...
  login:string='testlogin';
  password:string='testpass';

const
   Token:string=#$5F#$3B#$35#$2E#$5D#$39#$34#$2D#$33#$31#$3D#$3D#$2D#$25#$78#$54#$21#$5E#$5B#$24#$00;

...



function CheckSum(data:array of cardinal):cardinal;
var
 i:integer;
begin
  result:=0;
  for i:=low(data) to high(data) do Result:=result xor data[i];
end;



procedure TForm1.Button3Click(Sender: TObject);
var
 str:TRequestAuthLogin;
 var i: integer;
begin
 str.length:=SIZEOF(str);
 str.s1:=0;
 str.s2:=8;
 str.s3:=0;
 str.s4:=0;
 for i:=1 to 14 do
  if i>length(login)
    then str.login[i]:=chr(0)
    else str.login[i]:=login[i];
 for i:=1 to 16 do
  if i>length(password)
    then str.pass[i]:=chr(0)
    else str.pass[i]:=password[i];
 str.checksum:=0;
 str.s5:=0;
 showdata(str, sizeof(str));
 str.checksum:=CheckSum(str.fch);
 showdata(str, sizeof(str));
  
  With L2BlowFish.Create do
   try
     Init(Token,length(Token));
     bfEncode(str.buf,length(str.buf));
   finally
     free;
   end;

  showdata(str, sizeof(str));  // отображение пакета в мемо

 ClientSocket1.Socket.SendBuf(str,sizeof(str));
end;
Получается:
Код:
Сформированный пакет:
32 00 00 74 65 73 74 6C 6F 67 69 6E 00 00 00 00 
00 74 65 73 74 70 61 73 73 00 00 00 00 00 00 00 
00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 

Добавлена checksum:
32 00 00 74 65 73 74 6C 6F 67 69 6E 00 00 00 00 
00 74 65 73 74 70 61 73 73 00 00 00 00 00 00 00 
00 08 00 00 00 00 00 00 00 00 19 76 0D 18 00 00 
00 00 

Зашифровано BlowFish:
32 00 E1 AC FE 48 16 7F 8A 9B 31 06 F1 1B 6A 2E 
82 05 7A DE 27 3E 85 7D E9 68 2B 22 2D EF 7B 76 
1F 2F 41 C5 1A 43 EE E2 02 77 52 DF 15 33 46 C5 
6B 5C
И все равно сервер ничего мне не присылая рвет соединение.

Вот что показывает снифер (тут правда с IP и ТСP-заголовками):
Код:
Вот, что получается, если работать с клиентом, вводя те же логин и пароль:

Packet ID: 13    TTL: 119
Packet size: 51    bytes type: TCP
Source IP      :    195.42.69.24: 2106
Destination IP :      10.11.3.11: 3257
------------------------------ Packet dump -----------------------------------
000000 45 00 00 33 77 30 00 00 | 77 06 B7 3C C3 2A 45 18     E..3w0..w..<.*E.
000010 0A 0B 03 0B 08 3A 0C B9 | DF C4 C6 17 5B 6E 00 0B     .....:......[n..
000020 50 18 FD 20 83 0B 00 00 | 0B 00 00 32 13 67 6D 5A     P.. .......2.gmZ
000030 78 00 00                                              x..


==============================================================================
Packet ID: 14    TTL: 128
Packet size: 90    bytes type: TCP
Source IP      :      10.11.3.11: 3257
Destination IP :    195.42.69.24: 2106
------------------------------ Packet dump -----------------------------------
000000 45 00 00 5A 3D 34 40 00 | 80 06 A8 11 0A 0B 03 0B     E..Z=4@.........
000010 C3 2A 45 18 0C B9 08 3A | 5B 6E 00 0B DF C4 C6 22     .*E....:[n....."
000020 50 18 FF F4 4F 78 00 00 | 32 00 C0 C8 F0 18 F0 10     P...Ox..2.......
000030 1E 9C 21 DD 8D 8D 64 24 | 8B 52 66 20 26 8A DE BF     .!...d$.Rf &...
000040 83 96 43 C6 34 40 6D AE | 0A 76 41 61 6F 5C 4B BD     ..C.4@m..vAao\K.
000050 6F A5 C2 AA 4D DA FE 17 | 4A 27                       o...M...J'

==================================================================================

А это получается, если я вручную формирую и отправляю:

Packet ID: 5     TTL: 119
Packet size: 51    bytes type: TCP
Source IP      :    195.42.69.24: 2106
Destination IP :      10.11.3.11: 3263
------------------------------ Packet dump -----------------------------------
000000 45 00 00 33 25 9C 00 00 | 77 06 08 D1 C3 2A 45 18     E..3%...w....*E.
000010 0A 0B 03 0B 08 3A 0C BF | 31 27 7F EA 49 7F CC 06     .....:..1'.I..
000020 50 18 FD 20 1B BF 00 00 | 0B 00 00 C7 0F D7 12 5A     P.. ..........Z
000030 78 00 00                                              x..


==============================================================================
Packet ID: 6     TTL: 128
Packet size: 40    bytes type: TCP
Source IP      :      10.11.3.11: 3263
Destination IP :    195.42.69.24: 2106
------------------------------ Packet dump -----------------------------------
000000 45 00 00 28 3D 99 40 00 | 80 06 A7 DE 0A 0B 03 0B     E..(=.@.........
000010 C3 2A 45 18 0C BF 08 3A | 49 7F CC 06 31 27 7F F5     .*E....:I..1'.
000020 50 10 FF F4 BE EB 00 00                               P.......


==============================================================================
Packet ID: 7     TTL: 128
Packet size: 90    bytes type: TCP
Source IP      :      10.11.3.11: 3263
Destination IP :    195.42.69.24: 2106
------------------------------ Packet dump -----------------------------------
000000 45 00 00 5A 3D 9A 40 00 | 80 06 A7 AB 0A 0B 03 0B     E..Z=.@.........
000010 C3 2A 45 18 0C BF 08 3A | 49 7F CC 06 31 27 7F F5     .*E....:I..1'.
000020 50 18 FF F4 90 FA 00 00 | 32 00 E1 AC FE 48 16 7F     P.......2....H.
000030 8A 9B 31 06 F1 1B 6A 2E | 82 05 7A DE 27 3E 85 7D     ..1..j...z.'>.}
000040 E9 68 2B 22 2D EF 7B 76 | 1F 2F 41 C5 1A 43 EE E2     .h+"-.{v/A.C..
000050 02 77 52 DF 15 33 46 C5 | 6B 5C                       .wR..3F.k\
Как видно, пакеты от меня и от клиента отличаются.
Похоже, я снова делаю что-то неправильно...
так как впервые я заинтересовался протоколом ла2 (со вчерашнего дня) , то не знаю даже в чем проблема.
Помогите, кто может...

Добавлено через 9 минут
Вобщем скорее всего тут одно из двух:
1. Я неправильно криптую пакет.
2. Я неправильно вычисляю контрольную сумму.

Насчет контрольной суммы, делаю так, как прочитал на одном из форумов:


Цитата:
До этапа шифрования в исходящие пакеты добавляется чексумма:
Из данных поочерёдно отделяются 32-битные слова. Первое XOR'ится со вторым. Результат этой операции XOR'ится со следующим словом и так далее.

Последний раз редактировалось glukmaker, 12.10.2011 в 12:19. Причина: Добавлено сообщение
glukmaker вне форума   Ответить с цитированием
Старый 12.10.2011, 15:31   #4
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

glukmaker, ты бы пакет от клиента дешифровать попробовал, зачем на сервер слать не разобравшись правильно ли шифруешь?
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился спасибкой от:
Старый 12.10.2011, 17:30   #5
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

я тоже свое 5 копеек хочу внести

защиты на сервере и в клиенте точно нет? если есть, то помимо пакетов может слаться на сервер информация о железе.
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Старый 13.10.2011, 18:23   #6
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 37
Сказал Спасибо: 13
Имеет 1 спасибку в 1 сообщении
glukmaker пока неопределено
По умолчанию

Цитата:
Сообщение от xkor Посмотреть сообщение
glukmaker, ты бы пакет от клиента дешифровать попробовал, зачем на сервер слать не разобравшись правильно ли шифруешь?
Уже пробовал. Не могу расшифровать... Похоже что токен на сервере не "стандартный", и я его не знаю.

сервер c4 http://la2.draconic.ru

пробовал узнать токен с помощью EngExt_ME.exe - получаю Unknown ENGINE.DLL format.

Можно было бы спросить у местных ботоводов, но навряд-ли кто-то признается в том, что он ботами пользуется...

А у меня вобще-то конечная цель - получить доступ к альянсовому чату.

Добавлено через 1 час 13 минут
Все. Проблема была в токене.
Скачал Walker Patcher, правда он мне аж 5 токенов выдал.
Но методом расшифровки пакета, посылаемого клиентом я нашел из них нужный.

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




================================================== =======================================

Добавлено через 22 часа 21 минуту
Проблемы с сервером авторизации успешно преодолены.
Теперь я могу авторизоваться и получать SessionKey2

Теперь вторая часть (работа с гейм-сервером):

Согласно найденному в инете:
Цитата:
После установки соединения, клиент высылает пакет ProtocolVersion, содержащий версию протокола.
Но, в одном источнике описание такое:
Код:
00
XX XX XX XX		// Версия протокола
В другом такое:
Код:
ProtocolVersion

Формат:
07 01           // Длина
00              // Тип
XX XX XX XX     // ProtocolVersion
[далее идет массив-константа, который хз от чего зависит, у меня он такой:]
09 07 54 56 03 09 0B 01 07 02 54 54 56 07 00 02
55 56 00 51 00 53 57 04 07 55 08 54 01 07 01 53
00 56 55 56 01 06 05 04 51 03 08 51 08 51 56 04
54 06 55 08 02 09 51 56 01 53 06 55 04 53 00 56
56 53 01 09 02 09 01 51 54 51 09 55 56 09 03 04
07 05 55 04 06 55 04 06 09 04 51 01 08 08 06 05
52 06 04 01 07 54 03 06 52 55 06 55 55 51 01 02
04 54 03 55 54 01 57 51 55 05 52 05 54 07 51 51
55 07 02 53 53 00 52 05 52 07 01 54 00 03 05 05
08 06 05 05 06 03 00 0D 08 01 07 09 03 51 03 07
53 09 51 06 07 54 0A 50 56 02 52 04 05 55 51 02
53 00 08 54 04 52 56 06 02 09 00 08 03 53 56 01
05 00 55 06 08 56 04 0D 06 07 52 06 07 04 0A 06
01 04 54 04 00 05 02 04 54 00 09 52 53 05 04 01
04 05 05 01 52 51 52 0D 06 51 08 09 54 53 00 0D
01 02 03 54 53 01 05 03 08 56 54 07 02 54 0B 06
что на самом деле правильно?
И что подразумевается под ProtocolVersion? Значение, которое мы получили в пакете Init от логин-сервера? Или что-то другое?

Последний раз редактировалось glukmaker, 13.10.2011 в 18:24. Причина: Добавлено сообщение
glukmaker вне форума   Ответить с цитированием
Старый 13.10.2011, 22:40   #7
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

я так понимаю это исходящий пакет?
попробуй вытащить планку памяти, или добавь жесткий диск, или отключить сидиром, а лучше все вместе и посмотри на эту константу. я думаю она изменится
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Старый 13.10.2011, 22:49   #8
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

Цитата:
что на самом деле правильно?
пх попробуй подцепить к клиенту. и смотри что нужно слать.

зы. опять же. в случае если нет дополнительный криптовки траффика.
зы2. за пх могут посадить в бан.
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
Старый 13.10.2011, 23:33   #9
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 37
Сказал Спасибо: 13
Имеет 1 спасибку в 1 сообщении
glukmaker пока неопределено
По умолчанию

Проснифал, что клиент отправляет:
Код:
==============================================================================
Packet ID: 32    TTL: 128
Packet size: 303   bytes type: TCP
Source IP      :  192.168.128.10: 3098
Destination IP :    195.42.69.24: 7777
------------------------------ Packet dump -----------------------------------
000000 45 00 01 2F BC 8A 40 00 | 80 06 F4 48 C0 A8 80 0A     E../..@....H....
000010 C3 2A 45 18 0C 1A 1E 61 | 33 DA C5 3A 6E 52 01 CE     .*E..a3..:nR..
000020 50 18 FF FF C1 B4 00 00 | 07 01 00 90 02 00 00 09     P...............
000030 07 54 56 03 09 0B 01 07 | 02 54 54 56 07 00 02 55     .TV......TTV...U
000040 56 00 51 00 53 57 04 07 | 55 08 54 01 07 01 53 00     V.Q.SW..U.T...S.
000050 56 55 56 01 06 05 04 51 | 03 08 51 08 51 56 04 54     VUV....Q..Q.QV.T
000060 06 55 08 02 09 51 56 01 | 53 06 55 04 53 00 56 56     .U...QV.S.U.S.VV
000070 53 01 09 02 09 01 51 54 | 51 09 55 56 09 03 04 07     S.....QTQ.UV....
000080 05 55 04 06 55 04 06 09 | 04 51 01 08 08 06 05 52     .U..U....Q.....R
000090 06 04 01 07 54 03 06 52 | 55 06 55 55 51 01 02 04     ....T..RU.UUQ...
000100 54 03 55 54 01 57 51 55 | 05 52 05 54 07 51 51 55     T.UT.WQU.R.T.QQU
000110 07 02 53 53 00 52 05 52 | 07 01 54 00 03 05 05 08     ..SS.R.R..T.....
000120 06 05 05 06 03 00 0D 08 | 01 07 09 03 51 03 07 53     ............Q..S
000130 09 51 06 07 54 0A 50 56 | 02 52 04 05 55 51 02 53     .Q..T.PV.R..UQ.S
000140 00 08 54 04 52 56 06 02 | 09 00 08 03 53 56 01 05     ..T.RV......SV..
000150 00 55 06 08 56 04 0D 06 | 07 52 06 07 04 0A 06 01     .U..V....R......
000160 04 54 04 00 05 02 04 54 | 00 09 52 53 05 04 01 04     .T.....T..RS....
000170 05 05 01 52 51 52 0D 06 | 51 08 09 54 53 00 0D 01     ...RQR..Q..TS...
000180 02 03 54 53 01 05 03 08 | 56 54 07 02 54 0B 06        ..TS....VT..T..
Похоже, что этот непонятный массив у меня совпадает с тем, который приводил в примере неизвестный мне человек.
Некоторые говорят, что можно вообще нули отправить и сервер это нормально примет.

Но остается вопрос насчет ProtocolVersion. Из дампа видно что это: 90 02 00 00 (если в десятичную систему перевести то получается 656).
Объясните физический смысл этого параметра?
glukmaker вне форума   Ответить с цитированием
За это сообщение glukmaker нажился спасибкой от:
Старый 14.10.2011, 00:21   #10
Новичок
 
Регистрация: 14.10.2011
Сообщений: 14
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
andrewcik пока неопределено
По умолчанию

а что такое токен? можно ли его узнать если есть сам сервак или он генерируется уникально для клиента?

и что насчёт RSA шифрования? в каких пакетах оно применяется?

кстати сделал всё как тут описывается и получил ответ логин сервера: wrong checksum from client [192.168.1.XXX]
пробовал на серваке HFive

вот кусок кода сервера на java, который раскодировывает пакет RequestAuthLogin:
Код:
Cipher rsaCipher = Cipher.getInstance("RSA/ECB/nopadding");
rsaCipher.init(2, client.getRSAPrivateKey());
decrypted = rsaCipher.doFinal(this._raw, 0, 128);
    this._user = new String(decrypted, 94, 14).trim();
    this._user = this._user.toLowerCase();
    this._password = new String(decrypted, 108, 16).trim();
    this._ncotp = decrypted[124];
    this._ncotp |= decrypted[125] << 8;
    this._ncotp |= decrypted[126] << 16;
    this._ncotp |= decrypted[127] << 24;
из этого следует вроде что пакет составлен неверно, да?

Последний раз редактировалось andrewcik, 14.10.2011 в 00:40.
andrewcik вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



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

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


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

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

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