2013-07-31 3 views
2

Мне недавно был предоставлен текстовый файл и он сказал, что он может быть преобразован в изображение. Текстовый файл выглядит следующим образом ...Преобразование (.hex?) Файла в видимое изображение

0000000 d8ff e0ff 1000 464a 4649 0100 0001 0100 
0000010 0100 0000 e2ff a80c 4349 5f43 5250 464f 
0000020 4c49 0045 0101 0000 980c 7061 6c70 1002 
... 
000d320 8b4c 1b28 3bd4 0016 91e0 799e 34c1 4457 
000d330 7113 ee4d cd73 4945 63db d9ff   
000d33c 

От прибегая к помощи, я уверен, что это .hex файл (хотя многие из шестигранных файлов, которые я видел в Интернете были разные форматы, так что я не являюсь определенный).

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

Является ли кто-нибудь уверенным в том, какой тип файла это и как я могу преобразовать его обратно в образное изображение?

Благодаря

ответ

1

Это выглядит как Jpeg файл, зашифрованный в .hex файле.

Я не привык к работе с файлами hex, но 7 первых цифр выглядят так, как будто они в основном подсчитывают строки. Я просто проигнорирую их, я уверен, что вы можете найти документацию о том, что именно там роль (если есть!). Реальные байты данных - это то, что закодировано в остальной части каждой строки.

Когда-то я написал lightweight jpeg encoder. Я пошел в источник, чтобы узнать, звонили ли байты в вашем файле:

Файл начинается с d8ff, а код, который я написал для кодирования jpeg, который начинается с записи заголовка файла, который идентифицирует его как jpeg и кодирует информацию о нем, такую ​​как ее размер, начинается с записи байтов FFDB (см. this line, где «SOI» означает «Start Of File»).

тогда у нас есть e0ff 1000 464a 4649 0100 0001 ... и мой код пишет: FFE0 0010 4A46 4946 0001 0100 (см line 127 and following), которые являются следующими байтами стандартного файла JPEG с JFIF header.

Наконец, последние 3 байта вашего файла: d9ff, а jpec записывает FFD9 в качестве байтов конца файла.

Очевидно, что ваш файл не написан с той же консистенцией, что и мой код (на самом деле это выглядит как middle-endian, я не видел этого раньше ...), но вы можете видеть, что каждый пакет из 2 байтов (4 шестнадцатеричных символа) одинаково при инвертировании порядка этих двух байтов! Это, очевидно, JPEG-кодированное изображение ...

Чтобы прочитать это как образ, я хотел бы попробовать:

  1. просто зачистки 7 первых цифр каждой строки и писать оставшиеся байты в виде двоичного файла , если конечный результат этого шестнадцатеричного файла соответствует тому, который находится на вашем компьютере, или
  2. удаляет 7 первых цифр и реверсирует порядок каждого пакета в 2 байта и записывает его в виде двоичного файла, если точность вашего устройства соответствует тот, на который я написал Jpec!

Надеюсь, это поможет!

Смежные вопросы