Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Софт
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2014, 17:05   #1
andreil
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 28
По умолчанию Прочесть JPEG без заголовков

Суть проблемы такова - выковырял из одного файла набор страниц в JPEGе. Проблема в том, что они идут СОВСЕМ без заголовков, например вот так:
Код:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000  3A C4 CE 45 4B 1C 19 CA 9D 17 AB 7A EF FF 85 5D  :ДОEK..Кќ.«zпя…]
00000010  DE CF 30 F9 58 C6 CC 7D 71 3F 0A 6E 24 11 F2 56  ЮП0щXЖМ}q?.n$.тV
00000020  4E D7 D5 CC 09 83 5A 57 C5 D6 8F C9 53 43 CB 9D  NЧХМ.ѓZWЕЦЏЙSCЛќ
00000030  86 BD D4 A4 FD 3F 99 DF 8F 7A E4 44 27 1D 1F 31  †ЅФ¤э?™ЯЏzдD'..1
00000040  FC 26 DF 84 DC F9 13 A3 15 D4 B8 1B 21 2C 98 DB  ь&Я„Ьщ.Ј.Фё.!,.Ы
00000050  1B 5B 8A F1 45 46 23 6D 51 BD 0D E7 A5 49 AA CC  .[ЉсEF#mQЅ.зҐIЄМ
00000060  04 58 15 32 DC 33 A5 6C 69 01 DE CC 17 C5 49 FF  .X.2Ь3Ґli.ЮМ.ЕIя
00000070  D8 B1 58 E0 FC E4 04 29 C1 DC C3 16 21 74 03 E6  Ш±Xаьд.)БЬГ.!t.ж
00000080  67 0E 9D 04 E5 15 A6 FF A2 B7 B4 15 64 CE BC E4  g.ќ.е.¦яў·ґ.dОјд
00000090  D4 88 10 AC 9C D9 D1 BE B0 31 A0 D0 48 B8 D3 4F  Ф€.¬њЩСѕ°1*РHёУO
000000A0  81 EE 26 CB 84 DF 50 00 70 DE E9 58 D4 9C 86 5D  Ѓо&Л„ЯP.pЮйXФњ†]
000000B0  44 C0 27 EF A3 95 D9 CB A4 B1 10 A4 2D 0E 8F 78  DА'пЈ•ЩЛ¤±.¤-.Џx
000000C0  3C 3B A9                                         <;©
В данном случае изображением будет белый прямоугольник 1200х848 пикселей. Разрешение для всех страниц известно, мне не понятно лишь одно - как получить JPEG заголовки для чтения изображения. Там ведь таблицы Хоффмана должны быть...
Из информации, которая может быть полезна при создании заголовков, в файле осталось только несколько полей, назначение которых неизвестно:
Код:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000  34 41 35 30 34 45 32 44 34 35 34 32 34 39 32 44  4A504E2D4542492D
00000010  33 36 33 30 33 32 33 30 33 32 33 31 33 36 33 33  3630323032313633
00000020  32 44 33 30 32 44 33 30 00 00 00 00 00 00 00 00  2D302D30........
00000030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000040  66 32 33 35 65 37 64 30 63 33 37 38 38 34 32 64  f235e7d0c378842d
00000050  33 62 39 36 37 31 35 64 32 37 38 65 39 65 65 65  3b96715d278e9eee


Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000240  31 34 35 33 31 34 31 35 30 36 30 30 30 30 30 30  1453141506000000
00000250  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000260  57 59 2E 2D 66 6A 40 57 53 50 70 6D 62 40 7A 68  WY.-fj@WSPpmb@zh
00000270  31 68 36 73 6E 35 6F 32 4E 38 49 51 4E 53 52 57  1h6sn5o2N8IQNSRW
00000280  00 00 00 00 00 00 00 00 75 39 31 48 36 43 48 5F  ........u91H6CH_
00000290  66 68 41 4D 55 4B 55 5A 4E 55 65 65 00 00 00 00  fhAMUKUZNUee....
Размеры этих полей и их смещения в общем файле заданы строго и не изменяются. При повторной загрузке файла изменились значения с адресов 0х40 и 0х240, но при этом JPEG-содержимое страниц не изменилось. Значит эти поля на заголовки 100% не влияют...

PS: Остальные поля точно не нужны для загрузки изображений, поскольку содержат текстовую информацию (такую, как название книги, имя автора, издательство, ISBN и прочую информацию о книге). Если кто-либо хочет помочь, могу дать полные файлы, имеющиеся у меня в распоряжении и программу на Delphi для их разбора (в исходных кодах, ест).
andreil вне форума Ответить с цитированием
Старый 16.06.2014, 18:00   #2
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

это не JPEG.

в JPEG
после FF D8 должен быть FF, после FF не может быть 85.
f.hump вне форума Ответить с цитированием
Старый 16.06.2014, 23:51   #3
andreil
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 28
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
это не JPEG.

в JPEG
после FF D8 должен быть FF, после FF не может быть 85.
Да, это может быть и не JPEG, а что-либо иное. Но я выложил дамп именно картинки. А все эти FFD8 и прочие - это именно заголовки JPEGа, не более. К самой картинке они отношение имеют только косвенное.

В первом дампе находится именно картинка, но в каком формате - я без понятия Просто я предположил, что там будет JPEG по тому, что on-line-читалка выдавала JPEG-файлы...
andreil вне форума Ответить с цитированием
Старый 17.06.2014, 01:03   #4
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

про JPEG:
FF - зарезервированный символ, если при кодировании картинки получается FF за ним всегда должен следовать 00

FF XX - маркер, ХХ - определяет тип данных которые следуют за маркером (комментарий, дополнительная инфа, таблица Хаффмана, таблица кватования, начало картинки, фрейм, скан, конец картинки)

без маркеров JPEG не читаем (как впрочем без таблиц Хаффмана, таблиц квантования, и других важных хедеров)



дамп из первого поста никак не JPEG. более того, на мой взгляд, это не белый прямоугольник ни в каком другом картиночном формате. как ни кодируй белый прямоугольник - это будет периодически повторяющийся набор байтов. в том дампе я вообще не вижу повторений.

поэтому вопрос: по каким признакам вы определили, что этот фрагмент картинка (белый прямоугольник)?
f.hump вне форума Ответить с цитированием
Старый 17.06.2014, 08:51   #5
andreil
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 28
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
поэтому вопрос: по каким признакам вы определили, что этот фрагмент картинка (белый прямоугольник)?
Определил просто - при чтении данной книги on-line там идет именно чистая страница.

А по содержимому - например в on-line-читалке оно частично зашифровано (а конкретно - данные, отвечающие за защиту содержимого зашифрованы AES и потом заXORены). Здесь же в заголовках имеются данные которые могут быть ключиками для расшифровки содержимого. Так же не исключено, что содержимое может быть просто сжать каким-либо алгоритмом...
andreil вне форума Ответить с цитированием
Старый 17.06.2014, 12:40   #6
andreil
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 28
По умолчанию

Просьба к модераторам - закройте тему.
Покопался в декомпилированной программе - там вообще свой формат изображений %) Сейчас сижу и разбираю его...
andreil вне форума Ответить с цитированием
Старый 17.06.2014, 13:11   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Сомнительно. Может просто пережатый, хитро обрезанный, редко использумый формат изображений.Типа TGA или ещё чего.
Человек_Борща вне форума Ответить с цитированием
Старый 17.06.2014, 14:55   #8
andreil
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Сомнительно. Может просто пережатый, хитро обрезанный, редко использумый формат изображений.Типа TGA или ещё чего.
Заголовок картинки - "HVQ5 1.0", по нему идентифицируется версия кодера. Сам кодер идёт в виде 2-х DLLок ebHVC.dll и ebHVD.dll. Если кто знаком с такими - поделитесь информацией...
andreil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как переделать gif в jpeg без потери анимации Shadow78 Помощь студентам 10 24.09.2011 02:31
контроль заголовков spydark91 Общие вопросы Delphi 4 15.06.2011 21:27
есть ли компонент,чтобы иметь прямой доступ к пикселям jpeg без конвертирования в bmp? Dima_Dima Свободное общение 1 26.05.2010 19:00
есть ли компонент,чтобы иметь прямой доступ к пикселям jpeg без конвертирования в bmp? Dima_Dima Компоненты Delphi 14 26.05.2010 18:30
как без ошибки загрузить jpeg в image beemoto Мультимедиа в Delphi 23 15.05.2009 01:16