Одна голова хорошо, а две лучшеКрис Касперски Хакер, номер #104, стр. 036 Грамотное использование двух компьютеров дома Чтобы обустроить свой рабочий стол по-хакерски (всем пионерам на зависть), необходимо разобраться с хитросплетениями кабелей, научившись подключать к одному компьютеру несколько мониторов и, наоборот, запитывать свой основной монитор от нескольких компьютеров, объединяя их в домашний кластер или даже группу кластеров, перемалывающих пароли со скоростью реактивного истребителя на форсаже. Два компьютера — это не роскошь, а суровая хакерская необходимость. Автор всегда мечтал о хакерской норе, окруженной по периметру мониторами со змеящимися кабелями, в полумраке которой можно было бы ломать программы и вскрывать всевозможные защиты. Однако при воплощении этой идеи в жизнь неожиданно выяснилось, что держать на своем рабочем столе более двух мониторов не только неудобно, но еще и вредно для здоровья, а свои глаза хакер должен беречь, поскольку они его важнейший инструмент (после головы, конечно). Зачем может понадобиться еще один компьютер? Ну мало ли, для экспериментов с альтернативными операционными системами, например с QNX, Linux, xBSD, Vista и т.д., или для удаленной отладки драйверов через Windows Kernel Debugger. Виртуальные машины типа VM Ware в какой-то степени снижают актуальность проблемы, позволяя держать на одном компьютере сколько угодно операционных систем, но… как же они тормозят! К тому же если потребуется отладить драйвер физического устройства, то без прямого доступа к железу тут уже не обойтись. Некоторые операции (обработка цифрового звука и видео) пожирают все системные ресурсы, и работать на таком компьютере становится некомфортно. А при видеозахвате вообще не рекомендуется запускать посторонние приложения, чтобы не терять кадры. Но ведь не сидеть же и не курить в сторонке! Лучше выделить для этой цели отдельный компьютер! Не стоит также забывать и о том, что хакер должен тестировать свои программы на различных аппаратных платформах: от Intel до AMD, включая 32- и 64-разрядные версии, в противном случае можно здорово огрести. И хотя существуют эмуляторы AMD x86-64, работающие на x86-платформах (взять тот же BOCHS, в народе прозванный борщом), они все еще содержат множество ошибок… Короче говоря, автор всячески агитирует за «живое» железо. Компьютеров должно быть несколько, как минимум два (у самого автора их шесть!). При нынешних ценах на кремний купить их для хакера не проблема. Вот только где разместить такое количество мониторов?! Электронные коммутаторы Идея подключения к одному компьютеру нескольких мониторов возникла не вчера и даже не позавчера, а очень давно. С технической точки зрения тут все очень просто. Берем провода от одного, двух, трех мониторов и подключаем их к видеокарте через электронный коммутатор — он хоть и дороже механического, зато намного надежнее. Аналогичным путем поступаем с мышью и клавиатурой, получая в результате настоящий терминал, управляющий остальными компьютерами, словно штурвалом. Обустроив таким образом свое рабочее место, мы можем взаимодействовать с практически неограниченным количеством компьютеров (в том числе и морально устаревших, используемых в качестве плацдарма для игрушек времен MS-DOS). Очень удобно! К тому же совсем недорого. Порядка сотни долларов или около того. Спрашивай в аптеках, тьфу, в компьютерных салонах KVM-свитчи, получившие свое название по первым буквам слов keyboard (клавиатура), video (видео) и mouse (мышь). В зависимости от модели количество обслуживаемых терминалов варьируется от двух (в самых простых вариантах) до шести. Больше шести автор еще не встречал, хотя и не видит никаких ограничений, которые могли бы воспрепятствовать этому. Максимальная длина кабеля между компьютером и свитчем обычно составляет 10 метров (реже 100 метров), чего для наших целей более чем достаточно. При желании можно рулить компьютером, установленным в соседней комнате или даже вынесенным на балкон для уменьшения шума (особенно это актуально для домашних серверов, работающих в круглосуточном режиме). Более совершенные (а значит, и дорогостоящие) устройства с гордым названием «коммутаторы» несут на своем борту процессор, сетевую карту, буферную память и прочие электронные компоненты, позволяющие кодировать аналоговый сигнал и передавать его в цифровой форме по Ethernet-сетям. Это существенно упрощает прокладку кабелей и значительно увеличивает их предельно допустимую длину, позволяя управлять компьютерами хоть из соседней комнаты, хоть из другого города. Более удобного средства управления офисным компьютерами из своего дома, пожалуй, и не найти. Довольно хорошо зарекомендовала себя фирма Minicom, предлагающая трудовому народу две вполне удачные модели - Phantom Dial-Up Remote Access и Smart IP Extender Switch Over IP. Первая продается по цене порядка $800, вторая же — $3500. Вот и думай, стоит ли это удовольствие таких денег или нет, особенно если речь идет не о промышленном использовании, а домашней компьютерной системе. Но деньги - это еще что! KVM-свитчи в силу чисто физических ограничений едва держат картинку 800x600/60(75) Гц, а 1280х1024/60 Гц — это уже вертикальный предел, да и тот весь дрожащий, малоконтрастный и замутненный. Коммутаторы дают намного более качественную картинку (цифровой сигнал как-никак), но мало кто из них может похвастаться поддержкой режимов свыше 800x600. Короче говоря, для управления сервером вполне сойдет, но для полноценной работы явно не годится. Впрочем, к тем, чьей превалирующей средой обитания является консоль, сказанное не относится. Даже самые дешевые свитчи держат консольные режимы вполне корректно, без заметных искажений. Два входа одного монитора Практически все современные LCD-мониторы имеют два входа: аналоговый (D-SUB), оставленный для совместимости с устаревшими видеокартами, и цифровой (DVI-D), ориентированный на видеокарты нового поколения. Некоторые мониторы автоматически определяют, к какому именно входу подключена видеокарта, но большинство остальных имеют специальный селектор каналов, как правило, вынесенный на отдельную панель. Нажатием всего одной кнопки мы можем переключаться с аналогового входа на цифровой и тут же возвращаться обратно. А что если взять два компьютера, поставить их рядышком и подключить к одному монитору? Первый — через аналоговый вход, второй — через цифровой. Сложнее справиться с мышью и клавиатурой. Вообще говоря, две клавиатуры легко размещаются на столе и смотрятся весьма сексуально, к тому же, поскольку и мышь, и клавиатура представляют собой PS/2-устройства, их без особой опаски можно перетыкать прямо на лету, не боясь чего-нибудь спалить. Если перетыкать неинтересно - пожалуйста, к твоим услугам самый дешевый KVM-свитч, который только найдется на рынке. Достоинство предложенной технологии в исключительно высоком качестве картинки (фактически мы получаем картинку через его «родной» интерфейс), а недостаток в ограниченной длине соединительных кабелей (всего несколько метров) и невозможности подключения третьего монитора. То есть если у нас есть четыре компьютера, то без двух мониторов все равно не обойтись. Но, согласись, два монитора - это все-таки не четыре. К тому же применение одного способа не исключает использование другого. Допустим, у нас имеется два основных компьютера, подключенных к одному монитору через аналоговый и цифровой входы. Остальные компьютеры можно подсоединить через коммутаторы к тому же самому или другому монитору, смирившись с низким качеством картинки, либо же выделить для них еще один монитор с прямым подключением, если падение качества недопустимо. Домашний кластер своими руками При наличии нескольких компьютеров (большей частью бесцельно простаивающих и впустую транжирящих компьютерное время) их можно объединить в кластер, что обойдется намного дешевле покупки многопроцессорной машины. К сожалению, операционные системы семейства Windows позволяют распараллеливать между соседними компьютерами только специальным образом написанные приложения, поддерживающие механизм удаленного вызова процедур (он же Remote Procedure Call, или сокращенно RPC). Microsoft Platform SDK (распространяемый бесплатно) и MSDN (прилагаемый к компилятору Visual Studio) содержат множество примеров RPC-программ, исполняющихся на нескольких компьютерах и обменивающихся полученными данными с центральным терминалом (условно называемым сервером). Вот только к реальной жизни они не имеют никакого отношения. В реальной жизни нам приходится иметь дело с уже написанными программами, не поддерживающими механизм RPC, и даже при наличии исходных текстов (а откуда они у нас) поддержку RPC реализовать просто так не получится. Но, если хорошенько подумать головой и немножко поработать руками, можно найти другой путь, которым мы, собственно говоря, и пойдем. Допустим, нам необходимо пережать цифровое видео, добытое с DVD. Сжатие в XVID/DivX/x264 с максимальным качеством даже на самых быстрых компьютерах занимает десятки часов и при этом ни один популярный кодек не поддерживает кластеризации. Наша задача - заставить его исполняться на N компьютерах, причем это необязательно должны быть компьютеры идентичной конфигурации с одинаковым быстродействием. Главное, чем больше N, тем лучше для нас. Берем любой видеоредактор (например, горячо любимый автором и бесплатно распространяемый AVIDemux), режем исходный файл на куски размером, пропорциональным мощности наших компьютеров, и сжимаем каждый видеофрагмент независимо от всех остальных, а полученные «пережитки» склеиваем на самом мощном компьютере (благо этом процесс занимает совсем немного времени). Аналогичным образом обстоят дела и с перебором паролей. Практически все хакерские ломики позволяют задавать интервал перебора, чем мы успешно и воспользуемся, раскидав переборщики по сети. Причем совсем не обязательно делать это вручную. Достаточно написать несложный скрипт, генерирующий пакетные файлы, вызывающие переборщики с заданными параметрами. Также можно ускорить дизассемблирование и компиляцию. Поскольку большинство проектов состоит более чем из одного файла, то процедура их сборки элементарным образом распараллеливается между несколькими компьютерами. Заключение Естественно, возможности домашних кластеров этим не исчерпываются. Главное — иметь фантазию, а задействовать пустующие вычислительные мощности не проблема! Один компьютер — два монитора! Иногда приходится решать прямо противоположную задачу, подключая к компьютеру сразу два монитора: один (стоящий на столе) — для работы, другой (прикрученный к потолку над кроватью) — для просмотра видео и экзотических фильмов, способствующих бурному занятию сексом (главное, чтобы в самый ответственный момент монитор не отвинтился и не прервал весь процесс). Как это можно сделать? Технически проще, надежнее, качественнее и дешевле - нарыть видеокарту с двумя выходами. Они бывают разные: либо оба аналоговые, либо один аналоговый, а другой цифровой. Карты с двумя цифровыми выходами в поле зрения автора еще не попадали, хотя он вполне допускает их существование. Казалось бы, что может быть проще?! Втыкаем разъемы в нужном порядке (в ненужном они ни за что не воткнутся, благо производители позаботились). Включаем компьютер и… на первом (основном) мониторе все нормально, а на втором либо черный экран, бездонный, как ночное небо, либо рабочий стол, окна приложений, а вместо видео — фиолетовый квадрат. Что это за беда такая и как ее побороть? Хорошо, карта имеет два выхода, но она не знает, как ими распорядиться. За это отвечает драйвер. Второй монитор может быть совершенно независим от первого и выдавать совсем другую информацию. Соответствующие API-функции появились уже давно (кажется, начиная с Windows 98), однако мыщъх'у до сих пор не известно ни одной популярной программы, в которой они были бы задействованы. Другой вариант — поставить два монитора рядом, расщепив рабочий стол пополам и увеличив тем самым горизонтальное разрешение вдвое. Дополнительная программная поддержка в этом случае не требуется (достаточно драйвера и видеокарты), однако работать с таким «чудом техники» без содрогания невозможно, и потому оно идет лесом (впрочем, широкоформатные фильмы на нем смотреть довольно приятно, естественно, с расстояния не меньше метра). Вариант номер три — клонирование мониторов: то, что видно на одном мониторе, будет видно и на другом. За исключением, пожалуй, видеофильмов. А все потому, что для увеличения производительности большинство видеоплееров использует так называемый режим оверлея (overlay mode), в котором видеопоток проходит транзитом сквозь карту прямо на монитор, минуя видеопамять и другие узлы, участвующие в клонировании. Побороть ситуацию можно двумя путями: либо приобрести карту, поддерживающую полноценное клонирование на аппаратном уровне без помощи со стороны драйвера (например, Matrox Millenium G450), либо перевести видеоплеер в RGB-режим. К сожалению, далеко не все видеоплееры умеют это делать. Вот, например, BSPlayer и Mplayer – умеют, а штатный Microsoft Media Player – нет. Покажем, как форсировать RGB-режим в BSPlayer'е. Это просто! В диалоговом окне Preferences выделяем пункт Video (расположен слева), затем переходим к вкладке Video Rendering (справа), и там, в Rendering mode находим нужный нам Internal Render RGB mode, после чего жмем ОК и с удовлетворением смотрим фильм на двух мониторах сразу. Внимание: RGB-режим слегка замедляет производительность и может приводить к нежелательным искажениям цветов, но… тут уже или дешевая карта с программным клонированием и невысоким качеством, или будь любезен раскошелиться на нормальное железо. WWW www.paul.sladen.org/lights-out/riloe.html — обзор систем удаленного управления (на английском языке); www.realweasel.com/intro.html — описание альтернативной платы удаленного управления, микрокод которой распространяется по открытой лицензии (на английском языке); www.kvms.com — технические характеристики огромного количества систем удаленного управления (преимущественно KVM-коммутаторов, на английском языке); www.42u.com/telereach_bk.htm — описание хорошего KVM-коммутатора TR364 (на английском языке); http://redlib.narod.ru/asmdocs/asm_doc_07.zip — архитектура ввода-вывода персональных ЭВМ IBM PC. |