03.04.2014 Views

Май - Xakep Online

Май - Xakep Online

Май - Xakep Online

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

coding<br />

Клиент удаленного администрирования в действии<br />

Внешний вид формы клиентской части<br />

s.png',fmCreate);<br />

//Пока есть соединение, читаем данные<br />

while connected do<br />

ReadStream(s,-1,true);<br />

//Уничтожаем поток<br />

FreeAndNil(s);<br />

//Отключаемся<br />

Disconnect;<br />

Image1.Picture:=nil;<br />

//Выводим полученный скриншот на экран<br />

PNG := TPNGObject.Create;<br />

Bitmap := TBitmap.Create;<br />

try<br />

PNG.LoadFromFile('C:\s.png');<br />

Bitmap.Assign(PNG);<br />

Image1.Picture.Bitmap.Assign(Bitmap);<br />

finally<br />

PNG.Free;<br />

Bitmap.Free;<br />

end;<br />

end; //end — with<br />

end;<br />

Как видишь, тут все элементарно. С помощью собственной<br />

процедуры connect_to_server (ее реализацию ты можешь<br />

найти в исходниках) мы подключаемся к серверу. Для этого<br />

вызывается метод Connect компонента TidTCPClient и предварительно<br />

устанавливаются свойства Host и Port. Затем с<br />

помощью процедуры WriteLn мы отправляем серверу команду<br />

«get_screen» и в ответ получаем графический файл формата<br />

PNG, который сохраняем на диске C и отображаем пользователю<br />

посредством компонента TImage.<br />

Реализацию остальных функций ты найдешь в исходниках<br />

программы, а сейчас давай просто посмотрим, как она<br />

осуществлена. Если нажать на кнопку «Просмотр», ее текст<br />

поменяется на «Отключить просмотр», а кнопки «Скриншот»<br />

и «Управление» блокируются. Далее включается таймер,<br />

который через определенные промежутки времени (я установил<br />

значение 400 мс) обращается к серверу с просьбой<br />

прислать скриншот. Если пользователь нажимает на кнопку<br />

повторно, то режим просмотра отключается. Аналогично<br />

xàêåð 05 /101/ 07<br />

/<br />

работает и режим управления, только клиент, кроме запроса<br />

прислать скриншот, отправляет еще координаты курсора<br />

мыши (сообщения «mouse_move», «mouse_x» и «mouse_y»,<br />

полученные с помощью функции GetCursorPos), которые<br />

затем и устанавливаются у получателя. Если пользователь<br />

нажимает на кнопку «Сообщение 'Пора работать!'», на сервер<br />

уходит команда «message_for_you», которая приводит к<br />

вызову функции MessageBox и к выводу поверх всех открытых<br />

окон указанного текстового сообщения.<br />

Итак, программа разработана, пора испытывать ее в боевых<br />

условиях. Предупреждаю: если у тебя стоит Firewall, настрой его<br />

так, чтобы был возможен обмен сообщениями между двумя компьютерами<br />

сети по определенном порту (у меня выбран 6666).<br />

Несколько слов напоследок<br />

Конечно, эта утилита не совершенна, но за совершенство<br />

обычно просят деньги :). Все в твоих руках — ты запросто<br />

можешь сделать из нее более серьезный продукт, реализовав<br />

дополнительные функции и возможности. Во-первых,<br />

наверняка, сразу бросается в глаза проблема мерцания при<br />

обновлении картинок. Ее можно решить, несколько изменив<br />

алгоритм работы получения скриншотов: для этого посылай<br />

не сами картинки, а лишь изменения между ними.<br />

Стоит отметить тот факт, что, если разрешения экранов мониторов<br />

клиента и сервера различаются, может наблюдаться<br />

эффект отставания курсора мыши: когда на своем мониторе ты<br />

наводишь курсор на одно место, на скриншоте, присланном с<br />

удаленного компьютера, он отстает и располагается чуть выше.<br />

Решается эта проблема вводом специального коэффициента и<br />

применением его к координатам, передаваемым на сервер.<br />

Также можно реализовать функцию работы по паролю. А уж<br />

про скрытие программы в трей и придание ей невидимости<br />

я и говорить не буду — это классика жанра. А вот управление<br />

компьютером посредством ICQ — это действительно<br />

круто. Представь только! Тебе вообще не нужно вдаваться<br />

в тонкости сетевых технологий и протоколов передачи<br />

данных. Ты просто встраиваешь в свой сервер возможность<br />

приема и отправки ICQ-сообщений и управляешь<br />

компьютером удаленно из любой точки мира (благо в сети<br />

можно найти компоненты, помогающие реализовать это без<br />

особых хлопот, да и мы в одном из предыдущих выпусков<br />

писали про создание асечного бота). z<br />

DVD<br />

На диске ты найдешь<br />

полные исходные<br />

коды программы,<br />

описанной в статье,<br />

а также компонент<br />

TPNGImage, предназначенный<br />

для работы<br />

с графическими файлами<br />

формата PNG.<br />

123

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!