|
Спасибо, Сергей, что прислушался к просьбе!
Когда мы входим в гамб, садимся за стол и выбираем игру, между нашим компьютером и сервером происходит обмен информацией по определенному ПРОТОКОЛУ. Точнее идет обмен пакетами между клиенской и серверной частями программы.
Примерно так. Мы сели за свободный 15-й стол. И выбрали игру шахматы, контроль 3 минуты, осальные конвы по умолчанию. 1.Клиент посылает серверу пакет: НИК (такой-то), 15-й стол, 3 минуты. 2.Сервер отвечает - ОК. После этого открывается окно с фигурками и мы ждем партнера. 3.Садится парнер. Его клиент посылает пакет. НИК сел за 15-й стол. 4.Сервер обрабатывает этот пакет и высылает мне соответствующий.
Ну и так далее. Любое нажатие кнопки мыши, клавиши "Enter" вызывает формирование очередного пакета для сервера. Все изменения "картинки" на нашем мониторе происходят вследствие приема и обработки нового пакета от сервера. Ну и в каждом пакете присутствует информация, о чем собственно этот пакет - сделанный ход, сообщение в общий чат или в чат стола, появление друга в зале, появление наблюдателя за столом и т.п.
Это была преамбула.
Когда начинается партия и мы делаем ход - клиент формирует пакет, в котором присутствует № хода и сделанный ход. Далее мы от сервера получаем пакет с ходом партнера, показаниями часов и т.д. и т.п.
А вот теперь представим такую ситуацию. Мы знаем, как нам обработать тот или иной пакет. Мы знаем, как сформировать пакет для сервера, чтобы он его корректно обработал.
Далее инструкция для тех, кто хочет сам создать бот.
1-й этап.
И вот мы, НЕ ОТКРЫВАЯ КЛИЕНТА, отсылаем по известному адресу пакет, о том, что наш ник вошел в клуб. Дождавшись ответа от сервера, мы, зная список возможных ответов, обрабатываем его и генерируем следующий пакет о том, что мы вошли в Зал Клетки. Ну и так далее ведем диалог с сервером, играем в шахматы, НЕ ОТКРЫВАЯ ПРИ ЭТОМ ОКНО ГАМБЛЕРА И НЕ ПЕРЕДВИГАЯ МЫШКОЙ ФИГУРЫ, а формируя определенные пакеты и обрабатывая пришедшие.
Для того, чтобы таким образом играть в шахматы, необходимо знать ПРОТОКОЛ ОБМЕНА.
Это информация достаточно конфиденциальная, но в то же время не защищенная и, проанализировав сеанс связи с гамблером, а именно информацию, содержащую в пакетах, можно этот протокол расшифровать.
Безусловно эта работа требует высокой квалификации, понимания клиент-серверного взаимодействия, но отнюдь не запредельной.
Итак, в результате этого мы умеем общаться с Гамблером не посредством его клиентской части, а напрямую.
2-й этап.
Допустим у нас есть ШАХМАТНАЯ программа, которая умеет реагировать не только на выбор пунктов меню "Начать партию", "Установить время на партию", "Включить анализ на уровне КМС" и т.п., но и на соответствующие команды извне. При этом также по результатам выдавая информацию в определенном виде. То есть логика работы такая же, как при клиент-серверном взаимодействии. Опять же, зная протокол обмена, или расшифровав его, можно, не заглядывая в окно программы, вести реальную партию с этой прогой.
3-й этап.
А вот теперь нужно ответы от шахматной программы преобразовать в пакет для гамблера и наоборот. Для этого должна быть разработана и написана уникальная программа по совмещению протоколов.
Из имеющейся у меня информации, для людей определенной (высокой) квалификации этапы 1 и 3 не должны вызвать серьезных проблем. Вопрос только во времени, необходимом для решения этих задач. А вот этап 2 видимо выставляет гораздо больше требований по его реализации. В большинстве случаев требуется взлом программного кода шахматной программы или по крайней мере его части. Впрочем, насколько мне известно, существуют шахматные программы с открытым или частично открытым кодом. Наверное по этому в настоящее время не реализованы боты на Фрице или скажем рыбке.
Это сообщение отредактировал magystr - 16/10/2007, 13:49
|