Читати книгу - "Заради майбутнього"

177
0

Шрифт:

-
+

Інтервал:

-
+

Добавити в закладку:

Добавити
1 ... 48 49 50 ... 54
Перейти на сторінку:
01000110 00000000 00000001

00000001 00000001 00000000 01100000 00000000 01100000

00000000 00000000 11111111 11100001 00000000 01101110

01000101 01111000 01101001 01100110 00000000 00000000

01001001 01001001…

Крутнувши коліщатко миші, Тоха перемістився до кінця послідовності та відчув, як спину обси´пали мурахи: останній блок був повним, у ньому містилося не два, не п’ять, не сім, а рівно вісім символів. Тобто загальна кількість символів у першій послідовності була кратною восьми. І це… Звісно, це міг бути збіг, але…

За такої кількості символів? Навряд.

Тоха повернувся на початок і зосередився на трьох перших байтах.

11111111 11011000 11111111

Вісім одиничок, один-один, нуль-один, одиниця та три нулі, і потім знову вісім одиничок. Хлопець давно працював із графікою, і це… чорт забирай, це дещо нагадувало.

Серцебиття пришвидшилося. Тоха вже знав, що має робити далі, проте зволікав. Вагався, хоча сам не розумів чому. Боявся розчарування? Чи навпаки — того, що може виявити?

Зрештою хлопець розкрив браузер, відшукав програму для конвертації двійкового коду в шістнадцятковий, скопіював до неї всю послідовність з одиничок і нулів, після чого натиснув «Convert».

За мить програма видала суттєво менший за кількістю символів результат:

ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 60

00 60 00 00 ff e1 00 6e 45 78 69 66 00 00 49 49…

— Розтуди його… — прошепотів Антон.

Він сів на ліжку. Скинув ноутбук із колін на ковдру, підібгав під себе ноги та склав перед обличчям долоні, немовби у безмовній молитві. Кілька секунд просто розгойдувався, втупившись у початок першого рядка, у перші три байти — ff d8 ff.

Тоха вже знав чи радше здогадувався, що вони позначають, але відмовлявся вірити в те, що, по-перше, йому вдалося розгадати все з першої спроби, а по-друге, що за Ліндиними послідовностями таки щось стоїть.

Щоб упевнитися, що не помиляється, хлопець знову перемкнувся на браузер, увів у пошуковому рядку «JPEG» і перейшов за першим посиланням, що викинув Google. То була стаття з «Вікіпедії» про графічний формат JPEG[13]. Праворуч у таблиці зведеної інформації Тоха відшукав стандартний хедер[14], тобто уніфікований набір байтів, з якого починаються всі без винятку файли цього формату:

ff d8 ff

Він не помилився. Якщо послідовність появи позитронів у бульбашковій камері Ліндиної лабораторії справді відповідає двійковому коду, то починає цей код хедер JPEG-файла.

Хоча, якщо подумати, три байти — це не так багато. Це може бути просто збіг.

Тоха наморщив лоба, пригадуючи все, що знав про JPEG-формат. Згадав, що сигнатура JPEG-формату (тобто набір байтів, які є його «візитівкою») насправді містить більше за три байти, і кілька наступних також є уніфікованими, вони позначають певні параметри закодованого зображення. Які саме параметри, хлопець уже не пам’ятав, та це й не мало значення. Він надрукував у пошуковому рядку браузера «list of file signatures»[15] і натиснув «Enter». «Вікіпедія» запропонувала величезну таблицю з переліком сигнатур для всіх можливих типів файлів. Тоха знайшов JPEG і втупився в сигнатуру:

FF D8 FF E0 00 10 4A 46 49 46 00 01

Порівняв її з початком байтової послідовності в терміналі Linux:

ff d8 ff e0 00 10 4a 46 49 46 00 01…

Більше ніяких сумнівів. Вони збігалися. Повністю. Перед ним абсолютно точно JPEG-файл у двійковому форматі. Або принаймні початок JPEG-файла.

Тоха підхопився й узявся міряти кроками спальню. Від збудження змокріли долоні. Що далі? Байти після сигнатури повинні б формувати зображення, але як його прочитати? Перед очима немовби блискавка шугнула, і хлопець ляснув себе по лобі. Футер[16]. Звісно! Як він забув? Якщо це справді графічний файл, обов’язково мусить бути футер!

Тоха знову метнувся до ноутбука, перемкнувся на wiki-сторінку з інформацією про JPEG і відшукав стандартний футер усіх JPEG-файлів:

ff d9

Усього два байти. Хлопець виділив їх, повернувся до термінала Linux і через пошук спробував знайти футер у hex-версії першої послідовності. Знайшов майже миттєво, але, на подив Тохи, футер розташовувався не наприкінці послідовності, а значно ближче до її початку.

Кілька секунд хлопець збентежено кліпав, а потім, придивившись, помітив, що відразу після футера йде наступний хедер.

…ff d9 ff d8 ff e0 00 10 4a 46…

Отже, у послідовності закодовано більше ніж одне зображення.

Через пошук Тоха встановив, що перша Ліндина послідовність охоплює чотири хедери та чотири футери, тобто чотири послідовні зображення. Хлопця тіпало від нетерплячки, так кортіло спробувати їх декодувати, та перед тим він вирішив з’ясувати, скільки зображень і чи зображення взагалі приховують інші дві послідовності.

Він відкрив другий doc-файл.

××××××××××○××○○○×××××××××××○○○○○○○○○○○○○○○○×○○○○○×○○×○×○

○×○○○××○○×○○×○○×○×○○○××○○○○○○○○○○○○○○○○×○○○○○○○×○○○○○○○

○○○○○○○○○○○○○○○○×○○○○○○○○○○○○○○○×○○○○○○○○○○○○○○○○××××××

××××○××○××○○○○○○○○○×○○○○××○○○○○○○○○○○××○○○○○○×○○○×○○○×○

○×○○○○×○×○×○○○×○○×○○○○○××××○○○××○○○…

Замінив хрестики на одинички, а кружечки на нулі. Отриманий масив нулів та одиничок перекинув до Linux-термінала й розбив на байти:

11111111 11011000 11111111 11100000 00000000 00010000

01001010 01000110 01001001 01000110 00000000 00000001

00000001 00000000 00000000 00000001 00000000 00000001

00000000 00000000 11111111 11011011 00000000 01000011

00000000 00011000 00010001 00010010 00010101 00010010

00001111 00011000…

В онлайн-конвертері замінив двійкову послідовність шістнадцятковою:

ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 01

00 01 00 00 ff db 00 43 00 18 11 12 15 12 0f 18…

І відхилився від екрана. Футери шукати не став. Усе й без них було зрозуміло. Перші дванадцять байтів збігалися з початком попередньої послідовності: Тоха бачив перед собою початок ще одного JPEG-малюнка. Наступні байти відрізнялися, проте так і мало бути — далі, після тринадцятого, починалося саме зображення.

От тільки зображення чого?

Серце істерично товклося об ребра.

Тоха перемкнувся на термінал, відшукав першу, отриману в шістнадцятковому форматі послідовність, виділив у ній байти, що мали б відповідати першому зображенню (перший хедер, перший футер і все, що між ними), скопіював їх у hex-редактор і зберіг у файл на жорсткому диску. Після збереження вручну додав до назви новоствореного файла розширення .jpg, потім навів на нього вказівник і, не усвідомлюючи, що затамував подих, двічі клацнув лівою кнопкою миші.

Хлопець підсвідомо очікував на стандартне повідомлення про помилку, щось про невідомий формат чи про неможливість прочитати файл абощо, проте помилився. На весь екран розгорнулася чітка та яскрава картинка — фотографія, — й Антонова щелепа відвисла.

— Щоб я здох, — слова вилазили з горлянки, наче грудки мокрої шерсті. Тоха вдихнув так раптово та глибоко, що ледь не вдавився слиною. — Щоб я, на хер, усрався!

Не кліпаючи, він витріщався на монітор.

Це не міг

1 ... 48 49 50 ... 54
Перейти на сторінку:

 Увага!

Сайт зберігає кукі вашого браузера. Ви зможете в будь-який момент зробити закладку та продовжити читання книги «Заради майбутнього», після закриття браузера.

Коментарі та відгуки (0) до книги "Заради майбутнього"