📌 Linux From Scratch
Интересуетесь созданием собственного дистрибутива Linux? В сети доступна бесплатная книга 2024 года, которая поможет вам в этом! Почти 400 страниц содержится вся необходимая информация, чтобы создать свою собственную версию Linux.
На освоение материала вам потребуется примерно 2-3 недели, но результат того стоит.
Не упустите шанс погрузиться в мир кастомизации Linux.
#Linux #OpenSource #Программирование #ИТ #Учебники
📚 Книга
📚Книга на русском
@cpluspluc
Интересуетесь созданием собственного дистрибутива Linux? В сети доступна бесплатная книга 2024 года, которая поможет вам в этом! Почти 400 страниц содержится вся необходимая информация, чтобы создать свою собственную версию Linux.
На освоение материала вам потребуется примерно 2-3 недели, но результат того стоит.
Не упустите шанс погрузиться в мир кастомизации Linux.
#Linux #OpenSource #Программирование #ИТ #Учебники
📚 Книга
📚Книга на русском
@cpluspluc
👍25🔥5❤4🤣4
🧵 Пишем свой сетевой стек с нуля: Ethernet и ARP на C
Хочешь разобраться, как работает TCP/IP на самом низком уровне?
В этой статье показано, как реализовать Ethernet и ARP в пользовательском пространстве Linux — на чистом C.
🔌 Что используется:
- TAP-устройство для приёма и отправки "сырых" Ethernet-кадров
- Структуры с
- Чтение и парсинг ARP-пакетов вручную
📦 Что реализуется:
- Создание ARP-запросов и обработка ответов
- Простейший ARP-кэш
- Парсинг и генерация Ethernet-фреймов
- Весь ввод-вывод — в user space
🧠 Зачем это нужно?
- Понимание, как работают сетевые интерфейсы на уровне байтов
- Практика системного программирования на C
- Основа для написания своего сетевого стека: IPv4, ICMP, UDP, TCP
📚 Статья:
https://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/
💻 Исходники на GitHub:
https://github.com/saminiir/level-ip
#Linux #Networking #C #TCPIP #ARP #Ethernet #DevLowLevel #СистемноеПрограммирование
Хочешь разобраться, как работает TCP/IP на самом низком уровне?
В этой статье показано, как реализовать Ethernet и ARP в пользовательском пространстве Linux — на чистом C.
🔌 Что используется:
- TAP-устройство для приёма и отправки "сырых" Ethernet-кадров
- Структуры с
__attribute__((packed)) для точного соответствия форматам- Чтение и парсинг ARP-пакетов вручную
📦 Что реализуется:
- Создание ARP-запросов и обработка ответов
- Простейший ARP-кэш
- Парсинг и генерация Ethernet-фреймов
- Весь ввод-вывод — в user space
🧠 Зачем это нужно?
- Понимание, как работают сетевые интерфейсы на уровне байтов
- Практика системного программирования на C
- Основа для написания своего сетевого стека: IPv4, ICMP, UDP, TCP
📚 Статья:
https://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/
💻 Исходники на GitHub:
https://github.com/saminiir/level-ip
#Linux #Networking #C #TCPIP #ARP #Ethernet #DevLowLevel #СистемноеПрограммирование
👍19🔥5❤1💊1
C умел «объектный стиль» задолго до модных споров про ООП.
В Linux-драйверах это видно особенно хорошо. Каждый драйвер фактически реализует интерфейс, просто заполняя структуру с указателями на функции.
file_operations из include/linux/fs.h - хороший пример. Ядро говорит: вот набор операций, которые может поддерживать файл, сокет или устройство. Драйвер сам решает, какие обработчики дать:
open
read
write
release
mmap
fsync
unlocked_ioctl
Если операция не нужна, поле остаётся NULL, и ядро использует поведение по умолчанию там, где это возможно.
По сути это тот же контракт между системой и реализацией, только без классов, наследования и рантаймовой магии. Есть таблица функций, есть объект, есть набор действий, которые с ним можно выполнить.
Именно поэтому C до сих пор живёт в ядрах, драйверах и системном коде. Он не навязывает модель абстракций, но даёт достаточно низкоуровневых инструментов, чтобы собрать нужную модель самому.
Просто вместо красивого слова interface у тебя struct с function pointers.
#programming #linux #c
В Linux-драйверах это видно особенно хорошо. Каждый драйвер фактически реализует интерфейс, просто заполняя структуру с указателями на функции.
file_operations из include/linux/fs.h - хороший пример. Ядро говорит: вот набор операций, которые может поддерживать файл, сокет или устройство. Драйвер сам решает, какие обработчики дать:
open
read
write
release
mmap
fsync
unlocked_ioctl
Если операция не нужна, поле остаётся NULL, и ядро использует поведение по умолчанию там, где это возможно.
По сути это тот же контракт между системой и реализацией, только без классов, наследования и рантаймовой магии. Есть таблица функций, есть объект, есть набор действий, которые с ним можно выполнить.
Именно поэтому C до сих пор живёт в ядрах, драйверах и системном коде. Он не навязывает модель абстракций, но даёт достаточно низкоуровневых инструментов, чтобы собрать нужную модель самому.
Просто вместо красивого слова interface у тебя struct с function pointers.
#programming #linux #c
👍17❤11🥰2🥱1
В open source вышел Furtex - низкоуровневый toolkit для изучения техник post-exploitation и evasion в Linux.
Проект построен вокруг io_uring, BPF и eBPF. Автор намеренно отказался от liburing и готовых фреймворков: взаимодействие с ядром реализовано через raw syscalls.
В репозитории собраны эксперименты для:
- анализа возможностей io_uring
- исследования BPF-карт и программ
- тестирования Linux EDR
- изучения видимости событий для средств мониторинга
- проверки защитных правил Falco
- исследования сетевых и процессных механизмов ядра
Furtex интересен специалистам по Linux security, разработчикам EDR и red team-инженерам, которым важно понимать, какие действия могут проходить мимо привычных точек наблюдения.
Автор отдельно подчёркивает: проект предназначен только для разрешённых исследований и тестирования собственной инфраструктуры.
https://github.com/MatheuZSecurity/Furtex
#linux #cybersecurity #ebpf #io_uring #research
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3❤1