![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
Darksquall |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 22.1.2004 Где: Москва Репутация: нет Всего: 4 |
В статье пойдет речь о технологии контороля над удаленным компьютером в локальной сети или глобальной,при наличии "белого" статического
IP адреса,контроля содержимого экрана в текущий момент времени, а также возможности управления удаленным рабочим столом пользователя. Статья поможет разработчику справиться с задачей контроля над удаленными системами, контроля с благими целями, любые доработки используются на свой собственный страх и риск разработчиком. Круг задач по контролю и управлению удаленной системой довольно разнообразен, это задачи направленные на благие цели,например,при отсутствии у пользователя возможности самостоятельно произвести операцию на компьютере, ему необходимо подключаться через сеть, это службы подобные "HelpDesk",контроль над удаленными серверами и т.д., также задачи для контроля или просмотра действий пользователя в целях получения секретной информации,запись действий в видеофайл,получение паролей с помощью так называемых "видео-снифферов" и др., существующие программы подобного рода не всегда подходят т.к. для подстройки под конкретную задачу необходимо иметь доступ к исходному коду,наличие гибкости программы также важно, например для скрытия программы от глаз пользователя или минимизации интерфейса, запуска в виде системного процесса и т.д. Все эти требования заставляют хакера самостоятельно разрабатывать программы подобного рода,разберемся с технологией и разработаем программу для контроля удаленной системы. Для обхода Firewalls стоящих на компьютерах пользователей,а также чтобы наша программа не "засветилась" на Файерволле при передаче данных,передаваться данные будут по HTTP протоколу, по 80му порту,т.к. в любой системе имеющей доступ к интернет или локальной сети открыт 80й порт и firewall будет считать данные исходящие от нашей программы,обычной интернет страницей. Поэтому при разработке будут использоваться Delphi 7.0 и компоненты Internet Component Suite от [email protected], бесплатные компоненты качаем с http://www.overbyte.be. Из набора наиболее подходят HTTPServer(HTTPSrv) и HTTPClient(HTTPCli). Для передачи изображений по сети наиболее подходит формат для хранения изображений PNG, компонент TPNGImage лежит на http://pngdelphi.sourceforge.net. Клиентская часть содержит всего три процедуры,которых достаточно для работы.
Процедура скрывает главную форму
Эту процедуру имеет смысл описать более подробно. Перед использованием программы на главную форму приложения необходимо положить компонент image, HTTPCli и незабыть всавить в Uses pngimage.
Останавливаем таймер для того чтобы на время передачи к серверу не поступало более одного изображения от текущего клиента.
В этом свойстве указываеться адрес сервера,'127.0.0.1' локальный адрес, при "боевых" условиях следует указать реальный IP компьютера или сетевое имя.
Дополнительные параметры используються при наличии прокси.
Создаем экземляры обьектов для хранения изображения подготавливаемого для отсылки серверу, т.е. все то, что будет происходить на экране пользователя,обязательно попадет в bmp и Png.
Устанавливаем размер изображения равный размеру текущего экрана.
Перед тем как получить копию экрана установим количество бит на пиксел изображения.
Операция по получению копии экрана в bmp.
Так как формат BMP довольно громоздкий для передачи по сети, то необходимо конвертировать в PNG.
Хороший уровень компрессии.
Создаем потоки в памяти и сохраняем туда изображение для передачи серверу.
Освобождаем память.
Отправляем частями изображение на сервер.
Если произошел сбой передачи или ошибка другого рода,освобождаем память.
Процедура выполняеться только тогда,когда приходит ответ от сервера,что документ полностью получен. И процедура освобождает память, и при удачно выполненной отправке изображения запускает таймер,для передачи на сервер следующего изображения полученного в текущий момент времени с локального компьютера.
Процедура выполняет инициализацию сервера,по умолчанию устанавливаеться главный документ, если разработчик решит хранить данные не только в потоках но также и на дисках компьютера,такой способ замедлит передачу изображения, но все же он возможен.
Порт для передачи данных.
Команда запуска сервера.
Процедура инициализируется при поступлении на сервер любого документа и выполняет подготовку памяти для размещения получаемого изображения от клиента.
Данная процедура выполняеться сразу же по приходу данных на сервер второй после HttpServer1PostDocument и собирает полученные данные из нескольких частей в одну. После того как данные получены клиенту отправляется сигнал, что данные удачно были получены
память освобождаеться
и PNG изображение повторно переводиться в BMP формат с выводом на экран с помощью компонента image.
Программа дает возможность наблюдать за удаленным компьютером, но пока не позволяет управлять им. Для управления достаточно добавить в серверную часть еще один компонент HTTPCli, который будет передавать события клавиатуры+мыши таким же способом как и передаются изображения в данном примере, а в клиентскую часть добавить компонент HTTPSrv принимающий и программно выполняющий на компьютере клиента события,при более изощренном подходе возможно не добавлять новых компонент,а передавать данные о событиях в ClientCnx.AnswerString( Flags,'','','','Событие1 Мышь X-150 Y120 LeftButton Клавиатура кнопка С'), но этот метод работает довольно медленно, т.е. клавиатура генерирует нажатие и мышь передвигаеться только при поступлении нового изображения,т.к. данные о событии передаються практически в одном потоке с изображением.Первый подход будет более правильным и быстрым, но в него необходимо добавить дополнительный таймер для передачи событий. Координаты мыши можно установить так:
Нажатие правой кнопки:
Нажатие левой кнопки:
События клавиатуры можно генерировать так:
Получить нажатия клавиатуры можно с помощью метода класса TForm:
Получить координаты мыши можно например так:
После компиляции,в первую очередь необходимо запустить сервер в нашей системе,затем прописать клиентскую часть приложения в автозагрузку на отслеживаемом компьютере,но не забыть написать в коде правильный IP сервера (т.е. нашего компьютера), и все действия наблюдаемого пользователя будут отображаться на нашем экране. Так как в статье приведен пример с минимальным текстом программы и не предусмотрены многие варианты использования данного метода,то желательно клиентскую часть запускать после старта серверной части. так же следует учесть, что перед использованием серверной части необходимо убедиться в отсутствии на компьютере работающих серверов, например IIS, т.к. работа одного из серверов будет невозможна. Полная версия программы с исходным кодом (без дополнительных компонент) прилагается в архиве. Желаю успехов в освоении и разработке!. Alimoff Roman - Darksquall ([email protected]) Присоединённый файл ( Кол-во скачиваний: 72 ) ![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Не хочу показаться невежливым...
Но моя оценка примерна та же, что я поставил трояну флеонова. Данный код очень похож на то же самое. Моя оценка: 10 по 100 бальной системе. Код годится только для демонстрации, но не для реального использования. |
|||
|
||||
Darksquall |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 22.1.2004 Где: Москва Репутация: нет Всего: 4 |
Snowy, цель статьи не создание АВТОРОМ кода и выкладывания для использования, а описание технологии. И минимум кода,рабочий.
Это сообщение отредактировал(а) Darksquall - 27.4.2006, 15:53 |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Навскидку несколько замечаний:
Вероятно это очень глупый файрвол. Нормальный файрвол контролирует всю сетевую активность с привязкой к программе. Например IExplorer имеет право стучать в 80-й порт, а Project1 - нет. Для обхода используется интеграция в чужой процесс, который имеет разрешение стучаться в порт. Использование TApplication в данном проекте уже само по себе достаточно странно и бессмысленно, как троян флеонова. Это, пожалуй самый главный минус. Зачем вообще нужна форма? Почему ее скрытие происходит в OnCreate?
Тоже непонятно. Зачем создавать объекты, выделять память, задавать параметры, уничтожать их, когда можно один раз создать при старте программы и уничтожить при завершении (если таковое вообще предполагается). Ну это так навскидку. Подробно смотреть лень. Просто в совокупности все это и вызвало такую оценку. Может быть для меня технология слишком очевидна, поэтому я и смотрел реализацию. Возможно кому-то будет интересен сам принцип... Хотя принцип прост. Вот с грамотной реализацией гораздо сложнее. |
|||
|
||||
Darksquall |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 22.1.2004 Где: Москва Репутация: нет Всего: 4 |
Snowy конечно, bmp создаються в примере только для статьи и минимизации процедур, выделять память при создании и освобождать при выходе это естественно, но это добавит 2 процедуры,что не гуд для начинающего, без таймера прога станет менее регулируемой по скорости.форма нужна для отсутствия лишних вопросов у начинающего, т.к. он наверняка захочет добавить чтото.Скорее эта статья не для проф.уровня модератора,а для новичка или незнакомого с подобными вещами,потому и вопросы.
|
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Ну если только так.
Но все равно, создание стоит перенести в OnCreate, и добавить уничтожение в OnDestroy. А так, больше вопросов нет. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |