• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь ESPAsyncWebServer бинарное содержимое

CRM

New member
Доброго времени суток.
Подскажите как с этим работать, и откуда берётся. На странице гитхаба описания не нашёл, есть только упоминание:
me-no-dev/ESPAsyncWebServer

//File: favicon.ico.gz, Size: 726
#define favicon_ico_gz_len 726
const uint8_t favicon_ico_gz[] PROGMEM = {
0x1F, 0x8B, 0x08, 0x08, 0x0B, 0x87, 0x90, 0x57, 0x00, 0x03, 0x66, 0x61, 0x76, 0x69, 0x63, 0x6F,
0x6E, 0x2E, 0x69, 0x63, 0x6F, 0x00, 0xCD, 0x53, 0x5F, 0x48, 0x9A, 0x51, 0x14, 0xBF, 0x62, 0x6D,
...

Допустить есть html страница, как я понял, чтоб её сжать, и передать по частям используется кодировка этой страницы в 16-ричный вид (0x). Чем это сделать или как. И обратим ли этот процесс, т.е. перевод этого "binary content" в читаемый вид.

Пример файла во вложении.
 

Вложения

Юрий Ботов

Moderator
Команда форума
Сергей_Ф, Сдается мне у человека проблема не переводом страницы в хекс, а с пониманием как в принцыпе передаются бинарные данные через текстовый протокол...

CRM, Объясните толком что нужно "на самом деле". Пример который вы представили - это только один из вариантов: что касается .jpg, .ico и т.п. - их можно тупо засушнуть в SPIFFS и на странице давать ссылки на эти файлы. А общая логика передачи бинарных данных через http такова: массив бинарных данных при передаче кодируется с использованием base64 (получается текст), а после приема производится обратное преобразование.
 

Сергей_Ф

Moderator
Команда форума
@Юрий Ботов мне вообще непонятно, что именно нужно было, потому дал ссылку на то как преобразовать текст в hex. Зачем это надо @CRM не ясно, поскольку html есть текст и его никак никуда кодировать не надо по большому счету. Хочешь в PROGMEM пиши, хочешь в spiffs.
Так кодировать при записи в PROGMEM имеет смысл только бинарные данные. Т.е. файлы изображения, что у автора в примерах и приведено. Такой способ позволяет обойти медленную файловую систему spiffs, но требует наличие обработчика для каждого изображения. Кажется, @Алексей. даже пример приводил.
А вот что имелось ввиду под передачей по частям страницы - вообще непонятно.
 
Последнее редактирование:

CRM

New member
Спасибо за улыбку, но это первым делам что сделал. И если бы не получалась лабуда (ϛϗϠWfavicon.icoНS_HϪQЏbm) при обратном преобразовании, то не спрашивал бы.

... Объясните толком что нужно "на самом деле". Пример который вы представили - это только один из вариантов: что касается .jpg, .ico и т.п. ...
Юрий, есть проект, который мне понравился и хотел бы его немного доработать и использовать в своих домашних модулях, но веб интерфейс в виде 16ти-ричной последовательности. Для доработки его необходимо перевести в читаемый вид, но при использовании конвертеров HEX to ASCII (или текст) выдаёт не читаемый набор символов.
К примеру, таблица стилей, как её отредактировать? (файл из проекта во вложении)

За ранее благодарю!!!!
 

Вложения

Сергей_Ф

Moderator
Команда форума
если бы не получалась лабуда (ϛϗϠWfavicon.icoНS_HϪQЏbm)
это не лабуда - это бинарный файл favicon.ico, его текстовым редактором открывать не надо.
К примеру, таблица стилей, как её отредактировать? (файл из проекта во вложении)
это не файл. Это то что передаёт esp на запрос. После "декодирования" из HEX получается содержимое бинарного файла, скорее всего это стиль пожатый gzip. Но точно вы этого узнать не можете. Хотя и можете попытаться сохранить в p_bootstrap.min.css.gz и попробовать разархивировать.
Соберите проект, обратитесь к esp браузером и посмотрите стили в режиме разработчика, если уж исходники недоступны. Это самый простой вариант.
 

Алексей.

Active member
@CRM, У вас бутстрап пережат немножко ган-зипом, неудивительно, что после перевода из hex вы видите каку, я его экстрактнул слегка и из 10146 байтов он превратился в 72393 байта
dl,h1,h2,h3,h4,h5,h6,ol,p,pre,ul{margin-top:0}address,dl,ol,p,pre,ul{margin-bottom:1rem}...
вполне себе читаемый вид, но код довольно плотный, впрочем как у всех собранных фреймворков библиотек, таких как бутстрап джиквери ангуляр и т.п. Для чтения не очень подходит ;)
 
  • Like
Реакции: CRM

Алексей.

Active member
Если хотите понять какие данные в файле, попробуйте для начала проверить сигнатуру.
Например для bmp файлов первые 2 байта 0x42 0x4d, для GZ первые 3 байта 0x1F 0x8B 0x08
те самые 3 байта что в первом посте.
 
  • Like
Реакции: CRM

CRM

New member
Соберите проект, обратитесь к esp браузером и посмотрите стили в режиме разработчика, если уж исходники недоступны. Это самый простой вариант.
Сергей, в том то и дело, что вытащить могу, но не всё в первозданном виде, например шаблон страницы, которая формируется исходя из данных.

У вас бутстрап пережат немножко ган-зипом, неудивительно, что после перевода из hex вы видите каку, я его экстрактнул слегка и из 10146 байтов он превратился в 72393 байта
dl,h1,h2,h3,h4,h5,h6,ol,p,pre,ul{margin-top:0}address,dl,ol,p,pre,ul{margin-bottom:1rem}...
вполне себе читаемый вид, но код довольно плотный, впрочем как у всех собранных фреймворков библиотек, таких как бутстрап джиквери ангуляр и т.п. Для чтения не очень подходит ;)
Алексей, экстракт верный, начальный строки тоже.
Поясните пожалуйста, как его перевести в gz. Распаковать уже сам смогу, в читабельный вид тоже переведу?
Я так понял, для упаковки и конвертации последовательность обратная?

Если хотите понять какие данные в файле, попробуйте для начала проверить сигнатуру.
Например для bmp файлов первые 2 байта 0x42 0x4d, для GZ первые 3 байта 0x1F 0x8B 0x08
те самые 3 байта что в первом посте.
У всех первые 3 байта 0x1F 0x8B 0x08
 

Алексей.

Active member
Поясните пожалуйста, как его перевести в gz
Как файл (или какие то данные) зажать ган-зипом?
Самым простым способом gzip -cf my-file.css > my-file.css.gz
или если вам удобно пользоваться ОС винтовс то на повершеле System.IO.Compression.GzipStream
 
  • Like
Реакции: CRM

CRM

New member
Как файл (или какие то данные) зажать ган-зипом?
Самым простым способом gzip -cf my-file.css > my-file.css.gz
или если вам удобно пользоваться ОС винтовс то на повершеле System.IO.Compression.GzipStream
Алексей, Это я знаю, я мил ввиду, HEX > GZip

Я пробую так, беру данные вида: 0x1F, 0x8B, 0x08, 0x08, 0x0B, 0x87, 0x90 ...
Фильтрую их от 0X и запятых с пробелами
Полученные данные вида 1F8B08080B8790... вставляю в конвертер HEX > ASCII
То что выдаёт конвертер вставляю в файл с расширение gz
Пробую распаковать, на этом этапе ошибка архива
 

CRM

New member
Просто я в поиске первую ссылку тыкнул и вставил содержимое вашего файла, без деклараций const uint8_t bootstrap_css[] PROGMEM = { и };
файл сохранил и только. ;)
Чувствую себя дураком, несколько раз был на этом сайте, даже стыдно стало. :oops:
Спасибо вам большое за разъяснение!!!
 

Алексей.

Active member
Чувствую себя дураком, несколько раз был на этом сайте, даже стыдно стало. :oops:
Спасибо вам большое за разъяснение!!!
Objects in mirror are closer than they appear.
Бывает, иногда не замечаешь очевидное и теряешь время, если вас не тролят и дали подсказку - вам повезло.
 

radikovevgen

New member
Просто я в поиске первую ссылку тыкнул и вставил содержимое вашего файла, без деклараций const uint8_t bootstrap_css[] PROGMEM = { и };
файл сохранил и только. ;)
здравствуйте помогите пожалуйста расшифровать файл в шестнадцатеричной форме..или подробнее расскажите новичку последовательность действий расшифровки файла !!
 

Вложения

  • 14.2 KB Просмотры: 4

nikolz

Well-known member
здравствуйте помогите пожалуйста расшифровать файл в шестнадцатеричной форме..или подробнее расскажите новичку последовательность действий расшифровки файла !!
А в какой код Вы его хотите расшифровать?
 

Алексей.

Active member
Там совсем всё просто, скопировал содержимое того файла (только хекс 0x12, 0x34 .. и больше ничего), вставил в конвертер по вышеуказанной ссылке, конвертер предложил сохранить файл myfile.dat.
Сохранил его, а там архив ган-зип и содержит какой то Template_default.html
Содержащий
Код:
</html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
  <meta name="theme-color" content="#007bff">
  <title>Jee UI Framework</title>
  <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
  <link href="css/bootstrap.min.css" rel="stylesheet">
  <script src="js/bubbly_bg.js"></script>
</head>
<body onload="onload(); ">
.................
 

radikovevgen

New member
Там совсем всё просто, скопировал содержимое того файла (только хекс 0x12, 0x34 .. и больше ничего), вставил в конвертер по вышеуказанной ссылке, конвертер предложил сохранить файл myfile.dat.
Сохранил его, а там архив ган-зип и содержит какой то Template_default.html
Содержащий
Код:
</html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
  <meta name="theme-color" content="#007bff">
  <title>Jee UI Framework</title>
  <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
  <link href="css/bootstrap.min.css" rel="stylesheet">
  <script src="js/bubbly_bg.js"></script>
</head>
<body onload="onload(); ">
.................
Да именно так и делал а потом что с этим .dat файлом делать дальше чтоб исходный код получился?...Просто есть несколько файлов проекта в такой форме..в каком то из них шаблон веб страницы сервера....хочу изменить кое что...подправить..и обратно запаковать..мне понравился этот проект...а как этим форматом работать не знаю...дошел до вот этого файла .dat. а дальше что с ним дел ааа ть х з...тут наткнулся на ваш диалог по такой же теме..вот и интересуюсь как действовать..кстати на скрине выше это весь файл или часть?
 
Сверху Снизу