PDA

Просмотр полной версии : Читалка на linux


<Cyber-punk>
15.04.2011, 23:01
Читалка на 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

http://www.keepme.ru/upload/previews/2011/04/15/633c2d520294ac9e427c4751e5535084.jpg (http://www.keepme.ru/upload/images/2011/04/15/633c2d520294ac9e427c4751e5535084.jpg)

http://www.keepme.ru/upload/previews/2011/04/15/3afb58b4de95d94d5b1a6329520aef83.jpg (http://www.keepme.ru/upload/images/2011/04/15/3afb58b4de95d94d5b1a6329520aef83.jpg)

Через день мне курьер принес эту книгу. Вначале всё было хорошо. Но

через день я заметил, что в углу экрана появилась маленькая трещинка.

Всё бы ничего, если бы работал сенсорный экран. А он работал через раз.

Мне это надоело, и я решил поковырять официальную прошивку 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


http://www.keepme.ru/upload/previews/2011/04/15/9eef0f79c62fe4906224c930e143487b.jpg (http://www.keepme.ru/upload/images/2011/04/15/9eef0f79c62fe4906224c930e143487b.jpg)

После этого, еще немного побаловавшись в консоли, я понял, что это

busybox v1.7.2. Посмотрев, что висит в процессах, я обратил внимание на

интересное приложение - QBookApp. Оно было с параметром qws.

http://www.keepme.ru/upload/previews/2011/04/15/957e264d3db4f4bc0c0593d5771f7f0c.jpg (http://www.keepme.ru/upload/images/2011/04/15/957e264d3db4f4bc0c0593d5771f7f0c.jpg)

Заинтересовавшись, я нашел бинарные файлы в папке /usr/local/qisda/bin.

Бегло просмотрев их, я понял, что это как раз то, что нам нужно, – главные

файлы читалки. Я запустил файл QBookApp.sh, и в консоль полилась туева

хуча информации, а экран электронной книги два раза обновился.

http://www.keepme.ru/upload/previews/2011/04/15/ef6c470298ebc50ae5d2d7b5c6fe2a11.jpg (http://www.keepme.ru/upload/images/2011/04/15/ef6c470298ebc50ae5d2d7b5c6fe2a11.jpg)

Я решил посмотреть, что будет, если я открою какую-нибудь книгу, и

нажал в читалке «Продолжить чтение». В консоли началась бешеная

загрузка шрифтов.

http://www.keepme.ru/upload/previews/2011/04/15/b04f0fe0221f0b40ba6ef61cb3c0d61c.jpg (http://www.keepme.ru/upload/images/2011/04/15/b04f0fe0221f0b40ba6ef61cb3c0d61c.jpg)

При попытке завершить скрипт в консоли появился текст «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 скрипт.

http://www.keepme.ru/upload/previews/2011/04/15/114a2c6ef294ed5f1929a8a081957e13.jpg (http://www.keepme.ru/upload/images/2011/04/15/114a2c6ef294ed5f1929a8a081957e13.jpg)

Этот файл был главным, управляющим скриптом, который запускался при

старте системы. В нём меня заинтересовали строки с названием 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.

http://www.keepme.ru/upload/previews/2011/04/15/4ed18b2a50b719e0210edc5fcfbf84ca.png (http://www.keepme.ru/upload/images/2011/04/15/4ed18b2a50b719e0210edc5fcfbf84ca.png)

Доработаем маленько скрипт, и получаем программу для загрузки и установки

пакетов.

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://www.keepme.ru/upload/previews/2011/04/15/42c8682813062e8de2fc43fca832b1da.png (http://www.keepme.ru/upload/images/2011/04/15/42c8682813062e8de2fc43fca832b1da.png)

Все пакеты я качаю с http://ftp.us.debian.org/debian/pool/main/ для архитектуры

armel. Давайте установим что-нибудь полезное, вроде g++ или apache2.

Спустя два часа мой ридер превратился в полноценный веб сервер, с

нормальным менеджером пакетов apt, и различнми утилитами, вроде aircrack-

ng, nmap, etc. Но это всё только в консоле, а что же происходит на экране?

На экране у нас обычный Qt. Можно писать, запускать и работать со своими

программами. Вот вам маленький hello world:


#include
#include
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. Результат:

http://www.keepme.ru/upload/previews/2011/04/15/72e82adcb5747bd55f3a3bd503603c97.jpg (http://www.keepme.ru/upload/images/2011/04/15/72e82adcb5747bd55f3a3bd503603c97.jpg)

Что бы запустить телнет сервер достаточно ввести комманду inetd

Все в ваших руках — пишите, компилируйте, настраивайте, наслаждайтесь!

Никто вам не мешает написать свой браузер на Qt или сделать из читалки

роутер (паяльник никто не отменял), вобщем как всегда, где линукс, там и

простор для экспериментов!

В этой статье мы рассмотрели то, как из обычной читалке на базе линукса,

можно сделать компьютер на базе линукс.

(с) cyber-punk

P.S. http://live.xakep.ru/blog/linux/1239.html (http://www.xakep.ru/post/55475/default.asp) - статья на Хакере

dupD0M
16.04.2011, 02:45
отличная статейка!+++

<Cyber-punk>
16.04.2011, 11:26
отличная статейка!+++


спасибо

HBWS
16.04.2011, 12:19
Статья понравилась. А вот по поводу читалки в апрельском номере Хакера есть целая статья про подобную вещь от Amazon. Вещь действительно стоящая и цена очень радует + бесплатный интернет почти по всему миру

<Cyber-punk>
18.04.2011, 19:48
Статья понравилась. А вот по поводу читалки в апрельском номере Хакера есть целая статья про подобную вещь от Amazon. Вещь действительно стоящая и цена очень радует + бесплатный интернет почти по всему миру


Да, я читал. Хочу себе заказать из-за 3G))

Gorev
18.04.2011, 20:15
++++ отлично, читал с интересом..

.::f-duck::.
18.04.2011, 20:20
said:
Да, я читал. Хочу себе заказать из-за 3G))


Лучше планшет. У меня PocketBook 701 на Андроиде. Тут тебе и вай-фай и пдф и джвю и проч. Правда, лучше брать модель получше: у меня тач не ахти какой хороший. Но юзать можно.

<Cyber-punk>
10.05.2011, 18:58
++++ отлично, читал с интересом..


Спасибо.


Лучше планшет. У меня PocketBook 701 на Андроиде. Тут тебе и вай-фай и пдф и джвю и проч. Правда, лучше брать модель получше: у меня тач не ахти какой хороший. Но юзать можно.


Фишка в том что у амазонского ридера встроенная симка и интернет 3г на халяву! Платить не нужно, также можно jailbreak сделать и юзать читалку как модем.

http://live.xakep.ru/blog/linux/1239.html - статья на Хакере

верещагин
25.06.2011, 19:36
Статья понравилась. А вот по поводу читалки в апрельском номере Хакера есть целая статья про подобную вещь от Amazon. Вещь действительно стоящая и цена очень радует + бесплатный интернет почти по всему миру


Спасибо за Амазон.

<Cyber-punk>
16.07.2011, 00:00
Спасибо за Амазон.


Всегда пожалуйста!