• Запоминаем просмотренные видео на youtube





      Столкнулся с тем, что youtube.com «забывает» видео, которые я просмотрел.
      Приходится смотреть много образовательных каналов, а потом вспоминать, видел я это или нет.
      Посмотрел какую-нибудь лекцию и через несколько дней (месяцев, лет) статус "просмотрено" пропадает.
      Или, наоборот, посмотришь 2 минуты какой-нибудь лекции, ляжешь спать, а на утро лекция имеет статус «просмотрено».

      Вот и решил взять под контроль информацию о просмотрах на youtube в свои руки.
      И хранить эту информацию вне зависимости от ютюба.

      Чтобы смотреть видео на ютюбе с разных устройств и быть не привязанным к локальному компу, я выложил сайт в онлайн:
      http://memtube.com
      И смотрю все оттуда.
      У кого есть желание, пожалуйста, присоединяйтесь. На сайте в любой момент можно скачать Excel файл с историей просмотров:


      Если хотите сделать свой собственный сайт, то подробности под катом.
      Подробности
    • Как легко расшифровать TLS-трафик от браузера в Wireshark

      • Перевод
      Многим из вас знаком Wireshark — анализатор трафика, который помогает понять работу сети, диагностировать проблемы, и вообще умеет кучу вещей.

      image

      Одна из проблем с тем, как работает Wireshark, заключается в невозможности легко проанализировать зашифрованный трафик, вроде TLS. Раньше вы могли указать Wireshark приватные ключи, если они у вас были, и расшифровывать трафик на лету, но это работало только в том случае, если использовался исключительно RSA. Эта функциональность сломалась из-за того, что люди начали продвигать совершенную прямую секретность (Perfect Forward Secrecy), и приватного ключа стало недостаточно, чтобы получить сессионный ключ, который используется для расшифровки данных. Вторая проблема заключается в том, что приватный ключ не должен или не может быть выгружен с клиента, сервера или HSM (Hardware Security Module), в котором находится. Из-за этого, мне приходилось прибегать к сомнительным ухищрениям с расшифровкой трафика через man-in-the-middle (например, через sslstrip).

      Логгирование сессионных ключей спешит на помощь!


      Что ж, друзья, сегодня я вам расскажу о способе проще! Оказалось, что Firefox и Development-версия Chrome поддерживают логгирование симметричных сессионных ключей, которые используются для зашифровки трафика, в файл. Вы можете указать этот файл в Wireshark, и (вуаля!) трафик расшифровался. Давайте-ка настроим это дело.
      Читать дальше →
    • Опыт маскировки OpenVPN-туннеля с помощью obfsproxy

      • Tutorial

      Преамбула


      В связи с наметившимися тенденциями решил я обфусцировать свой скромный OpenVPN-туннель, просто чтобы набить руку — мало ли пригодится…

      Дано: дешевая VPS с белым IP, работающая под Ubuntu Trusty Server Edition и служащая OpenVPN сервером.
      Требуется: по-возможности скрыть OpenVPN туннель, желательно без изобретения велосипедов.
      Ну и что дальше?
    • Бесплатные SSL-сертификаты на 2 года от WoSign

        Доброго времени суток, уважаемые товарищи Хабра.
        На написание статьи заметки, меня побудила статья: «Мигрируем на HTTPS».

        Напоминаю, что китайцы в лице компании WoSign до сих пор раздают бесплатно сертификаты и теперь не обязательно знать китайский язык для того, чтобы его получить. Метод по статье «Бесплатные SSL-сертификаты на 2 года с поддержкой до 100 доменов» на данный момент не работает и за сертификат китайцы хотят от ¥488.

        Читать дальше →
      • Как Linux работает с памятью. Семинар в Яндексе

          Привет. Меня зовут Вячеслав Бирюков. В Яндексе я руковожу группой эксплуатации поиска. Недавно для студентов Курсов информационных технологий Яндекса я прочитал лекцию о работе с памятью в Linux. Почему именно память? Главный ответ: работа с памятью мне нравится. Кроме того, информации о ней довольно мало, а та, что есть, как правило, нерелевантна, потому что эта часть ядра Linux меняется достаточно быстро и не успевает попасть в книги. Рассказывать я буду про архитектуру x86_64 и про Linux­-ядро версии 2.6.32. Местами будет версия ядра 3.х.



          Эта лекция будет полезна не только системным администраторам, но и разработчикам программ высоконагруженных систем. Она поможет им понять, как именно происходит взаимодействие с ядром операционной системы.

          Термины


          Резидентная память – это тот объем памяти, который сейчас находится в оперативной памяти сервера, компьютера, ноутбука.
          Анонимная память – это память без учёта файлового кеша и памяти, которая имеет файловый бэкенд на диске.
          Page fault – ловушка обращения памяти. Штатный механизм при работе с виртуальной памятью.
          Читать дальше →
        • Многозадачность в ядре Linux: прерывания и tasklet’ы

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

            На этот раз я хочу подойти к вопросу планирования с другой стороны. А именно, теперь я постараюсь рассказать про планирование не потоков, а их “младших братьев”. Так как статья получилась довольно объемной, в последний момент я решила разбить ее на несколько частей:
            1. Многозадачность в ядре Linux: прерывания и tasklet’ы
            2. Многозадачность в ядре Linux: workqueue
            3. Protothread и кооперативная многозадачность

            В третьей части я также попробую сравнить все эти, на первый взгляд, разные сущности и извлечь какие-нибудь полезные идеи. А через некоторое время я расскажу про то, как нам удалось применить эти идеи на практике в проекте Embox, и про то, как мы запускали на маленькой платке нашу ОС с почти полноценной многозадачностью.

            Рассказывать я постараюсь подробно, описывая основное API и иногда углубляясь в особенности реализации, особо заостряя внимание на задаче планирования.
            Читать дальше →
          • Packet crafting как он есть

            • Tutorial


            Создание пакетов или packet crafting — это техника, которая позволяет сетевым инженерам или пентестерам исследовать сети, проверять правила фаерволлов и находить уязвимые места.
            Делается это обычно вручную, отправляя пакеты на различные устройства в сети.
            В качестве цели может быть брандмауэр, системы обнаружения вторжений (IDS), маршрутизаторы и любые другие участники сети.
            Создание пакетов вручную не означает, что нужно писать код на каком-либо высокоуровневом языке программирования, можно воспользоваться готовым инструментом, например, Scapy.

            Scapy — это один из лучших, если не самый лучший, инструмент для создания пакетов вручную.
            Утилита написана с использованием языка Python, автором является Philippe Biondi.
            Возможности утилиты практически безграничны — это и сборка пакетов с последующей отправкой их в сеть, и захват пакетов, и чтение их из сохраненного ранее дампа, и исследование сети, и многое другое.
            Всё это можно делать как в интерактивном режиме, так и создавая скрипты.
            С помощью Scapy можно проводить сканирование, трассировку, исследования, атаки и обнаружение хостов в сети.
            Scapy предоставляет среду или даже фреймворк, чем-то похожий на Wireshark, только без красивой графической оболочки.
            Утилита разрабатывается под UNIX-подобные операционные системы, но тем не менее, некоторым удается запустить ее и в среде Windows.
            Эта утилита так же может взаимодействовать и с другими программами: для наглядного декодирования пакетов можно подключать тот же Wireshark, для рисования графиков — GnuPlot и Vpython.
            Для работы потребуется права суперпользователя (root, UID 0), так как это достаточно низкоуровневая утилита и работает напрямую с сетевой картой.
            И что важно, для работы с этой утилитой не потребуются глубокие знания программирования на Python.
            Читать дальше →
          • Разбираем и собираем обратно стек USB

            • Tutorial
            Иллюстрированная проекция модели сетевого взаимодействия OSI на универсальную последовательную шину.

            Три «замечательных» уровня стека USB


            Меня не устроил вид стека USB, который можно встретить чаще всего на просторах сети:

            Не сильно полезный стек USB

            Уровень шины, логический, функциональный… Это, конечно, замечательные абстракции, но они скорее для тех, кто собирается делать драйвер или прикладной софт для хоста. На стороне же микроконтроллера я ожидаю шаблонный конечный автомат, в узлы которого мы обычно встраиваем свой полезный код, и он сперва будет по всем законам жанра глючить. Или же глючить будет софт на хосте. Или драйвер. В любом случае кто-то будет глючить. В библиотеках МК тоже с наскока не разобраться. И вот я смотрю на трафик по шине USB анализатором, где происходящие события на незнакомом языке с тремя замечательными уровнями вообще не вяжутся. Интересно, это у меня от гриппозной лихорадки в голове такой диссонанс?

            Если у читателя бывали сходные ощущения, предлагаю альтернативное, явившееся мне неожиданно ясно в перегретом мозгу видение стека USB, по мотивам любимой 7-уровневой модели OSI. Я ограничился пятью уровнями:



            Я не хочу сказать, что весь софт и библиотеки уже сделаны или должны проектироваться, исходя из этой модели. Из инженерных соображений код c уровнями будет сильно перемешан. Но я хочу помочь тем, кто начинает своё знакомство с шиной USB, кто хочет понять протоколы обмена устройств и терминологию предметной области, подобраться поближе к готовым примерам, библиотекам и лучше ориентироваться в них. Эта модель не для загрузки в МК, но в ваши блестящие умы, дорогие друзья. А ваши золотые руки потом всё сами сделают, я не сомневаюсь:)
            Разобрать стек USB
          • Используем nginx, docker, skydns и skydock для обновления кода на лету (zero-downtime deployment)

            Инструменты, которые мы будем использовать


            Docker


            Docker — простая и элегантная библиотека для создания легковесных изолированных друг от друга виртуальных контейнеров, в которых можно исполнять любой код. Совершенно не требователен к ресурсам, минимальный overhead.

            Собрав контейнер один раз, его можно многократно использовать.

            Простой пример — это БД Redis. Если нам необходимо несколько серверов Redis на одном компьютере, при обычном подходе нам придется изменять конфигурационные файлы в /etc/redis и менять файлы в /etc/init.d. Можно написать bash скрипт, но это не делает процесс легче.
            Читать дальше →
          • Своё Certificate Authority — в 5 OpenSSL команд

            Зачем это нужно?


            Представим, у нас есть два сервера, работают они себе, и переодически они хотят, что-то друг у друга спросить по протоколу HTTP/HTTPS.

            Протокол HTTP не безопасен и логично использовать протокол HTTPS для общения меду серверами.

            Для организации такого общения нам нужно 2 SSL сертификата.

            Если сервера пренадлежат одной организации, то может быть проще и безопасней подписывать сертификаты самостоятельно, а не покупать.
            Читать дальше →