Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 10.03.2012, 18:51   #1
 Разведчик
Аватар для lefleir
 
lefleir на правильном пути
Регистрация: 29.01.2012
Сообщений: 13
Популярность: 30
Сказал(а) спасибо: 0
Поблагодарили 9 раз(а) в 7 сообщениях
 
По умолчанию

Друзья и подруги, сегодня я попробую объяснить основные принципы написания бота для игры. Для меня удобнее писать на python. Поэтому я выберу его за язык, на котором будут показаны примеры. И да, здесь не будут лежать исходники бота, здесь будут только примеры и описание протокола и пакетов. Исходники стоят денег. Заинтересовало? Пишите в личку. Теперь поехали:

Описание протокола.
Пример пакета:
[Ссылки могут видеть только зарегистрированные пользователи. ]
Зеленым обозначен размер пакета, который вычисляется: ключ+0x1822 (статический байт)+4 байта отпечатка.
Красным обозначен отпечаток. При отправке 1го пакета, мы еще не имеем данных для генерации отпечатка, поэтому отпечаток равен «00 00 00 00».
Синим, обозначен c,cc пакет.
Желтым отмечена версия «27».
Розовым отмечен ключ, получение ключа с: [Ссылки могут видеть только зарегистрированные пользователи. ]
Голубым отмечены 2 статических байта 0x1822.
После отправки 1го пакета мы получим 26;22 пакет, который содержит kikoo.swf, мы его игнорируем. Получаем следующий пакет, который содержит: Онлайн, MDT, CMDTEC. Последние 2 значения нужны нам для генерации отпечатка.
MDT содержит список чисел. В нем нужно заменять каждый 0 на 10. Тип у MDT list, а у CMDTEC целый тип.
PHP код:
LMDT = list(now[4])
    print 
MDT
    
for c in map(intLMDT):
        if 
== 0MDT.append(chr(10))
        else: 
MDT.append(chr(c)) 
Генерация префикса:
PHP код:
loc_2 CMDTEC 9000 1000
    fingerprint 
b''
    
fingerprint += bytes(MDT[int(loc_2 1000)])
    
fingerprint += bytes(MDT[int(loc_2 100) % 10])
    
fingerprint += bytes(MDT[int(loc_2 10) % 10])
    
fingerprint += bytes(MDT[loc_2 10]) 
Когда мы закончим с составлением генератора префикса, мы отправим пакет с логином, паролем и комнатой (Старый протокол).
После каждого пакета, CMDTEC нужно увеличивать на 1!
00 00 00 60 – размер пакета
06 01 09 01 – отпечаток
01 01 – с,сс
00 54 – версия
Остальное, это: логин + 01 + sha256(пароль) + 01 + комната
Вид пакета авторизации
[4 байта размера] + [4 байта отпечатка] + [01 01] + [размер строки] + [строка содержащая: [версия игры] + 01 + [логин] + 01 + [пароль] + 01 + [комната]]
Где единичные байты 01 есть разделитель.
Отправлем…
Мы в игре :3
После отправки пакета с данными, мы получим 2 (или 3… бывает по-разному) пакета, в одном из которых есть ключ и 2й ip (называемый Bulle5).
Открываем новое сокет-соединение с этим ip и отправляем пакет, который содержит: Размер + отпечаток(00 00 00 00) + ключ (полученный прошлым пакетом).
В случае успешной отправки пакета, бот окажется в комнате.
p.s. Во 2м сообщении будет рассмотрена структура пакетов их виды и таблица заголовков.

Описание пакетов.
В Transformice есть 2 вида пакетов, а именно: для старого протокола и для нового. С новым все более менее понятнее:
[4 байта размера] + [4 байта отпечатка] + [с и сс (таблица будет позднее)] + [размер строки] + [строка].
Пример (отправка сообщения в чат):
PHP код:
00 00 00 11  12 34 56 78 06 06 (с и сс для отправки сообщения в чат) + 00 0A Hello world 
Где:
00 00 00 11 - размер пакета.
12 34 56 78 - отпечаток.
06 06 - с и сс.
00 0A - размер сообщения.
Hello world - сообщение.

На примере эмоции:
00 00 00 06 + 12 34 56 78 + 08 01 + 08

Где:
00 00 00 06 - длина пакета.
12 34 56 78 - отпечаток.
08 01 - с и сс (для эмоции).
08 - сообщение (в данном случае тип эмоции, здесь эмоция "сидеть").

Старый протокол выглядит иначе:
[4 байта размера] + [4 байта отпечатка] + [01 01] + [размер сообщения] + [ [с и сс] + [строка]]. Т.е. в строку входит с и сс заголовок пакета и сама строка. Не забудьте то, что размер сообщения ДОЛЖЕН включать в себя "с и сс":
Пример:
PHP код:
00 00 00 0E 12 34 56 78 01 01 00 02 1A 02 
Где:
00 00 00 0E - длина пакета.
12 34 56 78 - отпечаток.
01 01 - с и сс определяющий старый протокол.
00 02 - длина сообщения.
1A 02 - с и сс старого протокола (т.е. сообщение из 2х байтов. см. выше).

Каждые 10 секунд вы должны отправлять 2 пакета, один на маин сервер, а 2й на бул сервер (в примере про старый протокол рассмотрен именно тот пакет, который следует отправлять).

Картинки с описанием заголовков будут доступны позднее.

Первые шаги.
Этот урок нацелен на тех пользователей, которые уже умеют пользоваться сниффером (для всех остальных будет запилен видео-гайд).
Давайте попробуем изучить пакеты, которые клиент отправляет серверу и обратно. Игнорируем весь шлак во время загрузки клиента!
Вот пример, актуального на момент написания пакета (с ключом):

[Ссылки могут видеть только зарегистрированные пользователи. ]
00 00 00 26 - размер пакета.
00 00 00 00 - пустой отпечаток.
1C 01 - с и сс (заголовок пакета).
00 1C - версия игры.
00 11 - длина ключа.
71 73 64 68 67 67 63 61 79 69 79 69 65 74 68 74 69 - ключ (qsdhggcayiyiethti).
18 22 - размер загрузчика.

В ответ от сервера нам приходит kikoo.swf, размер пакета: 2499 байт. Мы его игнорируем.
Идем дальше:
Во 2м пакете нам приходят CMDTEC и MDT (способ получения отпечатка, приведен в 1м посте).

Пакет с отправкой логина изменился!
Дальше мы отправляем пакет с логином и паролем:
[Ссылки могут видеть только зарегистрированные пользователи. ]

Где:
00 00 00 5C - размер пакета.
0A 06 04 03 - отпечаток, который мы сгенерировали используя MDT и CMDTEC.
01 01 - заголовок определяющий что мы используем старый протокол.
00 50 - размер сообщения (с и сс +логин+пароль+комната).
1A 01 - с и сс.
01 - разделитель.
6C 65 66 6C 65 69 72 74 66 6D - логин (lefleirtfm).
01 - разделитель.
36 38 33 66 37 34 65 37 38 32 32 61 37 39 33 66 64 34 33 35 30 37 33 62 35 37 32 35 66 65 36 33 66 30 62 35 65 30 35 34 30 31 66 37 32 64 35 38 62 38 32 66 64 61 38 36 36 32 62 36 66 65 30 63 - пароль (хеширование sha256).
01 - разделитель.
31 - комната (в данном случае: 1).
01 - разделитель.
+
[Ссылки могут видеть только зарегистрированные пользователи. ][Дата в формате unix datastate, для python: time.time() (6 символов)]
В ответ нам приходит 3 пакета, которые содержат информацию о игроке, племя и прочее. Но в 3м пакете находятся ключ и bulle5 ip адрес.
[Ссылки могут видеть только зарегистрированные пользователи. ]
00 00 00 19 - размер пакета.
2C 01 0F 18 FD 41 - ключ.
00 - разделитель.
31 37 36 2E 33 31 2E 32 35 33 2E 38 39 - ip адрес (176.31.253.89).
Открываем 2й сокет коннект (с новым ип адресом) и отправляем:
[4 байта длины] 00 00 00 00 ключ
В ответ нам придет пакет с бул сервера, который содержит CMDTEC и MDT для бул сервера.
ПОМНИТЕ! Для маин и бул сервера, отпечатки отличаются, вам нужно создать две функции генерации отпечатков, для главного и бул сервера.
После получения пакета с cmdtec и mdt от бул сервера, ваша мышь оказывается в комнате.

Последний раз редактировалось lefleir; 01.05.2012 в 04:27. Причина: update 1.39
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Jeikili (31.03.2012), the-boxi (11.03.2012)
Старый 10.03.2012, 20:48   #2
 Сержант
Аватар для Chariot_
 
Chariot_ сломал счётчик популярности :(Chariot_ сломал счётчик популярности :(Chariot_ сломал счётчик популярности :(Chariot_ сломал счётчик популярности :(Chariot_ сломал счётчик популярности :(Chariot_ сломал счётчик популярности :(Chariot_ сломал счётчик популярности :(Chariot_ сломал счётчик популярности :(Chariot_ сломал счётчик популярности :(Chariot_ сломал счётчик популярности :(Chariot_ сломал счётчик популярности :(
Регистрация: 01.01.2012
Сообщений: 108
Популярность: 38239
Сказал(а) спасибо: 52
Поблагодарили 186 раз(а) в 127 сообщениях
Отправить сообщение для Chariot_ с помощью Skype™
 
По умолчанию Re: Создание бота для Transformice.

Классно описано,но много чего не понятно.
Ждемс видео.
________________
Аккаунты DarkOrbit
  Ответить с цитированием
Старый 10.03.2012, 20:49   #3
 Разведчик
Аватар для lefleir
 
lefleir на правильном пути
Регистрация: 29.01.2012
Сообщений: 13
Популярность: 30
Сказал(а) спасибо: 0
Поблагодарили 9 раз(а) в 7 сообщениях
 
По умолчанию Re: Создание бота для Transformice.

Цитата:
Сообщение от Chariot_Посмотреть сообщение
Классно описано,но много чего не понятно.
Ждемс видео.

Видео в процессе Надеюсь после него станет понятнее
  Ответить с цитированием
Пользователь сказал cпасибо:
the-boxi (11.03.2012)
Старый 11.03.2012, 17:30   #4
Почетный Пользователь
 Рыцарь
Аватар для the-boxi
 
the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(
Регистрация: 09.02.2011
Сообщений: 373
Популярность: 38009
Сказал(а) спасибо: 612
Поблагодарили 448 раз(а) в 175 сообщениях
Отправить сообщение для the-boxi с помощью ICQ Отправить сообщение для the-boxi с помощью MSN Отправить сообщение для the-boxi с помощью Skype™
 
По умолчанию Re: Создание бота для Transformice.

Там где "Первые шаги"
Цитата:
00 00 00 26

не как на скрине.
Исправь на
Цитата:
00 00 00 21

так как на скрине.
А так вообще круто, буду сейчас делать ботика но не знаю, что получиться)
________________
Разработка программ на заказ, все вопросы skype - the-boxi, ICQ - 616027961

Последний раз редактировалось KlouS; 28.05.2012 в 11:04.
  Ответить с цитированием
Старый 11.03.2012, 22:00   #5
 Разведчик
Аватар для Jeikili
 
Jeikili никому не известный тип
Регистрация: 27.10.2010
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Создание бота для Transformice.

долго еще видео ждать?
  Ответить с цитированием
Старый 11.03.2012, 22:43   #6
 Разведчик
Аватар для lefleir
 
lefleir на правильном пути
Регистрация: 29.01.2012
Сообщений: 13
Популярность: 30
Сказал(а) спасибо: 0
Поблагодарили 9 раз(а) в 7 сообщениях
 
По умолчанию Re: Создание бота для Transformice.

p.s. Почему-то видео не грузится, но ссылка доступна. Заходим, смотрим.

http://youtu.be/9RXrUjm9E6g


В следующем видео мы отправляем 1й пакет и получаем kikoo.swf, а следом пакет содержащий: онлайн, MDT и CMDTEC. Надеюсь стало понятно, что и куда отправлять. Далее действуем по инструкции выше и отправляем последовательно пакеты до входа в игру.

Последний раз редактировалось KlouS; 28.05.2012 в 11:05.
  Ответить с цитированием
Старый 11.03.2012, 23:04   #7
 Разведчик
Аватар для Jeikili
 
Jeikili никому не известный тип
Регистрация: 27.10.2010
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Создание бота для Transformice.

ты каждый день будешь выкладывать?
  Ответить с цитированием
Старый 11.03.2012, 23:07   #8
 Разведчик
Аватар для lefleir
 
lefleir на правильном пути
Регистрация: 29.01.2012
Сообщений: 13
Популярность: 30
Сказал(а) спасибо: 0
Поблагодарили 9 раз(а) в 7 сообщениях
 
По умолчанию Re: Создание бота для Transformice.

Цитата:
Сообщение от JeikiliПосмотреть сообщение
ты каждый день будешь выкладывать?

Не понял вопроса. Я выкладываю по мере создания и дописывания.
  Ответить с цитированием
Старый 13.03.2012, 08:32   #9
 Разведчик
Аватар для lefleir
 
lefleir на правильном пути
Регистрация: 29.01.2012
Сообщений: 13
Популярность: 30
Сказал(а) спасибо: 0
Поблагодарили 9 раз(а) в 7 сообщениях
 
По умолчанию Re: Создание бота для Transformice.

Получение, обработка пакетов.
Итак, котики. Мы с вами разобрались с отправкой пакетов. Теперь давайте изучим входящие пакеты и способы реагирования на них бота.
Эта статья будет содержать примеры на питоне!
Запомните! Пакет с сервера не содержит отпечатка. А так почти все одинаково
Как и при отправке, пакет может быть старого и нового протокола. Поэтому положение с и сс будет отличаться.
Мы попробуем избежать геморроя и запилим это:

Давайте напишем условие
PHP код:
    code hexlify(data[4:6])
    if 
code == '0101':
        
code hexlify(data[8:10])
    return 
code 
Здесь видно, что мы берем байты с тех позиций, где объявляется заголовок (с и сс) и если он равняется 01 01, мы берем другое положение (помните? 01 01 + 2 байта размера + с и сс).
Теперь мы можешь вызывать эту функцию и обрабатывать данные.
Для получения данных заведем цикл While True - бесконечный.
И будем использовать условие:
if code == '\x06\x06': - пример обработки сообщения в чат.
Помните то, что данные с маин сервера идут не всегда. По этой причине, цикл будет ожидать получения данных. Из этого следует, что засовывать сурвивал, парсинг булл сервера и парсинг маин сервера в один цикл, стратегически не выгодно.
Теперь сурвивал. Этот пакет должен отправлять каждые 10 секунд, в противном случае вас кикнет через 40 секунд, с обоих серверов.
Что отправлять?
Эти байты: размер + отпечаток + \x01\x01\x00\x02\x1A\x02
Отправлять нужно на оба сервера.
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Cheese (13.03.2012), the-boxi (13.03.2012)
Старый 13.03.2012, 21:50   #10
Почетный Пользователь
 Рыцарь
Аватар для the-boxi
 
the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(
Регистрация: 09.02.2011
Сообщений: 373
Популярность: 38009
Сказал(а) спасибо: 612
Поблагодарили 448 раз(а) в 175 сообщениях
Отправить сообщение для the-boxi с помощью ICQ Отправить сообщение для the-boxi с помощью MSN Отправить сообщение для the-boxi с помощью Skype™
 
По умолчанию Re: Создание бота для Transformice.

Как же радует что я получил отпечаток...
[Ссылки могут видеть только зарегистрированные пользователи. ]
И так у меня возник вопросик, а почему когда я иногда подключаюсь к серверу то он молчит? Зашитный код на кико формайс появляеться чуть позднее чем на основном?
________________
Разработка программ на заказ, все вопросы skype - the-boxi, ICQ - 616027961
  Ответить с цитированием
Старый 13.03.2012, 22:35   #11
 Разведчик
Аватар для lefleir
 
lefleir на правильном пути
Регистрация: 29.01.2012
Сообщений: 13
Популярность: 30
Сказал(а) спасибо: 0
Поблагодарили 9 раз(а) в 7 сообщениях
 
По умолчанию Re: Создание бота для Transformice.

Цитата:
Сообщение от the-boxiПосмотреть сообщение
Как же радует что я получил отпечаток...
[Ссылки могут видеть только зарегистрированные пользователи. ]
И так у меня возник вопросик, а почему когда я иногда подключаюсь к серверу то он молчит? Зашитный код на кико формайс появляеться чуть позднее чем на основном?

Т.е. молчит? Он в любом случае отвечает на твой пакет.
Да, ключ обновляется каждые 15 минут.
  Ответить с цитированием
Старый 14.03.2012, 10:28   #12
Почетный Пользователь
 Рыцарь
Аватар для the-boxi
 
the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(
Регистрация: 09.02.2011
Сообщений: 373
Популярность: 38009
Сказал(а) спасибо: 612
Поблагодарили 448 раз(а) в 175 сообщениях
Отправить сообщение для the-boxi с помощью ICQ Отправить сообщение для the-boxi с помощью MSN Отправить сообщение для the-boxi с помощью Skype™
 
По умолчанию Re: Создание бота для Transformice.

Цитата:
Сообщение от lefleirПосмотреть сообщение
Т.е. молчит? Он в любом случае отвечает на твой пакет.
Да, ключ обновляется каждые 15 минут.

Ну короче беда в другом:
1. я не понял где менять 0 на 10, когда с ответа считую мдтек тогда и меняю?
2. кодировка запроса я ставил Default(C#)
3. Длина "00 50 - размер сообщения (с и сс +логин+пароль+комната)."
было 5В посчитал это 91, но когда считаю глазами то получаеться менше, почему? И нужно ли считать разделитили и сам байт длины?
Вот вроде всё с чем столкнулся вчера в 23:00 и пошол спать.
________________
Разработка программ на заказ, все вопросы skype - the-boxi, ICQ - 616027961
  Ответить с цитированием
Старый 14.03.2012, 16:25   #13
 Разведчик
Аватар для lefleir
 
lefleir на правильном пути
Регистрация: 29.01.2012
Сообщений: 13
Популярность: 30
Сказал(а) спасибо: 0
Поблагодарили 9 раз(а) в 7 сообщениях
 
По умолчанию Re: Создание бота для Transformice.

Цитата:
Сообщение от the-boxiПосмотреть сообщение
Ну короче беда в другом:
1. я не понял где менять 0 на 10, когда с ответа считую мдтек тогда и меняю?
2. кодировка запроса я ставил Default(C#)
3. Длина "00 50 - размер сообщения (с и сс +логин+пароль+комната)."
было 5В посчитал это 91, но когда считаю глазами то получаеться менше, почему? И нужно ли считать разделитили и сам байт длины?
Вот вроде всё с чем столкнулся вчера в 23:00 и пошол спать.

1. После получения MDT и CMDTEC заменяешь в MDT все 0 на 10:
PHP код:
for c in map(intLMDT):
            if 
== 0self.MDT.append(chr(10))
            else: 
self.MDT.append(chr(c)) 
2. Байты длина сообщения не нужно считать, ты считаешь только с и сс и сообщение.
  Ответить с цитированием
Пользователь сказал cпасибо:
the-boxi (14.03.2012)
Старый 14.03.2012, 17:30   #14
Почетный Пользователь
 Рыцарь
Аватар для the-boxi
 
the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(
Регистрация: 09.02.2011
Сообщений: 373
Популярность: 38009
Сказал(а) спасибо: 612
Поблагодарили 448 раз(а) в 175 сообщениях
Отправить сообщение для the-boxi с помощью ICQ Отправить сообщение для the-boxi с помощью MSN Отправить сообщение для the-boxi с помощью Skype™
 
По умолчанию Re: Создание бота для Transformice.

Цитата:
Сообщение от lefleirПосмотреть сообщение
1. После получения MDT и CMDTEC заменяешь в MDT все 0 на 10:
PHP код:
for c in map(intLMDT):
            if 
== 0self.MDT.append(chr(10))
            else: 
self.MDT.append(chr(c)) 
2. Байты длина сообщения не нужно считать, ты считаешь только с и сс и сообщение.

Размер 1 "00 00 00 5C - размер пакета."
Размер 2 "00 50 - размер сообщения (с и сс +логин+пароль+комната)."
Пойми что я говорю, тут не всё сообщение тут только вот это.
Что во втором считать можно подробней.
________________
Разработка программ на заказ, все вопросы skype - the-boxi, ICQ - 616027961

Последний раз редактировалось the-boxi; 14.03.2012 в 17:54.
  Ответить с цитированием
Старый 14.03.2012, 18:08   #15
 Разведчик
Аватар для Jeikili
 
Jeikili никому не известный тип
Регистрация: 27.10.2010
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Создание бота для Transformice.

а можно купить полностью написанного? и чтобы в лс ему писали типо "/np @**" и он ставил карту?
  Ответить с цитированием
Ответ


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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Руководство] Создание бота на C# Cherinho C# 84 21.12.2012 14:30
[Помогите!] Создание бота... pen-oleg2011 Общение и обсуждение 13 07.03.2012 17:46
[Руководство] Создание простейшего бота. HAM_MAH Другие Игры 0 30.06.2011 12:39
Создание простейшего бота SkyRX Вопросы и ответы, обсуждения 3 10.05.2011 17:14

Заявление об ответственности / Список мошенников

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

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net