Как стать автором
Обновить
8
0
Вадим @VadimKotov

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

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

Выключаем Intel ME 11, используя недокументированный режим

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


В ходе исследования внутренней архитектуры Intel Management Engine (ME) 11-й версии был обнаружен механизм, отключающий эту технологию после инициализации оборудования и запуска основного процессора. О том, как мы нашли этот недокументированный режим, и о его связи с государственной программой построения доверительной платформы High Assurance Platform (HAP) мы расскажем в этой статье.

Авторы предупреждают, что использование данных знаний на практике может повлечь за собой повреждение вычислительной техники, и не несут за это никакой ответственности, а также не гарантируют работоспособность или неработоспособность чего-либо и не рекомендуют экспериментировать без наличия SPI-программатора.
Читать дальше →
Всего голосов 84: ↑83 и ↓1+82
Комментарии90

Обезвреживаем бомбу с Radare2

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

Доброго времени суток, %username%! Сегодня мы отправимся изучать бесчисленные возможности фреймворка для реверсера — radare2. В виде подопытного я взял первую попавшую бомбу, она оказалась с сайта Университета Карнеги Меллон.
Читать дальше →
Всего голосов 51: ↑50 и ↓1+49
Комментарии28

Лёгкий блочный шифр Speck, или пылинка от агенства, которого нет

Время на прочтение4 мин
Количество просмотров30K
Устройство на КДПВ шифрует не по алгоритму Speck, но могло бы

В июне 2013 года АНБ опубликовало описание двух лёгких блочных шифров — Simon и Speck [1].

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

Прошло два года, практических атак ни на Simon, ни на Speck не появилось [2], а преимущества (простота и гибкость) — остались.

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

Что там внутри и зачем он нужен, когда есть AES
Всего голосов 37: ↑35 и ↓2+33
Комментарии9

Linux-контейнеры дома: зачем и как

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



Рассуждения


При упоминании словосочетания «контейнерная виртуализация», многим на ум сразу же приходят Virtuozzo и OpenVZ, а также Docker. Ассоциируется же это все, в первую очередь, с хостингом, VPS и другими подобными вещами.

Дома, на личных компьютерах многие используют виртуальные машины: в основном, пожалуй, Virtualbox. Как правило, для того, чтобы работая под Linux, иметь под рукой Windows или наоборот. Однако, при наличии множества родственных Linux-операционок, я стал замечать, что использование виртуальных машин — это, мягко говоря, нерационально.
Читать дальше →
Всего голосов 64: ↑64 и ↓0+64
Комментарии84

4 способа писать в защищённую страницу

Время на прочтение9 мин
Количество просмотров20K
Имеется в виду выполнение записи по аппаратно защищённому от записи адресу памяти в архитектуре x86. И то, как это делается в операционной системе Linux. И, естественно, в режиме ядра Linux, потому как в пользовательском пространстве, такие трюки запрещены. Бывает, знаете ли, непреодолимое желание записать в защищённую область … когда садишься писать вирус или троян…

Описание проблемы


… а если серьёзно, то проблема записи в защищённые от записи страницы оперативной памяти возникает время от времени при программировании модулей ядра под Linux. Например, при модификации селекторной таблицы системных вызовов sys_call_table для модификации, встраивания, имплементации, подмены, перехвата системного вызова — в разных публикациях это действие называют по разному. Но не только для этих целей… В очень кратком изложении ситуация выглядит так:

  • В архитектуре x86 существует защитный механизм, который при попытке записи в защищённые от записи страницы памяти приводит к возбуждению исключения.
  • Права доступа к странице (разрешение или запрет записи) описываются битом _PAGE_BIT_RW (1-й) в соответствующей этой странице структуре типа pte_t. Сброс этого бита запрещает запись в страницу.
  • Со стороны процессора контролем защитой записи управляет бит X86_CR0_WP (16-й) системного управляющего регистра CR0 — при установленном этом бите попытка записи в защищённую от записи страницу возбуждает исключение этого процессора.

Читать дальше →
Всего голосов 34: ↑31 и ↓3+28
Комментарии9

HackerSIM: мечта Неуловимого Джо

Время на прочтение15 мин
Количество просмотров50K
В хакспейсе поселилась «симка всевластия».
Про мегафичу подмены любого номера написал на Хабре.

Анонс конкурса по социнженерным атакам с использованием HackerSIM

Заочный тур.
C 6 по 15 октября вы можете прислать в свободной форме модель угроз, которые возможны, если HackerSIM попадет в руки злоумышленника.
Приславшего материал с максимальной "hack value" ждет утешительный приз 10.000 рублей.

Очный тур.
16 октября, хакспейс «Нейрон». Начало в 19-00.
Каждому участнику предоставляется HackerSIM и в течении 3 часов он должен провести penetration test.
Участие индивидуальное или командное.
Приз — достойный.

Заявки на очный и заочный туры принимаются на почту hackersim@яндексточкару.
(Кому не терпится, у меня есть пара симок специально для хабрачитателей)

Помимо этого симка очень очень старается обеспечить анонимность своего владельца и конфиденциальность его разговоров:

  • скрывает реальный круг общения
  • маскирует местоположение, используя виртуальный номер
  • может искажать голос
  • принудительное использование шифрование
  • скрывает реальный IMSI

Читать дальше →
Всего голосов 30: ↑19 и ↓11+8
Комментарии19

HackerSIM: подделка любого телефонного номера. CTF по социальной инженерии

Время на прочтение5 мин
Количество просмотров173K
«Народ не должен бояться своего правительства, правительство должно бояться своего народа»
«Privacy is ultimately more important than our fear of bad things happening, like terrorism.»


Уверены ли вы, что вам звонит тот, за кого себя выдает? Даже если высвечивается знакомый номер.

Недавно я обзавелся "хакерской симкой всевластия". Которая помимо лютой анонимности имеет фичу — подделка номера. Расскажу как это происходит.

Чак на своем телефоне, куда вставлена HackerSIM, набирает команду *150*НомерАлисы# и через секунду получает подтверждение, что номер успешно «подделан». Затем Чак звонит со своего телефона Бобу. Телефон Боба принимает вызов, и на нем высвечивается, что ему звонит… Алиса. Profit.

Далее события разворачиваются в зависимости от социнженерного (или чревовещательного) таланта Чака.

Я начал разыгрывать своих хороших знакомых.
Читать дальше →
Всего голосов 92: ↑58 и ↓34+24
Комментарии103

ECFG: сажаем ~/.emacs на диету

Время на прочтение4 мин
Количество просмотров14K
Друзья, сегодня я хочу поделиться с вами реализацией идеи по созданию модульной, переносимой и масштабируемой конфигурации для вашего любимого текстового редактора, опробованную в деле за многие месяцы на самых различных сочетаниях железа и ПО: Emacs Config.

image
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии16

О безопасности UEFI, части нулевая и первая

Время на прочтение9 мин
Количество просмотров87K
Когда-то давно, в начале 2014 года, я назвал состояние безопасности большинства реализаций UEFI "полумифическим". С тех пор минуло полтора года, дело осторожно двигается с мертвой точки, но до сих пор очень многие производители ПК для конечного пользователя не обращают на эту самую безопасность почти никакого внимания — «пипл хавает».
В этой статье речь пойдет о модели угроз и векторах атаки на UEFI, а также о защитах от перезаписи содержимого микросхемы BIOS — самой разрушительной по возможным последствиям атаки.
Если вам интересно, как устроена защита UEFI и какие именно уязвимости в ней так и остаются неисправленными на большинстве современных систем — добро пожаловать под кат.
Читать дальше →
Всего голосов 48: ↑48 и ↓0+48
Комментарии51

Пишем синтезатор для концерта. Полевые испытания PureData

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

Вводная


Предпосылки


Строить синтезаторы на PD занятие крайне интересное, однако, комнатные эксперименты и диванный парсинг миди-сообщений все таки серьезно отличаются от «боевых» условий, в которых приходится выступать. И после провальной демонстрации на LinuxFest я серьезно озаботился решениями для лайв-выступлений. Обычно, какого-то более-менее функционального миди-контроллера (такой, чтобы использовал хотя бы два канала, которые можно прослушивать отдельно) бывает достаточно, однако, это достаточно затратно и приходится все компенсировать GUI самого синтезатора и полагаться на мышь и клавиатуру.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии10

Новости проекта Qucs: доступен кандидат в релизы с поддержкой моделирования схем в SPICE

Время на прочтение6 мин
Количество просмотров18K
Qucs — это симулятор электронных схем с открытым кодом. О нём рассказывают мои предыдущие статьи на хабре.

Сейчас наш проект готовится к следующему релизу 0.0.19, который выйдет в ближайшие недели. Данная заметка содержит обзор наиболее ожидаемого за все последние годы нововведения: поддержки моделирования схем Qucs в SPICE-совместимых симуляторов.

Qucs использует ядро моделирования Qucsator, разработанное с нуля. Это ядро имеет много преимуществ (моделирование S-параметров, расширенный постпроцесоор), но также имеет многочисленные баги, связанные с моделированием во временной области (Transient analysis). Эти баги в частности не позволяют моделировать в Qucs силовую электронику. Теперь в Qucs можно смоделировать, например такую схему:



Скачать пакеты для Linux и Windows с поддержкой Ngspice можно здесь:
github.com/ra3xdh/qucs/releases/tag/0.0.19S-rc1

UPD от 21.10.15: сейчас доступен RC3: github.com/ra3xdh/qucs/releases/tag/0.0.19S-rc3

Буква «S» в номере релиза означает SPICE. По-видимому вместе с релизом 0.0.19 выйдет два набора пакетов: с индексом «S» и с обычной нумерацией, так как дальнейшая судьба spice4qucs неясна.

Документация для spice4qucs находится здесь: qucs-help.readthedocs.org/en/spice4qucs

Под катом будет кратко рассмотрено использование spice4qucs.

Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии11

Генерация кода во время исполнения или «Пишем свой JIT-компилятор»

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

Современные компиляторы очень хорошо умеют оптимизировать код. Они удаляют никогда не выполняющиеся условные переходы, вычисляют константные выражения, избавляются от бессмысленных арифметических действий (умножение на 1, сложение с 0). Они оперируют данными, известными на момент компиляции.
В момент выполнения информации об обрабатываемых данных гораздо больше. На её основании можно выполнить дополнительные оптимизации и ускорить работу программы.
Оптимизированный для частного случая алгоритм всегда работает быстрее универсального (по крайней мере, не медленнее).
Что если для каждого набора входных данных генерировать оптимальный для обработки этих данных алгоритм?
Очевидно, часть времени выполнения уйдёт на оптимизацию, но если оптимизированный код выполняется часто, затраты окупятся с лихвой.
Как же технически это сделать? Довольно просто — в программу включается мини-компилятор, генерирующий необходимый код. Идея не нова, технология называется “компиляция времени исполнения” или JIT-компиляция. Ключевую роль JIT-компиляция играет в виртуальных машинах и интерпретаторах языков программирования. Часто используемые участки кода (или байт-кода) преобразуются в машинные команды, что позволяет сильно повысить производительность.
Java, Python, C#, JavaScript, Flash ActionScript — неполный (совсем неполный) список языков, в которых это используется. Я предлагаю решить конкретную задачу с использованием этой технологии и посмотреть, что получится.
Читать дальше →
Всего голосов 47: ↑43 и ↓4+39
Комментарии33

Разработка ММО РПГ – практическое руководство. Эпизод 1

Время на прочтение8 мин
Количество просмотров52K
image
  • Вам интересно, сколько стоит разработка онлайн-игры?
  • Вы хотите узнать, как организовать разработку ММО от идеи до релиза?
  • Задумывались ли вы о технических трудностях создания онлайн-игр?


        В цикле статей «Разработка ММО РПГ – практическое руководство» вы получите ответы на эти и многие другие вопросы. Все цифры реальны. Все схемы, таблицы, исходный код, диаграммы БД и прочее взяты из реально существующего и успешно работающего проекта.
        В тексте будет много отсылок к геймплею и внешнему виду нашей игры «Звездные Призраки». Я постараюсь излагать материал так, чтобы вам не было нужды вникать (и играть) в наш продукт, но для лучшего понимания материала желательно потратить пару минут и посмотреть, как это все выглядит.
        Готовы? Тогда в путь!
Подробности
Всего голосов 37: ↑27 и ↓10+17
Комментарии50

Эволюция веб-инжектов, часть 1

Время на прочтение11 мин
Количество просмотров24K
В настоящее время файлы веб-инжектов взяты на вооружение во многих банковских вредоносных программах и используются как средство для осуществления финансового мошенничества. Этот механизм работы вредоносных программ изначально был распространен в единичных экземплярах и находился в зависимости от того или иного семейства вредоносных программ. За последние несколько лет веб-инжекты стали использоваться как часть целой киберпреступной экосистемы, в которой независимые их разработчики продают свои изделия операторам ботнетов.



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

Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии1

Как расшифровать данные магнитной дорожки с использованием DUKPT

Время на прочтение7 мин
Количество просмотров11K
Предлагаю читателям «Хабрахабра» перевод статьи «How To Decrypt Magnetic Card Data With DUKPT».

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

Оказалось, мои считыватели используют схему известную как DUKPT (Derived Unique Key Per Transaction — Определение Уникального Ключа На Транзакцию). Идея этой схемы состоит в том, что для каждой транзакции (или в нашем случае для каждого проката карты) данные шифруются с использованием ключа вычисленного для отдельного проката карты.

Таким образом, чтобы расшифровать данные, которые были зашифрованы с использованием этой схемы, вы должны уметь вычислять ключ для отдельного проката карты. Процесс вычисления такого ключа (сессионного ключа) далеко не простой.
Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии2

Снифаем выходную ноду Tor’а и анализируем получившийся контент

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


Концепция «сеть поверх сети» появилась далеко не вчера. Еще в середине прошлого десятилетия «Хакер» писал о луковой и чесночной маршрутизации в лице Tor и I2P и даже публиковал обзоры соответствующего софта в рубрике «Шароwarez», но настоящий интерес к ним в обществе появился на волне известных инфоповодов и громких разоблачений последнего времени. Что же представляют собой даркнеты? Кто там живет? Чем они интересуются, чем дышат, что покупают и что продают? Попробуем разобраться с этим по-хакерски: с помощью снифера и прямого погружения.
Читать дальше →
Всего голосов 43: ↑38 и ↓5+33
Комментарии12

Deconvolutional Neural Network

Время на прочтение9 мин
Количество просмотров61K
Использование классических нейронных сетей для распознавания изображений затруднено, как правило, большой размерностью вектора входных значений нейронной сети, большим количеством нейронов в промежуточных слоях и, как следствие, большими затратами вычислительных ресурсов на обучение и вычисление сети. Сверточным нейронным сетям в меньшей степени присущи описанные выше недостатки.

Свёрточная нейронная сеть (англ. convolutional neural network, CNN) — специальная архитектура искусственных нейронных сетей, предложенная Яном Лекуном и нацеленная на эффективное распознавание изображений, входит в состав технологий глубокого обучения (англ. deep leaning). Эта технология построена по аналогии с принципами работы зрительной коры головного мозга, в которой были открыты так называемые простые клетки, реагирующие на прямые линии под разными углами, и сложные клетки, реакция которых связана с активацией определённого набора простых клеток. Таким образом, идея сверточных нейронных сетей заключается в чередовании сверточных слоев (англ. convolution layers) и субдискретизирующих слоев (англ. subsampling layers, слоёв подвыборки).[6]

image
Рис 1. Архитектура сверточной нейронной сети

Ключевым моментом в понимании сверточных нейронных сетей является понятие так называемых «разделяемых» весов, т.е. часть нейронов некоторого рассматриваемого слоя нейронной сети может использовать одни и те же весовые коэффициенты. Нейроны, использующие одни и те же веса, объединяются в карты признаков (feature maps), а каждый нейрон карты признаков связан с частью нейронов предыдущего слоя. При вычислении сети получается, что каждый нейрон выполняет свертку (операцию конволюции) некоторой области предыдущего слоя (определяемой множеством нейронов, связанных с данным нейроном). Слои нейронной сети, построенные описанным образом, называются сверточными слоями. Помимо, сверточных слоев в сверточной нейронной сети могут быть слои субдискретизации (выполняющие функции уменьшения размерности пространства карт признаков) и полносвязные слои (выходной слой, как правило, всегда полносвязный). Все три вида слоев могут чередоваться в произвольном порядке, что позволяет составлять карты признаков из карт признаков, а это на практике означает способность распознавания сложных иерархий признаков [3].

Что же именно влияет на качество распознавания образов при обучении сверточных нейронных сетей? Озадачившись данным вопросом, наткнулись на статью Мэттью Зайлера (Matthew Zeiler).
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии0

Устройство и работа портов ввода-вывода микроконтроллеров AVR. Часть 1

Время на прочтение4 мин
Количество просмотров169K
Работа портов ввода/вывода

Изучив данный материал, в котором все очень детально и подробно описано с большим количеством примеров, вы сможете легко овладеть и программировать порты ввода/вывода микроконтроллеров AVR.



Пример будем рассматривать на микроконтроллере ATMega8.

Программу писать будем в Atmel Studio 6.0.

Эмулировать схему будем в Proteus 7 Professional.

С внешним миром микроконтроллер общается через порты ввода вывода. Схема порта ввода вывода указана в даташите:

image

Но новичку разобраться довольно со схемой довольно сложно. Поэтому схему упростим:

image

Pxn – имя ножки порта микроконтроллера, где x буква порта (A, B, C или D), n номер разряда порта (7… 0).
Cpin — паразитная емкость порта.
VCC — напряжение питания.
Rpu — отключаемый нагрузочный верхний резистор (pull-up).
PORTxn — бит n регистра PORTx.
PINxn — бит n регистра PINx.
DDRxn — бит n регистра DDRx.
Читать дальше →
Всего голосов 47: ↑27 и ↓20+7
Комментарии33

Assembler вместе с C++ в Visual Studio 2013

Время на прочтение4 мин
Количество просмотров108K
Идея этой статьи отнюдь не новая, но, поскольку мне пришлось потратить два дня на разбор всех ошибок компиляции и линковки, а также поиск ответов на свои вопросы, решил, что читатели Хабра заслуживают экономии времени. Тех, кто желает быстро узнать, как использовать одновременно *.asm и *.cpp файлы в проекте, как вызывать методы C++ из ассемблера и наоборот, прошу пожаловать под кат.
Читать дальше →
Всего голосов 33: ↑29 и ↓4+25
Комментарии29

Программирование на PureData. Часть 0

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

Введение


Немного общей информации


PureData — визуальный язык программирования для создания интерактивных программ (в данном случае их чаще называют «патчи»), используемых для исполнения и записи компьютерной музыки, звукового дизайна и визуализаций. Люди, знакомые, например, с Max/MSP, узнают привычный для них графический код, так как PureData — один из языков семейства MAX-подобных.

Выражаясь проще и слегка утрировано — это язык, заточенный под программирование синтезаторов и эффектов.

В этой статье я опишу некоторые элементы языка, а так же основные принципы, на которых базируется работа со звуком в PureData.
Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность