Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.03.2016, 08:38
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 74
Репутация: 518
По умолчанию Свой кодер-декодер JPEG

Доброго всем.
Раскрою карты сразу - о скорости работы нет речи, надо в некотором бинарнике (прошивке) найти картинки JPG/JPEG, известны размеры изображения 800/480, изображение скорее всего лежит без служебной информации по некоторым смещениям внутри бинарника, служебка для встроенного декодера ненужна поскольку он и так всегда работает со стандартным размером и сжатием, а возможно и есть некоторая - пока не известно, но файл есть и просмотр в HEX редакторе показывает наличие структуры файла и наличие картинок там (в том числе и BMP).
2 Идеи как вскрыть/поменять картинки в бинарнике:
1) Влезть в тело библиотеки JPEG DCU иподставлять внутри там бинарный код для декодирования, поскольку JPEG.LoadFromFile читает все заголовки а мне они не известы в бинарнике.. - как влезть во внутрь?? не знаю...
2) Написать полностью свой кодер - декодер с нуля и уже в него подкидывать бинарные данные изображения из прошивки.

Что скажете?
Ответить с цитированием
  #2  
Старый 20.03.2016, 12:53
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

А что сказать - большой вероятность того, что вскрытие формата не поможет, смысла нет. Там очень много файлов, можно заплутать в определениях. Лучше для начала попользуйте спец проги, типа драгонанпакера - это может вскрыть "потроха" всего и вся. Или, если средствами делфи, то тогда можно по заголовку и завершению рисунка найти его в теле бинарника загрузив в поток, а из него в image - если не ошибаюсь, любой jpeg начинается с #FF#D8...#4A#46#49#46 (...JFIF), а заканчивается обязательно на #FF#D9, можно кусок так определить для считывания в поток, это чтоб посмотреть картинку, а вот с её подменой может и не выйти, поскольку нет двух одинаковых рисунка при сжатии и может новый на старое место и не наложиться
Ответить с цитированием
  #3  
Старый 20.03.2016, 15:32
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 74
Репутация: 518
По умолчанию

За название проги спасибо, но это паковщик, мне кажется немного не то...
Сам формат файла открыт, и действительно по сигнатуре можно попытаться его найти - но это служебка - как раз то что в принципе ненужно для получения картинки.. поискал - нет JFIF ни разу, а FFD9 встречается несколько раз. А начало/конец картинки может быть в таблице какой-то, где-то находящейся в бинарнике...
Вот я и хотел тупо брать "мясо" бинарника и засовывать в процедуры декодирования, в которой есть параметры - размер, библиотека шаблонов и пр., по чему сжимается картинка и уже визуально смотреть - похоже на картинку результат или нет, с шагом каким-то (1-2-3...кб) признаки изображения так или иначе проглянут на канве, а потом уже более точно найти начало.
Длина картинки конечно разная, согласен, но надо найти их а потом уже поискать способ их записи туда, проанализировав их структуру упаковки в файл и есть ли конечный CRC или ещё что.
PS - Прога ничего из картинок ненашла (((
Ответить с цитированием
  #4  
Старый 20.03.2016, 15:49
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Что за бинарник-то? Есть пример или это тайна?
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #5  
Старый 20.03.2016, 15:58
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Скорее всего какой-то видеорегистратор, там обычно нет необходимости заголовок формата хранить т.к. размер картинки и способ сжатия жестко прошит.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 20.03.2016, 16:14
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 74
Репутация: 518
По умолчанию

Магнитола. Коммерции тут нет, тренеровка мозга и скушную картинку заменить на свою.
Вот файл.
)))
Вложения
Тип файла: rar my_sony_dvx7800_en25q16_v4.rar (1.06 Мбайт, 3 просмотров)
Ответить с цитированием
  #7  
Старый 20.03.2016, 16:35
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

А точно ли там именно JPEG-и? Там есть что-то, отдаленно напоминающее несжатую картинку (около 0x18B2B0).
Еще могу сказать, что сразу после "сигнатуры конца JPEG" дважды встречается 07 00 6E 83 C6 7F CB, а сама по себе эта сигнатура встречается трижды. Но эти места, где оно встречается, слишком близко друг к другу, чтобы быть картинками, а значит, скорее всего, FF D9 там просто так, не как часть JPEG.
Больше внимания привлекают повторяющиеся строки "00dc" в raw-данных. Сразу за ними, по всей видимости, идет размер блока данных: после этого числа байт вид данных явно кардинально меняется.

Касаемо декодера - декодировать со случайной позиции в стриме можно, наверно, если очень постараться, но крайне сложно и геморно.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 20.03.2016 в 16:42.
Ответить с цитированием
  #8  
Старый 20.03.2016, 16:56
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 74
Репутация: 518
По умолчанию

Дело в том, что у аналогичных моделей есть прога которая берёт картинки и всовывает их туда, а эту прошивку не берёт - это я сразу увидел по принципиальной разнице на "внешний вид" прошивки, по этому решил сделать свой парсер.
Bargest - полностью согласен, это я всё увидел в прошивке, и по этому решил что там есть сжатие JPEG. и часть каких-то чисто битовых картинок в несжатом виде. Зачем изобретать свой формат?? когда проигрыватель и так смотрит картинки с диска или флешки. Всего заставок 4-5шт и несколько кнопок. если всё это в BMP хранить то уж много они съедят, а в сжатом - совсем немного.
А по поводу сложно и геморно - отчасти да, но отладить декодер на нормальных картинках а потом подкинуть данные с прошивки. ))
Ответить с цитированием
  #9  
Старый 20.03.2016, 17:06
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
Зачем изобретать свой формат??
Ну, вообще-то, там периодически встречаются строки "CHINA", намекая на страну изготовителя. А когда дело касается программных изделий из этой страны, скажу по своему опыту - вопрос "зачем" в принципе лишен смысла и задавать его просто запрещено во избежание попадания в психиатрическую клинику.
К тому же, кроме BMP и JPEG есть тысяча других форматов. Те же GIF, PNG, TIF, а еще всякие малоизвестные. Также не стоить забывать про сотню внутрикитайских форматов, о существовании которых знает только три китайца с соответствующего завода, и это без иронии. Хоть BMP-картинка под GZIP, в котором первый и последний байт поменяли местами - видели уже всякое. После того, как я увидел ZIP, который был разбит на несколько частей, зашифрован XOR-ом, обёрнут в Base64, после чего эти части были перемешаны с PNG-шками и собраны в полностью самопальный, с позволения сказать, формат архива, и всё это ради пары никому даром не нужных картинок и маленькой рекламки - я уже ничему не удивлюсь.

Можно попробовать посмотреть имеющуюся программу, как она определяет картинки в прошивке - может, схема этой прошивки родственна тем, которые переваривает программа? Хотя, конечно, если выглядит ну вообще по-разному, то смысла смотреть программу нет.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 20.03.2016 в 21:49.
Ответить с цитированием
  #10  
Старый 20.03.2016, 23:43
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от -=#PupaJr#=-
...Зачем изобретать свой формат?? когда проигрыватель и так смотрит картинки с диска или флешки...
Так он это делает не программно - кодек jpeg вшит в микросхему на плате и к ПО устройства момент декодирования отношения не имеет совсем. Прогнал тельце по всем известным сигнатурам картинок, аналогий нет, возможно рисунки подогнаны под дисплейный контроллер устройства, может графика лежит в виде удобном для считывания ОС проигрывателя, перевёрнутой, всё может быть. Здесь скорее всего нужно брать похожие конвертеры "аналогичных моделей" и смотреть формат там
Ответить с цитированием
  #11  
Старый 03.04.2016, 13:31
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 74
Репутация: 518
По умолчанию

Наконец-то нашлось время сюда заглянуть..

вот софт - SunPlusEdit v.1.72b.msi (18мб, легко ищется в сети), плата на базе чипа SunPlus, вот прошивка которая вскрывается ей, приложу сюда, сразу видно что структура данных другая - отличная от моей, но сама "идея" всё таки должна быть похожа, так как чип один.
Вложения
Тип файла: rar sphe8202tq.rar (811.3 Кбайт, 1 просмотров)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:38.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter