Pull to refresh
74
0
Send message

Путь пакета через ядро Linux

Level of difficultyMedium
Reading time13 min
Views7K

Аннотация - Сетевые стеки являются основой коммуникации и обмена информацией. В данной статье исследуется сетевой стек TCP/IPv4 и UDP/IPv4 в Linux, наиболее распространенной серверной ОС. Мы описываем трассировку наиболее важных сетевых функций ядра Linux 5.10.8. Хотя документация по сетевому коду Linux существует, она часто устарела или охватывает только отдельные аспекты, такие как уровень IP или TCP. Мы рассматриваем эту проблему комплексно, охватывая путь пакета на выходе и входе через сетевой стек Linux. Кроме того, мы освещаем тонкости реализации и показываем, как ядро Linux реализует сетевые протоколы. Наша статья может послужить основой для оптимизации производительности, анализа безопасности, наблюдения за сетью или отладки.

Читать далее

Простые лайфхаки для автоматизации работы с помощью Python

Level of difficultyEasy
Reading time24 min
Views21K

Если какое-то действие приходится выполнять слишком часто — значит, пора его автоматизировать.

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

Читать далее

Мой первый контейнер без Docker

Level of difficultyMedium
Reading time6 min
Views37K

Технологии контейнеризации, возможно, как и у большинства из нас, плотно засели в моей голове. И казалось бы, просто пиши Dockerfile и не выпендривайся. Но всегда же хочется узнавать что‑то новое и углубляться в уже освоенные темы. По этой причине я решил разобраться в реализации контейнеров в ОС на базе ядра linux и в последствие создать свой «контейнер» через cmd.

Читать далее

Автоматизированный QoS на VPN-сервере с FireQOS и iftop

Level of difficultyEasy
Reading time4 min
Views1.3K

Если у вас есть VPN-сервер, рано или поздно возникнет проблема: некоторые пользователи потребляют слишком много трафика, замедляя интернет для всех остальных. Это особенно актуально для торрент-пользователей, которые создают сотни соединений и загружают канал.

Вручную отслеживать таких потребителей через iftop и менять настройки QoS – утомительно. Но можно автоматизировать процесс, чтобы FireQOS каждые 5 минут динамически обновлял правила для трафика, снижая приоритет для самых активных пользователей.

Читать далее

Свой Google в локалке. Ищем иголку в стоге сена

Level of difficultyMedium
Reading time17 min
Views10K

В статье мы разработаем свой собственный Google, который можно будет запустить в любой локальной сети как атакующим, что ищут пароли, так и защитникам, которым небезразлична безопасность их родной локалки. И что примечательно, наш Google будет состоять на 99% из готовых компонентов, практически без дополнительного программирования. А внедрение такой системы потребует ввода всего пары команд.

Читать далее

Подключение оплаты Тинькофф к Telegram-боту на чистом php

Level of difficultyEasy
Reading time6 min
Views8.7K

Недавно добавил оплату в свой Телеграм‑бот. После некоторых изысканий выбор пал на Тинькофф (ныне Т‑банк). Сам бот работает на php без вспомогательных библиотек. Возможно, кому‑то пригодится мой опыт и код. И бот.

Читать далее

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

Level of difficultyEasy
Reading time10 min
Views4K

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

📍 "д. Малое Шилово, ул. Березовая, д. 7" и "Березовая 7_М Шилово".
📍 "п. Ласьва, ул. Весенняя, д. 5" и "Весенняя 5_Ласьва".
📍 "Луговой пер 5, Краснокамск г" и "г. Краснокамск, пер. Луговой, 5".
📍 "д. Новая Ивановка, ул. Солнечная, 18" и "д.Новая Ивановка, ул.Солнечная, 18".

Уже выделенные отдельно адреса могут выглядеть как на скриншоте Экселя. А пример поставленной задачи может звучать так: «В реестре поданных объектов отметить все согласованные объекты (из общего списка согласованных)».

Если отбросить вариант ручного исполнения и обратиться к скриптам, то мне видится всего два решения:

✅ Использовать алгоритмы нечёткого сопоставления.
✅ Использовать геокодинг адресов.

Ищем приемлемый вариант сопоставления

5 способов получить RCE на практике

Reading time9 min
Views4.3K

Для специалистов в области offensive security обнаружение уязвимостей удалённого выполнения кода (RCE) является настоящей жемчужиной как для black-box проектов, так и для white-box. Такие уязвимости могут проявляться по-разному, но также существуют общие подходы для их обнаружения.

В этой статье мы рассмотрим распространённые методы получения RCE, включая SQL-инъекции, командные инъекции, path traversal, Local File Inclusion (LFI) и уязвимости в загрузке файлов. Для каждого вектора атаки мы приведём примеры и реальные случаи из моей практики, чтобы продемонстрировать их влияние.

Читать далее

Поднимаем в облаке расшифровку речи в текст с помощью нейросетей. VPS на пределе возможностей

Level of difficultyMedium
Reading time8 min
Views8.9K


Привет, Хабр! В этом посте я продолжаю цикл статей о том, как выжать максимум из обычного VPS от RUVDS. В прошлый раз мы экспериментировали с языковыми моделями, а сегодня попробуем запустить систему распознавания речи — FasterWhisper, оптимизированную версию модели Whisper от OpenAI. Как и в прошлый раз, сделаем это в рамках бюджета в 5000 рублей в месяц.
Читать дальше →

GUI для исследования внутренностей PDF

Reading time3 min
Views8.3K


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

Перед открытием документа всегда желательно посмотреть, что находится внутри. Для этих целей существуют парсеры, которые разбирают PDF. Например, Interactive PDF Analysis (IPA, на скриншоте вверху) и другие.

Даже если перед нами чистый PDF, иногда нужно изучить содержимое и извлечь полезные ресурсы в нетронутом виде — например, оригинальные изображения в JPG.
Читать дальше →

Большой гайд по миграциям в Django: полезные советы и обход типичных подводных камней

Level of difficultyEasy
Reading time27 min
Views4.8K

Привет! Меня зовут Макс, я backend-разработчик в компании ИдаПроджект и автор YouTube-канала PyLounge.

Эта вторая часть большой статьи по Django-миграциям для начинающих. Если вы пропустили или потеряли первую часть — держите ссылку.

Что здесь будет? Разберем фиктивное применение, миграции данных, «сухую проверку» и основные проблемы, которые возникают у начинающих. Также поделюсь полезными советами и подсвечу детали работы. Примеры из практики — обязательно будут.

Дисклеймер (как и в первой части, чтобы не было недопониманий): все примеры специально упрощены, чтобы неокрепший ум выцепил концепции, а не детали реализации. Не бейте, или бейте там, где синяков не видно :)

Читать далее

Голосовой ассистент на python

Level of difficultyEasy
Reading time3 min
Views6.2K

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

Не буду долго тянуть с приветствием и сразу перейду к делу. Этот гайд является по сути пошаговой инструкцией для создания базового кода голосового ассистента, который можно будет потом расширять и дополнять.

Читать

Замыкания в Python: примеры использования

Level of difficultyMedium
Reading time12 min
Views15K

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

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

Читать далее

Не UML-диаграммы на PlantUML. Обзор с примерами

Level of difficultyEasy
Reading time4 min
Views5.5K

Привет Хабр! Меня зовут Татьяна Ошуркова, я разработчик и аналитик Назначением инструмента PlantUML принято считать построение UML-диаграмм. Но на самом у него намного больше возможностей и типов диаграмм, которые можно создать.

В этой статья я расскажу о нескольких диаграммах, которые не относятся к UML, но могут быть построены с помощью PlantUML.

Читать далее

Сборщик мусора CPython и его влияние на производительность приложения

Level of difficultyEasy
Reading time13 min
Views4.6K

В прошлом я уже публиковал детальный разбор кода сборщика мусора CPython, однако стоит также дать более высокоуровневое объяснение механизмов управления памятью в CPython, не затрагивая сам код. Этому и будет посвящена данная статья. Статья в основном будет посвящена циклическому сборщику мусора (GC), как и когда он запускается и его влиянию на производительность приложений.

Читать далее

Функция property() в Python: добавляем управляемые атрибуты в классы

Level of difficultyMedium
Reading time30 min
Views4.9K

Из этого руководства вы узнаете, как:

- Создавать управляемые атрибуты или свойства в классах
- Выполнять ленивую оценку атрибутов и создавать вычисляемые атрибуты
- Сделать классы более «питоничными», используя свойства вместо методов геттер и сеттер
- Создавать свойства только для чтения и с возможностью записи
- Создавать согласованные и обратно совместимые API для классов

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

Читать далее

cgroups и namespaces в Linux: как это работает?

Level of difficultyMedium
Reading time5 min
Views11K

Привет, Хабр! Сегодня рассмотрим изоляции процессов и управления ресурсами в Linux, изучив возможности cgroups и namespaces. Разберёмся, как работают контейнеры изнутри и научимся создавать собственное изолированное окружение без Docker.

Читать далее

Запросто собираем базу данных при помощи команд Linux

Reading time6 min
Views13K

База данных — это сердце многих приложений, от полнофункциональных корпоративных сайтов до сравнительно простых инструментов, например, для ведения списков покупок и финансовых трекеров. Популярны реляционные базы данных на основе SQL, но в Linux можно собрать более простую и прозрачную альтернативную базу данных.

Читать далее

Django-аутентификация: просто о сложном

Level of difficultyEasy
Reading time13 min
Views8.1K

Привет, Хабр!

Аутентификация является фундаментальной частью любого веб-приложения. Мы рассмотрим различные способы реализации аутентификации в Django, начиная от стандартных методов и заканчивая более крутыми техниками, например как 2FA и OAuth2.

Читать далее

Pydantic 2: Полное руководство для Python-разработчиков — от основ до продвинутых техник

Reading time26 min
Views38K

Друзья, сегодня мы погрузимся в мир Pydantic 2 – мощного инструмента для валидации данных в Python! Узнаем, почему эта библиотека стала незаменимой в 30% Python-проектов и как она упрощает работу с данными. От базовых концепций до продвинутых техник – мы охватим всё, что нужно знать современному Python-разработчику. Готовьтесь к практике – ведь только так можно по-настоящему освоить Pydantic и сделать ваш код более надёжным и эффективным.

Читать далее

Information

Rating
4,578-th
Works in
Registered
Activity