Скачать презентацию Форматы файлов Андрей Гейн Форматы Форматы Скачать презентацию Форматы файлов Андрей Гейн Форматы Форматы

Презентация File Formats.pptx

  • Количество слайдов: 46

Форматы файлов Андрей Гейн Форматы файлов Андрей Гейн

Форматы Форматы

Форматы • Спецификации Форматы • Спецификации

Форматы • Спецификации • Определение формата Форматы • Спецификации • Определение формата

Форматы • Спецификации • Определение формата – Расширение Форматы • Спецификации • Определение формата – Расширение

Форматы • Спецификации • Определение формата – Расширение – Magic numbers Форматы • Спецификации • Определение формата – Расширение – Magic numbers

Форматы • Спецификации • Определение формата – Расширение – Magic numbers – Meta-данные Форматы • Спецификации • Определение формата – Расширение – Magic numbers – Meta-данные

Форматы • Спецификации • Определение формата – Расширение – Magic numbers – Meta-данные – Форматы • Спецификации • Определение формата – Расширение – Magic numbers – Meta-данные – MIME

Паттерны Паттерны

Паттерны • Поточность Паттерны • Поточность

Паттерны • Поточность • Chunk Паттерны • Поточность • Chunk

Паттерны • Поточность • Chunk • Указание размера Паттерны • Поточность • Chunk • Указание размера

Паттерны • • Поточность Chunk Указание размера Резервация Паттерны • • Поточность Chunk Указание размера Резервация

Паттерны • • • Поточность Chunk Указание размера Резервация Теги Паттерны • • • Поточность Chunk Указание размера Резервация Теги

MIDI MIDI

MIDI • Запись MIDI • Запись

MIDI • Запись Заголовок Размер Данные MIDI • Запись Заголовок Размер Данные

MIDI • Запись Заголовок Размер Данные 4 D 54 68 64 “MThd” 72 6 MIDI • Запись Заголовок Размер Данные 4 D 54 68 64 “MThd” 72 6 B “MTrk” 00 00 00 06 Размер записи 01 4 D 00 01 … Формат — 1 События 00 02 2 трека E 7 28 Временной интервал — 1 мс

MIDI • Событие MIDI • Событие

MIDI • Событие Время Статус-байт Данные MIDI • Событие Время Статус-байт Данные

MIDI • Событие Время Статус-байт 00 FF Дополнительно Данные MIDI • Событие Время Статус-байт 00 FF Дополнительно Данные

MIDI • Событие Время 00 FF 00 01 02 03 04 05 Статус-байт Дополнительно MIDI • Событие Время 00 FF 00 01 02 03 04 05 Статус-байт Дополнительно Номер Текст Copyright Имя Инструмент Слова Данные

WAV WAV

WAV • 52 49 46 46 • 70 C 0 0 B 00 • WAV • 52 49 46 46 • 70 C 0 0 B 00 • 57 41 56 45 “RIFF” Chunk size “WAVE”

WAV • • 52 49 46 46 70 C 0 0 B 00 57 WAV • • 52 49 46 46 70 C 0 0 B 00 57 41 56 45 66 6 D 74 20 10 00 01 00 02 00 “RIFF” Chunk size “WAVE” “fmt ” Subchunk 1 size Аудио-формат Моно/стерео

WAV • 64 61 74 61 • 4 C C 0 0 B 00 WAV • 64 61 74 61 • 4 C C 0 0 B 00 • … “data” Subchunk 2 size Данные

BMP BMP

BMP • • 42 4 D B 8 C 5 5 A 00 00 BMP • • 42 4 D B 8 C 5 5 A 00 00 00 36 00 00 00 “BM” Размер файла Резерв Смещение BITMAPINFOHEADER

Пишем свой парсер Пишем свой парсер

Пишем свой парсер from struct import * Пишем свой парсер from struct import *

Пишем свой парсер from struct import * pack('i', 1000) b'xe 8x 03x 00' Пишем свой парсер from struct import * pack('i', 1000) b'xe 8x 03x 00'

Пишем свой парсер from struct import * pack('i', 1000) pack('h', 1000) b'xe 8x 03x Пишем свой парсер from struct import * pack('i', 1000) pack('h', 1000) b'xe 8x 03x 00' b'xe 8x 03'

Пишем свой парсер from struct import * pack('i', 1000) pack('h', 1000) pack('>h', 1000) b'xe Пишем свой парсер from struct import * pack('i', 1000) pack('h', 1000) pack('>h', 1000) b'xe 8x 03x 00' b'xe 8x 03' b'x 03xe 8'

Пишем свой парсер from struct import * pack('i', 1000) pack('h', 1000) pack('>h', 1000) pack('i', Пишем свой парсер from struct import * pack('i', 1000) pack('h', 1000) pack('>h', 1000) pack('i', -1000) b'xe 8x 03x 00' b'xe 8x 03' b'x 03xe 8' b'x 18xfcxff'

Пишем свой парсер from struct import * pack('i', 1000) pack('h', 1000) pack('>h', 1000) pack('i', Пишем свой парсер from struct import * pack('i', 1000) pack('h', 1000) pack('>h', 1000) pack('i', -1000) pack('q', 10**12) b'xe 8x 03x 00' b'xe 8x 03' b'x 03xe 8' b'x 18xfcxff' b'x 00x 10xa 5xd. .

Пишем свой парсер pack('c', b'a') pack('5 s', b'hello') b'a' b'hello' Пишем свой парсер pack('c', b'a') pack('5 s', b'hello') b'a' b'hello'

Пишем свой парсер pack('c', b'a') pack('5 s', b'hello') pack('6 p', b'hello') b'a' b'hello' b'x Пишем свой парсер pack('c', b'a') pack('5 s', b'hello') pack('6 p', b'hello') b'a' b'hello' b'x 05 hello'

Пишем свой парсер pack('hhl', 1, 2, 3) b'x 01x 00x 02x 00x 03x 00x Пишем свой парсер pack('hhl', 1, 2, 3) b'x 01x 00x 02x 00x 03x 00x 00'

Пишем свой парсер pack('hhl', 1, 2, 3) b'x 01x 00x 02x 00x 03x 00x Пишем свой парсер pack('hhl', 1, 2, 3) b'x 01x 00x 02x 00x 03x 00x 00' pack('2 h', 1, 2) b'x 01x 00x 02x 00'

Пишем свой парсер pack('hhl', 1, 2, 3) b'x 01x 00x 02x 00x 03x 00x Пишем свой парсер pack('hhl', 1, 2, 3) b'x 01x 00x 02x 00x 03x 00x 00' pack('2 h', 1, 2) b'x 01x 00x 02x 00' pack('%dh' % len(a), *a) b'x 01x 00x 02x 00x 10x 00'

Пишем свой парсер unpack('hhl', b'x 01x 00x 02x 00x 03x 00x 00') (1, 2, Пишем свой парсер unpack('hhl', b'x 01x 00x 02x 00x 03x 00x 00') (1, 2, 3)

Пишем свой парсер unpack('hhl', b'x 01x 00x 02x 00x 03x 00x 00') (1, 2, Пишем свой парсер unpack('hhl', b'x 01x 00x 02x 00x 03x 00x 00') (1, 2, 3) calcsize('hhl') 8

Пишем свой парсер unpack('hhl', b'x 01x 00x 02x 00x 03x 00x 00') (1, 2, Пишем свой парсер unpack('hhl', b'x 01x 00x 02x 00x 03x 00x 00') (1, 2, 3) calcsize('hhl') 8 pack('h 0 l', 1) 'x 01x 00x 00'

Прячем файл Прячем файл

Прячем файл GIF 47 49 46 38 39 61 03 00 05 00 … Прячем файл GIF 47 49 46 38 39 61 03 00 05 00 … 3 B GIF 89 a Ширина Высота Конец

Прячем файл ZIP chunk 50 4 B xx yy … PK. . Данные Прячем файл ZIP chunk 50 4 B xx yy … PK. . Данные