Powered by Invision Power Board


Страницы: (14) 1 2 [3] 4 5 ... Последняя »  ( Перейти к первому непрочитанному сообщению ) ОтветитьНовая темаСоздать опрос

> Модкит для Keenetic, разборка прошивки Keenetic
IvyGel
Отправлено: Окт 12 2011, 16:38
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 178
Пользователь №: 19
Регистрация: 12-Октября 11
Статус: Offline

Репутация: 3



Уважаемый deadc0de публиковал на форуме DD-WRT свой модкит для Keenetic.

Мне очень пригодился этот модкит для пересборки прошивки, когда я обнаружил, что в прошивке Кинетика в процессе исполнения setup-target.sh монтируется раздел /storage:

ls /dev/mtdblock/6 >/dev/null 2>&1 && mount -t jffs2 /dev/mtdblock/6 /storage >/dev/null 2>&1 || format_jffs

Этот раздел объемом 2 мегабайта доступен для записи, но штатно используется под экзотические цели - http://forum.zyxmon.org/post2473.html#p2473

По сути, единственный способ сделать что-то полезное с этим разделом - пересобрать прошивку от deadc0de с добавлением вызова какого-нибудь исполняемого скрипта по аналогии с ext_init.sh

На всякий случай перепубликую тут: http://depositfiles.com/ru/files/oww6rkogk распаковывает (unpack.sh) или упаковывает (pack.sh) прошивки Keenetic, скачанный архив содержит бинарные исполняемые файлы для 64-разрядных ОС.

Пользователи 32-разрядных ОС могут собрать firmware_mod_kit (svn export http://firmware-mod-kit.googlecode.com/svn/trunk/ fmk && cd fmk/trunk/src && make) и keeneticfix из исходника. Или скачать готовые бинарники с http://depositfiles.com/files/zim9jgxs0.
[Показать/Скрыть]
Код
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <string.h>

#define szbuf 32768

u_int32_t crc_tab[256];

const char header[] = {
0x5a, 0x4e, 0x42, 0x47, 0x15, 0x42, 0x00, 0x00, 0x5a, 0x79, 0x58, 0x45, 0x4c, 0x20, 0x4b, 0x45,
0x45, 0x4e, 0x45, 0x54, 0x49, 0x43, 0x2d, 0x56, 0x31, 0x2e, 0x30, 0x30, 0x5b, 0x42, 0x46, 0x57,
0x2e, 0x33, 0x5d, 0x44, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

u_int32_t chksum_crc32 (FILE *f)
{
  register unsigned long crc;
  unsigned long i, j;
  char *buffer = malloc(szbuf);
  char *buf;

  crc = 0xFFFFFFFF;
  while (!feof(f)) {
j = fread(buffer, 1, szbuf, f);
buf = buffer;
for (i = 0; i < j; i++) {
  crc = ((crc >> 8) & 0x00FFFFFF) ^ crc_tab[(crc ^ *buf++) & 0xFF];
  }
}
  free(buffer);
 return crc;
}

void chksum_crc32gentab ()
{
  unsigned long crc, poly;
  int i, j;

  poly = 0xEDB88320L;
  for (i = 0; i < 256; i++)
  {
 crc = i;
 for (j = 8; j > 0; j--)
 {
if (crc & 1)
{
  crc = (crc >> 1) ^ poly;
}
else
{
  crc >>= 1;
}
 }
 crc_tab[i] = crc;
  }
}


int main(int argc, char *argv[]) {
 FILE *f;
 unsigned int crc32;
 unsigned int fsize;
 unsigned int bufsz;
 char *buf;

 if (argc < 1)
return 1;
 else {
chksum_crc32gentab();
f = fopen(argv[1], "r+");
if (f != NULL) {
 fseek(f, 0, SEEK_END);
 fsize = ftell(f);
 if (fsize > 0x04c0000)
  return 1;
 bufsz = 0x04c0000 - fsize;
 buf = malloc(bufsz);
 memset(buf, 0, bufsz);
 fwrite(buf, bufsz, 1, f);
 free(buf);
 fseek(f, 0, SEEK_SET);
 crc32 = chksum_crc32(f);
 fwrite(&header[0], sizeof(header), 1, f);
 fwrite(&crc32, 4, 1, f);
 fclose(f);
 }
}
 return 0;
}
PMEmail Poster
Top
zazafa
Отправлено: Окт 27 2013, 02:35
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 270
Пользователь №: 2,104
Регистрация: 20-Сентября 12
Статус: Offline

Репутация: 6



насколько я понял нужно
нужно найти в lzma C/7zip/Compress/LZMA_Lib/ZLib.cpp функцию uncompress и в ней заменить
define ZLIB_LC 3
#define ZLIB_LP 0
на
#define ZLIB_LC 0
#define ZLIB_LP 2
PMEmail Poster
Top
maloy
Отправлено: Окт 27 2013, 15:17
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 55
Пользователь №: 3,831
Регистрация: 25-Сентября 13
Статус: Offline

Репутация: 1



Что то не могу разобраться по шпаргалке http://dir620.ipb.su/index.php?showtopic=1...findpost&p=9064 с подписью прошивки
./zyimage -v "ZyXEL KEENETIC_LITE-V1.00[AABL.1]D0-r-wget" -d 0x4104 ./new-firmware.bin

Где брать zyimage в fmk его нету
PMEmail Poster
Top
zazafa
Отправлено: Окт 27 2013, 16:13
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 270
Пользователь №: 2,104
Регистрация: 20-Сентября 12
Статус: Offline

Репутация: 6



Цитата (maloy @ Окт 27 2013, 15:17)
Что то не могу разобраться по шпаргалке http://dir620.ipb.su/index.php?showtopic=1...findpost&p=9064 с подписью прошивки
./zyimage -v "ZyXEL KEENETIC_LITE-V1.00[AABL.1]D0-r-wget" -d 0x4104 ./new-firmware.bin

Где брать zyimage в fmk его нету

В SDK Keenetic .
PMEmail Poster
Top
S-trace
Отправлено: Ноя 1 2013, 09:44
Цитата


Пользователь
**

Группа: Пользователи
Сообщений: 15
Пользователь №: 3,943
Регистрация: 1-Ноября 13
Статус: Offline

Репутация: 1



Доброго времени суток.

Кто-нибудь смог разобраться, почему SquashFS не желает монтироваться на прошивках Keenetic 4G после 27032013?
Кстати, защита у Keenetic такая же плюс шифрование, или старая осталась (чистое шифрование) в новых версиях? Без железки не проверить(

А то на NDMS вообще неведомо что творится, Keenetic прошивка шифрованая, Keenetic 4G - нет, но не пересобирается. Блин, неужели снова ломать придётся?(
PMEmail Poster
Top
Ludovig
Отправлено: Ноя 1 2013, 09:51
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 686
Пользователь №: 2,298
Регистрация: 23-Октября 12
Статус: Offline

Репутация: 18



Цитата (S-trace @ Ноя 1 2013, 09:44)
Доброго времени суток.

Кто-нибудь смог разобраться, почему SquashFS не желает монтироваться на прошивках Keenetic 4G после 27032013?
Кстати, защита у Keenetic такая же плюс шифрование, или старая осталась (чистое шифрование) в новых версиях? Без железки не проверить(

Привет! Мне кажется там тоже применили шифрование, но не сплошное, а выборочное. Я доставал заголовки squashfs из памяти и сравнивал.

Код
Оригинальный SquashFS-после разборки прошивки:
[ludovig@localhost Keenetic_1.11-mem-squashfs]$ file '/home/ludovig/Keenetic_1.11-mem-squashfs/SquashFS'
/home/ludovig/Keenetic_1.11-mem-squashfs/SquashFS: Squashfs filesystem, little endian, version 3.0, 4507449 bytes, 575 inodes, blocksize: 65536 bytes, created: Tue Oct  1 01:33:12 2013
[ludovig@localhost Keenetic_1.11-mem-squashfs]$
Найденный заголовок -1
[ludovig@localhost Keenetic_1.11-mem-squashfs]$ file '/home/ludovig/Keenetic_1.11-mem-squashfs/hsqs-2.bin'
/home/ludovig/Keenetic_1.11-mem-squashfs/hsqs-2.bin: Squashfs filesystem, little endian, version 3.0, 4507449 bytes, 575 inodes, blocksize: 65536 bytes, created: Tue Oct  1 01:33:12 2013

Найденный заголовок -2
[ludovig@localhost Keenetic_1.11-mem-squashfs]$ file '/home/ludovig/Keenetic_1.11-mem-squashfs/hsqs-1.bin'
/home/ludovig/Keenetic_1.11-mem-squashfs/hsqs-1.bin: Squashfs filesystem, little endian, version 3.0, 4437892 bytes, 579 inodes, blocksize: 65536 bytes, created: Wed Oct  2 19:00:16 2013


P.S. А последняя Кeenetic разве шифрованная и без ключа не разбирается?
P.P.S. Железка есть, но результата пока нет. - также не монтируется после пересборки ((


--------------------
Гигабайт Яндекс диска дополнительно и бесплатно по моей ссылке - https://disk.yandex.ru/invite/?hash=ILNWNKUD

Keenetic, DIR620A1
PM
Top
S-trace
Отправлено: Ноя 1 2013, 11:34
Цитата


Пользователь
**

Группа: Пользователи
Сообщений: 15
Пользователь №: 3,943
Регистрация: 1-Ноября 13
Статус: Offline

Репутация: 1



Прошу прощения, видимо перепутал файл когда смотрел заголовок SquashFS. А каким путём вытаскиваете из памяти устройства данные, если не секрет?
Мне кажется, что тут не заголовок Squashfs виноват а его некоторое особое строение (например возможно что ядро теперь требует чтобы таблицы инодов были выровнены по определённой границе, если в служебных структурах всё правильно прописать то unsquashfs-lzma съест такое и не подавится, а вот после перепаковки иноды уже не будут выровнены и монтировать ядро это вот не станет.
Вот что говорит unsquashfs-lzma по поводу оригинального squash:
[Показать/Скрыть]
mksquashfs: read_bytes: reading from position 0x0, bytes 119
mksquashfs: Found a valid little endian SQUASHFS superblock on squash_device.
mksquashfs: Inodes are compressed
mksquashfs: Data is compressed
mksquashfs: Fragments are compressed
mksquashfs: Check data is not present in the filesystem
mksquashfs: Fragments are present in the filesystem
mksquashfs: Always_use_fragments option is not specified
mksquashfs: Duplicates are removed
mksquashfs: Filesystem size 1994.90 Kbytes (1.95 Mbytes)
mksquashfs: Block size 65536
mksquashfs: Number of fragments 34
mksquashfs: Number of inodes 427
mksquashfs: Number of uids 1
mksquashfs: Number of gids 0
mksquashfs: sBlk->inode_table_start 0x1f0b9d
mksquashfs: sBlk->directory_table_start 0x1f1a39
mksquashfs: sBlk->uid_start 0x1f2b91
mksquashfs: sBlk->fragment_table_start 0x1f2b89

Вот что говорит unsquashfs-lzma по поводу распакованного и повторно упакованного без изменений squash:
[Показать/Скрыть]
mksquashfs: read_bytes: reading from position 0x0, bytes 119
mksquashfs: Found a valid little endian SQUASHFS superblock on squash_device_recreated.
mksquashfs: Inodes are compressed
mksquashfs: Data is compressed
mksquashfs: Fragments are compressed
mksquashfs: Check data is not present in the filesystem
mksquashfs: Fragments are present in the filesystem
mksquashfs: Always_use_fragments option is not specified
mksquashfs: Duplicates are removed
mksquashfs: Filesystem size 1994.73 Kbytes (1.95 Mbytes)
mksquashfs: Block size 65536
mksquashfs: Number of fragments 34
mksquashfs: Number of inodes 427
mksquashfs: Number of uids 1
mksquashfs: Number of gids 0
mksquashfs: sBlk->inode_table_start 0x1f0b99
mksquashfs: sBlk->directory_table_start 0x1f1a1a
mksquashfs: sBlk->uid_start 0x1f2ae8
mksquashfs: sBlk->fragment_table_start 0x1f2ae0

Тут мы видим, что размер уменьшился на 174 байта, причём размер данных (до 0x1f0b9d - начало таблицы инодов) остался почти неизменным (она сместилась вверх на 0x1f0b9d-0x1f0b99=4 байта), а вот потом начинается веселье - таблица директорий сместилась вверх уже на 0x1f1a39-0x1f1a1a=31 байт (31-4=27 байт лишних между таблицей инодов и таблицей директорий), а таблица фрагментов сместилась вверх уже на 0x1f2b89-0x1f2ae0=169 байт (138 байт лишних у таблицы директорий). UID тоже сместился вверх на 0x1f2b91-0x1f2ae8=169 байт, а значит к таблице фрагментов ничего лишнего не приросло. О чём это может говорить нам? Да фиг знает, но вот одно ясно точно - монтироваться пересобранный образ отказывается, ругаясь на иноду:
SQUASHFS error: Unable to read inode [1f13de:15a0]
0x1f13de+0x15a0=0x1F297E - а это на целых 0x1F297E-0x1f1a1a=3940 байт вылазит за пределы таблицы инодов (и оказывается в таблице директорий!)

А вот теперь надо поковыряться в оригинальном SquashFS и изучить конец той таблицы инодов.

Кстати, что настораживает - начала оригинального и пересозданного файлов совсем сильно отличаются, мне не нравится это. Когда в прошлый раз ковырялся в этих Squash'ах они совпадали всем кроме заголовка (отчего я и сделал вывод что расшифровать его будет достаточно - так и оказалось)
PMEmail Poster
Top
Ludovig
Отправлено: Ноя 1 2013, 11:48
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 686
Пользователь №: 2,298
Регистрация: 23-Октября 12
Статус: Offline

Репутация: 18



Цитата (S-trace @ Ноя 1 2013, 11:34)
А каким путём вытаскиваете из памяти устройства данные, если не секрет?

Копирую /dev/mem на флешку через dd или cat, но можно через tftp попробовать (хотя, вряд ли - свободного места не будет)

А потом в файле ищу hsqs - заголовок повторяется 2-3 раза, вырезаю и сравниваю.

P.S. Могу вытащить /dev/mem из Keenetic (любую из последних прошивок, но, думаю, лучше за 170613) и сбросить для сравнения


--------------------
Гигабайт Яндекс диска дополнительно и бесплатно по моей ссылке - https://disk.yandex.ru/invite/?hash=ILNWNKUD

Keenetic, DIR620A1
PM
Top
S-trace
Отправлено: Ноя 1 2013, 12:16
Цитата


Пользователь
**

Группа: Пользователи
Сообщений: 15
Пользователь №: 3,943
Регистрация: 1-Ноября 13
Статус: Offline

Репутация: 1



Вытащил из своего Keenetic 4G память через netcat (nc 192.168.0.2 1234 < /dev/mem)
Обнаружил 5 таких заголовков, из них два - одинаковы, два состоят из фигни а ещё один выглядит зашифрованным, но не понятно то ли он и правда зашифрован, то ли из фигни состоит. При этом те, что одинаковы - совпадают с squashfs в прошивке.

PMEmail Poster
Top
Ludovig
Отправлено: Ноя 1 2013, 12:17
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 686
Пользователь №: 2,298
Регистрация: 23-Октября 12
Статус: Offline

Репутация: 18



Цитата (S-trace @ Ноя 1 2013, 12:16)

Обнаружил 5 таких заголовков, из них два - одинаковы, два состоят из фигни а ещё один выглядит зашифрованным, но не понятно то ли он и правда зашифрован, то ли из фигни состоит.

а проверь через file


--------------------
Гигабайт Яндекс диска дополнительно и бесплатно по моей ссылке - https://disk.yandex.ru/invite/?hash=ILNWNKUD

Keenetic, DIR620A1
PM
Top
S-trace
Отправлено: Ноя 1 2013, 12:30
Цитата


Пользователь
**

Группа: Пользователи
Сообщений: 15
Пользователь №: 3,943
Регистрация: 1-Ноября 13
Статус: Offline

Репутация: 1



Проверил же, выдает примерно такую же фигню как когда-то выдавал на зашифрованные SquashFS. Но похоже, что всё таки из фигни состоит - дата создания Thu Jan 1 03:00:00 1970 - вот это-то и смущает, в шифрованных ни разу такого не попадалось.
PMEmail Poster
Top
Ludovig
Отправлено: Ноя 1 2013, 12:45
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 686
Пользователь №: 2,298
Регистрация: 23-Октября 12
Статус: Offline

Репутация: 18



Цитата (S-trace @ Ноя 1 2013, 12:30)
Проверил же, выдает примерно такую же фигню как когда-то выдавал на зашифрованные SquashFS. Но похоже, что всё таки из фигни состоит - дата создания Thu Jan  1 03:00:00 1970 - вот это-то и смущает, в шифрованных ни разу такого не попадалось.

Фигня - это в смысле миллиарды байт и тысячи инодов? Даты тоже, помнится, были совершенно фантастические, а здесь вроде вполне приличная smile.gif. Но, думаю, вы правы насчет выравнивания таблицы - собака, наверное где-то здесь порылась. Можно еще попробовать финт ушами сделать - добавить в Squashfs како-нить файл без распаковки - как это делалось со SquashFS самсунговских телевизоров. http://forum.ixbt.com/topic.cgi?id=62:17649-17#430

http://forum.ixbt.com/topic.cgi?id=62:17649-20#494

Правленные исходники mksquashfs - http://loraart.ru/squashfs-edited-source.tar.gz.....

Там тоже что-то мудрили c файловой системой, распаковать ее не удалось, но нашли выход как добавить измененные файлы в архив.

Цитата (S-trace @ Ноя 1 2013, 11:34)


А вот теперь надо поковыряться в оригинальном SquashFS и изучить конец той таблицы инодов.


ИМХО, вот здесь искать надо - http://code.google.com/p/firmware-mod-kit/...0/squashfs_fs.h

И в ядре, что-то вроде: http://firmware-mod-kit.googlecode.com/svn...uashfs3.4-patch


--------------------
Гигабайт Яндекс диска дополнительно и бесплатно по моей ссылке - https://disk.yandex.ru/invite/?hash=ILNWNKUD

Keenetic, DIR620A1
PM
Top
S-trace
Отправлено: Ноя 1 2013, 21:49
Цитата


Пользователь
**

Группа: Пользователи
Сообщений: 15
Пользователь №: 3,943
Регистрация: 1-Ноября 13
Статус: Offline

Репутация: 1



ИМХО, искать надо в хексе SquashFS (благо, у меня какой-никакой навык работы с такими данными имеется после тогдашней работы. Кстати, кто тебе ключик и скрипт для расшифровки/шифрования тех прошивок слил, если не секрет?)
PMEmail Poster
Top
Ludovig
Отправлено: Ноя 1 2013, 22:28
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 686
Пользователь №: 2,298
Регистрация: 23-Октября 12
Статус: Offline

Репутация: 18



Цитата (S-trace @ Ноя 1 2013, 21:49)
ИМХО, искать надо в хексе SquashFS (благо, у меня какой-никакой навык работы с такими данными имеется после тогдашней работы.

mksquashfs, думаю, все равно пересобирать придется, вряд ли скриптом можно решить.

Цитата (S-trace @ Ноя 1 2013, 21:49)
Кстати, кто тебе ключик и скрипт для расшифровки/шифрования тех прошивок слил, если не секрет?)

Я же тебе писал - ключик я вытащил через XOR двух заголовков извлеченных из памяти, с твоей же помощью ))
И он, видимо, немного отличается от твоего wink.gif


--------------------
Гигабайт Яндекс диска дополнительно и бесплатно по моей ссылке - https://disk.yandex.ru/invite/?hash=ILNWNKUD

Keenetic, DIR620A1
PM
Top
Contra
Отправлено: Ноя 5 2013, 09:15
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 55
Пользователь №: 3,384
Регистрация: 4-Июня 13
Статус: Offline

Репутация: нет



В свете новых событий с ребутами всех кинетиков от атаки из интернета, хотелось бы получить прошивку v1.11 от 4 ноября как можно быстрее. Есть уже успехи со сборкой новых прошивок или пока еще не удалось это сделать? Стоит надеется или нет? Пересборка прошивки с выкинутым mtdchk не помогает, устройство не стартует sad.gif
PMEmail Poster
Top
Dr.Acid
Отправлено: Ноя 5 2013, 20:22
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 765
Пользователь №: 407
Регистрация: 14-Февраля 12
Статус: Offline

Репутация: 12



Цитата (Contra @ Ноя 5 2013, 09:15)
Пересборка прошивки с выкинутым mtdchk не помогает, устройство не стартует sad.gif

Да успокойтесь уже насчет mtdchk - он отвечает за одно(патч загрузчика), rtled.ko - за другое("ЖЕЛТЫЙ ГЛАЗ"), а за загрузку(или незагрузку) прошивки отвечает ядро - это в нем проблема. Пока не побороли, насколько мне извесно sad.gif
PMEmail Poster
Top
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Topic Options Страницы: (14) 1 2 [3] 4 5 ... Последняя » ОтветитьНовая темаСоздать опрос

 


Текстовая версия