Как один разработчик предотвратил крупнейшую кибератаку: история взлома XZ Utils
Прошел ровно год с момента, когда мир с открытым ртом следил за расследованием одного из самых изощрённых бэкдоров в истории Linux. История с библиотекой xz Utils напоминала триллер: внедрение под реальным именем, доверие сообщества, закладки в коде — и случайное обнаружение в самый обычный рабочий...
Миф о доказательном программировании без ошибок
Много копий сломано в обсуждениях, какой язык программирования самый лучший с точки зрения корректности и безопасности (под термином "корректность и безопасность" имеется ввиду отсутствие различных ошибок в программе, которые проявляют себя на стадии её выполнения и приводят к выдачей некорректного...
Как я превратил старый смартфон в игровую консоль с возможностью звонить
Осторожно: эта статья точно будет хабратортной, ведь в ней мы смоделируем, спроектируем и запрограммируем своё видение N-Gage 2! Я очень старался сделать статью интересной даже для тех читателей, кто не разбирается в теме 3D-печати и программирования микроконтроллеров :) Я очень люблю ретро-игры и...
Реализация шифра «Кузнечик» на языке RUST
Привет! Сегодня мы рассмотрим, заключительный в цикле материалов, Российский шифр "Кузнечик". "Кузнечик" — это современный стандарт шифрования в России и за рубежом. Опубликован был в 19 июня 2015 года. В наступающем 2025 году будем отмечать его юбилей. Читать далее...
[Перевод] PyMyFlySpy: отслеживание полёта по бортовым данным
«Где мы, папа», — спросил меня 5-летний сын. «Мы приземлимся примерно через час», — ответил я. «Да нет, я имею в виду, где мы? Мы ещё не пролетаем Италию?» Точно ответить я не мог. Это был недолгий перелёт по низкому тарифу без удобств в виде встроенных в подголовники кресел экранов. Тогда я...
Реализация шифра «Магма» на языке RUST
Привет! Сегодня мы продолжаем реализовывать шифрование. В этой статье мы рассмотрим алгоритм шифра "Магма", который был разработан и использовался в СССР. Читать далее...
Хэши: виды, применение и примеры на Java
Хэширование — это фундаментальный процесс в программировании, который применяется везде: от защиты паролей до ускорения поиска данных в структурах. Эта статья поможет разобраться в основных видах хэшей, их применении, а также покажет, как их использовать на практике с примерами на Java. Читать далее...
[Перевод] MomBoard: E-Ink дисплей для родственника с амнезией
Моя матушка страдает амнезией, и примерно два года назад я поставил у неё дома E-Ink дисплей, чтобы упростить ей самостоятельную жизнь. В итоге этот дисплей прекрасно работает по сей день, и я решил поделиться основными моментами его настройки для тех, кому он может пригодиться в похожих ситуациях....
[Перевод] Реализация подобия Apple Vision Pro
Не так давно я был свидетелем запуска Apple Vision Pro. Презентация оказалась очень интересной, но больше всего моё внимание зацепила одна деталь — дистанционное управление вводом с помощью пальцев. Выглядит очень интуитивно — использовать перемещение и сведение пальцев для управления курсором на...
Запуск узла Hidden Lake на языке Go
Анонимная сеть Hidden Lake является в своей области уникальным и достаточно своеобразным проектом, т.к. базируется на совершенно иных методах и подходах анонимизации трафика, чем большинство ныне нам известных сетей. Из-за того, что сеть является относительно новой - она часто дополняется и...
DPDK: 100 больших и маленьких багов
В своей обители в Р'лайхе мёртвый Ктулху спит в ожидании своего часа. А в C коде проекта DPDK спит множество ошибок, и тоже в ожидании своего часа. Давайте посмотрим, какие из них может выявить анализатор PVS-Studio. Читать дальше →...
Реализация режимов шифрования на языке RUST
После долгого перерыва мы возвращаемся в мир криптографических алгоритмов. В этот раз мы рассмотрим некоторые широко известные режимы шифрования блочных шифров, такие как ECB, CBC, CFB, OFB, CTR и подготовим небольшую архитектурную задумку, о которой я расскажу под катом. Если вы еще не видели мои...
Анонимная сеть в 100 строк кода на Go
Прошло уже более года с тех пор как я написал статью - Анонимная сеть в 200 строк кода на Go. Пересмотрев её однажды осенним вечером я понял насколько всё в ней было ужасно - начиная с самого поведения логики кода и заканчивая его избыточностью. Сев за ноутбук и потратив от силы 20 минут у меня...
Портируем игры на практике
Дисклеймер: употребляемые слова вроде «портируем», «хакаем» и «реверсим» совсем не значат, что статья предназначена исключительно для гиков! Я стараюсь писать так, чтобы было понятно и интересно абсолютно всем! Наверняка многие мои читатели так или иначе слышали новости о том, что известные...
[Перевод] Портируем декодер AV1 с С на Rust для повышения быстродействия и безопасности
AV1 становится всё более значимым видеоформатом, которому требуется безопасный и производительный декодер. Исходя из этой идеи, мы в тандеме с командой из Immutant создали rav1d, портировав на Rust написанный на С декодер dav1d. Перед вами первая из двух статей, посвящённых решению этой задачи. —...
Ему не место на помойке: хакаем 15-летний электронный переводчик и пишем под него приложения
Дисклеймер: Статья очень подробная и во всех красках "простым языком" описывает процесс хакинга и программирования под такой необычный девайс. Так что даже если вас не интересуют электронные переводчики и минипк, статья может оказаться для вас занимательной! Я всегда любил находить новые применения...
Google CTF 2024 Quals — auxin2
Определенный организаторами в "миски" auxin2 оказался любопытным таском из разряда эзотерического программирования - в данном случае виртуальной системы varvara, работающей на машине uxn. Во время соревнования мне удалось решить ее первым (в составе MSLC), хотя это заняло большую часть первого дня...
DownUnderCTF 2024 — эксплуатация PKI.js
Рассмотрим два связанных между собой задания DownUnderCTF 2024, требующих обмана реальной криптографической библиотеки PKI.js - в них разобралось мало команд (у второго набралось всего одно решение), и, хотя я сам не успел закончить работу над ними во время соревнования, изящность и реалистичность...
Назад