С Новым годом! Форум программистов, компьютерный форум, киберфорум
Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
 Аватар для Zerkalka
38 / 37 / 8
Регистрация: 09.03.2010
Сообщений: 79

Определить формат файла

18.10.2010, 10:09. Показов 4037. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для определения формата файла в своей прогармме использую базу magic.mgc (из команды file). Не определяет форматы MS Office 2007. Есть ли решение? Возможно есть другой метод определения формата? Не хотелось бы составлять свою базу форматов и выполнять в программе побайтовую обработку файла (для определения сигнатуры файла)
Заранее благодарю...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.10.2010, 10:09
Ответы с готовыми решениями:

Определить формат файла
Сделал каталог в treeview. При выборе папки из каталога в listview отображаются файлы. Могу выбрать файл pdf и открыть. Как можно...

Определить формат wav-файла
Мне нужно узнать какой программой и как именно можно записать файл такого же формата. Образец прикрепляю.

Не могу определить формат файла
Прилетел на комп вот такой файл (в прикрепе), в нем лежит ценная и нужная мне инфа. не детектится ничем, хоть тресни сигнатура тоже не...

8
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.10.2010, 10:24
А в базе то что?

Добавлено через 2 минуты
Способов всего два: по расширениям файлов и по внутренним заголовкам (с теми самыми сигнатурами).
0
 Аватар для Zerkalka
38 / 37 / 8
Регистрация: 09.03.2010
Сообщений: 79
18.10.2010, 10:29  [ТС]
вот именно, что не могу найти не скомпиленную базу (magic.mime)
по расширениям - не вариант, расширение можно любое задать или убрать вообще.
а сигнатуры - можно, но программа должна обрабатывать очень много форматов, потому и не хочется составлять свою базу сигнатур. сделать можно, но так не хочется изобретать велосипед...
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.10.2010, 10:34
Винда всегда сначала по расширению определяет, передаёт подоконнику, который с этим расширением должен работать, а он уже по сигнатурам перебирает только те форматы, с которыми умеет работать. Но велосипедных дел мастером себя провозглашать действительно не стоит.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
18.10.2010, 18:24
Не определяет форматы MS Office 2007.
Чего говорит ?

Добавлено через 5 минут
Code
1
2
3
4
5
[odip work]$ file word2003.doc
word2003.doc: Microsoft Office Document
[odip work]$ file word2007.docx
word2007.docx: Zip archive data, at least v2.0 to extract
[odip work]$
Ну вообщем все верно - файл word 2007 - это просто ZIP-архив
0
 Аватар для Zerkalka
38 / 37 / 8
Регистрация: 09.03.2010
Сообщений: 79
18.10.2010, 20:56  [ТС]
Цитата Сообщение от odip Посмотреть сообщение
это просто ZIP-архив
да, если смотреть только на первые байты, а именно: 50 4b 03 04.

Для сравнения:
Word 2007 (.docx)
String in HEX: 50 4b 03 04 14 00 06 00 08 00 00 00 21 00 30 c9

Excel 2007 (xltx)
String in HEX: 50 4b 03 04 14 00 06 00 08 00 00 00 21 00 a7 95

PowerPoint 2007 (pptx)
String in HEX: 50 4b 03 04 14 00 06 00 08 00 00 00 21 00 5c 0b
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
19.10.2010, 12:03
Вот создал я word.docx
HEX: 50 4B 03 04 14 00 06 00 │ 08 00 00 00 21 00 DD FC

Zerkalka, извини но ты немного не соображаешь о чем говоришь
Если это ZIP-архив, то смотреть байты дальше не имеет смысла
Потому что ZIP-архив имеет заголовок (переменной длины кстати)
Я могу взять создать ZIP-архив и сделать чтобы первые 16 байтов совпадали с твоими
Но это не будет формат docx
Чтобы разпознать что это docx нужно открыть этот ZIP-архив и лазить уже внутри
Причем я сильно подзреваю что отличить docx от xlsx и от pptx очень трудно
0
 Аватар для Zerkalka
38 / 37 / 8
Регистрация: 09.03.2010
Сообщений: 79
19.10.2010, 13:10  [ТС]
odip, ясно. вразумительных советов не даете, а только оскорбляете перед этим извинившись. в программке Hex Editor Neo можно создать файл с любой сигнатурой (и zip будет не архивом, а не понятно чем). меня интересует ответ на вопрос из первого поста.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
19.10.2010, 20:18
Ну если ты понял, тогда повторю еще раз:
Сигнатурным способом ( как ты пытаешься сделать в посте #6 ) ты не отличишь ZIP-архив от docx, pptx, xlsx
Нужно парсить файл
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.10.2010, 20:18
Помогаю со студенческими работами здесь

Определить формат файла(чем его распаковать)
Всем привет! Имеется игрушка BUS Simulator 2012, но сколько не пытался распаковать файлик(чтобы русифицировать игру) ничего не получилось,...

Как можно определить формат файла, находящегося в буфере обмена
Доброго времени суток! Как можно определить формат файла, находящегося в буфере обмена (допустим меня интересуют файлы с расширением...

Как исправить ошибку «Формат файла xls не соответствует разрешения файла»?
В общем задача такая: Создать на стороне пользователя средствами JS excel файл. Сразу оговорюсь, что на стороне сервера это сделать...

Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется
Формат файла состоит из 3 структур и одной переменной. Подробное описание формата во вложении, просьба посмотреть его. У меня возникла...

Проверка формы отправки файла на имя и формат файла
Добрый день. Появилась необходимость проверять имя файла и формат перед отправки формы. Пока в сети нашел возможность проверять формат:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru