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

в 22:34, , рубрики: Песочница, метки:

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

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


  1. Дмитрий:

    Кто нибудь сможет объяснить на пальцах. А то не понятно что куда вводить и делать.

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js