Краткое описание формата Creeper ─ UUE нового поколения (x) Copyleft, Marїnais, 01.05.2003 Всем хорошо известны форматы UUE и Base64. Эти форматы используются, когда возникает необходимость представить в текстовом файле (электронном сообщении) данные двоичного ви- да. Однако UUE, Base64 и множество их аналогов ─ далеко не предел совершенства с точки зрения эффективности достижения этой цели. Просто так сложилось, что именно эти форматы (UUE ─ для Фидо; Base64 ─ для Интернета) оказались наиболее расп- ространёнными. Их можно отнести к I поколению, отличительным свойством которого является использование для представления получаемо- го кода только фиксированного набора из 64 символов, путём простого разбиения троек байт на 6-битные четвёрки. Очевид- но, что поскольку как FTN-, так и e-mail-сообщение может со- держать в себе гораздо больше видов символов ─ где-то от 150 до 200 и более, ─ такие форматы реализуют их возможности да- леко не полностью. Кроме того, поскольку 6-битные последова- тельности всё равно выравниваются до байта, размер кода в итоге увеличивается на треть по сравнению с размером исходн- ых данных. II поколение форматов, к которому относится Creeper, использует для своего представления п р о и з в о л ь н ы й набор символов, задаваемый пользователем по его усмотрению. Это позволяет реализовать возможности среды передачи данных максимально полно и получить код ценой его минимального уве- личения по сравнению с исходными данными. При этом Creeper содержит информацию об использованном в каждой конкретном случае наборе символов вместе с самим кодом, так, что полу- чателю нет необходимости знать заранее, каким набором воспо- льзовался отправитель. Возможное число используемых символов может меняться в пределах от 2 до 256. Код Creeper также имеет ещё одно достоинство ─ он ус- тойчив к " з а с о р е н и ю " его посторонними символами, не входящими в используемый в данный момент набор ─ они про- сто игнорируются. Вы можете использовать, к примеру, только латинские символы, а прямо внутри кода поместить какие-либо комментарии, написанные из русских букв и пробелов. Код также допускает произвольную п р а в у ю г р а - н и ц у строк. Его можно аккуратно включать непосредственно в тексты, отформатированные с любой шириной колонки (напр., при необходимости объединения вместе с текстом какого-либо нетекстового материала). Вы даже можете придавать коду ка- кие-либо фигурные очертания ;-) ─ благодаря устойчивости к посторонним символам он всё равно будет успешно извлекаться программой. Внешне код Creeper выглядит примерно так: *#L53G!"e`<8"Wd,MFBg!#"{!'!,vC$}CaA!#E'pGi%#"!b2uJE+P(fЧAxпK 6kP!bEqLVАБ5bC1Z6Ы+И(+kA11ЫmwLbkгO1)4А6YaAгxY6k();+бsФY]Kй6[ hO1KvУkh#~CqLV/с&3fOuZк^_J#jAwХхсi*5j#БOvLv[NWrЭM1K=;ъйБQ{.& Jшы~;fEbPЯxK5фKйБS|ЦJ1LU+.\aAаuL5Kй~[eAsKыЖ%+ю&7jГбqIv[NWrЭA 1KvУk"Y;+kL}+И()bВqJш5+.\fAwi5C"eгггbD8)1{6/lNuJVc%_bGuYv{й8 OyAsKыЖ5O.7~BиsУdBKБ[dIбsФцYVKйj$dFбu)3kf3}Ar)6K(?lГбrJE+^#z Fwхi=_0+bВsР[6/J$jOЯwI=Kй1U5vKrE+b"%ГZzGЕBY;+ При этом следует иметь в виду, что набор символов в вашем случае может более или менее сильно отличаться. Важной чертой формата Creeper является полное отсутст- вие каких-либо заголовков, заключений, тегов и т.п. сопрово- ждающей информации. Код выглядит как сплошная однородная м е ш а н и н а символов. Однако, это не означает, что про- грамма, которой вы передадите код на обработку, не сможет распознать его в общей массе текстового письма. Просто она делает это не по ключевым словам, а анализируя состав данных на более глубоком уровне. Недостатком формата является отсутствие встроенной под- держки разбиения кода на с е к ц и и такой, которая хоро- шо известна пользователям UUE/Base64. На этом вопросе необх- одимо задержаться. Существующая версия формата Creeper предусматривает су- ществование кода только в виде одного цельного блока. Поэто- му вам придётся самостоятельно позаботиться о том, как разд- елить его на секции, если размер закодированного файла пре- вышает допустимые для одного сообщения. Первым вариантом решения проблемы может быть использо- вание архиватора, который способен дробить архивы по томам произвольных и достаточно мелких размеров (это могут делать ARJ и RAR). Задайте архивирование вашего файла(ов) томами, напр., по 30К, а затем закодируйте каждый том Creeper-ом и вставьте в почтовые сообщения. Получатель, в свою очередь, должен будет экспортировать их в файл и передать его декоди- рующей программе. В результате получится партия сделанных вами томов. Т.о. будет неважно, в какой последовательности пришли к получателю отдельные тома ─ их состыкует архиватор. Вторым вариантом может быть использование формата ser- gey korowkin для секционирования поверх Creeper-а. Этот фор- мат был разработан для постинга текстов по секциям в непоср- едственном виде, а его основной задачей является сохранение информации о последовательности и общем числе секций. Подро- бнее об этом формате см. [Marїnais. Как правильно постить тексты в эхоконференции (формат постинга текстов sergey ko- rowkin). ─ 01.05.2003]. Сархивируйте ваш файл(ы) в один и закодируйте его Creeper-ом. Затем подробите код на секции. Каждую оформите как текст в формате sergey korowkin и вста- вьте в сообщение. Вкратце смысл этого формата сводится к то- му, что каждая секция снабжается заголовком и заключением, позволяющим обозначить её границы, порядковый номер и имя исходного файла. Заголовок представляет собой строки вида: textsection x of y of file z textbegin.all для 1-й секции и: textsection x of y of file z textbegin.section для всех последующих, где: x ─ номер текущей секции; y ─ общее число секций; z ─ исходное имя Creeper-файла. Заключение представляет собой строку вида: textend.all для последней секции и: textend.section для всех предшествующих. Снабдить секции этими заголовками можно как вручную, так и с помощью программ UUE Wizard и FastPost/FastUUE, поддерживающих удобную автоматическую ра- боту с форматом sergey korowkin. Получатель воспользуется этими программами или извлечёт и состыкует секции вручную, после чего передаст код программе декодирования формата Creeper и разархивирует результат. Т.о. отсутствие встроенной поддержки секционирования не является серьёзным препятствием применению формата при ква- лифицированном и творческом подходе. Помимо собственно почты Creeper может быть эффективно использован и с другой целью. Иногда возникает потребность вставить в текстовый файл нетекстовую информацию, причём же- лательно, чтобы она составляла с ним неотделимое целое, соп- ровождалась рядом комментариями и не могла потеряться при различных манипуляциях с файлом. При этом использование ка- кого-либо более сложного формата, чем Plain Text бывает не- желательно. Некоторые авторы прибегают в таких случаях к UUE, данные в котором вставляют непосредственно в текст, од- нако, очевидно, что Creeper благодаря большей гибкости подх- одит для этой цели л у ч ш е . В настоящее время формат Creeper поддерживает только одна программа ─ Creeper 1.01a, написанная автором формата Евгением Пажитновым в качестве простейшей базовой утилиты для работы с ним. Программа работает под DOS из командной строки. Желаемый вами набор символов для представления кода за- даётся отдельной опцией. При этом программа поддерживает предварительное тести- рование канала передачи для выяснения того, какие символы проходят его успешно. Специальная команда генерирует тесто- вый файл, содержащий последовательные примеры использования символов из диапазона, который вы хотите проверить, в разных местах строки. Этот файл вы должны переслать получателю по каналу, который намерены в дальнейшем использовать, а он ─ сохранить в файл, вставить в сообщение и отослать его вам обратно. Полученный отработавший тестовый файл вы передаёте программе, и на основе того, что в нём уцелело, она предла- гает вам вид опции, задающей набор символов, которые успешно преодолевают данный вид пересылки в обоих направлениях. При тестировании не забудьте обратить внимание на следующие мо- менты: ─ Важно, чтобы тестовый файл прошёл в с е этапы и программы, которые будут проходить в последующем ваши коди- рованные данные ─ не только формат писем, но и сохранение сообщений в файл, т.к. почтовые редакторы могут удалять не- которые символы даже на этом самом последнем этапе. ─ Часть текстовых редакторов воспринимает символ 1Ah (стрелка вправо, ASCII 26) как признак конца файла и выбра- сывает всё, что за ним следует. Если это не принять во вни- мание, большая часть тестового файла может оказаться выбро- шенной, что драматически исказит результаты тестирования. В большинстве случаев работы с почтовыми сетями этот символ непригоден для использования. Поэтому строку с ним из тесто- вого файла лучше удалить вообще. По умолчанию Creeper 1.01a использует символы в интерв- але 21..7E. Это печатные ASCII-символы, которые гарантирова- нно поддерживаются в любой среде. Их 94, что всё равно боль- ше, чем 64 используемых в форматах I поколения. Для безопасной транспортировки или публикации в любых русскоязычных компьютерных сетях можно смело использовать следующий набор: 21..7E,80..8C,8E..AF,E0..E2,E4..EF. Эти си- мволы надёжно проходят большинство используемых форматов со- общений в среде BBS/FTN/Интернет, выдерживают конвертирова- ние и гейтование между разными форматами и работу в текстов- ых редакторах. Их 156, что более чем в 2 раза больше, чем в форматах I поколения. Если вы уверены, что канал передачи обеспечивает прохождение псевдографики, можете добавить и её ─ тогда набор составит 220 символов. Более подробную информацию вы найдёте в документации на Creeper 1.01a. В ней же содержится описание формата и алго- ритмов кодирования и декодирования, которыми могут восполь- зоваться интересующиеся разработчики.