Как обновить электронную книгу pocketbook
Обновлено: 21.11.2024
Как команда исследователей в области безопасности, мы любим экспериментировать с программным обеспечением и возиться с обычными предметами домашнего обихода для развлечения.
Итак, один из наших исследователей купил планшет для чтения электронных книг и вместо того, чтобы читать электронные книги в поезде, начал с ним развлекаться!
Основная цель этой записи в блоге — лучше понять внутреннюю работу ридера, чтобы в конечном итоге получить доступ к ней. Мы будем продвигаться небольшими шагами: от знакомства с устройством, изменения формата файла обновления, закрепления, повышения наших привилегий и, наконец, попытки исследовать некоторые интересные части.
Разведка
Это устройство выпущено под торговой маркой французской компании Ebook, но произведено швейцарской компанией (PocketBook1) и другой компанией (Obreey2), базирующейся в Украине. Существует несколько вариантов этой модели, продаваемых несколькими компаниями по всему миру, но мы предполагаем, что аппаратное обеспечение аналогично, и выводы должны быть применимы.
Оборудование
В основе ридера лежит система на кристалле Allwinner A13 на базе процессора ARM (метка 6) . Этот процессор управляет двумя контроллерами (метки 4 и 5) для сенсорной панели и экрана с электронными чернилами, а прошивка хранится на карте памяти SD (метка 4).
Присутствуют два интерфейса отладки, 4 контакта UART справа от устройства (метка 8) и несколько контактов I2C рядом с разъемом контроллера сенсорного экрана (метка 7). ).
Также в левом верхнем углу печатной платы находится модуль Wi-Fi Realtek RTL8188 (label1).
Программное обеспечение
Предусматривается возможность запуска специального программного обеспечения на устройстве для чтения, и компания PocketBook опубликовала на GitHub несколько комплектов для разработки программного обеспечения.
Обратное проектирование формата файла обновления
Обновления микропрограммы для устройства можно загрузить как с веб-сайта продавца, так и с веб-сайта производителя. Он состоит из zip-файла, содержащего несколько файлов:
После распаковки файла SWUPDATE.BIN с помощью gzip мы получаем двоичный файл, начинающийся с заголовка размером 0x400 байт, как показано ниже.
К счастью для нас, этот формат прошивки уже частично задокументирован на GitHub.
Однако, поскольку инструмент извлечения не знал об определенных типах разделов, мы разработали быстрый скрипт на основе файла структуры Katai.
Файл ksy и связанный с ним скрипт опубликованы на нашем GitHub здесь и здесь.
Как указано в сценарии, заголовок содержит таблицу разделов и метаданные для обновления, включая новую версию и криптографическую подпись. Каждая запись раздела описывается 16 байтами данных, содержащими тип раздела, его размер и начальное смещение в файле.
Целостность скрипта проверяется, сначала вычисляя хэш MD5 каждого раздела, хешируя (по-прежнему с помощью MD5) этот список хэшей, а затем сравнивая его с ожидаемым значением, хранящимся в заголовке.
Обновление также подписано с использованием нескольких открытых ключей, жестко закодированных в файле /etc/swupdate.pk. Следует отметить, что эти открытые ключи являются общими для розничных продавцов, и в настоящее время в файле содержится 3 открытых ключа.
Юмор разработчиков
Кажется, разработчики PocketBook также обладают хорошим чувством юмора, так как в процессе обновления используются забавные имена файлов, включая имена каталогов, такие как /tmp/megadog и /tmp/dragon .
Рутинг устройства
Существует несколько способов рутирования устройства, большинство из них подразумевает снятие задней крышки и аннулирование гарантии.
Привет, но на данный момент ваше устройство уже открыто, не так ли?
Выполнение кода
Как было сказано ранее, существует задокументированный способ345 выполнения пользовательского кода на устройстве путем перетаскивания исполняемых файлов в скрытую папку при подключении устройства чтения к компьютеру.
Эта папка с именем apps уже содержит несколько полезных приложений, включая sudoku.app или chess.app .
Итак, давайте поиграем в ракушки!
Приложения запускаются как средство чтения учетной записи пользователя. Это начало, по крайней мере, мы не никто, но на читалке есть еще два пользователя, sreader и всемогущий рут.
Легкий способ
При извлечении файлов из формата обновления мы заметили, что в каталоге /ebrmain/bin/ хранится двоичный файл sudo.
Используя тот же путь выполнения, что и раньше, давайте проверим, можем ли мы запустить что-то с повышенными привилегиями!
На первый взгляд, эта конфигурация включает набор сценариев оболочки, но ни один из них не существует на устройстве. Мы на самом деле упустили из виду этот момент и после рутирования устройства другими способами вернулись к нему, чтобы найти уязвимость, скрывающуюся внутри. На самом деле путь исполняемого файла калибровки не проверяется, поэтому мы можем выполнить что угодно с тем же именем, что и root!
Следующий эксплойт можно поставить на устройство в папку с приложениями для получения рут шелла:
После проверки некоторых прошивок оказалось, что эта уязвимость затрагивает только модели PocketBook TouchLux 2 и 3.
Сложный путь: (ab)использование SD-карты
Как мы заметили ранее, устройство содержит SD-карту. Публично задокументировано, что вы можете увеличить объем хранилища, заменив эту карту на более крупную на других типах ридеров6.
Однако вместо того, чтобы увеличивать наше хранилище, что, если мы расширим наши привилегии? Начнем с проверки сценария инициализации с именем /etc/init.d/rcS.
Как мы видим, этот скрипт при каждой загрузке проверяет, присутствует ли какой-либо из двух файлов, он запускает другой скрипт с именем ins_usbnet.sh .
Содержимое этого скрипта следующее:
Итак, если мы коснемся одного из двух файлов, перезагрузимся и подключим USB-кабель, мы, вероятно, будем вознаграждены модемом rndis_host и сервером SSH, прослушивающим IP-адрес считывателя!
Поскольку мы уже сняли крышку ридера, мы можем извлечь SD-карту, смонтировать раздел /dev/mmcblk0p9 и добавить файл developer_mode.
После перезагрузки устройства мы можем подключиться к ридеру по ssh, и без пароля нам предоставляется root shell!
Еще один аппаратный способ: использование отладочного порта UART
После припайки контактов к тестовым точкам UART открывается последовательное соединение со скоростью 115 200 бод, и при прерывании во время загрузки оно перенаправит вас прямо в корневую оболочку.
Разное
Процесс загрузки
Устройство использует процессор Allwinner SOC и загружается с помощью специального загрузчика под названием eGON с определенными драйверами, которые, в свою очередь, загружают загрузочный образ Linux. Код загрузчика можно найти здесь.
Можно загрузиться в специальном режиме под названием FEL, нажав кнопку во время загрузки. При подключении с помощью USB-кабеля устройство становится доступным для конкретного устройства, с которым можно взаимодействовать с помощью инструментов из пакета sunxi-tools. Эта процедура задокументирована7.
Управление криптографическими секретами
ReadSecret и WriteSecret
Две интересные функции под названием ReadSecret и WriteSecret доступны в пакете разработки. Эти функции используются во многих приложениях ридера, от управления сетевыми настройками (для хранения паролей Wi-Fi) до самих устройств для чтения электронных книг (например, для хранения ключей DRM или токенов API).
Как и большинство функций, представленных в SDK, они используют механизм IPC, основанный на стандартных очередях сообщений Unix. Используются как минимум две из этих очередей сообщений с ключами 0xA1230F (используется в функции hw_ipcrequest, а 0xA1230E используется для безопасных запросов IPC.
Каждое из сообщений, записанных в эти очереди, имеет идентификатор, большинство из которых определено в заголовке inkview.h. В нашем примере вызов WriteSecret отправляет сообщение с идентификатором 0x104 ( MSG_PWENCRYPT ) в незащищенную очередь.
Создателем и владельцем обеих этих очередей сообщений является процесс ./pocketbook, который является символической ссылкой на двоичный файл monitor.app.
В этом двоичном файле, после большого случая переключения, анализирующего различные коды сообщений, мы находим две функции с именами encrypt_password и decrypt_password, которые вызываются, когда идентификатор сообщения равен MSG_PWENCRYPT (соответственно MSG_PWDECRYPT).
Этот пользовательский шифр способен зашифровать только 0 x 40 байт данных и основан на 4 байтах соли и 8 байтах, полученных из определенного ключа устройства.
Он генерирует ключевой поток с 4 хэшами MD5 соли и ключа (и мутирует один байт соли между каждым хэшем), а затем генерирует зашифрованные данные, выполняя операцию xoring каждого байта чистых данных с соответствующим байт в ключевом потоке.
Эта конкретная конструкция делает глобальный алгоритм уязвимым для атак с известным открытым текстом, поскольку злоумышленник может быстро восстановить части ключевого потока. Или вместо организации этой атаки можно просто попросить систему расшифровать ее с помощью ReadSecret ;-)
Криптографические странности
В ходе обратного проектирования мы заметили несколько странных криптографических примитивов, например функцию OsyUtilities::SHA0BadCrypt . Как может не подразумевать ее название, эта функция реализует не вариант SHA0, а некую неверную криптографию, основанную на шифре с подстановкой по алфавиту.
Мы также обнаружили некоторые фиксированные ключи (в двоичном файле аналитики) или некоторые пользовательские схемы xor, используемые для запутывания потока кода в библиотеке с именем libioc.so .
Сценарий отладки, содержащий учетные данные
В некоторых обновлениях инструменты отладки остались в файле обновления встроенного ПО. Один из этих инструментов с именем sshstart.sh упоминается в файле конфигурации sudoers. Этот сценарий содержит учетные данные для установления туннеля SSH между устройством и сервером, принадлежащим PocketBook.
Аналитика
При установке устройства на компьютер мы можем найти несколько файлов .gz в папке /system/usage_stat/ .Эти файлы называются file_to_send[TIMESTAMP]_XXX.gz и, как следует из их названий, отправляются на удаленный сервер.
Приложение собирает множество событий, например, когда на устройство загружается новая книга, когда устройство загружается и даже когда пользователь открывает книгу.
Поэтому приятно знать, что некоторые разработчики могут знать, что вы читаете и когда вы это читаете!
сбой tinysmbd
Когда локальный модем активируется сценарием /lib/modules/ins_usbnet.sh , он также запускает крошечный сервер Samba, прослушивающий порт 139.
Этот сервер можно вывести из строя, отправив ему всего 5 байт!
Основной причиной этого сбоя является двойной вызов функции SmbSessionExit, приводящий к двойному освобождению, когда пакет не содержит волшебного слова samba.
На стороне клиента:
На стороне сервера:
Счастливый конец
Итак, после обращения и владения устройством мы можем превратить ридер в платформу разработки ARM с экраном на электронных чернилах! Безопасность прошивки явно не идеальна, но об уязвимостях было сообщено конструктору, и они будут исправлены в ближайшем выпуске. А пока любители3 могут использовать его для настройки своего устройства.
Я хотел бы поблагодарить своих коллег за помощь в этом исследовании, а также J. за то, что он не вышел из себя, глядя, как я разбираю устройство на части.
Начните увлекательное книжное путешествие без границ с PocketBook Reader
Читайте с комфортом на любом устройстве
Начните читать на смартфоне и продолжите чтение с той же страницы в электронной книге. Приложение PocketBook Reader синхронизирует вашу позицию чтения, книги и библиотеки на всех устройствах. Наслаждайтесь потрясающим электронным чтением с широким спектром личных настроек и несколькими поддерживаемыми форматами.
Читать в любом формате
Приложение поддерживает все популярные форматы электронных книг! Читать в формате PDF (Adobe DRM), EPUB (Adobe DRM), DjVu, FB2, FB2.zip, MOBI, DOCX, RTF, TXT, CHM, HTML (базовый), CBZ, CBR, CBT.
Использовать функциональную библиотеку
PocketBook Reader обеспечивает доступ к сетевым каталогам (OPDS) и поддерживает Adobe DRM. Он позволяет быстро открывать загруженные файлы электронных книг, экономя время.
Слушай и переводи легко
Приложение поддерживает форматы аудиокниг MP3 и M4B и имеет функцию преобразования текста в речь. Благодаря встроенным словарям вы можете читать электронные книги на разных языках.
Читайте с комфортом на любом устройстве
Начните читать на смартфоне и продолжите чтение с той же страницы в электронной книге. Приложение PocketBook Reader синхронизирует вашу позицию чтения, книги и библиотеки на всех устройствах.
Откройте для себя персональные настройки
Высокая функциональность и удобный интерфейс, предоставляющий ряд настраиваемых персональных настроек. Персонализируйте размер шрифта, масштаб, цвета текста и фона, параметры полей страницы и многие другие функции!
Как использовать?
Старая версия приложения PocketBook Reader
Выпуск 3.21.16694
Установить приложение
Введите адрес электронной почты, чтобы получить приложение на свое устройство
На Pocketbook Inkpad 3 только что было выпущено новое обновление встроенного ПО, которое повышает версию до 6.5.765. Обновление содержит множество улучшений, которые, по словам компании, приведут к общему повышению производительности. Процесс загрузки устройства также будет быстрее. Обложки книг и страницы PDF также будут отображаться быстрее, чем раньше. Точно так же функция прокрутки будет улучшена во всех приложениях.
Затем есть несколько исправлений, которые устраняют несколько известных проблем с устройством. Например, исправлена вероятность неправильного порядка заметок при экспорте в файл HTML. Аналогичным образом, вероятность возникновения ошибки при деактивации учетной записи Adobe в некоторых случаях также была устранена.
К другим исправлениям, включенным в обновление, относится исправление для приложения «Словарь», которое иногда отказывалось запускаться в режиме полета. Точно так же есть исправление для голосовых пакетов TTS, которые иногда просто не могли быть удалены, а вероятность сбоя устройства при загрузке нового словаря в читальном зале была устранена. Также была проблема с логотипом выключения питания, который часто пропадал, когда устройство автоматически отключалось в спящем режиме, что было исправлено в текущем обновлении.
Помимо этого, обновление также позволяет автоматически отображать словарную запись выделенного текста после изменения словаря, а также внесены некоторые улучшения UX в приложение словаря. Кроме того, пользователи также смогут загружать предустановленные словари, если они были удалены по какой-либо причине.
Пользовательский интерфейс читального зала также получит повышение производительности, а также будет улучшен контроль над подсветкой, яркостью и температурой. Обновление также позволит пользователям загружать лучшие голоса TTS непосредственно из пользовательского интерфейса читального зала. Обновление также дает возможность продлить или досрочно вернуть книги, защищенные LCP. Функции масштабирования и масштабирования также были улучшены, а также добавлена поддержка китайского ввода пиньинь.
Интерфейс клавиатуры также подвергся капитальному ремонту, чтобы теперь он мог поддерживать новые раскладки символов. Это означает, что пользователи смогут назначать несколько символов клавише клавиатуры, которая будет доступна с помощью длительного нажатия на определенные клавиши. Пользовательский интерфейс приложения «Календарь» также подвергся капитальному ремонту, а в обновлении представлено новое приложение под названием «Фоторамка», которое позволит просматривать фотографии в режиме слайд-шоу. Кроме того, есть также функция добавления текущего времени и даты, когда было снято конкретное изображение.
Помимо основных обновлений, упомянутых выше, в программу чтения внесены некоторые улучшения. К ним относится поддержка файлов, защищенных LCP DRM, а также введен новый режим прокрутки, при котором страницы слипаются, создавая впечатление эффекта непрерывной прокрутки. Кроме того, появился новый более быстрый движок, поддерживающий актуальное форматирование книг в формате PDF.
Меню «Информация о книге» открывается быстрее после обновления, а распознавание жестов смахивания также стало более точным. Пользователи также смогут вернуться на последнюю страницу, которая была открыта перед вызовом меню поиска. Также пользователи смогут автоматически выходить из режима сносок через пять страниц. Также будет предусмотрена функция регулировки яркости, контрастности и гамма-коррекции книг в формате PDF и DjVu, а шрифты словарной статьи также можно будет изменить с помощью простых жестов масштабирования.
В обновлении также представлены новые элементы управления пользовательского интерфейса, которые позволяют пользователям изменять шрифт словарных статей при чтении в режиме словаря. Обработка книг в формате EPUB значительно улучшилась, в то время как файлы формата RTF также открываются намного быстрее. Затем будет режим «По размеру страницы» и «По ширине» после того, как пользователи изменят масштаб в книгах в формате PDF и DjVu с помощью жеста масштабирования.
Помимо этого, обновление содержит множество исправлений. Например, есть исправление для возможных некачественных обновлений экрана после того, как какой-либо текст был выбран для выделения или ошибочного возврата в тексте после прочтения сноски в какой-либо книге, имеющей формат FB2. Проблема, при которой несколько сокращений в тексте озвучивались в конце предложения.
Некоторые проблемы с планшетами также были эффективно решены, например, таблица не отображалась в правильном формате в некоторых файлах, защищенных Adobe DRM, или таблетка неправильно формировалась в некоторых комиксах. Кроме того, есть исправления для некоторых файлов PDF, защищенных паролем, которые не открываются, даже если указан правильный пароль, номера страниц не отображаются в книгах в формате PB-2, если встроенная функция нумерации страниц была отключена.
Другие исправления включают некорректное отображение иллюстраций в некоторых книгах формата FB2, неправильные отступы страниц в некоторых книгах формата DOCX. Точно так же есть исправление для некоторых встроенных шрифтов, которые не использовались в некоторых книгах EPUB.
Помимо вышеперечисленного, обновление также улучшает работу приложения "Книжный магазин", приложения "Библиотека" и приложения "Браузер".
PocketBook Reader – это бесплатное приложение для чтения любого электронного контента (книг, журналов, учебников, комиксов и т. д.) и прослушивания аудиокниг! Поддерживаются все форматы.
PocketBook Reader – это бесплатное приложение для чтения всех форматов (книг, журналов, учебников, комиксов и т. д.) и прослушивания аудиокниг! Приложение поддерживает 26 книжных и аудио форматов, включая mobi, epub, fb2, cbz, cbr. Читайте без рекламы и с полным комфортом!
Выберите любой контент — любой формат!
• Поддержка 19 форматов книг, в том числе самых популярных - EPUB, FB2, MOBI, PDF, DJVU, DOCX, RTF, TXT, HTML;
• Форматы комиксов CBR и CBZ;
• Открывать книги, защищенные с помощью Adobe DRM (PDF, EPUB);
• Функция PDF Reflow (переформатировать текст в файлах PDF).
Слушайте аудиокниги!
• Вы можете слушать аудиокниги и другие аудиофайлы в форматах MP3, M4B и делать в них заметки;
• Встроенный движок TTS (Text-to-speech) для озвучивание текстовых файлов.
Легко скачивайте и синхронизируйте контент!
• Бесплатный сервис PocketBook Cloud для синхронизации всех ваших книг, включая аудиокниги, а также позиции чтения, заметки и закладки на всех ваших устройствах;
• Ваши файлы из Dropbox. или сервисы Google Книги легко подключаются к приложению для создания единой консолидированной библиотеки. Вы даже можете подключить несколько аккаунтов одновременно;
• Поддержка каталогов OPDS — получите доступ к сетевым библиотекам;
• Сканер ISBN, для быстрого поиска электронных версий книг по штрих-коду;
• Возможность брать книги и периодические издания;
• Если у вас есть электронная книга PocketBook с электронными чернилами, вы можете легко синхронизировать все свои книги и учетные записи, просто отсканировав QR-код.
Готовы перейти с другого приложения? Без проблем! Начать работу с PocketBook Reader очень просто! Благодаря интуитивно понятному интерфейсу приложение предоставляет вам беспрецедентную свободу — множество вариантов настроек и никаких ограничений.
Выбирайте, меняйте, настраивайте и персонализируйте!
• Интуитивно понятный интерфейс, удобная навигация и минималистичный дизайн;
• Возможность выбора одной из семи цветовых тем интерфейса, переназначения кнопок и областей отображения;
• Два режима ночного чтения — для удобства чтения в любое время;
• Регулировка начертания, размера шрифта, межстрочного интервала и размера полей;
• Анимация перелистывания страниц;
• >• Возможность обрезать поля — сделайте так, чтобы страница выглядела именно так, как вы хотите.
Получите быстрый доступ к файлам и удобный поиск!
• Все файлы быстро находятся и мгновенно открываются, даже со встроенными аудио- и видеофрагментами;
• Ваши книги никогда не потеряются в памяти устройства - благодаря умному поиску сканирование файлов на вашем планшете или смартфоне занимает считанные секунды. Любой файл или документ можно найти в несколько кликов!
• Приложение позволяет сортировать книги, создавать коллекции, фильтровать и отмечать файлы по своему усмотрению. Ваша библиотека — ваши правила;
• Удобное управление аудиофайлами — легко сортировать и воспроизводить аудиокниги.
Создавайте закладки, делайте заметки, добавляйте комментарии!
• Вы сможете быстро найти все ваши заметки и делитесь ими с друзьями по электронной почте или в мессенджерах;
• Соберите все свои заметки, закладки и комментарии в отдельные файлы для еще большего удобства.
PocketBook Reader был создан заядлыми читателями для заядлых читателей, и поэтому это, вероятно, лучшее приложение для чтения электронных книг.
Читайте также: