• Как root-права и альтернативные прошивки делают ваш android смартфон уязвимым

    Если вы являетесь регулярным читателем Хабра, то должно быть заметили что за последние несколько лет вышло немало статей о сборе персональных данных с мобильных устройств, и о попытках противодействия этому, было несколько отличных статей с детальными инструкциями по превращению своего смартфона на базе ОС Android в настоящую цитадель приватности и безопасности. 

    Часто для этого рекомендуется получение прав суперпользователя в системе (root-права), удаление системных приложений от Google и от производителя устройства, или даже полная замена стандартной ОС на альтернативные сборки, чаще всего LineageOS (бывший CyanogenMod). При этом первым шагом в этом процессе всегда будет так называемая "разблокировка загрузчика". Во время её выполнения устройство несколько раз покажет нам страшные предупреждения о том, что теперь оно станет более уязвимо для злоумышленников, но мы смело нажимаем "подтвердить" и шьём root или самую свежую сборку кастомной прошивки, не задумываясь о том какие проблемы создаёт нам незаблокированный загрузчик. 

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

    Интересующихся приглашаю под кат.

    Читать далее
  • jsqry — лучше, чем jq

      В своей прошлой статье на Хабре я писал про библиотеку Jsqry, которая предоставляет простой и удобный язык запросов (DSL) к объектам JSON. С тех пор прошло много времени и библиотека тоже получила свое развитие. Отдельный повод для гордости — библиотека имеет 98% покрытие кода тестами. Однако в этой статье речь не совсем о ней.


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


      I have been using jq for years and still can't get it to work quite how I would expect it to.

      I have the same issue with jq. I need to use my google fu to figure out how to do anything more than a simple select.

      I don't know what the term would be, mental model, but I just can't get jq to click. Mostly because i only need it every once in a while. It's frustrating for me because it seems quite powerful.

      I know I might be a dissenting opinion here, but I can never wrap my head around jq. I can manage jq ., jq .foo and jq -r, but beyond that, the DSL is just opaque to me.

      Let's just say it: jq is an amazing tool, but the DSL is just bad.

      Yeah, I find jq similar to writing regexes: I always have to look up the syntax, only get it working after some confusion why my patterns aren't matching, then forget it all in a few days so have to relearn it again later.

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

      Читать дальше →
    • Цвет в современных фильмах


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

      И вот я уже собрался написать длинный комментарий, но понял, что информации настолько много, что можно об этом написать целую статью, собственно, почему бы и нет.

      Давайте разбираться, почему же в кино цветовая палитра сводится к нескольким конкретным цветам, а не представляет полный спектр. Хочу заметить, что всё нижеупомянутое применимо и к современным играм.
      Читать дальше →
    • Хочу как у YouTube

        Вы когда-нибудь задумывались как устроен ID видео на YouTube?
        Возможно, вы уже знаете/нашли ответ, но, как показали обсуждения на Stack Overflow, многие понимают эту технологию неправильно. Если вам интересно изучить что-то новое, добро пожаловать под кат.


        Хочу как у YouTube
        Читать дальше →
      • Микросервисы на Java: практическое руководство

        • Translation

        Вы можете использовать это руководство, чтобы понять что такое Java микросервисы, как вы будете их разрабатывать и создавать. А также получить обзор библиотек для разработки Java микросервисов.


        Примечание: Статья ~ 7000 слов, вероятно, не стоит читать ее на мобильном устройстве. Добавьте ее в закладки и вернитесь позже.


        Содержание


        Читать дальше →
        • +7
        • 29.9k
        • 7
      • Spring Security — пример веб приложения с авторизацией по протоколу OAuth2 через BitBucket

        В данной статье мы рассмотрим способ авторизации пользователей в веб приложениях на Spring Boot по протоколу OAuth2 с использованием внешнего сервера авторизации (на примере Bitbucket).

        Что мы хотим получить


        Допустим, мы разрабатываем защищенное веб приложение, имеющее доступ к ресурсам пользователя на внешнем сервере, например, систему непрерывной интеграции, а в качестве внешнего сервера выступает Bitbucket, и мы не хотели бы хранить у себя логин и пароль пользователя от внешней системы. То есть нам необходимо авторизовать пользователя через Bitbucket, чтобы получить доступ к его учетной записи и ресурсам, дополнительно проверить, что он является пользователем нашего приложения и сделать это так, чтобы пользователь не раскрывал нам свои учетные данные от Bitbucket. Интересно как это сделать, — добро пожаловать под кат.
        Читать дальше →
        • +4
        • 10.1k
        • 9
      • Подходы к контролю доступа: RBAC vs. ABAC

          В этой теме хотелось бы познакомить читателей с относительно новым подходом к контролю доступа под названием Attribute-based access control. Знакомство будет происходить на примере сравнения с популярным нынче Role-based access control.
          Читать дальше →
        • Java-сериализация: максимум скорости без жёсткой структуры данных

          Наша команда в Сбербанке занимается разработкой сервиса сессионных данных, который организует взаимообмен единым Java-контекстом сессии между распределёнными приложениями. Наш сервис крайне нуждается в очень быстрой сериализации Java-объектов, поскольку это часть нашей mission critical задачи. Изначально нам на ум приходили: Google Protocol Buffers, Apache Thrift, Apache Avro, CBOR и др. Первая тройка из перечисленных библиотек требует для сериализации объектов описания схемы их данных. CBOR такой низкоуровневый, что умеет сериализовывать только скалярные значения и их наборы. Нам же была нужна библиотека Java-сериализации, «не задающая лишних вопросов» и не заставляющая вручную разбирать сериализуемые объекты «на атомы». Мы хотели сериализовывать произвольные Java-объекты, не зная о них практически ничего, и хотели делать это максимально быстро. Поэтому мы устроили соревнование для имеющихся Open Source решений задачи Java-сериализации.

          КДПВ
          Кто же участвовал в соревновании?
        • Когда я слышу слова «нейросеть восстановила», я лезу проверять бэкапы

          Кроме того что я айтишник, я ещё и историк техники, и именно этим обусловлена моя реакция на новости об очередных достижениях в области цифровых технологий. Месяц назад я принял решение начать писать книжку для людей далёких от IT и близких к историческим исследованиям и источникам («Цифровое источниковедение — специфические проблемы» — пишется на сайтах книжных черновиков ), в которой расскажу им о том, чем для них обернулось развитие цифровых технологий.

          Через пару дней после этого по интернету пронеслась новость « «Прибытие поезда» улучшили с помощью нейросетей — фильм 1896 года теперь можно посмотреть в 4K и 60 кадрах в секунду », и это хороший повод рассказать айтишникам о том же самом.

          Исходного фильма «Прибытие поезда» у меня нет, поэтому в качестве тестовых образцов я использовал современные фотографии (уменьшенные или обесцвеченные) + фото из 1930-х (предположительно)

          Когда я слышу слова «нейросеть восстановила», я лезу проверять бэкапы
          Читать дальше →
        • Почему Rust лидирует в TechEmpower Framework Benchmark

          Вообще-то смотреть какого цвета потроха у Rust я не собирался. Ковырнул хобби-проект на Go, пошел на GitHub посмотреть состояние fasthttp: развивается ли? Ну хотя бы поддерживается? Вспрокрастинулось. Пошел, посмотрел где fasthttp сидит в бенчмарках TechEmpower. Смотрю: а там fasthttp едва показывает половину того, что удаётся лидеру — какому-то actix на каком-то Rust. Какая боль.


          Здесь бы мне сложить ручки, стукнуть головой в пол (трижды) и закричать: "Алилуйя, воистину Rust — истинный бог, как слеп я был раньше!". Но то ли ручки не сложились, то ли лоб пожалел… Вместо этого полез в код тестов, написанных на Go и actix-web тестов на Rust. Чтобы разобраться.


          Через пару часов узнал:


          1. почему Rust-фреймворк actix-web занимает первые позиции во всех тестах TechEmpower,
          2. как в Java заводится Script.

          Сейчас всё расскажу по порядку.

          Читать дальше →
        • Регистрация и авторизация с помощью Spring Security на примере простого приложения

          Добрый день!

          В этой статье будет рассмотрено создание простого веб приложения с использованием Spring Boot и Spring Security. В приложении будет реализована регистрация новых пользователей и авторизация, ограничение доступа к страницам сайта в зависимости от роли пользователя.
          Главная цель статьи показать как можно ограничить доступ к различным страницам сайта для пользователей с разными ролями.

          Что будет представлять из себя приложение


          Сайт со следующими страницам:

          • страницы доступные всем пользователям: главная, регистрации и логина;
          • страница доступная для зарегистрированных пользователей: новости;
          • страница доступная для администратора.

          Что будем использовать


          • JDK 8+;
          • Intellij Idea;
          • Spring (Spring Boot, Spring MVC, Spring Security);
          • Hibernate;
          • JSP;
          • PostgreSQL.
          Читать дальше →
          • +8
          • 87.9k
          • 9
        • Как работает оптимизирующий компилятор

          • Translation

          Оптимизирующие компиляторы — основа современного ПО: они позволяют программистам писать код на понятном для них языке, затем преобразуя его в код, который сможет эффективно исполняться оборудованием. Задача оптимизирующих компиляторов заключается в том, чтобы понять, что делает написанная вами входная программа, и создать выходную программу, которая делает всё то же самое, только быстрее.

          В этой статье мы рассмотрим некоторые из основных методик приведения (inference techniques) в оптимизирующих компиляторах: как спроектировать программу, с которой компилятору будет легко работать; какие приведения можно сделать в вашей программе и как использовать их для её уменьшения и ускорения.
          Читать дальше →
        • Настройка Firefox в Linux

          • Tutorial
          Решил написать о настройке Firefox для Linux. В интернете похожие статьи тоже есть, но в основном они по старым версиям браузера. Радикальных отличий в настройке Firefox для Linux или для Windows нет, однако есть свои особенности.
          Читать дальше →
        • Я прочитал 80 резюме, у меня есть вопросы

          У нас не очень простое собеседование. Нужно пройти 3 шага:

          1. Прислать резюме, программист его посмотрит, лайкнет если всё хорошо. Рекрутер позвонит, задаст несколько вопросов.
          2. Встретиться или созвониться с нами. Узнаем, какой вы специалист.
          3. Прийти на тестовый день. Познакомиться с командой и поработать вместе. Пообщаться с техническим директором, обсудить зарплату и получить оффер.


          Я три месяца был тем программистом, который оценивает резюме. Мне есть о чём с вами поговорить.
          Читать дальше →
        • Сериал «Чернобыль»: смотреть и думать

            Горький опыт сериалов, которые хорошо начинаются и разочаровывающе заканчиваются, удерживал меня от написания восторженного обзора на сериал «Чернобыль» до этой недели. И сейчас, когда вышла последняя, пятая серия, к сожалению, я вынужден сказать, что это отличный сериал, это прекрасный повод узнать больше о чернобыльской катастрофе, его обязательно стоит посмотреть, если вы еще не, но, если первые три серии, на мой взгляд, поднимаются до уровня моего самого любимого фильма «Аполлон-13», то две последние, опять же, по моему мнению, оказываются заметно похуже.


            Кадр из сериала

            Под катом спойлеры, как бы странно это не звучало для базирующегося на реальной истории сериала.
            Читать дальше →
          • Самый худший UI управления громкостью звука

              Группа разработчиков и дизайнеров решила начать флешмоб на реддите, чтобы выяснить у кого получится сделать самый худший интерфейс управления звуком в мире.



              Осторожно! Много картинок и трафика!


              Читать дальше →
            • Почему плохо, когда Интернет знает о вас всё?

              Привет, Хабр! Предлагаю вашему вниманию перевод статьи "The Dangers of Overpersonalization" авторов Kim Flaherty и Kate Moran.


              Итог: Излишняя персонализация контента приводит к однородному и безразличному восприятию пользователем информации и может вызывать усталость от вашего продукта в целом.


              image

              Читать дальше →
            • Не нервничай, не спеши, не перебивай: история одной трагедии

                На этой неделе исполнилось 42 года со дня ужасного террористического акта на Канарских островах, который привел к гибели почти 600 человек. Нет, сам взрыв бомбы, устроенный боевиком из Движения за независимость Канарских островов (организация на сегодняшний день не существует; автор данной статьи решительно против любых форм терроризма) привел только к ранениям 8 человек. Однако череда последующих событий, включающих технические сбои, неодолимые внешние факторы, недочеты в управлении персоналом, человеческую психологию в стрессовых условиях и просто грубые нарушения правил, сложилась в такой клубок невероятных трагических совпадений, что заслуживает самого внимательного анализа.


                Читать дальше →
              • Стажёр Вася и его истории об идемпотентности API

                  Идемпотентность — звучит сложно, говорят о ней редко, но это касается всех приложений, использующих API в своей работе.


                  Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс.Такси. Сегодня я поделюсь с читателями Хабра описанием проблем, которые могут возникнуть, если не учитывать идемпотентность распределенных систем в своем проекте. Для этого я выбрал формат вымышленных историй о стажёре Васе, который только-только учится работать с API. Так будет нагляднее и полезнее. Поехали.


                  image

                  Читать дальше →
                • Иди-ка ты на !@# со своей «токсичностью»

                    IT — не детский садик. Это место для взрослых, руководствующихся логикой и здравым смыслом. Их не надо опекать, не надо следить за словами, не надо переживать, что у них сформируются комплексы. Если человек некомпетентен, надо дать ему об этом явно понять, а не беречь его нежные чувства в ущерб всем остальным.

                    Так какого же чёрта моё прекрасное IT превращается в детский сад «Весёлый Програм-Мишка»?
                    Читать дальше →