Некоторое время назад понадобилось массово определять, в какой версии КОМПАС был создан файл без установки самой программы. Задача возникла при обработке большой базы чертежей и моделей (.cdw, .spw, .frw, .m3d, .a3d), так как для каталога неплохо было бы понимать минимальную версию программы, в которой файл ещё открывается.
В процессе выяснилось, что у КОМПАС-файлов два принципиально разных контейнера, один из них бинарный и для него нет никакого официального описания формата.
С версии 16 файл - обычный ZIP. Внутри лежит текстовый FileInfo (UTF-16, ini-подобный): там есть поля вроде AppVersion / AppFullVersion (KOMPAS-3D V17, 16.1.0.0 и т. п.). Версию можно прочитать напрямую, хотя сам формат надписи может различаться.
До 16-й (и иногда позже, если файл остался в старом контейнере) формат бинарный. Сигнатура - KF, сразу за ней - 4 байта big-endian: код формата, например 0x4E00000C. Официальной таблицы «код -> версия» ASCON не публикует, по крайней мере я не нашел. Выглядит это как-то так: