Как стать автором
Обновить
11
0
Игорь @igorzakhar

Пользователь

Отправить сообщение

REvil: главное о тактиках и техниках

Время на прочтение8 мин
Количество просмотров5.4K

Арест участников группировки REvil, проведённый ФСБ 14 января 2022 года, стал, похоже, финальной отметкой в истории одного из самых успешных вымогательских сервисов. И хотя возрождение REvil вряд ли произойдёт, её инструментарий и тактики с большой вероятностью «всплывут» в вымогательских киберкампаниях в будущем. В конце 2021 года мы опубликовали исследование, посвящённое тактикам и техникам REvil. Обзор исследования читайте под катом. 

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Назад в будущее? Квантовый ластик с отложенным выбором

Время на прочтение8 мин
Количество просмотров36K
На Хабре периодически появляются статьи и комментарии о чудесах квантовой физики: квантовом ластике и слабых измерениях. К сожалению, слишком часто о них говорят как о загадочных и непонятных явлениях, позволяющих творить чуть ли не магию, хотя на самом деле нет в них ровным счетом ничего удивительного. В этом посте я перевожу статью Шона Кэрролла о квантовом ластике с отложенным выбором. Пусть он будет отправной точкой для обсуждения в комментариях всяких хитростей квантовой механики.

Всего голосов 39: ↑38 и ↓1+37
Комментарии129

K8s кластер в Oracle Cloud для Always Free аккаунтов

Время на прочтение6 мин
Количество просмотров10K

На хабре уже не раз писали про бесплатные вычислительные ресурсы (ARM, 4 CPU, 24ГБ), которые можно развернуть в Oracle Cloud. После регистрации вы получаете $300 и 30 дней триального аккаунта, когда для развёртывания доступны все виды ресурсов. Когда эти 30 дней заканчиваются, аккаунт получает статус Always Free, и количество доступных ресурсов значительно урезается. Чтобы снова получить доступ к ним ко всем, можно сделать upgrade своего аккаунта до Pay-as-You-Go. Это односторонняя операция, переход обратно на Always Free невозможен, и после такого перехода нужно аккуратно следить и и контролировать траты. Тем не менее, Pay-as-You-Go аккаунты также могут бесплатно использовать Always Free ресурсы.

Oracle Cloud предоставляет возможность managed развёртывания K8s кластера (в документации он называется OKE – Oracle Container Engine for Kubernetes), однако он недоступен для Always Free аккаунтов.

Чтобы обойти это ограничение, используем подход полностью ручного выделения облачных ресурсов (сети, виртуальных машин) и установки необходимых компонентов. На выходе получим кластер с четырьмя узлами (один control-plane и три worker'а) с установленным K8s'ом, балансировщиком нагрузки, публичным IP адресом и (бонусом) бесплатным доменом. Воспроизводимые Terraform скрипты (и readme по их использованию) опубликованы на github'е.

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии10

Страх и ужас SS7

Время на прочтение9 мин
Количество просмотров43K
В одной из недавних статей нашего блога: “Безопасные телефоны, градация прослушек, и методы защиты”, было обсуждение общих принципов атак на сотовые телефоны. Теперь поговорим одном из конкретных векторов, а именно — взломе на основе уязвимости в протоколе: SS7. Так ли страшен черт, как его малюют?
Читать дальше →
Всего голосов 25: ↑22 и ↓3+30
Комментарии14

Шесть уровней метавселенной математики

Время на прочтение6 мин
Количество просмотров41K

Когда я был маленький, я думал, что математика - это очень формальная наука. Как бы не так! Когда о нас, математиках, говорят как о сухарях — это ложь! (с) 17 мгновений весны.

Приглашаю вас в путешествие по 6 уровням вселенной математики - от полностью формального до философско-поэтического, и заодно мы ответим на вопрос, является ли теорема Геделя теоремой или мета-теоремой.

Читать далее
Всего голосов 75: ↑72 и ↓3+92
Комментарии168

Внедрение зависимостей проще простого – на Python

Время на прочтение10 мин
Количество просмотров22K

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

Читать далее
Всего голосов 9: ↑7 и ↓2+6
Комментарии27

Мой друг Netmiko. Часть 2: Три улучшения Python-скрипта

Время на прочтение5 мин
Количество просмотров8.3K

Продолжаю ковырять автоматизацию рутины на сети из Huawei коммутаторов. На этот раз изыскания, которые позволили сократить код в 3 раза, а именно: хосты и команды перенесены в отдельные файлы, пароль и имя пользователя больше не хранятся в открытом тексте. Есть демонстрация запуска скрипта. Детальное описание за кнопкой «Читать далее».

Читать далее
Всего голосов 13: ↑11 и ↓2+10
Комментарии15

Инструменты практического изучения сетей

Время на прочтение4 мин
Количество просмотров5.2K
Привет! Я — golang разработчик в Каруне. Часто в работе сталкиваюсь с тем, что нужно понять, как функционирует та или иная сетевая система. Как правило, современные компьютерные системы объединены в сеть, и взаимодействие между узлами этой сети можно рассматривать через теоретическую призму модели OSI. 
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Лучшие практики использования SSL и TLS. Часть 1

Время на прочтение12 мин
Количество просмотров12K

SSL/TLS — обманчиво простая технология. Его легко развернуть и он просто работает, за исключением случаев, когда это не так. Основная проблема заключается в том, что правильно развернуть шифрование непросто. Чтобы гарантировать работоспособность TLS и обеспечение необходимой безопасности, системным администраторам и разработчикам необходимо прикладывать дополнительные усилия для правильной настройки серверов и разработки приложений.

Этот документ является шагом к решению проблемы нехватки документации в области использования SSL/TLS. Основная задача — предоставить четкие и краткие инструкции, которые помогут администраторам и программистам сэкономить время на развертывание защищенного сайта или веб-приложения. Для сохранения ясности в стороне останутся некоторые сложные схемы и излишние реализации. Внимание уделяется практическим советам, которым легко следовать.

Читать далее
Всего голосов 12: ↑7 и ↓5+3
Комментарии6

Удаление GIL из Python: заметки со встречи Python Core и Сэма Гросса

Время на прочтение14 мин
Количество просмотров14K

Во время ежегодного спринта разработчиков ядра Python мы встретились с Сэмом Гроссом, автором nogil — fork в Python 3.9, который удаляет GIL. В статье — итоги встречи.

Среди вопросов, на которые ответил Сэм:

— Какова вероятность того, что nogil в итоге окажется нежизнеспособным для включения в CPython?
— Как вы планируете синхронизировать свою работу с main? Есть ли какие-то советы по порядку коммитов?
— Включение nogil во время запуска — это долгосрочная опция, или только на переходное время?
— В финале предполагается исключительно nogil, без вариантов вернуть GIL обратно?
— Что вы думаете о параллельном запуске нескольких интерпретаторов Python с одним GIL для каждого?

И многие другие. Полный список приведен в начале статьи.

Посмотреть полное содержание встречи
Всего голосов 24: ↑23 и ↓1+24
Комментарии22

Анатомия асинхронных фреймворков в С++ и других языках

Время на прочтение20 мин
Количество просмотров44K
Привет! В этой статье я расскажу об устройстве асинхронных движков с корутинами и без них. Для начала сосредоточимся не на конкретном движке, а на том, почему во всех популярных языках программирования появились корутины и чем они так хороши. Это может быть интересно не только C++-разработчикам, но и всем, кто занимается разработкой сетевых приложений или интересуется архитектурой современных фреймворков.

Пройдёмся по разным архитектурам построения серверов — от самой простой синхронной к более интересным, посмотрим на типичную архитектуру корутинового движка, а после окунёмся в дебри C++ и взглянем на самое страшное на примере нашего фреймворка userver.

Пишем синхронный сервер


Представьте, что у вашего сервиса очень маленькая нагрузка — 100 rps, и вам дали задачу написать простой сервер, понятный каждому второму школьнику. У вас получится что-то наподобие следующего:

void naive_accept() {
  for (;;) {
    auto new_socket = accept(listener);

    std::thread thrd([socket = std::move(new_socket)] {
      auto data = socket.receive();
      process(data);
      socket.send(data);
    });

    thrd.detach();
  }
}
Читать дальше →
Всего голосов 56: ↑53 и ↓3+63
Комментарии32

Знакомимся с программированием на ассемблере x86

Время на прочтение17 мин
Количество просмотров49K

Архитектура x86 лежит в сердце процессоров, на которых уже более трех десятилетий работают наши домашние компьютеры и удаленные серверы. Умение читать и писать код на низкоуровневом языке ассемблера – это очень весомый навык. Он позволяет создавать более быстрый код, использовать недоступные в Си возможности машин и выполнять реверс-инжиниринг скомпилированного кода.
Читать дальше →
Всего голосов 37: ↑34 и ↓3+45
Комментарии15

Кибербезопасность для самых маленьких

Время на прочтение10 мин
Количество просмотров30K

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

Цель статьи - поделиться практиками, которые я применил для защиты данных при поднятии собственного VPS в публичной сети. Всегда, когда твой IP открыт всему Миру напоказ и доступен извне внутренних контуров сети - это означает, что любой прохожий может устроить тебе неприятности: похитить твои данные, завладеть твоим сервером и сломать твое замечательное приложение. Я буду приводить пример атаки, показывать, как ее можно заметить и после этого будем разбирать возможные способы защиты.

Защитить данные!
Всего голосов 22: ↑22 и ↓0+22
Комментарии32

Удаление Whitelist ноутбуков HP на примере HP Pavilion dv6-2135er

Время на прочтение5 мин
Количество просмотров18K

Удаление Witelist ноутбука HP Pavilion dv6-2135er. Реверс-инжиниринг и модификация дампа bios.

Читать далее
Всего голосов 78: ↑78 и ↓0+78
Комментарии19

Мой компьютер на логических микросхемах

Время на прочтение6 мин
Количество просмотров56K

Привет, Хабр. Два года назад, как раз перед началом пандемии, я затеял большой проект: построить компьютер, используя только простые логические микросхемы 74 серии и микросхемы памяти. В этой статье я бы хотел кратко рассказать о том, что получилось, и более подробно об основной части – процессоре.

Читать далее
Всего голосов 239: ↑238 и ↓1+304
Комментарии73

JavaScript, Node, Puppeteer: автоматизация Chrome и веб-скрапинг

Время на прочтение10 мин
Количество просмотров144K
Библиотека puppeteer для Node.js позволяет автоматизировать работу с браузером Google Chrome. В частности, с помощью puppeteer можно создавать программы для автоматического сбора данных с веб-сайтов, так называемые веб-скраперы, имитирующие действия обычного пользователя. В подобных сценариях может применяться браузер без пользовательского интерфейса, так называемый «Headless Chrome». Используя puppeteer, можно управлять и браузером, который запущен в обычном режиме, что особенно полезно при отладке программ.

image

Сегодня мы поговорим о создании веб-скрапера на базе Node.js и puppeteer. Автор материала стремился к тому, чтобы статья была интересна как можно более широкой аудитории программистов, поэтому пользу из него извлекут как те веб-разработчики, которые уже имеют некоторый опыт работы с puppeteer, так и те, которые впервые сталкиваются с таким понятием, как «Headless Chrome».
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии13

Преврати любимое дело в работу, и…

Время на прочтение4 мин
Количество просмотров21K

Вам нравится что-то делать. Вы увлечены этим делом. И вы подумываете превратить увлечение в профессию?

Это же просто здорово, когда берёшься за работу с юношеским энтузиазмом, когда в процессе работы раз за разом испытываешь детский восторг!

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

И это работает! Правда, недолго...

И вот почему
Всего голосов 70: ↑64 и ↓6+75
Комментарии28

Как научиться чему угодно с помощью техники Фейнмана

Время на прочтение9 мин
Количество просмотров209K


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

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

Нет никаких чудо-людей. Просто случилось так, что они заинтересовались чем-то и выучили все про это. Ричард Фейнман

Ричарда Фейнмана Ричардом Фейнманом (по крайней мере, по мнению Ричарда Фейнмана) сделал не врождённый интеллект, а систематический способ, с помощью которого он выявлял то, чего не знал, а затем бросался постигать это.

На протяжении всей своей работы и жизни, Фейнман с элегантностью и простотой давал представление о своём процессе рассмотрения сложных концепций в мире физики и изложения знаний/идей. Многие из этих наблюдений о его процессе обучения были собраны в то, что мы сейчас называем «техникой Фейнмана».

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

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

В этой статье будет представлен обзор техники Фейнмана и того, как вы можете применять её для постоянного расширения своих знаний и навыков. Короче говоря, Фейнман научит вас не только тому, как учиться, но и тому, как по-настоящему понимать.
Приятного чтения!
Всего голосов 64: ↑53 и ↓11+63
Комментарии106

О функциональности Go

Время на прочтение6 мин
Количество просмотров17K
Насколько объектно Go ориентирован многократно и эмоционально обсуждалось. Попробуем теперь оценить насколько он функционален. Заметим сразу, оптимизацию хвостовой рекурсии компилятор не делает. Почему бы? «Это не нужно в языке с циклами. Когда программист пишет рекурсивный код, он хочет представлять стек вызовов или он пишет цикл.» — замечает в переписке Russ Cox. В языке зато есть полноценные lambda, closure, рекурсивные типы и ряд особенностей. Попробуем их применить функциональным манером. Примеры покажутся синтетическими оттого, что во первых написаны немедленно исполняемыми в песочнице и написаны на процедурном все же языке во вторых. Предполагается знакомство как с Go так и с функциональным программированием, разъяснений мало но код комментирован.
Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии6

Еще один способ использования docker-compose

Время на прочтение4 мин
Количество просмотров10K

По следам статьи Docker + Laravel = ? хочу рассказать о довольно необычном способе использования утилиты docker-compose.


Для начала, для тех кто не знает, зачем нужен docker-compose. Это утилита, которая позволяет запускать на отдельном хосте набор связанных сервисов, запакованных в docker-контейнеры. Изначальная версия была написана на python и могла быть установлена двумя способами:

Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии7

Информация

В рейтинге
5 266-й
Работает в
Зарегистрирован
Активность