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

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

Я вспомнил, что читалка бегает под линуксом. Ну я вынул её и положил на стол, понимая что из неё получится прекрасный, контрасный дисплей, на который можно будет смотреть сколько угодно времени не напрягаясь. Поскольку мне надо отображать только графики и то раз в минуту, то самое оно.
Положил я её на стол и забыл. Потом ушёл в пещеры, где в автобусе многоуважаемый камрад [livejournal.com profile] 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

Он задумался, но экран упорно показывает точно то, что на фотке. Хм... Интересно, как он выводит бут имидж? Исходя из статьи [livejournal.com profile] 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-номер экрана) в СОМ-порт. Всё должно отработать прекрасно, передача кончится по приходу символа конца файла.

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

Камрад [livejournal.com profile] vshmuk советует найти скрипт листания страниц, и поглядеть его. Но потом.... Поскольку я уже просто клюю носом в клаву, эксперименты на сегодня прекращаю. Быть может на работу захвачу всё это барахло, там попробую помучать.

Date: 2012-09-27 04:59 pm (UTC)
From: [identity profile] belbes.livejournal.com
А там разве ограниченная регистрация?

Date: 2012-09-27 09:46 pm (UTC)
From: [identity profile] shnur0vka.livejournal.com
Я не в курсе, насколько она ограниченная. То, что подтверждают — факт. Необходимо не превысить вместимость залов, необходимо отфильтровать совсем левак, чтобы люди, которым это действительно нужно, могли попасть вместо тех, кто пришел просто пожрать.

Не слышала про отказы на YaC, но мало ли... просто не интересовалась.

January 2026

S M T W T F S
    123
456 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 22nd, 2026 01:22 pm
Powered by Dreamwidth Studios