|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Свой кодер-декодер JPEG
Доброго всем.
Раскрою карты сразу - о скорости работы нет речи, надо в некотором бинарнике (прошивке) найти картинки JPG/JPEG, известны размеры изображения 800/480, изображение скорее всего лежит без служебной информации по некоторым смещениям внутри бинарника, служебка для встроенного декодера ненужна поскольку он и так всегда работает со стандартным размером и сжатием, а возможно и есть некоторая - пока не известно, но файл есть и просмотр в HEX редакторе показывает наличие структуры файла и наличие картинок там (в том числе и BMP). 2 Идеи как вскрыть/поменять картинки в бинарнике: 1) Влезть в тело библиотеки JPEG DCU иподставлять внутри там бинарный код для декодирования, поскольку JPEG.LoadFromFile читает все заголовки а мне они не известы в бинарнике.. - как влезть во внутрь?? не знаю... 2) Написать полностью свой кодер - декодер с нуля и уже в него подкидывать бинарные данные изображения из прошивки. Что скажете? |
#2
|
||||
|
||||
А что сказать - большой вероятность того, что вскрытие формата не поможет, смысла нет. Там очень много файлов, можно заплутать в определениях. Лучше для начала попользуйте спец проги, типа драгонанпакера - это может вскрыть "потроха" всего и вся. Или, если средствами делфи, то тогда можно по заголовку и завершению рисунка найти его в теле бинарника загрузив в поток, а из него в image - если не ошибаюсь, любой jpeg начинается с #FF#D8...#4A#46#49#46 (...JFIF), а заканчивается обязательно на #FF#D9, можно кусок так определить для считывания в поток, это чтоб посмотреть картинку, а вот с её подменой может и не выйти, поскольку нет двух одинаковых рисунка при сжатии и может новый на старое место и не наложиться
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
За название проги спасибо, но это паковщик, мне кажется немного не то...
Сам формат файла открыт, и действительно по сигнатуре можно попытаться его найти - но это служебка - как раз то что в принципе ненужно для получения картинки.. поискал - нет JFIF ни разу, а FFD9 встречается несколько раз. А начало/конец картинки может быть в таблице какой-то, где-то находящейся в бинарнике... Вот я и хотел тупо брать "мясо" бинарника и засовывать в процедуры декодирования, в которой есть параметры - размер, библиотека шаблонов и пр., по чему сжимается картинка и уже визуально смотреть - похоже на картинку результат или нет, с шагом каким-то (1-2-3...кб) признаки изображения так или иначе проглянут на канве, а потом уже более точно найти начало. Длина картинки конечно разная, согласен, но надо найти их а потом уже поискать способ их записи туда, проанализировав их структуру упаковки в файл и есть ли конечный CRC или ещё что. PS - Прога ничего из картинок ненашла ((( |
#4
|
||||
|
||||
Что за бинарник-то? Есть пример или это тайна?
jmp $ ; Happy End! The Cake Is A Lie. |
#5
|
||||
|
||||
Скорее всего какой-то видеорегистратор, там обычно нет необходимости заголовок формата хранить т.к. размер картинки и способ сжатия жестко прошит.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
Магнитола. Коммерции тут нет, тренеровка мозга и скушную картинку заменить на свою.
Вот файл. ))) |
#7
|
||||
|
||||
А точно ли там именно 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
|
|||
|
|||
Дело в том, что у аналогичных моделей есть прога которая берёт картинки и всовывает их туда, а эту прошивку не берёт - это я сразу увидел по принципиальной разнице на "внешний вид" прошивки, по этому решил сделать свой парсер.
Bargest - полностью согласен, это я всё увидел в прошивке, и по этому решил что там есть сжатие JPEG. и часть каких-то чисто битовых картинок в несжатом виде. Зачем изобретать свой формат?? когда проигрыватель и так смотрит картинки с диска или флешки. Всего заставок 4-5шт и несколько кнопок. если всё это в BMP хранить то уж много они съедят, а в сжатом - совсем немного. А по поводу сложно и геморно - отчасти да, но отладить декодер на нормальных картинках а потом подкинуть данные с прошивки. )) |
#9
|
||||
|
||||
Цитата:
К тому же, кроме 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
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#11
|
|||
|
|||
Наконец-то нашлось время сюда заглянуть..
вот софт - SunPlusEdit v.1.72b.msi (18мб, легко ищется в сети), плата на базе чипа SunPlus, вот прошивка которая вскрывается ей, приложу сюда, сразу видно что структура данных другая - отличная от моей, но сама "идея" всё таки должна быть похожа, так как чип один. |