Я бы не стал держать смартфон на зарядке сутками - АКБ вздуется. А если держать - то занизить напряжение зарядки АКБ где-то до 3.9V (будет где-то 60% заряда, но риск вздутия куда меньше). Дл этого можно использовать какое-нибудь приложение для управления зарядкой или (что лучше) пропатчить dtb или ядро и прошить.
Модель X757 интересна. Но куча вопросов на которые пока нет ответов:
Сколько слотов под оперативку? Сколько из них занято с завода? Какие тайминги у заводской памяти? Можно ли докинуть памяти самому не лишившись гарантии?
Есть ли зарядка через Type-C PD? Хватает ли мощности заводской зарядки всегда? Не разряжается ли ноут во время игры?
DisplayPort через Type-C - какая версия DisplayPort? А версия HDMI? Поддерживаются ли FreeSync/G-Sync по DisplayPort? А по HDMI? А на встроенном дисплее? Можно ли питать ноут от монитора?
Можно ли изменить цвет подсветки клавиатуры?
Linux - какой дистрибутив идёт с завода? Используются ли какие-то проприетарные драйвера в ядре или юзерспейсе? Насколько реально сменить дистрибутив сохранив всю функциональность? Отключается ли питание дискретного GPU когда он не активен? Или только руками его отрубать (с релогином)?
У меня есть парочка ламп Старт (Start ECO LEDGL SE27 15W 30 04.2021) (им 1.5 года) у которых износился корпус.
А именно - растрескался пластик между корпусом и плафоном (настолько, что у сгоревшей отваливались куски корпуса от лёгкого прикосновения, а плафон без усилия оторвался руками после выкручивания).
Одна из этих ламп сгорела недавно (что именно сгорело - ещё не ковырял), чем и обратила на себя внимание.
Вторую (ещё живую) осторожно переставил в закрытый плафон, во избежание поражения током, хотя она и так в люстре стояла и не была угрозой. Пластик старался не трогать.
а есть мысли, как можно усложнить жизнь против динамического анализа?
Есть немножко. Но не против всех атак.
Или просто заменить все вызовы удаления файлов на nop - первый же запуск приложения и временная директория с расшифрованной моделью останется.
Если защищаемся от ламеров - вот тут можно добавить что-то типа изменения размера файла (truncate) на 0 сразу после инициализации модели - в этом случае атакующий получит кучку пустых файлов.
Как противодействовать другим методам анализа - хз, так как они проводятся вне скоупа приложения, и требуют поддержки от MLModel в плане загрузки предварительно зашифрованной модели.
Использование временной директории + вызов MLModel.init явно является тупиковым путём тут, так как позволяет перехватить расшифрованные данные при любом сценарии работы.
Единственным возможным путём полной защиты модели в данном случае я вижу предварительную генерацию ключевой пары в TZ (приватный ключ никогда не покидает TZ), пересылку публичного ключа на сервер, после чего сервер шифрует модель полученным публичным ключом и отсылает обратно, затем происходит скармливание зашифрованных данных модели в TZ с объяснением какие именно данные (ID ключа) надо расшифровать, и TZ расшифрует модель и сохранит её внутри защищённой памяти, после чего MLModel должен будет как-то аутентифицироваться в TZ и затем авторизоваться в TZ что он может получить доступ к конкретной модели, после чего TZ отдаст ему модель (и вот тут как раз таки её можно будет поймать, так что MLModel должно будет работать в TZ полностью, но это увеличивает поверхность атаки на саму TZ).
TZ - TrustZone, или как там оно называется в iOS (не трогал её - не знаю терминов).
дешифруем модель, релизим из памяти ключ, разархивируем модель и сохраняем во временную папку, например: NSTemporaryDirectory()/YourFolder/
Вот тут всё ваше шифрование модели разом потеряло смысл, так как на джейлбрейктнутом девайсе достаточно поднять что-то типа inotify на временную папку с коллбэком который будет тут же открывать и оставлять открытыми все появляющиеся во временной директории файлы (чтобы последующее их удаление не помешало прочесть файлы через уже открытые дескрипторы).
Ну или просто запустить ваше приложение под чем-то типа strace и оттрассировать все вызовыopen() и write() а затем отфильтровать их по пути, получив только вызовы связанные с временной директорией, а затем повторить их и получить полностью дубликат вашей временной директории с расшифрованной моделью.
Инициализируем модель и загружаем ее в память c помощью init метода MLModel
Ещё одно место которое можно немножко попячить (к примеру вставив в init что-то типа sleep(10000) или заменить вызов init на exit() и спокойненько вычитать за время сна (или после завершения приложения) всю временную директорию с расшифрованной моделью.
Удаляем временную папку.
Или просто заменить все вызовы удаления файлов на nop - первый же запуск приложения и временная директория с расшифрованной моделью останется.
То есть, предложенные методы защищают только от статического анализа, и полностью бессильны против динамического анализа (как активного, с модификацией кода приложения или OS, так и пассивного, просто наблюдая за работой приложения без его модификации).
Для декомпиляции Java ещё можно попробовать Jadx - он неплохо справляется с этим делом, при этом есть ещё и jadx-gui, в котором можно вести навигацию по коду и при необходимости даже переименовывать классы, поля, методы и переменные.
Ага, 5G. А пинг там какой будет? 600 ms? А ведь именно ультранизкий пинг и пропагандировали как основную фичу 5G. В итоге получится быстрый аналог EDGE.
Бесполезно потраченную на майнинг в регионе А энергию никак не получится заставить плавить сталь в регионе Б, даже если регион Б купил циферки у региона А и заплатил за это настоящие деньги.
Не может крипта быть эквивалентом аккумулятора. Если энергия вдруг кончится - она (ВНЕЗАПНО!) кончится и у покупателей крипты, и у маинеров.
Я тоже игрался с Silero TTS и выяснил, что разные голоса имеют разное ограничение на максимальную длину обрабатываемого текста, 1000 символов уверенно тянет только eugene, а kseniya надо передавать не больше895 символов (при этом некоторые тексты большего размера она может обработать, а другие - нет). Проверено тестами.
Взгляните на скрипт https://github.com/S-trace/silero_tts_standalone/blob/master/tts.py - возможно найдёте что-нибудь полезное для себя в def preprocess_text - эта функция обрабатывает текст и затем разделяет текст по границам предложений на чанки пригодные для озвучивания.
В Firefox 102.0.1 (64 бита) на Manjaro у меня нормально отрисовались гифки (как многоцветная, так и с красными квадратами), градиент статичен и отрисован полностью и красный квадрат на верхней гифке не промелькивает, как на картинке "Я захотел узнать, как выглядел рендеринг GIF в Netscape 2.0. Вот тестовый GIF с красными квадратами из примера выше, отрендеренный (правильно!) в Netscape 2.0 и Windows 95".
Кроме того, если сравнивать с обычными оптическими лазерами, то можно сказать, что сазеры обладают гораздо меньшей длиной волны, что позволяет получать гораздо более чёткие картины. Вторым положительным качеством является возможность фокусировки с более высокой концентрацией энергии (из-за наличия короткой длины волны) в точку гораздо меньшего размера, с более высокой концентрацией энергии.
Как-то странно звучит, я всегда думал что длина волны у света сильно меньше чем у звука.
К примеру, в воздухе длина волны красного цвета в воздухе - 630 нанометров, а длина волны ультразвука на 100 кГц в воздухе - 3.4 милиметра, или же 3400000 нанометров.
Ok гугл, зачем мне нужен реддит если в приватной вкладке по запросу "xiaomi mi pad 4 android 12" в гугле я получаю сразу же кучу сайтов, первый же из которых мне сразу и на одной странице объясняет всё от x до й начиная от получения устройства в руки и установки дров, продолжая разлочкой бутлоадера (по ссылке из гайда), продолжая заливкой TWRP (по ссылке из того же гайда) и завершая заливкой кастомной прошивки через предварительно прошитый TWRP.
А на реддите (google://site:reddit.com) я получаю:
первую ссылку с "GET ANDROID 12 BETA FOR MI MIX 4, MI PAD 5 PRO/ MI PAD 5",
вторую с [PETITION] Xiaomi, give Mi Pad 4 a MIUI 12 based on Android 10!!",
третью с "Hello, it has been like 2 years since I had an update on my Mi pad 4. This is the lastest build I have: ( MIUI 10.4 by xiaomi.eu 9.59",
четвёртую с "What's the latest update for Mi Pad 4 Plus", пятую с "Android 12L for Pad 5".
При этом все ссылки с реддита мне предлагают нажать что-то (возможно, согласие на cookies?) чтобы увидеть ещё один ответ в ветке обсуждения, а ниже после обсуждаемой ветки находится абсолютно неразличимое и нетоличимое от изначальной темы говно.
Собственно вопрос, когда именно умер гугл и нафига мне этот ваш б-гомерзкий реддит?
Пожалуйста, не надо так!
Не убивайте поисковые системы, не раздробляйте мир на несвязанные информационные системы и каталоги поисковых систем!
Я бы не стал держать смартфон на зарядке сутками - АКБ вздуется. А если держать - то занизить напряжение зарядки АКБ где-то до 3.9V (будет где-то 60% заряда, но риск вздутия куда меньше). Дл этого можно использовать какое-нибудь приложение для управления зарядкой или (что лучше) пропатчить dtb или ядро и прошить.
Модель X757 интересна. Но куча вопросов на которые пока нет ответов:
Сколько слотов под оперативку? Сколько из них занято с завода? Какие тайминги у заводской памяти? Можно ли докинуть памяти самому не лишившись гарантии?
Есть ли зарядка через Type-C PD? Хватает ли мощности заводской зарядки всегда? Не разряжается ли ноут во время игры?
DisplayPort через Type-C - какая версия DisplayPort? А версия HDMI? Поддерживаются ли FreeSync/G-Sync по DisplayPort? А по HDMI? А на встроенном дисплее? Можно ли питать ноут от монитора?
Можно ли изменить цвет подсветки клавиатуры?
Linux - какой дистрибутив идёт с завода? Используются ли какие-то проприетарные драйвера в ядре или юзерспейсе? Насколько реально сменить дистрибутив сохранив всю функциональность? Отключается ли питание дискретного GPU когда он не активен? Или только руками его отрубать (с релогином)?
У меня есть парочка ламп Старт (Start ECO LEDGL SE27 15W 30 04.2021) (им 1.5 года) у которых износился корпус.
А именно - растрескался пластик между корпусом и плафоном (настолько, что у сгоревшей отваливались куски корпуса от лёгкого прикосновения, а плафон без усилия оторвался руками после выкручивания).
Одна из этих ламп сгорела недавно (что именно сгорело - ещё не ковырял), чем и обратила на себя внимание.
Вторую (ещё живую) осторожно переставил в закрытый плафон, во избежание поражения током, хотя она и так в люстре стояла и не была угрозой. Пластик старался не трогать.
Есть немножко. Но не против всех атак.
Если защищаемся от ламеров - вот тут можно добавить что-то типа изменения размера файла (truncate) на 0 сразу после инициализации модели - в этом случае атакующий получит кучку пустых файлов.
Как противодействовать другим методам анализа - хз, так как они проводятся вне скоупа приложения, и требуют поддержки от
MLModel в плане загрузки предварительно зашифрованной модели.
Использование временной директории + вызов
MLModel.init явно является тупиковым путём тут, так как позволяет перехватить расшифрованные данные при любом сценарии работы.
Единственным возможным путём полной защиты модели в данном случае я вижу предварительную генерацию ключевой пары в TZ (приватный ключ никогда не покидает TZ), пересылку публичного ключа на сервер, после чего сервер шифрует модель полученным публичным ключом и отсылает обратно, затем происходит скармливание зашифрованных данных модели в TZ с объяснением какие именно данные (ID ключа) надо расшифровать, и TZ расшифрует модель и сохранит её внутри защищённой памяти, после чего
MLModel должен будет как-то аутентифицироваться в TZ и затем авторизоваться в TZ что он может получить доступ к конкретной модели, после чего TZ отдаст ему модель (и вот тут как раз таки её можно будет поймать, так что MLModel должно будет работать в TZ полностью, но это увеличивает поверхность атаки на саму TZ).
TZ - TrustZone, или как там оно называется в iOS (не трогал её - не знаю терминов).
Шифровать алгоритмом хэширования файл конечно можно, но будет очень-очень-очень трудно его расшифровать потом.
Может всё-таки лучше для шифрования выбрать что-то вроде AES256?
Вот тут всё ваше шифрование модели разом потеряло смысл, так как на джейлбрейктнутом девайсе достаточно поднять что-то типа inotify на временную папку с коллбэком который будет тут же открывать и оставлять открытыми все появляющиеся во временной директории файлы (чтобы последующее их удаление не помешало прочесть файлы через уже открытые дескрипторы).
Ну или просто запустить ваше приложение под чем-то типа strace и оттрассировать все вызовы
open()
иwrite()
а затем отфильтровать их по пути, получив только вызовы связанные с временной директорией, а затем повторить их и получить полностью дубликат вашей временной директории с расшифрованной моделью.Ещё одно место которое можно немножко попячить (к примеру вставив в
init
что-то типаsleep(10000)
или заменить вызовinit
наexit()
и спокойненько вычитать за время сна (или после завершения приложения) всю временную директорию с расшифрованной моделью.Или просто заменить все вызовы удаления файлов на
nop
- первый же запуск приложения и временная директория с расшифрованной моделью останется.То есть, предложенные методы защищают только от статического анализа, и полностью бессильны против динамического анализа (как активного, с модификацией кода приложения или OS, так и пассивного, просто наблюдая за работой приложения без его модификации).
Вместо 2 команд
systemctl start
+systemctl enable
можно просто сделать sudo systemctl enable --now serial-getty@ttyS0Для декомпиляции Java ещё можно попробовать Jadx - он неплохо справляется с этим делом, при этом есть ещё и jadx-gui, в котором можно вести навигацию по коду и при необходимости даже переименовывать классы, поля, методы и переменные.
Ага, 5G. А пинг там какой будет? 600 ms? А ведь именно ультранизкий пинг и пропагандировали как основную фичу 5G. В итоге получится быстрый аналог EDGE.
Бесполезно потраченную на майнинг в регионе А энергию никак не получится заставить плавить сталь в регионе Б, даже если регион Б купил циферки у региона А и заплатил за это настоящие деньги.
Не может крипта быть эквивалентом аккумулятора. Если энергия вдруг кончится - она (ВНЕЗАПНО!) кончится и у покупателей крипты, и у маинеров.
Я тоже игрался с Silero TTS и выяснил, что разные голоса имеют разное ограничение на максимальную длину обрабатываемого текста, 1000 символов уверенно тянет только eugene, а
kseniya надо передавать не больше
895 символов (при этом некоторые тексты большего размера она может обработать, а другие - нет). Проверено тестами.Взгляните на скрипт https://github.com/S-trace/silero_tts_standalone/blob/master/tts.py - возможно найдёте что-нибудь полезное для себя в def preprocess_text - эта функция обрабатывает текст и затем разделяет текст по границам предложений на чанки пригодные для озвучивания.
Что-то мне кажется, что компании могут покинуть рынок с 12% мирового производства, чтобы войти на рынок с 23%
Великая арабская стена
Отличная статья, и прекрасно написана! Побольше бы таких, пишите ещё!
В Firefox 102.0.1 (64 бита) на Manjaro у меня нормально отрисовались гифки (как многоцветная, так и с красными квадратами), градиент статичен и отрисован полностью и красный квадрат на верхней гифке не промелькивает, как на картинке "Я захотел узнать, как выглядел рендеринг GIF в Netscape 2.0. Вот тестовый GIF с красными квадратами из примера выше, отрендеренный
(правильно!) в Netscape 2.0 и Windows 95".
Как-то странно звучит, я всегда думал что длина волны у света сильно меньше чем у звука.
К примеру, в воздухе длина волны красного цвета в воздухе - 630 нанометров, а длина волны ультразвука на 100 кГц в воздухе - 3.4 милиметра, или же 3400000 нанометров.
Разделительный фильтр для пульсирующего напряжения на переменную и постоянную составляющие?
Ok гугл, зачем мне нужен реддит если в приватной вкладке по запросу "xiaomi mi pad 4 android 12" в гугле я получаю сразу же кучу сайтов, первый же из которых мне сразу и на одной странице объясняет всё от x до й начиная от получения устройства в руки и установки дров, продолжая разлочкой бутлоадера (по ссылке из гайда), продолжая заливкой TWRP (по ссылке из того же гайда) и завершая заливкой кастомной прошивки через предварительно прошитый TWRP.
А на реддите (google://site:reddit.com) я получаю:
При этом все ссылки с реддита мне предлагают нажать что-то (возможно, согласие на cookies?) чтобы увидеть ещё один ответ в ветке обсуждения, а ниже после обсуждаемой ветки находится абсолютно неразличимое и нетоличимое от изначальной темы говно.
Собственно вопрос, когда именно умер гугл и нафига мне этот ваш б-гомерзкий реддит?
Пожалуйста, не надо так!
Не убивайте поисковые системы, не раздробляйте мир на несвязанные информационные системы и каталоги поисковых систем!
Эм… А почему "было"? Ведь и сейчас есть же https://addons.mozilla.org/ru/firefox/addon/personal-blocklist/