Записки Дикого Лиса. А дядьки с рубильниками...
Сидя теплым сентябрем 2009 года в местной столовой и разговаривая с админом (работаю лаборантом), мы в которой раз обсуждали, как бы понаблюдать за студентами, а точнее – не дать им как следует развлечься за Counter Strike, да и просто развлечься. Наблюдать, естественно, удаленно. Мол, что они там вытворяют на компах во время пар. Вариантов вмешательств на тот момент было не очень много: либо процессы смотреть и уничтожать, если потребуется, либо удалять исполняемые файлы игрушек. Короче, напоминать студентам о том, кто они есть на самом деле.
Почему нам не подходили программы удаленного управления, которые были хорошо известны в Интернете? Ну, во-первых, одни стоили денег. А те, которые не стоили денег, реально ничего не стоили, так как ничего не содержали в себе, чем бы можно было напугать студентов и развеселить админа. Или наоборот. Развеселить студента и напугать админа.
Во-вторых, если какая-нибудь “Цзян-юань” из группы программистов заметит самопроизвольное движение хвостатой твари вдоль гибкой оси Internet Explorer, и ветка сакуры расцветет из трея с надписью “Radmin client”, то не избежать нам кары небесной в виде убийства любыми способами ненаглядного, горячо любимого нами, клиента, изящными руками ненаглядной нашей “Цзян-юань”.
В третьих, компьютеров в нашей локальной сети около 300, и пока мы будем переключаться с одного компьютера на другой, пройдет ой как много времени. “Ой” обычно начинается от лихорадочного поиска людей, пытающихся искалечить локальную сеть любыми способами, до тупого вырубания всех компьютеров одной из аудиторий с криком «Я все видел!». Вырубания не ручного, нет: удаленного. Дядьки с рубильниками у нас перевелись.
Вернемся в Россию. Поперхнувшись картошкой (напоминаю, мы уже в России. Ни о какой сакуре или сакэ не будет и речи), я принял вариант сделать такую систему через сокеты, ибо и доступ будет беспрепятственный, и связь постоянная: по принципу клиент-сервер. Второй раз поперхнуться так и не удалось, потому что идея захватила меня с ног до головы, да и время обеда подходило к концу. Ну, админ дал добро на создание (“”…Добро! – сказал он с поднятой вверх рукой…”), дело оставалось за немногим. Немногим, как казалось мне тогда.
На следующий теплый сентябрьский денек я уже сидел и писал кости моего проекта. Одновременно делал клиентскую и серверную части. Идеи до удаленной установки клиентской части не доходило, решили обходиться автозагрузкой.
Днем я учился, а после обеда постоянно тестировал прогу в свободных аудиториях. И первая проблема, с которой я столкнулся: как сделать программу максимально незаметной. Не только в плане грандиозного вывода сообщений об ошибках в работе клиента на всеобщее обозрение, но и видимости в процессах. Нашел несколько вариантов скрытия процесса, но крики антивируса были сильнее найденного кода. Ну что ж, подумал я, тогда обойдемся просто невидимыми окнами.
Потянулись длинные дни и ночи безумного кодинга и поиска различных решений для поставленных задач. Функциональность программки на первых этапах была скромной, зато ошибок с каждой версией было предостаточно. Поступал по принципу: залатал ошибку – создал еще парочку. Чтоб скучать не пришлось. Ни админу, ни мне. Ну и студентам.
Сначала я сделал просмотр процессов, выключение/перезагрузку компьютера. Затем дело перешло к наблюдению за состоянием удаленного рабочего стола, которое на первых порах конкретно грузило проц. Как поступать в таких случаях, когда твоя разработка работает медленнее или хуже, чем аналогичная другая? Правильно, посмотреть, за счет чего аналогичная так работает. Проц удаленного компьютера сразу же передумал и стал грузиться на 5%.
За удаленной установкой дело долго не стояло – “пикзец” пришел на помощь. Полный. Потому что он (пикзец то бишь, программа такая) позволяет удаленно запускать приложения, если есть всеадминсткие права. Пришлось написать скрипт для удаленной установки клиента для себя любимого, чтобы не тревожить спящего админа. Почему спящего? Потому что после тяжелого рабочего дня ( хотя обычно уже после обеда) он садился рядом, на стул, и медленно засыпал. Я периодически направлял спящее тело админа в сторону, приводящую его плоть в вертикальное равновесие (нет, не в то самое место, не подумайте, я говорю о пространстве), иначе движение в левую или правую часть пространства неминуемо привело бы не только к гибели человека, встретившего смерть от пола, покрытого жестким линолеумом, но и потери замечательного бета-тестера. А этого нельзя было допустить никоим образом.
Итак, ваши глаза дошли до этого места и вы уже прочитали мою эпопею, изложенную выше? Отлично. Если нет, смахните слезу от усталости со щеки и переместитесь туда, где остановились.
Назвал я свое детище "NetDominator", в переводе что-то типа "сетевой властитель". Можно было в стиле "Александр Македонский", но обжимать сетевые провода серединой 4-ого века не поднялась рука.
Свидетельство о публикации №213062101312