2PC1MON

два компьютера -один монитор,\\ два монитора -один компьютер

крис касперски, ака мыщъх, a.k.a nezumi, a.k.a. souriz, a.k.a. elraton, no-email

чтобы обустроить свой рабочий стол воистину по-хакерски (всем пионерам на зависть) необходимо разобраться с хитросплетениями кабелей, научившись подключать к одному компьютеру несколько мониторов и, наоборот, «запитывать» свой основной монитор от нескольких компьютеров, объединяя их в домашний кластер или даже группу кластеров, перемалывающих пароли со скоростью реактивного истребителя на форсаже.

Два компьютера — это не роскошь, а суровая хакерская необходимость. Мыщъх всегда мечтал о хакерской норе, окруженной по периметру мониторами со змеящимися кабелями, в полумраке которых можно было бы ломать программы и точить ништяки, однако, при воплощении этой идеи в жизнь неожиданно выяснилось, что держать на своем рабочем столе более двух мониторов не только неудобно, но еще и вредно для здоровья, а свои глаза хакер должен беречь, ибо они — его важнейший инструмент (после головы, конечно).

Зачем может понадобиться еще один компьютер? Ну мало ли, для экспериментов с альтернативными операционными системами, например (QNX, Linux, xBSD, Висла, etc) или удаленной отладки драйверов через Windows Kernel Debugger. Виртуальные машины типа VM Ware в какой-то степени снижают актуальность проблемы, позволяя держать на одном компьютере сколько угодно операционных систем, но… как же они тормозят!!! К тому же, если потребуется отладить драйвер физического устройства, то без прямого доступа к железу тут уже не обойтись.

Некоторые операции (обработка цифрового звука и видео) пожирают все системные ресурсы и работать на таком компьютере становится некомфортно, а при видео-захвате вообще не рекомендуется запускать посторонние приложения, чтобы не терять кадры. Но ведь не сидеть же и не курить в сторонке! Лучше выделить для этой цели отдельный компьютер!

Не стоит так же забывать и о том, что хакер должен тестировать свои программы на различных аппаратных платформах: от Intel до AMD, включая 32x и 64-разрядные версии, в противном случае можно здорово огрести. И хотя существуют эмуляторы AMD x86-64, работающие на x86-платформах (взять тот же BOCHS, в просторечии прозванный борщом), они все еще содержат множество ошибок…

Короче говоря, мыщъх агитирует за «живое» железо. Компьютеров должно быть как минимум два (у самого мыщъх'а— шесть). При нынешних ценах на кремний купить их для хакера не проблема. Вот только где разместить такое количество мониторов?! Ведь хакеры все-таки живут в норах, а не в хоромах!

Рисунок 1 хакер, со всех сторон окруженный мониторами

Идея подключения к одному компьютеру нескольких мониторов возникала не вчера, и даже не позавчера, а очень давно возникла. С технической точки зрения тут все очень просто. Берем провода с одного, двух, трех мониторов и подключаем их к видео-карте через электронный коммутатор — он хоть и подороже механического будет, зато намного надежнее. Аналогичным путем поступаем с мышью и клавиатурой, получая в результате настоящий терминал, управляющий остальными компьютерами словно штурвалом.

Рисунок 2 обитель мыщъх'а: два монитора — четыре компьютера

Обустроив таким образом свое рабочее место мы можем «общаться» практически с неограниченным количеством компьютеров (в том числе и морально устаревших, используемых в качестве плацдарма для игрушек времен MS-DOS). Очень удобно!!! К тому же совсем недорого. Порядка сотни долларов или около того. Спрашивайте в аптеках, тьфу, в компьютерных салонах KVM-stitch'и, получившие свое название по первым трем буквам: Keyboard (Клавиатура), Video (Видео) и Mouse (Мышь).

В зависимости от модели количество обслуживаемых «терминалов» варьируется от двух (в самых простых вариантах) до шести (больше шести мыщъх еще не встречал, хотя не видит никаких теоретических ограничений, препятствующих этому). Максимальная длина кабеля, между компьютеров и свичем обычно составляет десять (реже сто) метров, чего для наших целей более чем достаточно. При желании можно рулить компьютером, установленным в соседней комнате или даже вынесенном на балкон для уменьшения шума (особенно это актуально для домашних серверов, работающих в круглосуточном режиме).

2pc1mon_image_2.jpg

Рисунок 3 KVM коммутатор за работой

Более совершенные (а, значит, и дорогостоящие) устройства (с гордым названием коммутаторы) несут на своем борту процессор, сетевую карту, буферную память и прочие электронные компоненты, позволяющие закодировать аналоговый сигнал и передать его в цифровой форме по Ethernet сетям, что существенно упрощает прокладку кабелей и значительно увеличивает их предельно допустимую длинную, позволяя управлять компьютерами хоть их соседней комнаты, хоть из другого города. Более удобного средства для управления офисным компьютерами из своего дома, пожалуй, и не найти.

Довольно хорошо зарекомендовала себя фирма Minicom, предлагающая трудовому народу две вполне удачные модели — PhantomDial-UpRemoteAccess и Smart IP Extender Switch Over IP. Первая стоит в районе $800, вторя же — $3500. Вот и думай стоит ли это удовольствие таких денег или нет, особенно, если речь идет не о промышленном использовании, а домашней компьютерной системе.

2pc1mon_image_3.jpg

Рисунок 4 внешний вид типичного коммутатора

Но деньги это еще что!!! KVM-switch'и в силу чисто физических ограничений едва-едва держат картинку 800×600 60(75) Hz, 1280х1024/60 Hz это уже вертикальный предел, да и тот весь дрожащий, малоконтрастный и замутненный. Коммутаторы дают намного более качественную картинку (цифровой сигнал как ни как), но редко кто из них может похвастаться поддержками режимов свыше 800×600.

Короче говоря, для управления сервером вполне сойдет, но для полноценной работы явно не годится. Впрочем, для тех, чьей превалирующей средой обитания является консоль, сказанное не относится. Даже самые дешевые switch'и держат консольные режимы вполне конкретно без заметных искажений.

  1. Remote Insight «Lights Out» boards:
    1. обзор систем удаленного управления (на английском языке) http://www.paul.sladen.org/lights-out/riloe.html;
  2. Remote Insight Lights-Out Edition II:
    1. описание платы удаленного управления от Hewlett-Packard с возможностью заказа по Интернету (на английском языке): http://h18004.www1.hp.com/products/servers/management/riloe2/server-slot-matrix.html;
  3. PC Weasel 2000:
    1. описание альтернативной платы удаленного управления, микрокод который распространяется по открытой лицензии (на английском языке): http://www.realweasel.com/intro.html;
    1. технические характеристики огромного количества систем удаленного управления (преимущественно KVM-коммутаторов, на английском языке);
  4. Raritan IP-Reach TR364:
    1. описание хорошо KVM-коммутатора TR364 (на английском языке): http://www.42u.com/telereach_bk.htm;
  5. Архитектура ввода-вывода персональных ЭВМ IBM PC:
    1. электронная версия книги, посвященной устройству IBM PC, которую настоятельно рекомендуется прочитать перед разработкой собственной системы удаленного управления (на русском языке): ; http://redlib.narod.ru/asmdocs/asm_doc_07.zip;
  6. Ralf Brown Interrupt List:
    1. электронный справочник по всем прерываниям, портам ввода/вывода, «волшебным» адресам памяти, включая нестандартные расширения и недокументированные возможности (на английском языке) http://www.ctyme.com/rbrown.htm;

Практически все современные LCD-мониторы имеют два входа: аналоговый (D-SUB), оставленный для совместимости с устаревшими видео-картами, и цифровой (DVI-D), ориентированный на видео-карты нового поколения. Некоторые мониторы автоматически определяют к какому именно входу подключена видео-карта, но большинство остальных имеют специальный селектор каналов, как правило, вынесенный на отдельную панель. Нажатием всего одной кнопки мы можем переключаться с аналогового входа на цифровой и тут же возвращаться обратно.

Рисунок 5 два выхода одного монитора

А что если взять два компьютера, поставить их рядышком и подключить к одному монитору? Первый — по аналоговому входу, второй — по цифровому. Сложнее справиться с мышью и клавиатурой. Ну, вообще-то, две клавиатуры легко размещаются на столе и смотреться весьма сексуально, к тому же, поскольку и мышь, и клавиатура представляют собой PS/2 устройства, то их без особой опаски можно перетыкать прямо на лету, не боясь чего-нибудь спалить. Если перетыкать не интересно, пожалуйста, к нашим услугам самый дешевый KVM-switch, который только найдется на рынке.

Рисунок 6 простой механический селектор, переключающий мышь с клавиатурой (без видео) купленный на радио-рынке за $6.

Достоинство предложенной технологии в исключительно высоком качестве картинке (фактически, мы смотрим монитор через его «родной» интерфейс), а недостаток — в ограниченной длине соединительных кабелей (всего несколько метров) и невозможностью подключения третьего монитора. То есть, если у нас есть четыре компьютера, то без двух мониторов все равно не обойтись. Но, согласитесь, два монитора это все-таки не четыре.

К тому же, выбор одного способа не исключает использование другого. Допустим, у нас имеется два основных компьютера, подключенные к одному монитору через аналоговый и цифровой входы. Остальные компьютеры можно подключить либо через коммутаторы к тому же самому или другому монитору, смирившись с низким качеством картинги, или же выделив для них еще один монитор с прямым подключением, если падение качества недопустимо.

Вообразите себе семью, где муж и жена — оба программисты и не прикладники какие-нибудь, а самые настоящие хакеры, втыкающие в мониторы все дни и ночи напролет. Мониторы естественно, находятся в различных плоскостях времени-пространства, разделенного этажеркой для создания рабочей атмосферы полного уединения. Но это — в теории. На практике же им все равно приходится взаимодействовать друг с другом самым непотребным образом. То один хочет показать, что твориться у него на экране, то другой. И форсировать книжные завалы, рискуя спотыкнуться о распечатки — удовольствие не из приятных. Намного проще (и практически) соединить мониторы крест-накрест, чтобы в любой момент каждый мог посмотреть, чем сейчас занимается другой.

Кстати говоря, это можно сделать и тайно. В целях шпионажа за своей подопечной. Чем она там занимается?

Рисунок 7 рабочее место мыщъих'и

Имея в своем распоряжении несколько компьютеров (большей частью бесцельно простаивающих и впустую транжирящих компьютерное время), возникает заманчивая идея объединить их в кластер, который обойдется намного дешевле покупки многопроцессорной машины. К сожалению, операционные системы семейства Windows позволяют распараллеливать между «соседними» компьютерами только специальным образом написанные приложения, поддерживающие механизм удаленного вызова процедур — он же Remote Procedure Call или, сокращенно, RPC.

Microsoft Platform SDK (распространяемый бесплатно) и MSDN (прилагаемый к компилятору Visual Studio) содержат множество примеров RPC-программ, исполняющихся на нескольких компьютеров и обменивающимися полученными данными с центральным терминалом (условно называемом сервером). Вот только к реальной жизни они не имеют никакого отношения.

В реальной жизни нам приходится иметь дело с уже написанными программами, механизма RPC не поддерживающими и даже при наличии исходных текстов (а откуда они у нас), поддержку RPC за просто так не получится. Но, если хорошенько подумать головой, и немножко поработать руками, можно найти другой путь, которым, мы, собственно говоря, и пойдем.

Допустим, нам необходимо пережать цифровое видео, добытое с DVD. Сжатие в XVID/DivX/x264 с максимальным качеством даже на самых быстрых компьютерах занимает десятки часов и при этом ни один популярный кодек не поддерживает кластеризации. Наша задача заставить его исполняться на N компьютерах, причем, это не обязательно должны быть компьютеры идентичной конфигурации с одинаковым быстродействием. Главное, чем больше N, тем лучше для нас.

Рисунок 8 внешний вид бесплатного видео-редактора AVIDemux

Берем любой видео-редактор (например, горячо любимый мыщъх'ем бесплатно распространяемый AVIDemux), режем исходный файл на куски с размером пропорциональным мощности наших компьютеров, и сжимаем каждый видеофрагмент независимо от всех остальных, а полученные пережитки склеиваем на самом мощном компьютере (благо этом процесс занимает совсем немного времени).

Аналогичным образом обстоят дела и с перебором паролей. Практически все хакерские ломики позволяют задавать интервал перебора, чем мы с успехом и воспользуемся, раскидав переборщики по сети. Причем, совсем необязательно делать это вручную. Достаточно написать несложный скрипт, генерирующий пакетный файлы, вызывающие переборщики с заданными параметрами.

Так же можно ускорить дизассемблирование и компиляцию. Поскольку, большинство проектов состоят более чем из одного файла, то процедура их сборки элементарным образом распараллеливается между несколькими компьютерами.

Естественно, возможности домашних «кластеров» на этом не ограничиваются. Главное — фантазию иметь! А задействовать пустующие вычислительные мощности — не проблема!

Иногда приходится решать прямо противоположную задачу, подключая к компьютеру сразу два монитора. Один (стоящий на столе) — для работы, другой (прикрученный к потолку над кроватью) — для просмотра видео и экзотических фильмов, способствующих бурному занятию сексом (главное, чтобы в момент «X» монитор не отклеился и не прервал весь процесс).

Как это можно сделать? Технически проще, надежнее, качественнее и дешевле нарыть видео-карту с двумя выходами. Они бывают разные: либо оба аналоговые, либо один аналоговый, а другой цифровой. Карты с двумя цифровыми выходами в поле зрения мыщъх'а еще не попадали, хотя, он вполне допускает их существование.

Казалось бы — что может быть проще?! Втыкаем разъемы в нужном порядке (в ненужном они ни за что не воткнутся — благо производители позаботились). Включаем компьютер и… на первом (основном) мониторе все ок, на втором же — либо скучный черный экран, бездонный как ночное небо, либо виден рабочий стол, окна приложений, а вместо видео — фиолетовый квадрат. Что это за беда такая и как ее побороть?

Хорошо, карта имеет два выхода, но не знает как ими распорядится. За это отвечает драйвер. Второй монитор может быть совершенно независим от первого и выдавать абсолютно другую информации. Соответствующие API-функции появились уже давно (кажется, начиная с Windows 98), однако, мыщъх'у не известно ни одной популярной программы, в которой они были бы задействованы.

Другой вариант — поставить два монитора рядом, расщепив Рабочий Стол пополам и увеличив тем самым горизонтальное разрешение вдвое. Дополнительная программная поддержка в этом случае не требуется (достаточно драйвера и видео-карты), однако работать с таким «чудом техники» без содрогания невозможно и потому оно идет лесом (впрочем, широкоформатные фильмы на нем довольно приятно смотреть, естественно, с расстояния не меньше метра).

Вариант номер три — клонирование мониторов: то, что видно на одном мониторе, будет видно и на другом. За исключением, пожалуй, видеофильмов. А все потому, что для увеличения производительности, большинство видеоплееров использует так называет режим оверлея (overlay mode), в котором видео-поток проходит «транзитом» сквозь карту прямо на монитор, минуя видеопамять и другие узлы, участвующие в клонировании.

Рисунок 9 выбор режима «клонирования» мониторов в драйвере видео-карты (на примере MVIDIA)

Поборот ситуацию можно двумя путями — либо приобрести карту, поддерживающую полноценное клонирование на аппаратном уровне без помощи со стороны драйвера (например, Matrox Millenium G450), либо перевести видеоплеер в RGB режим. К сожалению, далеко не все видеоплееры умеют это делать. Вот например, BSPlayer и Mplayer – умеют, а штатный Microsoft Media Player – нет.

Покажем, как форсировать RGB-режим в BSPlayer'е. Это просто! В диалоговом окне «Preferences» выделяем пункт «Video» (расположен слева), затем переходим к вкладке «Video Rendering» (справа), и там, в «Rendering mode» находим нужный нам «Internal Render RGB mode», после чего жмем «ОК» и с удовлетворением смотрим фильм на двух мониторах сразу (внимание: RGB-режим слегка замедляет производительность и может приводить к нежелательным искажениям цветов, но… тут уж или дешевая карта с программным клонированием и невысоким качеством или будьте любезны раскошелится на нормальное железо).

Рисунок 10 формированный перевод видеоплеера BSPlayer'а в RGB-режим для просмотра видео на двух мониторах сразу