Что такое формат файла CHM?
.chm - это файл Microsoft Compiled HTML Help, модуль справки Windows, используемый для хранения справочной документации приложений и системных функций. Документы .chm создаются из исходных файлов HTML (тот же формат, что и для веб-сайтов) и компилируются в единый автономный бинарный архив. В Windows файлы .chm открываются нативно с помощью hh.exe (HTML Help), который поставляется со всеми версиями Windows, начиная с Windows 98. Также доступны сторонние программы для чтения, такие как xCHM и SumatraPDF.
Формат использует проприетарный контейнер Microsoft ITSF (Info-Tech Storage Format), идентифицируемый по четырехбайтовой сигнатуре файла ITSF со смещением 0. Внутри контейнера разделы HTML, изображения, CSS и таблицы индексов сжаты с использованием алгоритма LZX, поэтому файл выглядит как единый компактный архив, а не папка с разрозненными файлами. Предшественником .chm был старый формат WinHelp .HLP, который он заменил в 1997 году.
Файлы справки содержат документацию к ПО. Типичный файл .chm разделен на разделы, организованные в древовидную структуру, охватывающую использование приложения, функции и часто задаваемые вопросы. Поскольку .chm отображается через движок MSHTML от Internet Explorer, файлы, скопированные из сетевой папки или загруженные из интернета, могут отображать пустые страницы - это ограничение безопасности Windows, известное как блокировка «метки интернета» (mark of the web). Разблокировка файла через диалоговое окно «Свойства» восстанавливает нормальное отображение.
Файлы .chm портативны и автономны: один файл содержит все темы, изображения и навигацию. Хотя формат считается устаревшим - новые системы Microsoft используют .hxs или онлайн-документацию - файлы .chm по-прежнему корректно открываются в современных версиях Windows без дополнительного ПО.
Безопасность и защита
РИСК: MEDIUMCHM - это HTML-контейнер, который может содержать встроенные скрипты и команды ярлыков/HTML-Help. Он имеет реальную историю использования вредоносным ПО (вредоносные CHM, запускающие исполняемые файлы в фишинговых кампаниях) и уязвимостей старых просмотрщиков. Открывайте файлы CHM только из доверенных источников. Windows намеренно блокирует содержимое в CHM, открытых из интернета/сети (каждая страница отображается пустой) с помощью «метки интернета» - если вы доверяете файлу, щелкните правой кнопкой мыши > Свойства > Разблокировать или переместите его на локальный диск. Относитесь к неожиданным вложениям .chm так же, как к любым другим исполняемым вложениям.
Детали формата
в двух словахПрограммы, открывающие файлы CHM
Технические подробности
глубокая спецификация| Формат контейнера | ITSF (Info-Tech Storage Format) - проприетарное составное хранилище Microsoft с внутренним каталогом ITSP, который индексирует все виртуальные файлы внутри архива |
| Магические байты | 4-байтовая ASCII-сигнатура ITSF (hex 49 54 53 46) со смещением 0, за которой сразу следует поле версии DWORD в формате little-endian (обычно 03 00 00 00 для HTML Help 1.x) |
| Порядок байтов | Little-endian во всех структурах заголовков и каталогов |
| Сжатие | Сжатие LZX, применяемое к разделу HTML-контента; тот же вариант LZX используется в файлах Microsoft Cabinet (.cab) |
| MIME-тип | application/vnd.ms-htmlhelp (зарегистрирован); также широко используются application/x-chm и application/octet-stream |
| Внутренняя структура | Заголовок ITSF + каталог ITSP со списком виртуальных файлов; раздел контента содержит темы HTML, изображения, CSS, блоки метаданных #SYSTEM/#STRINGS и таблицы индексов URL #TOPICS/#URLTBL, все сжато с помощью LZX |
| Средство просмотра Windows | hh.exe (исполняемый файл HTML Help), использующий элемент управления ActiveX hhctrl.ocx, присутствует во всех версиях Windows, начиная с Windows 98; отдельная установка не требуется |
| Движок рендеринга | Internet Explorer MSHTML; HTML и CSS внутри .chm отображаются так же, как в IE, что может вызывать причуды отображения в очень старых файлах, полагавшихся на специфическое поведение IE |
| Шифрование | Контент сжат с помощью LZX, но не зашифрован; архив можно распаковать напрямую с помощью таких инструментов, как 7-Zip или команды «hh.exe -decompile» |
| Проверка целостности | Нет встроенной CRC или цифровой подписи; поврежденный .chm просто не распаковывается или не отображает содержимое без подробных сообщений об ошибках от просмотрщика |
| Типичный размер файла | От десятков КБ до примерно 100 МБ; большинство файлов справки ПО находятся в диапазоне 1-10 МБ |
| Поддержка платформ | Нативно в Windows через hh.exe; сторонние просмотрщики в Linux (xCHM, KchmViewer, Calibre) и macOS (CHMOX, xCHM, Calibre) |
| Ограничение сетевой безопасности | Файлы, открытые из сетевой папки или загруженные из интернета, блокируются политикой Windows «Mark of the Web», что приводит к пустым страницам тем; разблокировка через диалоговое окно «Свойства» файла восстанавливает полный доступ |
| Структура заголовка ITSF | Заголовок версии 3 размером 56 байт, содержащий метку времени создания, Windows LCID (код языка) и два GUID, идентифицирующих разделы контента и преобразования |
| Выпущен | 1997 (HTML Help 1.0, with Windows 98) |
| Последняя версия | HTML Help 1.4 (ships with Windows; runtime hhctrl.ocx, no new versions since early 2000s) |
| Спецификация | www.nongnu.org |
Конвертации CHM
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах CHM.