habrahabr
Небезопасный Rust сложнее C

Для некоторых из вас содержание этой статьи окажется знакомым, особенно, если вы писали встраиваемый или unsafe код на Rust. Но я этого не делал, поэтому решил, что будет полезным задокументировать свой опыт максимально подробно. Так что предлагаю сразу перейти к делу. В прошлом году я написал программу Photohash для индексации своего NAS и поиска дубликатов фото без использования хэширования, независимого от поворота изображения, и перцептивного хэширования. Чтобы полноценно задействовать вс…

  • четверг, 21 ноября 2024 г. в 00:00:06
habrahabr
Пленка на чае. Блеск и нищета

Страшно, очень страшно, мы не знаем что это такое, если бы мы знали, что это такое, но мы не знаем, что это такое Недавно собеседник спросил, знаю ли я что-то про «масляную пленку» образующуюся на чае. Спросил и заставил меня задуматься, ведь действительно, со всеми этими каркаде, ройбос&ханибуш и прочими матэ я сто лет не видел этот родненький «чайный налет». Даже специально пошел и купил пачку «первосортного» чая по цене <1$ за 50 пакетиков. Вспомнил из студенческих лет, что "хрест…

  • четверг, 21 ноября 2024 г. в 00:00:05
golang
Использование Redis в Go

Redis — хранилище из семейства нереляционных (NoSQL) баз данных. Redis является очень быстрым хранилищем данных благодаря своей архитектуре in-memory. Он идеально подходит для задач, требующих быстрого доступа к данным, таких как кэширование, очереди сообщений, сессионная информация и многое другое. Go также известен своей высокой производительностью за счет компиляции в машинный код и эффективного управления памятью.УстановкаВ качестве клиента для Redis будем использовать библиотеку go-redisgo…

  • четверг, 21 ноября 2024 г. в 00:00:04
javascript
Ментальная модель потоков в Node.js

Приходилось ли вам работать с потоками в Node.js? Когда я впервые столкнулся с потоками, я, мягко говоря, оказался в растерянности. Эта концепция была совершенно новой для меня. Я полагал, что смогу обойтись и без них, но вскоре понял, что в Node.js они повсюду. Даже такие ключевые модули, как fs и http, используют потоки "под капотом". Поэтому мне пришлось погрузиться в изучение этой темы и разобраться в том, как потоки работают. В этом мне особенно помогло создание устойчивой ментал…

  • четверг, 21 ноября 2024 г. в 00:00:02
xaker
Фишеры стали чаще использовать вложения в формате SVG

Исследователи заметили, что злоумышленники все чаще прикладывают к своим письмам вложения в формате SVG (Scalable Vector Graphics). Хакеры используют их для отображения фишинговых форм или внедрения малвари, при этом уклоняясь от обнаружения.

  • среда, 20 ноября 2024 г. в 00:00:16
xaker
В российской системе для видеоконференций VINTEO исправили 0-day уязвимости

Специалист Positive Technologies выявил хакерскую атаку на российскую компанию. Детальный анализ трафика показал, что для взлома использовались две опасные уязвимости в системе видеоконференцсвязи VINTEO.

  • среда, 20 ноября 2024 г. в 00:00:15
xaker
Kerberoasting для FreeIPA. Как я искал доступ к домену, а нашел CVE

Для подписчиковСамые веселые баги можно найти там, где их никто не ждал, — например, в популярных решениях управления доступом, таких как FreeIPA. Представь: у нас есть возможность запросить важные данные из системы, казавшейся абсолютно защищенной. Что, если это не просто удача? Забегая вперед, скажу, что она привела меня к нескольким интереснейшим находкам.

  • среда, 20 ноября 2024 г. в 00:00:14
xaker
Фейковые ИИ-генераторы картинок и видео распространяют стилеры Lumma и AMOS

Злоумышленники создают сайты, на которых якобы можно получить доступ к ИИ-решению EditProAI. Такие фальшивые генераторы изображений заражают Windows и macOS малварью Lumma Stealer и AMOS, которая затем используется для кражи учетных данных и информации криптовалютных кошельков.

  • среда, 20 ноября 2024 г. в 00:00:12
habrahabr
Разбор регулярного выражения, проверяющего простоту чисел

ВведениеКак-то я исследовал способы наиболее эффективного определения простоты числа и наткнулся на следующий код:public static boolean isPrime(int n) { return !new String(new char[n]).matches(".?|(..+?)\\1+"); }Он меня заинтриговал. Хоть это, возможно, и не самый эффективный способ, но определённо один из наименее очевидных, поэтому мне стало любопытно. Каким образом соответствие регулярному выражению .?|(..+?)\1+ должно показать, что число непростое (после его преобразования в уна…

  • среда, 20 ноября 2024 г. в 00:00:11