Случай извлечения данных из файла .iraw

Меня попросили найти, чем открыть файлы с расширением iraw. С которым я прежде не сталкивался. Однако благодаря богу, гуглю и яндексу быстро выяснил, что это формат, применяемый фирмой Apple и конвертеров в/из него, кроме как в AppleStore, нету.

Однако внутри в первых же шестнадцати байтах была характерная для JPEG-файлов сигнатура JFIF. И когда я переименовал файл из .iraw в .jpg, программа-просмотрщик картинок ACDSee его открыла. Однако размер этого файла не вязался с размерами картинки — 1.8 Мб для jpeg-а 1000 на 500 пикселей это явно много. Многостраничный? Тогда JFIFов в нём должно быть много. И действительно, команда…

grep -ac JFIF file.iraw

… нашла нексколько десятков вхождений.

Что же, логично – файл-контейнер содержит в себе объекты-BLOBы. Как их оттуда извлечь? Команда…
grep -abo JFIF file.iraw

… выдала список смещений от начала файла в байтах. Не в чистом формате, но единообразные суффиксы :JFIF элементарно удаляются. Теперь берём острый нож, точнее, команду dd и запускаем её с соответствующими параметрами. Не один раз, а столько, сколько картинок упаковано в контейнер. Чтобы переложить работу на железную пилу, был написан скрипт:

cnt=0

begin=0

for i in `cat $file.txt|sort -n;echo 99999999`

do

 end=`expr $i - 6`

 size=`expr $end - $begin`

 dd if=$file.iraw of=$file.$cnt.jpg bs=1 skip=$begin count=$size

 begin=$end

 cnt=`expr 1 + $cnt`

done

В результате работы скрипта файл был порезан на части, каждая из которых успешно открывалась как JPEG-файл. Этот винегрет был заархивирован и передан благодарному пользователю.

Возможно, эта информация будет кому-то полезна, спасибо за внимание.
Tags:
форматы файлов

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.