Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #80, АВГУСТ 2005 г.

Вертикаль власти

eto'o

Хакер, номер #080, стр. 080-124-3


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

Первым делом создадим таблицу bots, которая имеет следующую структуру:

[структура таблицы bots]

CREATE TABLE BOTS (

ID INT NOT NULL PRIMARY KEY,

IP VARCHAR(15),

EXTENDED VARCHAR(300)

);

Здесь ID - это уникальный ключ, который генерируется самим ботом при установке в системе. При каждом обращении к скрипту бот передает через GET-запрос параметр id, в котором находится этот идентификатор. Соответственно, при каждом обращении сценарий должен проверять, есть ли в таблице bots запись с таким идентификатором и, если нет, добавлять такую строчку, фактически регистрируя нового бота. Нужно так же понимать, что тип INT, который я указал в этой таблице для поля ID, может быть заменен на любой другой исходя из того, как работает бот: к примеру, если генерируемый ключ - это шестнадцатеричное число, или произвольная строка, нужно поменять INT на VARCHAR.

Идем дальше. В поле IP записывается адрес внешнего сетевого интерфейса пользователя. Само собой, что если юзер работает через локальную сеть с «серой» адресацией, сюда будет записываться внешний ip-адрес его шлюза. Помимо переменной id, бот так же может передавать сценарию набор некоторых свойств пользовательского компьютера: это может быть, к примеру, информация о внутренних сетевых интерфейсах, или найденные в системе пароли, или информация об используемом железе, что угодно. Обрати внимание, что здесь почти нет ограничений на количество и, главное, структуру свойств бота. Ведь в разных системах могут налагаться различные требования и бот может иметь различные свойства.

Однако эта свобода наказуема: информация о свойствах бота должна быть записана в строгом формате XML-документа. Я приведу пример такого описания, чтобы тебе было понятнее:

[пример XML-документа со свойствами бота]

<info>

<param name="email" symbolic="Пароли от e-mail">

host.ru:login:c00lpa55worD

</param>

<param name="freq" symbolic="Частота процессора">

2000

</param>

<param name="netbios" symbolic="Netbios-имя">

station

</param>

<param name="external" symbolic="Внешний IP">

217.10.41.56

</param>

</info>

На самом деле, эта фишка с XML была придумана, чтобы обеспечить универсальность и расширяемость системе. Ведь для разных ботов набор свойств может быть различным, и если бы я тупо в таблице сделал статичное число постоянных полей, то переделка такой системы заключалась бы в полной перестройке таблицы и скриптов. А в нашем случае ничего переделывать не нужно, нужно лишь соблюдать установленный формат записываемых данных и обеспечить одинаковую структуру информации для всех ботов. При этом особо следует отметить, что система автоматически позволит производить сортировку и поиск по содержимому каждого элемента <param>, для расшифровки данных (фактически, для подписи колонок таблицы) будет использоваться содержимое свойства symbolic, а параметр name будет использован внутри сценария при выборке информации.

Назад на стр. 080-124-2  Содержание  Вперед на стр. 080-124-4