• CTF от Минобрнауки: разбор задач олимпиады по ИБ

      Каждый год МИФИ проводит студенческую олимпиаду по ИБ. Это очень необычное мероприятие, сильно отличающееся от привычных task-based CTF. Забавно, что олимпиада носит официальный статус и даже признана Минобром, но о ней мало кто знает. При этом ее победители и призеры имеют возможность поступить в МИФИ без экзаменов.

      Если вы горите желанием размять мозги и протестить ваши знания в области инфобеза, читайте наш разбор пяти более интересных задач практического тура олимпиады.
      Читать дальше →
      • +15
      • 5,4k
      • 8
    • Мега-Учебник Flask Глава 1: Привет, мир! ( издание 2018 )

      blog.miguelgrinberg.com


      Miguel Grinberg




      >>> следующая глава >>>


      Эта статья является переводом нового издания учебника Мигеля Гринберга. Прежний перевод давно утратил свою актуальность.


      Автор планирует завершить его выпуск в мае 2018. Я, со своей стороны, постараюсь не отставать с переводом.

      Читать дальше →
    • Мифы о кэше процессора, в которые верят программисты

      • Перевод
      Как компьютерный инженер, который пять лет занимался проблемами кэша в Intel и Sun, я немного разбираюсь в когерентности кэша. Это одна из самых трудных концепций, которые пришлось изучить ещё в колледже. Но как только вы действительно её освоили, то приходит гораздо лучшее понимание принципов проектирования систем.

      Вы можете удивиться: зачем же разработчику ПО думать о механизме кэширования в CPU? Отвечу. С одной стороны, многие понятия из концепции когерентности кэша непосредственно применимы в распределённых системах и на уровнях изоляции СУБД. Например, представление реализации когерентности в аппаратных кэшах помогает лучше понять разницу в моделях согласованности (консистентности) — отличие строгой согласованности (strong consistency) от согласованности в конечном счёте (eventual consistency). У вас могут появиться новые идеи, как лучше обеспечить согласованность в распределённых системах, используя исследования и принципы из аппаратного обеспечения.

      С другой стороны, неправильные представления о кэшах часто приводят к ложным утверждениям, особенно когда речь идёт о параллелизме и состоянии гонки. Например, часто говорят о трудности параллельного программирования, потому что «у разных ядер в кэшах могут быть разные/устаревшие значения». Или что квалификатор volatile в языках вроде Java нужен, чтобы «предотвратить локальное кэширование общих данных» и принудительно «читать/записывать только в основную память».
      Читать дальше →
    • Как приручить дракона. Краткий пример на clang-c

        Однажды, сидя вечером перед компьютером и предаваясь меланхолии и мыслям о бренности всего сущего, я задумчиво набрал в поиске одного крупного сайта по поиску работы аббревиатуру «LLVM», не надеясь, впрочем, увидеть там что-то особенное, и стал просматривать небогатый, прямо скажем, улов.

        Как и следовало ожидать, почти ничего особенного не нашлось, однако одно объявление меня заинтересовало. В нём были такие строки:

        «Кого мы возьмем «не глядя» или уровень выполняемых задач:
        Вы скачали любой open source проект, собираемый при помощи gcc (объем исходного кода более 10 мегабайт) и для самого большого файла cpp смогли построить AST дерево при помощи clang с –fsyntax-only;
        Вы скачали любой open source проект, собираемый при помощи Visual C++ (объем исходного кода более 10 мегабайт) и для самого большого файла cpp смогли построить AST дерево при помощи clang с –fsyntax-only;
        Вы смогли написать утилиту, которая выделит все места деклараций и использования локальных переменных, а также все функции, не определенные в данном файле
        ».

        Ну что же, подумал я, какое-никакое, а развлечение на вечер.


        Читать дальше →
        • +45
        • 9,5k
        • 9
      • Экзамен для будущих «русских хакеров» в Московском Политехе

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


          Читать дальше →
        • Курс молодого бойца для Spark/Scala

            Хабр, привет!

            Команда Retail Rocket использует узкоспециализированный стек технологий Hadoop + Spark для вычислительного кластера, о котором мы уже писали обзорный материал в самом первом посте нашего инженерного блога на Хабре.

            Готовых специалистов для таких технологий найти довольно сложно, особенно, если учесть, что программируем мы исключительно на Scala. Поэтому я стараюсь найти не готовых специалистов, а людей, имеющих минимальный опыт работы, но обладающих большим потенциалом. Мы берем даже людей с частичной занятостью, чтобы было удобно совмещать учебу и работу, если кандидат — студент последних курсов.


            Читать дальше →
            • +15
            • 20,1k
            • 8
          • Лаборатория тестирования на проникновение v.9: нет ничего невозможного



              20 мая 2016 г. была запущена очередная, девятая по счету лаборатория тестирования на проникновение «Test lab v.9», которая представляет собой виртуальную компанию «CyBear 32C», занимающуюся разработкой различных систем и приложений, в том числе систем обеспечения ИБ.

              11 дней потребовалось участникам для того, чтобы скомпрометировать все элементы инфраструктуры. В статье рассмотрены подробности, имена победителей, отзывы участников и ссылка на частичное прохождение.
              Читать дальше →
            • C++ без new и delete

              • Tutorial
              Привет, хабравчане!

              Меня зовут Михаил Матросов, я технический менеджер в компании Align Technology. Сегодня я поработаю капитаном и немного расскажу об основах современного С++.

              Работая над большим проектом, мне часто приходится смотреть чужой код и порой я вижу странное. А именно, многие даже вполне матёрые программисты на С++ могут не знать некоторых фундаментальных для языка вещей. Ну, это даже не слишком удивительно — язык такой.

              Мне бы хотелось поговорить об этих основах и начну я со своей любимой темы. Будем говорить об операторах new и delete. А точнее, об их отсутствии. Я расскажу, как писать надёжный и современный код на С++ без использования операторов new и delete.

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

              Статья будет интересна в первую очередь начинающим разработчикам и регулярам, но я уверен, что и опытные программисты узнают для себя что-то новое.


              Изображение взято с сайта behappy.me
              Читать дальше →
            • Пишем примитивный и никому не нужный компилятор

                Я считаю, что каждый программист должен написать свой компилятор.

                Я сам долгое время считал, что создание компиляторов — это удел элиты, а простому смертному программисту не постичь этой науки. Попробую доказать, что это не так.

                В посте мы рассмотрим, как можно написать свой компилятор C-подобного языка меньше чем за час, исписав всего 300 строчек кода. В качестве бонуса, сюда входит и код виртуальной машины, в байткод которой будет компилироваться исходник.
                Читать дальше →
              • Как непродуманные предупреждения компиляторов помогают портить совершенно правильный код

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

                  На практике далеко не всегда предупреждения компилятора одинаково полезны. Зачастую они не помогают разработчикам, а мешают им и могут провоцировать на исправление совершенно правильного кода, т.е. на нарушение правила «работает — не трогай».
                  Читать дальше →