21 апреля 02 года


          Не буду я цифровики сравнивать с пленочниками. "Навскидку" найти хороший цифровик на несколько дней "погонять" не удалось (а сравнивать с плохим нет смысла), а особо париться не хочется. Однако субъективные выводы сделать можно.
          По "мегапиксельности" цифровики уже пришли. 2-3мпикс покрывают 95% потребностей любительской съемки, 5мпикс покрывают еще 4.9%. Остатком (повторюсь - я говорю о "продвинутой любительской" съемке на 35мм пленку) можно пренебречь.
          По чувствительности и шумам цифровики тоже, в общем-то, уже пришли. Недостаток чувствительности цифровых "мыльниц" перекрывается высокой светосилой объектива (который в случае короткого фокусного расстояния сделать светосильным проще, а проблем от этого будет меньше, чем для 35мм мленки). Да и не такая уж и низкая чувствительность - "экв. ISO 100" умеют уже все подряд, а до 400 - всего два "щелчка" диафрагмы. Шумы - сравнивая с интернетными сэмплами с цифровых камер, я вижу, что зерно любительской Fuji Superia 100 больше шума цифровиков. Про-пленку я не хочу, поскольку совершенно не факт, что зерно будет сильно лучше. Слайд - сильно не хочу, поскольку дороже и капризней.
          Динамика. Тут у цифры пока есть проблемы - если негативная пленка не напрягаясь выдает картинку при контрастности сюжета в три-четыре "ступени" экспозиции, а "с напрягом" - и четыре-пять, то цифра, хоть и сильно выросла в этом смысле, пока либо уступает, либо стоит неразумно дорого. Впрочем, такая фотоширота потребна для совсем уж редких сюжетов, чаще она потребна при ошибках экспозиции, которые на цифре можно исправить "не отходя от кассы".
          Долгие выдержки. Практический предел в полминуты (бОльшая выдержка потребна в очень редких случаях) цифрой достигнут. Так что и тут цифра, как говорится, "пришла".

          Сдерживает пока одно. После того, как почувствуешь, что означает "большая фотоширота негатива" (а почувствовать это без слайд-сканера или минилаба с цифровой печатью не получится никак), на "восемь бит на цвет" не хочется идти ни за какие коврижки. А камеры с 10 или 12 битами на цвет пока стоят достаточно конкретных денег. Которых хватит на десять ящиков пленки...
          Кстати. Коллекция [http://dibr.nnov.ru/fotos-1.html] насканированного. Может, кому понравится.
          Для начала - извинюсь перед всеми теми, у кого таки разорвалась связь. Я, честно говоря, не ожидал что использованная мной "особенность реализации" обмена данными с модемом не исправлена лет десять назад - когда её впервые придумали. Лицензионные ограничения - лицензионными ограничениями, но обходных путей есть предостаточно, и что до сих пор можно с заметной вероятностью и потрясающей легкостью "сбить" с сети несчастного пользователя не-самого-крутого-модема...
          ...Жила-была фирма Hayes. В прошедшем времени - поскольку уже три года, как фирма закрыта. Но в свое время фирме hayes, как когда-то intel, удалось попасть "в струю". И как сейчас мы говорим "Intel-совместимый процессор", так мы говорим "hayes-совместимый модем", модем, поддерживающий разработанный черт-те когда и ставший фактическим стандартом набор команд управления модемом.
          У модемов, к сожалению, не так уж много "дырок", через которые ими можно управлять. Собственно, кроме нескольких проводков, передающих простые двоичные сигналы типа "есть несущая" или "модем готов", для передачи чего-нибудь чуть более сложного (команд и данных) есть всего два провода - "туда" и "обратно". И по ним в модем уходят и команды ("набрать номер", "ответить на звонок"), и данные (то, что мы качаем по модему, сидя в интернет).
          Для того, чтобы различать команды и данные, было решено, что в модем может находиться либо в "командном режиме", и тогда все байтики, попадающие в порт, интерпретируются как команды, либо в режиме передачи данных - тогда все байтики передаются на удаленный конец и не интерпретируются. Из командного режима в режим данных модем попадает вполне детерминированным образом - по команде, :-) из режима данных в командный можно "свалиться" по пропаданию несущей (когда уже некуда передавать данные), или же по "опусканию" сигнала DTR компьютером - но при этом модем как правило принудительноразрывает связь.
          Для тех случаев, когда связь рвать не надо, и/или DTR по какой-то причине недоступен (скажем, я зашел telnet'ом на удаленный компьютер и запустил "терминалку" там), была придумана очень хитрая последовательность, обнаружив которую в потоке данных, модем переходил в командный режим. Последовательность ну очень хитрая - "три плюса", то бишь, "+++" без кавычек. Ведь правда, даже в осходниках программ на Си++ такого не встретишь?
          Правда, вскоре выяснилось, что докуметнацию, специфицирующую тот факт, что при обнаружении "трех плюсов" модем переходит в командный режим, как бы нельзя передать по модему, соответствующему этой спецификации. Поскольку он, обнаружив в тексте документа "три плюса", послушно переставал передавать данные, переходя в командный режим. Просекшая фишку фирма hayes (на систему команд которой уже успели "подсесть" производители), придумала (и запатентовала) последовательность "пауза - три плюса - пауза", которая уж точно не воспроизведется сама по себе в передаваемых по модему данных. Модемы фирмы hayes перестали падать при передаче документации по модемам фирмы hayes, другим же фирмам пришлось либо лицензировать применение паузы вокруг "трёх плюсов", либо изобретать что-то своё.
          Проблема, в общем-то, не техническая, а финансово-политическая: чтобы быть "100% hayes-compatible" надо поддерживать "три плюса", а чтобы иметь право распознавать паузу - надо было платить фирме hayes. Так что у модемов, выпущеных серьезными фирмами, такой проблемы не было, да и более мелкие фирмы - какая им разница, 100% оно совместимо, или 99.9%, лишь бы работало. Могли бы от "трех плюсов" и отказаться. Тем не менее...
          И тем не менее. Даже несмотря на. На фирму hayes и злобные лицензионные ограничения.
          "Три плюса" нужны как бы очень редко - в основном при "ручной" возне с модемом. Они заведомо не используются при работе в интернет - в принципе, я видел реализации ppp, в которых можно было "вмешаться" вручную в работу модема уже после установки ррр-соединения, но это скорее из области экзотики (и отладочно-настроечных мероприятий), а стандартный виндовый "удаленный доступ" про такое и думать не знает. Почему же производители модемов не добавляют в "драйвера модемов" (которые для windows сводятся просто к списку команд) команду не реагировать на "три плюса" в процессе сеанса связи? И совместимость останется, и падать перестанет. Не вижу причин. Неужели действительно "не додумались" - ведь это решает проблему на 99.9% и стоит ровно $0.00?
          Ладно, хорошо, это обходной маневр и вообще хакерский трюк. В протоколе PPP, по которому мы как правило ходим в интернет, предусмотрено (аж в двух местах) "экранирование" символов, которые по какой-либо причине не могут быть переданными по каналам связи (являются управляющими). Казалось бы... ан нет! Спасибо Alex Efros, тыкнувшего пальчиком в документацию - в PPP не предусмотрена возможность экранировать символы с кодами 0x20 - 0x3f. "Плюс" попадает в этот диапазон - экранировать его средствами PPP не получится. Во всяком случае, штатным образом.
          С какого перепуга разработчики PPP решили, что диапазон "печатных символов" полностью безопасен - неясно. С какого перепоя за всё время существования модемов не догадались расширить стандарт - тем более не понятно.
          С вин-модемами и софт-модемами вообще непонятки: они не обязаны быть (и, стого говоря, и не являются) hayes-совместимыми, и потому им нет причин как-то реагировать на +++, однако же они тоже падают! Почему?!
          Фирмы hayes уж три года как нет [http://www.algo.ru/daily/99/01/11/12.asp]. О каких лицензиях может идти речь? Неужели за три года производители модемов так и не смогли сообразить, и включить guard delay в прошивки модемов?

          В-общем, сухой остаток такой. Если заставить компьютер пользователя выдать в модем строчку, содержащую заветные "три плюса" - с некоторой вероятностью модем перейдет в командный режим и, как сдедствие, разорвет соединение. Простейший способ - посылка icmp echorequest (по простому - ping), в поле данных которого подставлены заветные три плюса. Компьютер жертвы отвечает icmp echoreply, повторяя пакет данных, и... загоняя в модем пресловутые три плюса. Я воспользовался тэгом <img src=+++ath0>, увидев который, браузер (как несложно сообразить) выдаст get-запрос, содержащий три плюса (и команду "положить трубку"). Можно отправить счастливому обладателю модема письмо с тремя плюсами в тексте, и, если он ответит "с цитированием", и если его почтовый клиент не завернет ответ в base64 или аналогичное - результат предсказуем. Если же к компьютеру есть непосредственный доступ, или он используется как gateway (прокси, роутер) во внешний мир - всё становится ещё разнообразнее.

          Чего можно добиться? Во-первых, можно хулиганить. Сбивая ping'ом юзеров на диалапе, или вот так вот сбивая несчастных посетителей сайта. Сидя в локалке с выходом наружу через модем, можно "класть" интернет для всей локалки. Если в локалке стоит почтовый сервер - достаточно отправить "наружу" одно письмо с "тремя плюсами" в тексте, и далее DoS'ом будет заниматься уже сам почтовый сервер, делая десятки попыток отправить письмо.
          Во-вторых, можно серьезно хулиганить. Ведь после +++ можно поставить не только безобидный "хэнг-ап", а и что-нибудь повеселей. Например, команду перехода в режим заливки новой прошивки - как правило из этой точки модему одна дорога - в ремонт. Прошивку, правда, залить не удастся (размер PPP-датаграммы ограничен), но попортить скорее всего удастся. Можно, выдав команд на "удержание carrier", перезвонить в "секс по телефону". Или в 02. Правда, это несерьезно - лучше, по примеру американцев, создать "провайдера" с оплатой по факту соединения (как номера 1-900 у тех же американцев, где стоимость оказанных по этому номеру услуг тебе присылают вместе со счетом от телефонной компании), и перезванивать туда. Пусть потом пользователь доказывает, что он тут не при чем.

          Оказались подвержены. Список приблизительный, и может не в точности соответствовать. Народный любимец Acorp - как внутренний, так и внешний. Вообще-то акорпы я уважал, в смысле внешние (сам бывший акорповладелец), но свой старый акорп на это не тестировал.
          Подвержены разнообразные поделки на rockwell и conexant (вроде GVC и Genius), перечислять не буду. Кстати, это отнюдь не значит, что все модемы (или даже больше половины модемов) на этих чипсетах подвержены - баг не в чипсете, он в ДНК разработчиков прошивки супервизора. Не у всех разработчиков проблемы с ДНК.
          Подвержен... "А ещё они кричали Зухель Рулез. Это у них вроде Хайль Гитлер". Zyxel Omni 56K+. Собственно, к этим полупрозрачным поделиям у меня отношение странное - когда выясняется, что во в-общем не особо дешевом модеме экономят полдоллара на трансформаторе, заменяя его довольно хлюпким кусочком кремния фирмы silabs (и который потом летит от малейшего чиха), и ставят залипающую через полгода работы релюшку... но ведь зухель официально не имеет этой ошибки [http://faqs.org.ru/hardw/comm/zyxel2.htm]! Они, эээ... "Модемы ZyXEL НЕ ИСПОЛЬЗУЮТ лицензированную ESC- последовательность фирмы Hayes. По словам Гордона Янга (Gordon Yang) они используют переменный алгоритм квантования, который выполняет задачу, по крайней мере, не хуже". Пользуются переменным алгоритмом квантования. Который к потоку байт в порту RS-232 имеет немногим большее отношение, чем к содержанию ксилита и карбамида в жвачке "дирол с вышеупомянутыми компонентами", зато "...по крайней мере не хуже". Это радует - что не хуже. Только не радует, что падает.
          Подвержен IDC 2814BXL/VR. В принципе я знал, что IDC 2814BXL+ - это "вылизанный" до последнего байтика (ну, не считая зависа DSP при определенных условиях - тут уж разработчики прошивки супервизора ничего не могут поделать) "чипсетный" модем на чипсете Lucent, а его младший брат /VR - "слегка пофиксенная" разновидность "роквеллоида стандартного", с исправлением явных ляпов по части устойчивости связи, но без особой вылизанности. Кстати, мой BXL+ почему-то не вылетает, хотя производитель к клану "крутых" не относится - крутые на чужих чипсетах не делают, крутые свои микросхемы пекут :-)

          И вечный вопрос - что делать?! Неужели смириься?
          Спасибо Роману Кондратьеву, приславшему в процессе написания этой статьи ссылку на неплохой текстик [http://www.psc.ru/sergey/bgtraq/HARDWARE/ath0DoS.html] на эту же тему. Ошибка действительно очень старая, но тогда же было найдено и "лекарство". Добавить в строку инициализации модема s2=255. Это отключит реакцию модема на +++, и должно предотвратить такие разрывы связи.

          ...И, как я уже говорил, я не понимаю, почему драйверописатели не вписали это по умолчанию. Hanlon's Razor - "Never attribute to malice that which can be adequately explained by stupidity"?



Оригинал страницы находится на http://dibr.nnov.ru/issue210402.html.(с) DiBR
При перепечатке ссылка обязательна. <<  *  >>
endmai endma endm end en