Скрипт для формирования адресной книги radmin

Скрипт для генерации адресной книги для radmin была сделано для создания вне Radmin Viewer

Скрипт для генерации адресной книги для radmin была сделано для создания вне Radmin Viewer

Добрый день, заказал у меня клиент проект, чтоб можно было подключиться к radmin за nat. Поскольку он оказывает техподдержку своим клиентам удалённо, ему потребовалось чтобы можно было подключиться по radmin к любому компу, в том числе за nat, но это другая история. Клиентов много и каждый раз добавлять в radmin нового клиента, к тому же часто бывает на выезде не всегда получаться таскать свою книгу, тут на ум пришла идея генерировать свою книгу через php для radmin. Идея была хороша, на тот момент мне казалось что книга radmin находиться в текстовом формате где можно спокойна открыть в текстовом режиме и изменить что хочешь, но на деле было совсем другое, когда я открыл книгу я был в шоке она оказалась в бинарном формате. Было что я отчаялся но тут, я случайно открыл через hex редактор и увидел закономерности, что всё там на самом деле не так всё сложно как выглядит. и так я понял что:
  1. Длина одной записи фиксированная
  2. У каждой записи есть фиксированные паля, главное знать откуда они идут и сколько байт
  3. Все имена записаны в incode, а значит один символ занимает 2 байта
  4. Вся информация записана младшим байтом спереди

После некоторого анализа, я узнал ключевые поля, начало и длину. Правда не во всём формате удалось разобраться. В результате был написан скрипт на PHP (но можно написать на чём угодно) который генерирует адресную книгу. Данный срипт показывает базовые возможности работы с книгой, при желании можно написать библиотеку, что позже и сделаю, создания книги с нуля, для чтения я не делал, так как оно мне не нужно было.

Русские символы работают, если нужны символы, которых нет в функции GetCharCodes, можете добавить сами. На данный момент я сделал только часть полей, позже сделаю больше, которые нужно указать через переменные:

$caunt=8; //Количетво записей
$VoceCahtName='вввв';//"Имя или псевдоним (Голосовой чат)"
$VoceCahtNameInfo='вввв';//Поле "Информация о пользователе (Голосовой чат)"
$TextCahtName='ммм';//"Имя или псевдоним (Текстовой чат чат)"
$TextCahtNameInfo='вввв';//Поле "Информация о пользователе (Голосовой чат)"
$IpDnsName='192.168.0.1';//Ip адрес или dns имя к которому нужно подключиться
$NameRecord='ммммА';//Имя записи
$Port=9999;//Номер порта по которому подключаются
$NameHostKerberos='Kerberos_111111111111111111111111111111111111111111111111111111111111111111111111111111111_Kerberos';//Имя хоста для аутентификации по Kerberos
$MaxRefreshScreen=2000; //Максимальное количество обновлений раз в секунду

Все поля фиксированной длины. Срипт был написан для себя, как смог так и написал, .Внизу можно скачать скрипт php.



Дополнения от golem


/Максимальное количество обнавлений раз в сикунду
fwrite($fp, pack ("v",$MaxRefreshScreen));
//Пустые поля
for ($i=0;$i<2;$i++)
{
	fwrite($fp, pack ("c",0x00));
}
	fwrite($fp, pack ("c",0x00)); //0x00 обычный; 0x01 полноэкранный; 0x02 масштабированный; 0x03 полноэкранный масштабированный
	fwrite($fp, pack ("c",0x00));

for ($i=0;$i<146;$i++)
{
	fwrite($fp, pack ("c",0x00));
}


Если у кого есть какие вопросы или предложения пишите в комментариях.скачать dle 11.3
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.