Меня попросили найти, чем открыть файлы с расширением 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-файл. Этот винегрет был заархивирован и передан благодарному пользователю.
Возможно, эта информация будет кому-то полезна, спасибо за внимание.
Кто нибудь сможет объяснить на пальцах. А то не понятно что куда вводить и делать.