Как я могу обнаружить защищенные паролем файлы Ms Office? Я использую C/C++ для Linux.
Если файлы находятся в формате Office 2007 (например,.docx), то их внутреннее хранилище:
1) Почтовый файл XML-документов (если он не защищен паролем)
2) Формат файла старого стиля (если он защищен паролем).
Поэтому вы, вероятно, могли бы сделать что-то вроде этого:
1) Проверьте первые несколько байтов файла
2) Если это zip файл (не защищенный паролем), он начнется с 0x50 0x4b 0x03 0x04.
3) Если это не zip файл, то он, вероятно, защищен паролем. Он начнется с другой бинарной подписи (например, документы Word 2007 начинаются с 0xd0 0xcf 0x11 0xe0 в этом случае)
В принципе, если это новый.docx или.xlsx, и он НЕ запускается с zip-сигнатурой 0x50 0x4b 0x03 0x04, он, вероятно, защищен паролем.
Для других версий MS Office это немного сложнее...
Подпись файла зашифрованного файла должна быть разной. для незашифрованного это 50 4B 03 04 Первые 4 байта зашифрованных D0 CF 11 E0 (по крайней мере для docx, могут отличаться для excel, ppt,...