TEXHO

Введение в процесс автоматического декода дампов (2015)

В теме 1 сообщение

Содержание:

1. Краткая структура WAV-файла;

2. Обработка дискретной информации;

3. Поиск дампов;

4. Декодирование. Теория;

 

Структура WAV-файла (Windows PCM).

Звуковой файл можно четко разделить на две части. В первой части хранится информация о заголовке файла, во второй части хранятся непосредственно звуковые данные.

В заголовке хранится информация о размере файла, о количестве каналов(моно, стерео и т.д.), о частоте дискретизации и пр. Звуковые данные хранятся в виде дискрет. Для извлечения дискрет есть программа WAV-TXT, которая входит в известный экселевский пакет по декоду.

 

d111ef5b3951.jpg

 

В первом скриншоте показан пример аудиофайла с реальным дампом открытого в программе Cool Edit pro

 

6443be7ed3b0.jpg

 

Во втором скриншоте показан пример аудиофайла с приближением. На данном скриншоте можно увидеть точки. Каждая точка это и есть дискрета, из которой построен данный график.

 

Code:
55, 58, 63, 65, 69, 73, 76, 79, 82, 85, 88, 90, 92, 93, 93, 93, 91, 86, 8072, 63, 52, 38, 27, 15, 6, 0, 1, 4, 14, 26, 44, 62, 81,101,120,136,151165,176,187,196,205,213,220,226,231,234,235,234,233,229,225,221,216,211,206202,196,193,190,186,182,179,177,174,172,170,167,165,165,164,166,168,172,177185,195,205,216,227,238,246,252,255,254,249,240,227,211,192,172,151,131,11094, 79, 66, 56, 50, 44, 42, 39, 37, 37, 36, 35, 35, 35, 35, 35, 36, 36, 3839, 41, 45, 47, 53, 57, 63, 68, 74, 78, 82, 86, 88, 89, 91, 92, 93, 93, 9290, 86, 80, 72, 62, 50, 37, 27, 18, 13, 12, 16, 25, 40, 58, 78, 99,121,139158,173,187,198,209,218,228,235,242,246,249,250,249,249,248,245,244,246,247
Здесь показан пример дискрет, взятых из реального аудиофайла.

 

Обработка дискретной информации.

Перед процессом декодирования необходимо подготовить данные для более удобной обработки. Подготовка данных будет состоять из нескольких этапов:

1. Узнать размер аудиоданных из заголовочной информации аудиофайла и, при большом размере, необходимо выполнить поэтапную загрузку в память ПК, т.е. разбить аудиоданные на несколько частей. Вычислить необходимое количество частей можно по формуле:

 

ChankSize - общий размер аудиоданных

buf - размер аудиоданных, который ПК сможет загрузить для дальнейшей обработки

part - количество разбиваемых частей

 

part = ChankSize / buf

 

После этого необходимо отбросить дробную часть и мы получим нужное количество частей.

 

2. Определить минимальный и максимальный порог фонового шума для дальнейшего его отбрасывания при процессе декодирования и автоматического поиска дампов.

 

[ПСЕВДОКОД]

MIN = 255

MAX = 0

 

ЦИКЛ i от 0 до buf

ЕСЛИ MIN > data ТОГДА MIN=data

ЕСЛИ MAX < data ТОГДА MAX=data

[/ПСЕВДОКОД]

 

3. Выполить поэтапную загрузку в память

 

[ПСЕВДОКОД]

Переменные:

ChankSize - общий размер аудиоданных

buf - размер аудиоданных, который ПК сможет загрузить для дальнейшей обработки

PART - количество разбиваемых частей

 

ЕСЛИ buf > ChankSize ТОГДА (загрузить все данные)

В ПРОТИВНОМ СЛУЧАЕ (циклично загрузить данные PART раз)

[/ПСЕВДОКОД]

 

Поиск дампов.

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

 

[ПСЕВДОКОД]

Переменные:

ChankSize - общий размер аудиоданных

buf - размер аудиоданных, который ПК сможет загрузить для дальнейшей обработки

PART - количество разбиваемых частей

MIN,MAX - пороги фонового шума

data - данные

count - счетчик фонового шума

countdump - счетчик найденных данных

lengthdump - минимальная длина дампа

 

ЦИКЛ i от 0 до PART

ЕСЛИ (data > min) и (data < max) ТОГДА count = count + 1 В ПРОТИВНОМ СЛУЧАЕ count = 0

ЕСЛИ count < 300 ТОГДА

countdump = countdump + 1

ЕСЛИ countdump > lengthdump ТОГДА

(копируем найденные данные в новую переменную для дальнейшего декодирования)

[/ПСЕВДОКОД]

 

Декодирование. Теория.

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

- определение тайминга;

- определение бит;

- декодирование битовой(двоичной) информации.

 

Тайминг - это количество дискрет за один полупериод.

 

66fd382a439c.jpg

 

Для более подробного понимания тайминга на картинке показан полупериод, полный период, показаны нули и единицы. Т.е. из этого следует, что полупериод нуля в два раза больше полупериода единицы. Если сложить два полупериода единицы, тогда получим примерный полупериод нуля.

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

Можно вычислять биты по-другому. Необходимо вычислить длину нуля и "двигаться" вперед по графику приблизительно с таким же промежутком. Эта длина показана на графике синими точками. Если между этими точками был полупериод, значит это ноль, если был полный период значит единица.

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

Если будут вопросы, относительно вычисления тайминга и бит расскажу более подробно.

После получения бит остается сделать декодирование по графику.

 

ffd6d9a465ee.jpg

 

По данному принципу работает мое автоматизированное ПО для декода.

В целом все. Если аудитория проявит интерес, то готов более подробно углубиться в каждый из этапов автоматического декодирования с реальными примерами исходников. Отвечу на все ваши вопросы в данном топике.

2015 darknet © sergdb

Поделиться сообщением


Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти