Безопасность pjl что это
Blogerator.org
Эксклюзивные ИТ-новости, обзоры и интервью
Принтер, как источник угрозы. Часть 4
Продолжаем катить нашу телегу, прошлая часть была вот тут, а начало всей серии статей про безопасность сетевых принтеров (оглавление) — ищите здесь.
Принтер должен печатать, и ничего более
Отключите на принтере все вспомогательные сервисы, до которых сможете дотянуться. Поэтому третий, самый главный и одновременно до ужаса банальный вывод звучит так: единственное, что должен делать принтер — это печатать. Худо-бедно, но печатать, больше от него ничего не требуйте!
Я показал ранее, насколько зачастую некачественная реализация встроенного ftp-сервера поставляется практически в каждом втором принтере, как безобидный telnet-сеанс позволяет скрытно блокировать работу принтера, дошла очередь показать, какое безобразие творится с web-панелью управления сетевым принтером.
Наиболее просто обход авторизации выполняется на некоторых МФУ марки Toshiba, поэтому наш практический пример посвящен именно ей. Здесь нужно просто знать прямой путь-URL на любое вложенное меню web-панели, но поскольку все эти пути стандартные на всех моделях принтера, то это не такой уж и большой секрет.
Вот пример такого произвольного пути в меню Сканирование:
Если предварительно не авторизоваться на таком принтере/МФУ и попробовать сразу перейти на одну из страниц web-панели — произойдет вполне логичный редирект на страницу c приглашением сначала ввести пароль:
Да-да, это сработала встроенная система безопасности принтера — лично я очень впечатлен таким поворотом дел. Очень хорошо, тогда добавляем дополнительный «слэш» в первоначальный адрес как показано ниже и пробуем ещё раз:
Вот это другое дело — защита, конечно, заставляет «напрячься», чтобы ввести дополнительный знак с клавиатуры, но зато теперь сразу открывается страница настроек, в которую мы и намеревались первоначально войти.
Кстати о паролях. согласитесь, как-то не эстетично лазить в чужие принтера «через окна», когда существует вполне нормальные «входные двери», и пароли — эти двери отворяющие.
Как-то кошки на душе скребут, когда вот так вот через какой прямой URL, порой нахрапом вваливаешься в чужую администраторскую зону — не эстетично это всё как-то, право.
Сразу после попадания в принтер вышеописанным методом, советую потратить немного времени, чтобы впредь чувствовать себя человеком. Зайдите в административный раздел ответственный за настройку, где перечислены поля ввода паролей и логин, после чего откройте просмотр «исходного кода страницы», как правило, тут все достаточно скучно и однообразно на многих моделях принтеров и от разных производителей.
Как видно на рис. ниже, в свойстве поля Password сразу открыто указан как бы скрытый от вас на странице звёздочками пароль. Записывайте все эти пароли на бумажку, и не лазьте в чужие принтеры какими-то окольными путями — помните, всегда важно сохранять человеческое достоинство, даже занимаясь ни пойми чем.
Дьявол носит Praeda
Тема обзора уязвимостей доступных в принтерах и МФУ достаточно огромна, но ещё один момент которого я бы хотел обязательно коснуться напоследок, это ответ на логичный вопрос: как добывается такое количество уязвимостей на принтеры?
В нашем примере мы рассмотрим специализированный исследовательский инструмент — Praeda (полное и очень глубокомысленное название: Praeda Harvesting Tool), который, несмотря на свою молодость уже успел снискать определенную известность «в узких кругах». Эта программа впервые была представлена на конференции по информационной безопасности ShmooCon 2011.
Итак, Praeda — это довольно объемный скрипт на Perl (кстати, в самом конце 2011 года принято принципиальное решение и начат процесс переноса этого проекта с языка Perl на Ruby, но это начинание пока ещё в самой начальной стадии своей реализации), который предназначен для поиска активных уязвимостей в web-панелях управления современных лазерных принтеров и МФУ, и который не только очень активно развивается в последнее время, но и содержит в себе достаточно продвинутые эвристические алгоритмы, а не только банальный fuzzing или перебор уже стандартных/известных способов взлома известных web-панелей управления.
Например, в данный момент завершается изучение и тестирование модуля расшифровки бэкапов и экспорта настроек создаваемых некоторыми известными принтерными вендорами.
Программа при своей работе рассчитывает на то, что настройки уровня безопасности МФУ и лазерных принтеров представляют из себя значения по умолчанию, поэтому она пытается выудить максимально большой объем информации с таких устройств, включая имена зарегистрированных пользователей, адреса электронной почты, адресные книги пользователей, данные аутентификации SMB, email, LDAP-пароли и т.д.
Как правило, вся подобная информация используется как стартовая точка для развития атаки на локальную сеть.
Давайте очень кратко опишем, на что способна текущая версия Praeda:
Также следует остановиться в общих чертах и на параметрах работы с этим скриптом, так как документация к нему достаточно скудная. Вот общий формат его запуска:
Здесь файл target_file содержит список-перечисление всех принтеров (их сетевых адресов), которые должны быть исследованы, записанные в формате один адрес на строчку. Аргумент tcp-port указывает на порт web-панели (допускается только одно — общее для всех значение ), а project_name — это названия вашего проекта-исследования, физически же будет создана отдельная папка с этим названием, куда будут складироваться все собранные в рамках этого запуска данные.
Вот пример запуска его диспетчера (головного файла комплекса):
Хотелось бы отметить, что различные модули Praeda, которые могут быть автоматически запущены, будут подключаться по разным протоколам и портам, отличным от указанного в строке запуска скрипта, поэтому предварительно убедитесь, что ваш локальный брандмаер лояльно настроен по отношению к этому скрипту. И последнее, для его работы требуются следующие установленные в системе Perl-модули:
LWP::Simple, LWP::UserAgent, HTML::TagParser, URI::Fetch, HTTP::Cookies, IO::Socket, HTML::TableExtract.
Наиболее известный на данный момент принтерный язык — PJL (HP Printer Job Language), — современный метод, реализующий уровень контроля заданий и расширенного управления принтером (в противоположность PCL или HP-GL/2). Так, например, он обеспечивает прозрачное переключение между языками для каждого отдельного документа, вывод сообщений на контрольную панель, настройку конфигурации, команды по управлению файловой системой принтера и многое-многое другое. Известная хакерская утилита Phenoelit’s Hijetter позволяет использовать по своему усмотрению любые PJL-функции принтеров, в том числе малоизвестные и недокументированные. Несмотря на уверения производителей в абсолютно безопасной реализации PJL, достаточно сделать запрос в Google по словосочетанию « PJL exploits » чтобы убедиться, что здесь всё не так гладко (мне понравилось вот это, например).
Исторически PJL задумывался как мощное расширение языков PCL и JCL и создавался на их основе. Несмотря на то, что PJL это разработка компании HP, сейчас этот язык используется на множестве современных принтеров от других известных производителей. Правда, в некоторых случаях их реализации могут содержать свои собственные функции, несовместимые с прототипом (эта ситуация отчасти напоминает SQL с его множеством общих диалектов, иногда несовместимых между собой в деталях).
PJL, отчасти наряду с более ранними и более простыми языками «разметки страниц» — PostScript (PS), Encapsulated PostScript (EPS), Epson Job Language (EJL) и Printer Command Language (PCL), — на данный момент монопольно доминирует на рынке принтеров. В свою очередь некоторые идеи PJL получили дальнейшее развитие в PML (HP Printer Managment Language) — новейшем объектно-ориентированном двухстороннем протоколе для одновременного обмена информацией между множеством приложений и множеством принтеров (например, используемый для SNMP-взаимодействий с принтерами).
Читать этот материал дальше. Оглавление и начало этой серии статей — здесь.
Настройка параметров безопасности
Обзор
Настройки параметров безопасности — единое меню для настройки большинства параметров безопасности устройства. Настройки этой страницы, наряду с настройками Мастера настройки безопасности HP Jetdirect помогают улучшить уровень безопасности устройства.
Этот раздел справки дополняет страницу Настройки параметров безопасности. Он содержит объяснение настроек и связанные с ними рекомендации. Учтите, что не все сети работают одинаково и рекомендации даются для справки, чтобы дать пользователю возможность рассмотреть варианты.
ПРИМЕЧАНИЕ. Рекомендации HP, приведенные на этой странице, относятся к типовой корпоративной сети. Каждую из рекомендаций следует проверять на применимость к конкретной сети.
Нажмите кнопку Применить в нижней части страницы для завершения настройки. Настройка не будет завершена, пока вы не нажмете Применить.
В разделах ниже описываются соответствующие разделы страницы Настройки параметров безопасности устройства встроенного веб-сервера (EWS).
Пароль устройства
Пароль устройства помогает защитить устройство от несанкционированного доступа через удаленные приложения, такие как устройство EWS (это приложение). После настройки пароля устройства продукт не позволит изменять конфигурацию без ввода правильного пароля. Пароль устройства называется паролем администратора в некоторых приложениях.
Параметр Для вкладки «Информация» требуется административный доступ повышает уровень безопасности; если его включить, информация об устройстве будет недоступна пользователю без ввода пароля устройства (если он задан). Если этот параметр не включен, пользователь может осуществлять доступ к вкладке Информация без ввода пароля устройства (если он задан).
Мастер настройки безопасности Jetdirect также позволяет настроить пароль устройства (здесь он называется паролем администратора). Если первым делом вы запустили мастер настройки безопасности (в соответствии с рекомендациями) к этому моменту пароль устройства уже настроен.
Кроме того, в устройстве есть функция «Пароль EWS», доступная в некоторых приложениях. При настройке пароля устройства продукт синхронизирует его с паролем EWS.
Рекомендация: задайте пароль устройства, чтобы обеспечить контроль над конфигурацией.
Чтобы задать пароль устройства, введите 12 символов (или меньше) в поле Новый пароль и повторите ввод в поле Подтверждение пароля.
Чтобы изменить пароль, введите старый пароль в поле Старый пароль и новый пароль в поля Новый пароль и Подтверждение пароля.
Чтобы отключить пароль устройства, введите старый пароль в поле Старый пароль и оставьте поля Новый пароль и Подтверждение пароля пустыми.
Пароль PJL
Функция «Пароль PJL» помогает защитить устройство от несанкционированной конфигурации посредством команд языка PJL (Print Job Language). Она не влияет на обычные задания печати. После настройки пароля PJL устройство будет требовать ввода этого пароля перед обработкой команд PJL.
Рекомендация: функция «Пароль PJL» отличается от функции отключения дискового доступа PJL (другая настройка страницы безопасности EWS). Для лучшего уровня безопасности задайте обе настройки.
Чтобы задать пароль PJL, введите любое число между 1 и 2147483647 в поле Новый пароль и повторите ввод в поле Подтверждение пароля.
Чтобы изменить пароль, введите старый пароль в поле Старый пароль и новый пароль в поля Новый пароль и Подтверждение пароля.
Чтобы отключить пароль устройства, введите старый пароль в поле Старый пароль и оставьте поля Новый пароль и Подтверждение пароля пустыми.
Пароль файловой системы
Пароль файловой системы помогает защитить устройства хранения данных продукта от несанкционированного доступа. После задания пароля файловой системы устройство потребует этот пароль при попытке настройки функций, влияющих на систему хранения данных. В числе таких функций режим стирания файлов, безопасное стирание данных и доступ к файловой системе.
Рекомендация: настройте пароль файловой системы, чтобы обеспечить улучшенный контроль доступа к файловой системе.
Чтобы задать пароль файловой системы, введите 8 символов (или меньше) в поле Новый пароль и повторите ввод в поле Подтверждение пароля.
Чтобы изменить пароль, введите старый пароль в поле Старый пароль и новый пароль в поля Новый пароль и Подтверждение пароля.
Чтобы отключить пароль устройства, введите старый пароль в поле Старый пароль и оставьте поля Новый пароль и Подтверждение пароля пустыми.
Настройки доступа к файловой системе
Настройки доступа к файловой системе позволяют отключить многие точки доступа к системе хранения данных устройства. Эти точки доступа относятся к разным областям использования устройства. Некоторые из них являются функциями устройства, другие нет. См. рекомендации ниже.
Если вы задали пароль файловой системы, устройство запросит его перед изменением настроек файловой системы.
Рекомендация: корпорация HP рекомендует отключить функции Доступ к диску PJL, Доступ к диску SNMP и Доступ к диску NFS. Эти точки доступа предназначены для добавления и удаления файлов в устройствах хранения, но они не требуются для обычных операций устройства, таких как печать, копирование, факс и цифровая отправка.
Корпорация HP рекомендует включить (выбрать) функцию Доступ к диску PS. Это даст пользователям возможность печатать файлы PS-типа.
ПРИМЕЧАНИЕ. Имейте в виду, что некоторые сетевые процессы могут использовать эти точки доступа. Например, некоторым приложениям Norton необходим доступ через NFS. Таким образом не следует отключать доступ через NFS, если он используется в вашей сети.
Режим стирания файлов
Режим стирания определяет уровень безопасности удаления файлов с устройств хранения.
Доступно три уровня безопасности удаления файлов:
Рекомендация: корпорация HP рекомендует метод Безопасное быстрое стирание, так как он относительно быстр, но предоставляет эффективное стирание данных, обеспечивая приемлемый уровень безопасности. Если в вашей сети необходим более высокий уровень безопасности (например для соответствия требованиям Министерства обороны), необходимо выбрать метод Безопасная санация.
ПРИМЕЧАНИЕ. Настройка Режим стирания файлов будет доступна только после задания пароля файловой системы.
Блокировка панели управления
Функция блокировки панели управления поддерживает три режима работы, подразумевающих блокировку различных меню панели управления.
Рекомендация: корпорация HP рекомендует выбрать параметр Средняя блокировка меню. Это позволит пользователям работать с их собственными заданиями, но запретит вмешиваться в задания других пользователей.
ПРИМЕЧАНИЕ. После блокировки доступа к панели управления, доступ к заблокированным функциям из панели управления будет невозможен. Устройство не предлагает способ авторизованного использования заблокированных настроек.
Параметры домашней страницы (встроенного веб-сервера)
Параметры EWS позволяют определить некоторые настройки, доступные на странице EWS по умолчанию. Некоторые параметры позволяют пользователям управлять заданиями других людей или даже удалять их.
Рекомендация: компания HP рекомендует отключить все эти функции, кроме Страница печати. Страница печати позволяет пользователям печатать документы через EWS. Отключение других функций позволит предотвратить несанкционированный доступ к пользователей к устройству.
Параметры услуг
Устройство поддерживает различные службы, которые могут работать удаленно или непосредственно на устройство. Имейте в виду, что авторизованный администратор может включать службы, необходимые для работы, и отключать их.
Рекомендация: корпорация HP рекомендует отключить все функции, кроме Хранения задания, если эти функции не требуются приложениям в вашей сети. Например, в некоторые сетевые приложения предоставляют возможности печати документооборота, которые могут понадобиться пользователю.
Эти параметры, предназначены для удобства использования и для некоторых типов сетевых приложений, которые помогают в управление.
Прямые порты (USB/IEEE 1284)
Функция Прямые порты позволяет заблокировать прямые подключения (параллельный порт и USB-порт). Блокировка этих портов делает невозможным прямое подключение компьютера к устройству. Это ограничивает доступ к устройству сетевым подключением.
Рекомендация: отключите прямые порты, чтобы ограничить доступ к конфигурации.
Отслеживание расхода печати
Функция отслеживания расхода печати позволяет изменить способ подсчета страниц на устройстве. Новый метод подсчета страниц более приспособлен для сегодняшних задач. Однако после включения нового метода подсчета страниц невозможно вернуться к старому.
Рекомендация: Поскольку переход на новый метод подсчета является необратимым, корпорация HP настоятельно рекомендует внимательно прочитать условия, представленные в этом разделе, прежде чем включать эту функцию на устройстве. Для получения более подробной информации о переходе следуйте инструкциям, приведенным в этом тексте данного раздела.
Следуйте инструкции, чтобы включить функцию «Отслеживание расхода печати».
1. Выберите параметр Принять.
2. Отметьте флажком параметр Включить отслеживание расхода печати на устройстве.
3. Чтобы изменения вступили в силу, нажмите кнопку Применить.
Применение настроек
Настройки на этой странице применяются к устройству после нажатия кнопки Применить в нижней части экрана. Можно применить настройки по мере их изменения, или применить все настройки единовременно. Нажмите Отмена, чтобы отменить изменения.
ПРИМЕЧАНИЕ. Ни одна из заданных настроек не будет применена к устройству, пока вы не нажмете кнопку Применить.
Волшебная печать. Получаем контроль над сетевыми принтерами
Содержание статьи
PJL и JetDirect
Компания Hewlett-Packard разработала язык Printer Job Language (PJL) еще в девяностых. Изначально он был предназначен для расширения команд принтера, но шли годы, и в динамичном мире информационных технологий для этой функции стал использоваться другой язык — Printer Command Language (PCL). С легкой руки HP язык PJL пошел своей дорогой. Его взяли на вооружение другие компании, он оброс новыми функциями. В итоге мы получили что-то сравнимое с ассемблером — язык один, а инструкции на каждое устройство свои.
Даже если взять только устройства HP, то полного описания инструкций и команд в открытом доступе нет (видимо, компания поняла, что выкладывать технические детали в интернет небезопасно). Есть общий мануал, в котором сопоставлены серийные модели принтеров и поддерживаемые ими команды. Также существует инструкция, описывающая действия команд, синтаксис и ошибки. Документ старый, сильно на него полагаться не стал бы.
Помимо языка управления принтерами, HP разработала еще одну интересную штуку, которая служит и по сей день, — JetDirect. Это технология, позволяющая превратить любой принтер в сетевой. На ее основе выпускаются как отдельные принт-серверы, так и встроенные (в принтеры, МФУ и роутеры). JetDirect позволяет подключать устройства к сети и печатать удаленно. причем не только их владельцу! 😉
Ломаем приветствие
С помощью PJL некоторые хакерские приемы применяются в сервисных центрах. Например, так сбрасывают счетчики напечатанных листов или очищают память о вставленных ранее картриджах. Это нельзя сделать из меню самого принтера, поэтому и приходится прибегать к таким уловкам через консоль. Давай и мы разомнемся!
WARNING
Статья написана в образовательных целях. Ни автор, ни редакция не несут ответственности за любой возможный вред, причиненный изложенными здесь материалами.
Сервис JetDirect по умолчанию сконфигурирован на прослушивание TCP-порта 9100. На него мы и будем отправлять команды из консоли. Для опытов я использовал сетевой принтер HP Color LaserJet 3600n со встроенным принт-сервером HP JetDirect Fast Ethernet.
Находим открытый порт 9100 программой Nmap
Поясню немного команду:
@PJL — эти символы дают понять принтеру, какой мы используем язык;
STMSG DISPLAY — это сама команда изменения надписи на дисплее. После нее мы просто пишем то, что хотим вывести.
Посылаем команду на принтер
В итоге получаем результат как на фотографии.
Дисплей принтера до и после отправки команды
Теперь наша надпись будет сиять на дисплее вместо стандартного приветствия, пока кто-то не нажмет любую кнопку на самом устройстве.
Аналогичного эффекта можно добиться, используя оператор RDYMSG (сообщение о готовности) вместо STMSG (стандартное сообщение). Команда приобретет следующий вид:
То же самое можно проделать, выполнив печать из файла:
После этих команд на табло принтера снова гордо воссияла надпись HACKED, а это значит, что мы можем отправлять принтеру PJL-команды из файла.
Массовый тест
Взаимодействие принтера и компьютера при печати можно представить как трехслойную модель. На первом слое будет сетевой протокол, затем язык управления принтером (в нашем случае PJL) и последним — язык описания (PostScript).
Внесу небольшую ремарку: если есть желание получить идентичные надписи на разных моделях и марках принтеров и МФУ — лучше сразу забыть. PostScript не «понимает» форматирование текста, или, если сказать другими словами, шрифт и размер надписи будет разный, тот, который используется по дефолту.
В итоге мы имеем возможность печатать документ при помощи JetDirect, просто отправив текст на TCP-порт 9100 из файла или консоли. Можно ли это автоматизировать? Нужно!
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Языки и технологии принтеров
Сегодня принтер несильно отличается от компьютера. У него есть процессор, память, операционная система и постоянная память-накопитель. Если принтер сетевой, то у него есть сетевая карта и веб-сервер, позволяющий его администрировать. Принтеры не только поддерживают разные сетевые протоколы, но и принимают задания на специфичных языках, которые описывают разметку страниц и документов. Таким образом, на крупном предприятии программные средства печати должны взаимодействать с разными аппаратными реализациями протокола печати, возможно даже неизвестными. Конфигурирование печати принтера труднее, чем кажется на первый взгляд. Пользователи воспринимают печать как должное, однако, для получения качественного результата нужно пройти не один шаг.
В этой статье предлагаю рассмотреть и сравнить технологии печати, с которыми вы сталкиваетесь, выбирая новый принтер, проводя допечатную подготовку документа или работая с электронными PDF-копиями документов. И конечно, если вы пытаетесь перехватить и проанализировать задание на печать.
О языках принтеров
Что такое задание на печать? Это программа, написанная на специальном языке программирования – Page Description Language (PDL).
Печатаемые страницы кодируются в PDL и занимают меньший размер, а значит, передаются быстрее необработанных изображений. PDL не зависят ни от самих устройств, ни от разрешающей способности. Принтеры преобразуют задания на специализированном языке в понятный для устройства формат. Это значит, что принтеры содержат языковые интерпретаторы. Также как у языков программирования «а ля Java», у этих языков не одна версия и каждая работает немного по-своему.
Преобразование PDL в растровые изображения выполняется программой-обработчиком: процессором растровых изображений, Raster Image Processor или просто RIP.
Самые известные PDL языки: Postscript, PCL5, PCL6
Многие принтеры понимают больше одного языка. Но если отправить программу на ином языке, печать выполниться не сможет – компилятор не тот.
PostScript – самый распространённый из всех. Первоначально разработан компанией Adobe. Требует наличия лицензии для использования, поэтому на сегодняшний день используется преимущественно в высокопроизводительных устройствах верхнего ценового сегмента. Почти все программы, компонующие страницы, могут генерировать задания на PostScript. Это полнофункциональный язык программирования. Написанные программы можно просматривать с помощью текстового редактора. В них много круглых скобок, а также символов / %!
P.S. Эти символы ищутся интерпретаторами для распознавания заданий на печать.
Также PostScript является стандартом для MAC и профессиональным стандартом.
PCL – или Printer Common Language – альтернатива PostScript от Hewlett Packard (далее HP). Язык понятен принтерам других производителей, некоторые умеют работать только с ним. PCL – не язык программирования, он просто сообщает на принтер как ему следует напечатать страницы. Задания на PCL бинарные и непонятны для человека, зато короче по размеру, чем PostScript.
Существуют фильтры, преобразующие Postscript в PCL. Версии PCL разнятся не так сильно как PostScript, но достаточно, чтобы вызывать раздражение. Задания печатаются немного не так на разных моделях принтеров. Причина в диалектах со специальными командами. В отличие от PostScript, PCL изначально заточен именно на управление принтером, а не на переносимость страницы, поэтому для достижения наилучшего результата печати необходимо использовать команды под соответствующий принтер. Именно поэтому в операционной системе (ОС) указывается модель принтера, в противном случае генерируются иные PCL команды, интерпретируемые неправильно или вовсе игнорируемые.
На самом деле, вопрос не только в железе: существует так называемая эмуляция.
Эмуляция PCL – это значит, что разработчик стандарта (т.е. HP) не лицензировал или не тестировал принтер производителя на совместимость с PCL.
Эмуляция PostScript – Adobe не получал отчисления за свой интерпретатор PostScript, вместо этого некоторые вендоры написали собственный код. Политика лицензирования породила диалекты языков – схожие, но не повторяющие оригинал в точности. На практике оба могут выполняться с ошибками, но случается такое редко.
Чтобы вас окончательно запутать, HP определила два семейства языков PLC5 (5e – черно-белый, и 5c – цветной) и PCL6 (PCL/XL). Новые HP принтеры поддерживают оба. Ранее существовал и PCL4, но сейчас он слишком архаичный. Начиная с PCL5 5e, также были введены такие новшества, как: поддержка разрешения 600 dpi, двунаправленный обмен данными между принтером и компьютером и новые шрифты для Microsoft Windows.
PDF – еще одна разработка Adobe – Portable Document Format. Это формат документов, использующий часть возможностей PostScript, основа издательского дела и программ Office. PDF-документы не зависят от ОС и платформы. Очень часто формат используется для обмена документами с возможностью просмотра и печати. PDF – язык описания документов, а не страниц. Позволяет описывать не только страницы, но и всю структуру документа, главы, взаимосвязь текстовых столбцов друг с другом, правки и так далее. Плюс, куча возможностей мультимедиа.
Есть принтеры, которые интерпретируют PDF напрямую. Есть масса программ-трансляторов и визуальных редакторов с возможностью преобразования PDF, например, в PostScript. Это преобразование даже может быть скрыто от пользователя.
XHTML – появился относительно недавно. Принтер получает поток данных на языке, описывающем XHTML-print веб-страницу, генерирует представление задания (разные принтеры формируют разные задания, также как разные браузеры отражают страницу иначе).
HP-GL/2 – Hewlett-Packard Graphics Language – Служат для печати векторной графики в составе документа.
HPGL – язык поддержки плоттеров. Поддерживается почти всеми HP-принтерами.
PJL – Printer Job Language. Язык заданий для принтера, метаязык от HP, описывает какой PDL должен использоваться для задания, каким будет формат бумаги, сколько копий нужно напечатать, симплексное задание или дуплексное и так далее.
О драйверах
Драйвер принтера и поддержка – ПО, преобразующее файл в понятный для принтера. Задачи и функции драйвера отвечают на вопросы: «Что если принтер не поддерживает все языки?», «Имеется задание postscript, а принтер распознает только PCL 5E. Нужно напечатать PDF, что делать, если принтер его не интерпретирует?».
GDI – ещё задание на печать можно просматривать и интерпретировать централизованно, на ПК. Также можно отправлять готовые обработанные растровые изображения на принтер «без интеллекта». Именно так и работают многие Windows GDI-принтеры. Такие принтеры обладают весьма незначительным количеством логических инструкций и совсем не обладают интерпретаторами PDL. Вместо этого растеризацию выполняет обслуживающий компьютер. Часть информации для взаимодействия с GDI скрыта в коде Windows под патентами. Эта секретность затрудняет разработку аналогов в системах Linux, и, по сути, является преимуществом. Аналогично ситуация развивается с поддержкой новейших моделей принтеров. Впрочем, ситуация меняется благодаря существованию демона CUPS с поддержкой многих Win Printers с помощью реверс инжиниринга.
О сервере печати
Немного интересного о CUPS и отправке заданий на печать через него. В основе данного сервера печати лежит протокол IPP, который является всем известным HTTP с перегрузкой. Запросы о состоянии принтеров идут как операция HTTP GET, а задания на печать через HTTP POST. Таким образом, CUPS является, фактически, веб-сервером, но взаимодействует исключительно по порту 631, а не 80. CUPS является, пожалуй, самой полноценной реализацией IPP на планете, а его конфигурационные файлы очень похожи на файлы веб-сервера Apache. И, разумеется, позволяет системам печати использовать технологии аутентификации, контроля доступа и шифрования.
В Windows печать через протокол IPP появилась, начиная с Windows 2000. На клиентах с Windows 7 и новее, поддержка протокола IPP, как правило, уже установлена. Также есть Internet Printing – windows реализация сервера печати Internet через IPP. Для его установки необходимо сначала установить службу веб сервера MS IIS
О безопасности для принтеров
Сетевые принтеры, разумеется, поддерживают системы удаленного управления ими, конфигурирование и мониторинг преимущественно осуществляется либо через протокол IPP, либо через SNMP, либо из веб-браузера по HTTP. В частности, имея доступ к принтеру, можно получить такие параметры как: IP-адреса, стандартный шлюз, сервер Syslog, групповое имя (пароль) SNMP, опции протоколов, пароль администратора. Тут возможны несанкционированный доступ атаки по SNMP и DDOS-атаки. Почти все, допускающие удаленное администрирование принтеры, являются незащищенными и используют пароль или SNMP-имя, данное на момент установки.
Какая операционная система используется принтером? Некоторые модели имеют Linux-based дистрибутив на борту. Понять, что же установлено на принтере, либо поменять пароли по умолчанию можно лишь закопавшись в документацию производителя. Неразбериха с операционной системой усугубляется тем, что средства графического администрирования имеют тенденцию сокрытия сведений о различиях производителей.
В заключение хочу еще раз сказать, что проблемы печати многогранны, некоторые из них остались за рамками статьи. В следующий раз надеюсь рассказать о ведении журналов, PPD-файлах и форматах бумаги. О том, как попросить монохромный принтер распечатать двусторонний цветной документ в неизвестном ему формате b4, а также о всевозможных утилитах печати и командах совместимости.