Старый 06.10.2011, 17:22   #1
<cyber-punk>
 
Аватар для <cyber-punk>
 
Регистрация: 06.10.2011
Сообщений: 10
Репутация: 9
По умолчанию Читалка на linux

Читалка на linux


{intro}

Недавно, я захотел купить себе электронную книгу. Настроение и
средства были, а что ещё надо? Посмотрев новинки, я выбрал ONEXT
Touch&Read 001. Не буду вас томить и сразу приведу характеристики этого устройства:


Электронная книга ONEXT Touch&Read 001
Экран: Сенсорный емкостный дисплей SiPix 6’’ (600x800 точек), 16 градаций
серого

Процессор: Samsung 2416
400Mhz

Wi-Fi, Интернет-браузер
Операционная система: Linux 2.6
Память:128 Мб оперативной памяти, 2 Гб постоянной памяти
Интерфейс: Micro USB порт для подключения к ПК и заряда аккумулятора,
micro SD разъем с поддержкой SDHC (карт высокой емкости)

Аккумулятор: Li-Polymer 1530 mAh (до 10000 страниц без подзарядки)
Поддержка форматов книг : FB2, EPUB, TXT, PDF, HTML
Поддержка мультимедиа форматов: JPG, PNG, BMP, MP3
Размер: 124х170х8,8 мм
Вес: 240 грамм
ОС: Microsoft® Windows® 2000, XP, VistaTM, совместима с Microsoft® Windows 7





Через день мне курьер принес эту книгу. Вначале всё было хорошо. Но
через день я заметил, что в углу экрана появилась маленькая трещинка.
Всё бы ничего, если бы работал сенсорный экран. А он работал через раз.
Мне это надоело, и я решил поковырять официальную прошивку 3.0 для
этой книги. Скачал ее с сайта разработчика и приступил к детальному
анализу.

{part one}


Только бросив поверхностный взгляд, можно было понять, что это всего
лишь набор приложений и настроек. Проковырявшись два часа, я добавил
в установочный файл эту строку - chmod 666 /mnt/mmc0p1/mnt/etc/rc.d/init.d/inetd


Теперь при подключении к wi-fi точке у книги будет открыт 23 порт и
доступ по telnet.

Подключаемся и логинимся с данными по умолчанию root/SReader. Первая
команда uname –a. И вот результат: Linux Samsung 2.6.21.5-cfs-v19 #183 Mon Dec 20
09:52:27 CST 2010 armv5tejl unknown





После этого, еще немного побаловавшись в консоли, я понял, что это
busybox v1.7.2. Посмотрев, что висит в процессах, я обратил внимание на
интересное приложение - QBookApp. Оно было с параметром qws.




Заинтересовавшись, я нашел бинарные файлы в папке /usr/local/qisda/bin.
Бегло просмотрев их, я понял, что это как раз то, что нам нужно, – главные
файлы читалки. Я запустил файл QBookApp.sh, и в консоль полилась туева
хуча информации, а экран электронной книги два раза обновился.




Я решил посмотреть, что будет, если я открою какую-нибудь книгу, и
нажал в читалке «Продолжить чтение». В консоли началась бешеная
загрузка шрифтов.




При попытке завершить скрипт в консоли появился текст «Turn off wifi...», и
соединение оборвалось.
Я попробовал запустить QBookApp –qws без управляющего скрипта. В
ответ он ругнулся:
[root@Samsung bin]# ./QBookApp -qws
./QBookApp: error while loading shared libraries: libcrengine-arm.so: cannot open shared object
file: No such file or directory

Тогда я попробовал с теми же параметрами запустить управляющий .sh
файл. Эффект был тот же. При попытке завершить скрипт отключался и wi-
fi.

{part two}


Оставив это дело, я обратил внимание на файл proftpd.conf в каталоге /etc.
Видимо это был конфигурационный файл FTP сервера. Обратившись к
логике, я набрал в консоли proftpd. В ответ он мне выдал ошибку о не
существовании группы “nogroup”. Лезть в конфиги мне было лень и я
просто создал группу nogroup. Но всё равно он ругнулся:
- IPv4 getaddrinfo 'Samsung' error: Name or service not known
- warning: unable to determine IP address of 'Samsung'
- error: no valid servers configured
- Fatal: error processing configuration file '/etc/proftpd.conf'

Я забил на это дело и начал копать дальше. Версия linux (busybox) была
сильно кастрирована и в ней отсутствовали какие-либо менеджеры
пакетов. В ней присутствовала только программа install, котрая могла
устанавливать программу из исходников. К сожалению, никаких
компиляторов, даже gcc, я не обнаружил. Поизучав систему ещё, я
обнаружил модули, загружённые в ядро - mt5921sta_spi, hspi_s3c2443,
spi_dev.
В корне системы лежал файл linuxrc с правами на исполнение.
Заглянув внутрь, я понял, что это очередной bash скрипт.




Этот файл был главным, управляющим скриптом, который запускался при
старте системы. В нём меня заинтересовали строки с названием QEngineer.
Зайдя в папку /qdutil/em/, я заинтересовался файлом configuration.ini. Это
был файл настроек. В нем можно было включить и отключить разные
параметры (true\false). Видимо эта прошивка была создана не только для
электронной книги, потому что в этом файле были настройки не
существующих параметров, например Bluetooth или 3G.
Путём усердных поисков я нашёл эти комбинации клавиш, которых нет в
официальном FAQ.

Back + Zoom + power - перепрошивка
Back + Refresh + power - рекалибровка тачскрина
И непонятное
Left + Right + power - включение debug по USB
Back + Right + power - запуск сервисного приложения (QEngineer)


Я знаю что многим людям у которых были проблемы с экраном или экран не
функционировал, помогла рекалибровка экрана. Я не был исключением, и
после рекалибровки экрана получил полноценную электронную читалку.
Чтобы запустить Qengineer через консоль достаточно просто вызвать команду
/qdutil/em/start /qdutil/em/QEngineer

Поскольку в системе не установлен не один менеджер пакетов, то для того
что бы установить .deb пакет мы напишем маленький bash скрипт. В этом
примере мы установим nano т. к. мне редакто vi не по душе.
И вот наш скрипт:
mount / -o remount,rw
wget "http://ftp.us.debian.org/debian/pool/main/n/nano/nano-tiny_2.0.7-
5_armel.deb"
wget
"http://ftp.us.debian.org/debian/pool/main/s/slang2/libslang2_2.1.3-
3_armel.deb"
FILES=$(ls /root/*deb)
cd /
for NAME in $FILES ; do
ar -x "${NAME}"
tar zxf data.tar.gz
rm debian-binary data.tar.gz control.tar.gz
rm "${NAME}"
done
cd -
ln -sf /bin/nano-tiny /bin/nano

Таким образом мы получили редактор nano.



Доработаем маленько скрипт, и получаем программу для загрузки и установки
пакетов.
mount / -o remount,rw
echo -n "Press enter adress..."
read -e AD
wget "$AD"
FILES=$(ls /root/*deb)
cd /
for NAME in $FILES ; do
ar -x "${NAME}"
tar zxf data.tar.gz
rm debian-binary data.tar.gz control.tar.gz
rm "${NAME}"
done
cd -




Все пакеты я качаю с http://ftp.us.debian.org/debian/pool/main/ для архитектуры
armel. Давайте установим что-нибудь полезное, вроде g++ или apache2.
Спустя два часа мой ридер превратился в полноценный веб сервер, с
нормальным менеджером пакетов apt, и различнми утилитами, вроде aircrack-
ng, nmap, etc. Но это всё только в консоле, а что же происходит на экране?
На экране у нас обычный Qt. Можно писать, запускать и работать со своими
программами. Вот вам маленький hello world:

Код:
#include <QApplication>
#include <QPushButton>
int main(int argc, char** argv) {
QApplication app(argc, argv);
QPushButton btn("Hello World");
btn.setFont(QFont("PMN Caecilia LT", 240, QFont::Bold));
btn.show();
btn.showMaximized();
QObject::connect(&btn, SIGNAL(clicked()), &app, SLOT(quit()));
return app.exec();
}
Компилируем через g++, и запускаем /qdutil/em/start /tmp/hello. Результат:



Что бы запустить телнет сервер достаточно ввести комманду inetd
Все в ваших руках — пишите, компилируйте, настраивайте, наслаждайтесь!
Никто вам не мешает написать свой браузер на Qt или сделать из читалки
роутер (паяльник никто не отменял), вобщем как всегда, где линукс, там и
простор для экспериментов!
В этой статье мы рассмотрели то, как из обычной читалке на базе линукса,
можно сделать компьютер на базе линукс.
(с) cyber-punk

P.S. http://live.xakep.ru/blog/linux/1239.html - статья на Хакере
<cyber-punk> вне форума   Ответить с цитированием
Ответ

Метки
ebook, linux, onext

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

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

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd. Перевод: zCarot