...

воскресенье, 21 июня 2020 г.

Восстанавливаем данные с ZOOM H6 Handy Recorder подручными средствами

Введение


Намедни попал в нашу лабораторию довольно любопытный заказ. Профессиональный диктофон ZOOM H6 Handy Recorder. Устройство и носитель в рабочем состоянии, проблема — носитель, на котором находились данные (карта памяти SDHC на 32 Гбайт) был отформатирован в фотоаппарате. Вопрос о том, каким образом флешка из диктофона попала в фотоаппарат, оставим для истории — нам ответ на него не интересен. Интересно восстановить записанные звуковые данные.

Форматирование разделов FAT32 — это всегда потеря файловых записей; процесс сопровождается их заменой «чистыми». С одной стороны, это удобно, так как в структурах FAT32 не остается никаких «рудиментов» файловых записей. С другой — это крайне губительно для данных, так как в случае фрагментации файлов и необходимости их восстановить, простое RAW-сканирование становится недостаточным, на выходе получаются поврежденные или неработающие файлы.
Не исключение и наш заказ. Попытки отсканировать карту памяти имеющимся ПО (Data Extractor, R-Studio, R.Explorer) структуру папок обнаружить не смогли. При черновом восстановлении аудиопотока (wav-файлы) получаются работающие файлы, но с перемешанным содержимым — то есть продолжительность звуковой дорожки верная, файл проигрывается, но звук идет кусками то из одной дорожки, то из другой.

Владелец устройства сообщил, что запись велась на два микрофона в формате интервью, то есть аудиопоток должен быть идентичным, но громкость голосов в каждой записи — разной.

image
Поврежденный аудиофайл. Явно заметно, что области громкого звука и тихого звука имеют примерно одинаковую продолжительность и резкие, обрывающиеся, границы

image
Тот же аудиофайл после исправления.

ТТХ устройства


Начинаем, как водится, со знакомства с устройством. Идем на сайт производителя, и вдумчиво читаем, что там про него пишут. Особенно нам интересны поддерживаемые форматы файлов и количество независимых микрофонов. Устройство поддерживает подключение до 4 микрофонов и, соответственно, одновременную запись с них. Максимально может записываться одновременно 8 дорожек (оно и понятно: стерео с 4 микрофонов). С форматами файлов все тоже понятно. Ассортимент не велик, форматы широко распространенные, никаких «своих» форматов нет. И это хорошо.

image
Форматы аудиофайлов, поддерживаемые рекордером

Вся нужная информация найдена. Начинаем работать. Для восстановления информации нам нужно ответить последовательно на следующие вопросы: какой формат записи использовался в нашем случае, как расположены данные на карте памяти, и что надо сделать для того, чтобы файлы заработали правильно?

1. Какой использовался формат записи?


Ответ на этот вопрос находится в заголовке аудиофайла:

image

Тут все просто, в пояснениях не нуждается. Поехали дальше.

2. Как расположены данные на карте памяти?


Здесь и дальше используем WinHex.

Находим первый заголовок аудиопотока (берем пример заголовка из результатов предварительного RAW-восстановления). Выглядит он примерно так:

image

В каждом файле есть таймштамп:

image

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

Производим поиск от начала до первого таймштампа нужной нам аудиозаписи. Обозначаем начало сектора с таймштампом как начало блока. Теперь производим поиск последнего таймштампа нужной нам аудиозаписи (ищем, соответственно, с конца). Дальше нам нужно найти окончание данных, относящихся к нужной нам записи. Это просто: ищем следующий за последним таймштампом заголовок нового аудиопотока. На всякий случай нужно убедиться, что он не относится к тому, что мы ищем: смотрим в сектор, видим там другой таймштамп. Отлично. Последний байт перед найденным заголовком отмечаем как конец блока.

Теперь у нас имеется выделенная область, содержащая данные нужного нам аудиопотока:

image

Копируем эту область в новый файл. Так, во-первых, удобнее работать. А во-вторых, другие-то данные нам не нужны — зачем нам их восстанавливать?

Дальше работаем с полученным файлом.

Из формата файла: WAV, 44k, mono. То есть при записи с двух микрофонов мы имеем дело с двумя звуковыми дорожками.

Разбиваем файл на фрагменты по количеству таймштампов. Получаем четное количество фрагментов со следующими параметрами:

Фрагмент 1 — 32 кбайт;
Фрагмент 2 — кратно 32 кбайт;
Заголовки фрагментов 1 и 2 идентичны.

Фрагмент 3 — 32 кбайт;
Фрагмент 4 — кратно 32 кбайт;
Заголовки фрагментов 3 и 4 идентичны.

И так далее, все имеющиеся аудиопотоки (восстановить требовалось 10).

После несложных вычислений:

  1. Аудиопоток фрагментирован;
  2. Размер фрагментов составляет 32 кбайт;
  3. Фрагменты чередуются в порядке: четные относятся к первой дорожке, нечетные — ко второй.

image
Структура аудиопотока, записанного с двух микрофонов рекордером ZOOM H6 Handy recorder

3. Пора собирать аудиофайлы


Очевидно, что после того, как мы узнали, каким образом ZOOM H6 handy recorder пишет данные, собрать их в нормально проигрываемые аудиофайлы не составило никакого труда и заняло несколько минут машинного времени:
  1. Разбиваем весь выделенный аудиопоток на куски по 32 кбайт; мы использовали File Splitter & Cutter;
  2. Четные куски отправляем в одну папку, нечетные — в другую; использовался Total Commander, выделение по маске (кнопка "+" на цифровой клавиатуре) *.*1; *.*3; *.*5; *.*7; *.*9;
  3. Переименовываем файлы в обеих папках так, чтобы их расширения представляли собой номера по порядку; снова Total Commander, групповое переименование — и выбираем в расширении «счетчик», а в параметрах счетчика — не менее 5 цифр (так как фрагментов будет много);
  4. Объединяем файлы по порядку в каждой из папок; опять же, удобен Total Commander;
  5. Переименовываем результат в *.wav и наслаждаемся результатом.

А что насчет других форматов файлов и другого количества микрофонов?


Конечно, это был интересный вопрос. И мы не преминули воспользоваться возможностью это проверить. Использовали три микрофона (больше просто не было в наличии), формат записи — MP3, битрейт самый низкий и самый высокий из возможных.

Результат абсолютно идентичен предыдущему, с той лишь разницей, что в начале аудиопотока не два куска с заголовками, а три. Размер блока при записи — те же 32 кбайт. Расположение кусков — также по порядку:

image

Собрать файлы можно также, без напряжения, используя общеизвестный софт; единственное, что распределять куски по 32 кбайт придется по трем папкам. Делаем это с использованием скрипта для Total Commander. Ну а дальше — групповое переименование, сборка и результат.

Заключение


Радует, когда производитель не заморачивается сложными «собственными» форматами данных, нагромождением алгоритмов их записи и тому подобной мутью, в разы увеличивающей необходимое на восстановление информации время.

Let's block ads! (Why?)

Комментариев нет:

Отправить комментарий