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

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

Тема в разделе "Кардинг статьи", создана пользователем Kolmin, 13 окт 2015.

  1. Kolmin

    Kolmin Member

    Сообщения:
    90
    Симпатии:
    0
    Содержание:
    1. Краткая структура WAV-файла;
    2. Обработка дискретной информации;
    3. Поиск дампов;
    4. Декодирование. Теория;

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

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

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

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

    Kolmin Member

    Сообщения:
    90
    Симпатии:
    0
    Обработка дискретной информации.
    Перед процессом декодирования необходимо подготовить данные для более удобной обработки. Подготовка данных будет состоять из нескольких этапов:
    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 ТОГДА
    (копируем найденные данные в новую переменную для дальнейшего декодирования)
    [/ПСЕВДОКОД]

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

    Тайминг - это количество дискрет за один полупериод.
    [​IMG]
    Для более подробного понимания тайминга на картинке показан полупериод, полный период, показаны нули и единицы. Т.е. из этого следует, что полупериод нуля в два раза больше полупериода единицы. Если сложить два полупериода единицы, тогда получим примерный полупериод нуля.
    Процесс определения бит из таймингов очень прост. Нам необходимо вычислить ноль - это (как мы выяснили выше) число, примерно в два раза больше полупериода единицы. Если следующее число после нуля в два раза меньше, то и следующее число после меньшего должно равняться приблизительно такому же значению. (пиздец путаница, сам бы нихрена не понял если бы читал)
    Можно вычислять биты по-другому. Необходимо вычислить длину нуля и "двигаться" вперед по графику приблизительно с таким же промежутком. Эта длина показана на графике синими точками. Если между этими точками был полупериод, значит это ноль, если был полный период значит единица.
    Так же в начале и в конце дампа идут синхронизирующие нули, которые никак не относятся к дампу, а служат только лишь для вычисления длины полупериода или полного периода (показана синими точками).
    Если будут вопросы, относительно вычисления тайминга и бит расскажу более подробно.
    После получения бит остается сделать декодирование по графику.
    [​IMG]

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

Поделиться этой страницей

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