Dlinyj (dlinyj) wrote,
Dlinyj
dlinyj

Categories:

Вы хотите железа? Их есть у меня.

На меня тут жалуются, мол Длиный не пишет ничего о железе, всё бытовуха. Я лишь оправдываюсь, что железо на работе, а всилу специфики работы писать о том не могу. А дома в основном жрачка, стирка, уборка и т.п. Но раз в недельку я устраиваю себе ночь паяльника и топора и тогда что-то ваяю.

В закромах Родины ВНЕЗАПНО обнаружил древнюю читалку Sony PRS-505, которую когда-то любезно одолжил у одного знакомого, и так ему и не отдал. А этой читалкой кроме меня ещё пользовалась милая девушка shnur0vka (коей передаю, пользуясь случаем, привет).

Я вспомнил, что читалка бегает под линуксом. Ну я вынул её и положил на стол, понимая что из неё получится прекрасный, контрасный дисплей, на который можно будет смотреть сколько угодно времени не напрягаясь. Поскольку мне надо отображать только графики и то раз в минуту, то самое оно.
Положил я её на стол и забыл. Потом ушёл в пещеры, где в автобусе многоуважаемый камрад vshmuk пользовался такой читалкой. И слово за слово, он напомнил, что когда-то писал статью о взломе данных читалок и о том, что там есть (о чудо!) Фрейм буффер!!! А это значит, что требуемое изображение достаточно просто записывать в файл фреймбуфера, и оно будет отображаться на экране.

Я прям этой мыслью заболел. Нашёл статью, от туда вышел на форум и толковую инструкцию по подпайке. Но в силу того, что вечером я напоминаю овощ, сил кроме как на разбор читалки, у меня не хватало. Хотя ночью прям уснуть не мог. Но вот у меня наконец дошли руки, и я подпаялся (честно, не с первого раза), к контактным площадкам самым тонким проводом, что у себя нашёл. Подключил к VCP FT232RL, и пошло-поехало...


Ломаемая книжка





Тыл



После успешного логина root, и убивания процессов, которые усыпляют книгу

root@(none):~# killall tinyhttp.sh
root@(none):~# killall tinyhttp


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

root@(none):/# ls -la /dev/fb*
-rw-r--r--    1 root     root            0 Jan  1 00:00 /dev/fb
crw-rw-rw-    1 root     root      29,   0 Jan  1  1970 /dev/fb0
crw-rw-r--    1 root     root      29,   1 Jan  1  1970 /dev/fb0autodetect
crw-rw-r--    1 root     root      29,   0 Jan  1 00:00 /dev/fb0current
crw-rw-r--    1 root     root      29,  24 Jan  1 00:00 /dev/fb0user0
crw-rw-r--    1 root     root      29,  25 Jan  1 00:00 /dev/fb0user1
crw-rw-r--    1 root     root      29,  26 Jan  1 00:00 /dev/fb0user2
crw-rw-r--    1 root     root      29,  27 Jan  1 00:00 /dev/fb0user3
crw-rw-r--    1 root     root      29,  28 Jan  1 00:00 /dev/fb0user4
crw-rw-r--    1 root     root      29,  29 Jan  1  1970 /dev/fb0user5
crw-rw-r--    1 root     root      29,  30 Jan  1  1970 /dev/fb0user6
crw-rw-r--    1 root     root      29,  31 Jan  1  1970 /dev/fb0user7
crw-rw-rw-    1 root     root      29,  32 Jan  1  1970 /dev/fb1
crw-rw-r--    1 root     root      29,  33 Jan  1  1970 /dev/fb1autodetect
crw-rw-r--    1 root     root      29,  32 Jan  1  1970 /dev/fb1current
crw-rw-rw-    1 root     root      29,  64 Jan  1  1970 /dev/fb2
crw-rw-r--    1 root     root      29,  65 Jan  1  1970 /dev/fb2autodetect
crw-rw-r--    1 root     root      29,  64 Jan  1  1970 /dev/fb2current
crw-rw-rw-    1 root     root      29,  96 Jan  1  1970 /dev/fb3
crw-rw-r--    1 root     root      29,  97 Jan  1  1970 /dev/fb3autodetect
crw-rw-r--    1 root     root      29,  96 Jan  1  1970 /dev/fb3current
crw-rw-rw-    1 root     root      29, 128 Jan  1  1970 /dev/fb4
crw-rw-r--    1 root     root      29, 129 Jan  1  1970 /dev/fb4autodetect
crw-rw-r--    1 root     root      29, 128 Jan  1  1970 /dev/fb4current
crw-rw-rw-    1 root     root      29, 160 Jan  1  1970 /dev/fb5
crw-rw-r--    1 root     root      29, 161 Jan  1  1970 /dev/fb5autodetect
crw-rw-r--    1 root     root      29, 160 Jan  1  1970 /dev/fb5current
crw-rw-rw-    1 root     root      29, 192 Jan  1  1970 /dev/fb6
crw-rw-r--    1 root     root      29, 193 Jan  1  1970 /dev/fb6autodetect
crw-rw-r--    1 root     root      29, 192 Jan  1  1970 /dev/fb6current
crw-rw-rw-    1 root     root      29, 224 Jan  1  1970 /dev/fb7
crw-rw-r--    1 root     root      29, 225 Jan  1  1970 /dev/fb7autodetect
crw-rw-r--    1 root     root      29, 224 Jan  1  1970 /dev/fb7current


Обана... А тут оказывается дофигища фреймбуфферов... Я попробовал сделать на экране фарш:

root@(none):~# cat /dev/urandom > /dev/fb
cat: write error: Invalid argument

Понятно, попробуем следующий

root@(none):~# cat /dev/urandom > /dev/fb0
cat: write error: No space left on device

Он задумался, но экран упорно показывает точно то, что на фотке. Хм... Интересно, как он выводит бут имидж? Исходя из статьи vshmuk есть скрипт, который монтирует всё и выводит изображение, а именно /etc/rc.d/rcS.d/S20libromount


Глянем, что же там:
root@(none):/# cat /etc/rc.d/rcS.d/S20libromount

из всего фаршмака, что там вывалилось, нам наиболее интересно вот что:
...
# display booting image 
/usr/local/sony/bin/nblconfig -dump | head -3 | awk '{print $9}' | grep 02 > /dev/null
if [ $? == 0 ]; then
        # init screen load
        grep BootImg /proc/mtd > /dev/null
        if [ $? == 0 ]; then
                NUM=`grep BootImg /proc/mtd | awk -F: '{print $1}' | awk -Fd '{print$2}'`
                dd if=/dev/mtd$NUM of=/dev/fb0 bs=256 count=1875
                /opt/sony/ebook/bin/writescreen init 0
        else
                /opt/sony/ebook/bin/writescreen init 1
                echo no boot image
        fi
else
        /opt/sony/ebook/bin/writescreen init 1
fi
...


А это много интереснее. Ну ка попробуем по умному:

 
root@(none):/# dd if=/dev/urandom of=/dev/fb0 bs=256 count=1875
1875+0 records in
1875+0 records out


Ничего... Попробуем выполнить комманду, которая следует после
root@(none):/# /opt/sony/ebook/bin/writescreen init 0
latest nblconfig read from 0x00035000
latest nblconfig written to 0x00035800


Тоже ничего, хотя какие-то действия идут.

Попробовал ещё загрузить оригинальную бут имайдж, согласно скрипту. Но ничего не произошло... А жаль.



Для тех, кто нихрена не понимает в линухах (надеюсь, что таких среди моих читателей почти нет), поясняю, что фреймбуффер это файл в линуксе (как и любое устройство в общем-то), в который можно (теоретически), тупо записать файл-слепок памяти, и вывести его на экран. Так же можно сделать аппаратный скриншот, т.е. просто сдампить видеопамять, скопировав этот файл в другое место и просмотреть его, скопировав (точнее записав в) его обратно.

Зачем это нужно: На целевой машине идёт видеовывод в виртуальный экран, с разрешением, равным разрешению книжки (а именно 600х800). Далее периодически, берётся файл фреймбуффера виртуального экрана и перенаправляется в сом-порт, а на том конце из ком-порта, коммандой cat это перенаправляется во фреймбуффер книжки.

Иллюстрирую, все комманды выполняются на целевой машине, книжка подключена по UART, через VCP, который висит на /dev/ ttyUSB0 . Комманды вызываются раз в несколько минут, например в кроне.

echo "cat /dev/ttyS0 >/dev/fb0" > /dev/ttyUSB0

Эта комманда по UART передаёт комманду перенаправлять содержимое файла СОМ-порта во фреймбуффер. Следом идёт вторая комманда:

cat /dev/fbn > /dev/ttyUSB0

Эта комманда передаёт содержимое виртуального экрана fbn (где n-номер экрана) в СОМ-порт. Всё должно отработать прекрасно, передача кончится по приходу символа конца файла.

Сия гениальная и простая операция у меня не удалась. Пока не удалась.

Камрад vshmuk советует найти скрипт листания страниц, и поглядеть его. Но потом.... Поскольку я уже просто клюю носом в клаву, эксперименты на сегодня прекращаю. Быть может на работу захвачу всё это барахло, там попробую помучать.
Tags: arm, linux, sex, Железо, Инфо, Понт, Читалка
Subscribe

  • Музыка из игры на Dendy

    Да знаю, что NES, но NES у меня никогда не было, а китайский клон Dendy был... Музыкальная пауза. После того как на пикабу увидел этот пост,…

  • Не могу передать как же круто!

    Это нереально круто играть на arm-овском КПК, на котором запущен Linux, а в линуксе запущен Duke Nukem 3d, и при этом ехать в метро. Duke Nukem…

  • Гамное

    Ещё одно, с сегодняшнего дня на пару недель забиваю на все виды игр. В т.ч. на ипаде и телефоне. А то уже мозги начали разжижаться. Извиняй…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 50 comments

  • Музыка из игры на Dendy

    Да знаю, что NES, но NES у меня никогда не было, а китайский клон Dendy был... Музыкальная пауза. После того как на пикабу увидел этот пост,…

  • Не могу передать как же круто!

    Это нереально круто играть на arm-овском КПК, на котором запущен Linux, а в линуксе запущен Duke Nukem 3d, и при этом ехать в метро. Duke Nukem…

  • Гамное

    Ещё одно, с сегодняшнего дня на пару недель забиваю на все виды игр. В т.ч. на ипаде и телефоне. А то уже мозги начали разжижаться. Извиняй…