Pull to refresh
1
0
Send message

Что используют в работе «белые хакеры»: инструменты для кибербезопасности и проведения пентестов

Level of difficultyEasy
Reading time15 min
Views8.4K

В арсенале специалистов по информационной безопасности и пентесту есть много инструментов и методов для защиты безопасности информационных систем и сетей. Рассказываем о популярных.

Читать далее
Total votes 9: ↑4 and ↓5+1
Comments4

Kerberos простыми словами

Level of difficultyMedium
Reading time46 min
Views24K

Несмотря на то, что уже существует множество различных статей про Kerberos, я всё‑таки решил написать ещё одну. Прежде всего эта статья написана для меня лично: я захотел обобщить знания, полученные в ходе изучения других статей, документации, а также в ходе практического использования Kerberos. Однако я также надеюсь, что статья будет полезна всем её читателям и кто‑то найдёт в ней новую и полезную информацию.

Данную статью я написал после того, как сделал собственную библиотеку, генерирующую сообщения протокола Kerberos, а также после того, как я протестировал «стандартный клиент» Kerberos в Windows — набор функций SSPI. Я научился тестировать произвольные конфигурации сервисов при всех возможных видах делегирования. Я нашёл способ, как выполнять пре‑аутентификацию в Windows как с применением имени пользователя и пароля, так и с помощью PKINIT. Я также сделал библиотеку, которая умещает «стандартный» код для запроса к SSPI в 3–5 строк вместо, скажем, 50-ти.

Хотя в названии статьи фигурирует «простыми словами» однако эта статья предполагает, что читатель уже имеет какое‑то представление о Kerberos.

Читать далее
Total votes 18: ↑18 and ↓0+19
Comments19

Интерактивная диаграмма Ганта для тысяч работ

Level of difficultyMedium
Reading time5 min
Views16K

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

Читать далее
Total votes 14: ↑14 and ↓0+14
Comments9

Компилятор за выходные: избавляемся от переменных

Level of difficultyMedium
Reading time15 min
Views12K

Вопрос из области ненормального программирования: насколько сложные программы вы сможете написать на питоне, не пользуясь в принципе переменными (а также агрументами функций), за исключением пары глобальных массивов? Правильный ответ: да любой сложности. Если что-то можно сделать на ассемблере, то уж на питоне и подавно! Правда, пусть лучше код вместо меня сгенерирует машина :)

Продолжаем разговор о минималистичном компиляторе, который вполне реально написать за выходные. Задачей стоит транслировать код из придуманного мной языка в x86 ассемблер. Мой компилятор состоит из 611 строк кода, при этом не имеет ни единой зависимости:

ssloy@khronos:~/tinycompiler$ cat *.py|wc -l

611

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

Итак, тема сегодняшнего разговора: генерация кода на питоне без использования переменных.

Читать далее
Total votes 30: ↑29 and ↓1+41
Comments35

Баги, которые мы пишем, ищем и исправляем

Level of difficultyMedium
Reading time11 min
Views1.9K

Привет! Меня зовут Денис, я - разработчик ПО SEDMAX. Это промышленное ПО для сбора и визуализации данных в энергетике. Как и у всех, у нас бывают баги. Мне бы хотелось поделиться опытом в поиске таких багов, а так же порассуждать на тему того, что необходимо было сделать, чтобы баг не появился. У нас серверная часть написана на go в виде некоторого множества сервисов, поэтому специфика большинства багов будет асинхронное взаимодействие, а код примеров представлен на go.

Читать далее
Total votes 7: ↑5 and ↓2+4
Comments5

Простой и удобный шаблон для bash-скриптов выполняемых по расписанию

Level of difficultyEasy
Reading time4 min
Views23K

Хочу поделиться с сообществом простым и полезным шаблоном скрипта-обёртки на bash для запуска заданий по cron (а сейчас и systemd timers), который моя команда повсеместно использует много лет.

Сначала пара слов о том зачем это нужно, какие проблемы решает. С самого начала моей работы системным администратором linux, я обнаружил, что cron не очень удобный планировщик задач. При этом практически безальтернативный. Чем больше становился мой парк серверов и виртуальных машин, тем больше я получал абсолютно бесполезных почтовых сообщений "From: Cron Daemon". Задание завершилось с ошибкой - cron напишет об этом. Задание выполнено успешно, но напечатало что-нибудь в STDOUT/STDERR - cron всё равно напишет об этом. При этом даже нельзя отформатировать тему почтового сообщения для удобной автосортировки. Сначала были годы борьбы с использованием разных вариаций из > /dev/null, 2> /dev/null, > /dev/null 2>&1, | mail -E -s '<Subject>' root@.

Читать далее
Total votes 52: ↑49 and ↓3+55
Comments4

Анти-легаси архитектура для UI приложений

Reading time8 min
Views6.9K

В предыдущих статьях мы пришли к выводу, что для того, чтобы UI‑код не превращался в легаси, нам нужно отделить представление от бизнес‑логики и немного иначе, чем это делают Redux и Elm, так как оба подхода не позволяют сделать это полностью.

В данной статье мы порассуждаем о том, как такое разделение сделать.

React view как чистая функция состояния

React изменил наш подход к пользовательскому интерфейсу — его философия основана на простых, но мощных концепциях использования компонентов и однонаправленного потока данных.

Ещё считается, что React внес реактивность в пользовательский интерфейс, но это не так, так как шаблоны MVVM и фреймворки, которые сильно полагаются на реактивность, были введены раньше React. (Knockout и Angular с двойным биндингом данных, Ember.js Observable)

Эти концепции делают UI разработку не только интуитивнее, но и объединяют дизайн и разработку в одном инфополе. Кстати, Elm тоже полагается на подобные концепции и использует чистые композируемые функции представления без состояния.

Читать далее
Total votes 9: ↑8 and ↓1+9
Comments5

Прекратите клепать базы данных

Reading time15 min
Views63K

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

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

Поэтому сегодня предлагаю вам составить мне компанию – и мы вместе рассмотрим распространённые паттерны работы с данными приложений, а также разберёмся, как они соотносятся с фичами баз данных. Далее мы рассмотрим решения, которые могли бы стать альтернативами этим паттернам – например, как сделать в клиентской части оптимизированный стек базы данных, который позволил бы нам сосредоточиться на разработке приложения, а не на мелкой возне с данными.

Читать далее
Total votes 37: ↑31 and ↓6+37
Comments45

Дизайн-система Gravity UI: как легко построить свой интерфейс

Level of difficultyEasy
Reading time7 min
Views42K

Всем привет, я Алексей Сизиков, руководитель отдела User Experience в Yandex Cloud. В этой статье я хочу поделиться новостью: мы выпустили нашу дизайн-систему и библиотеку компонентов Gravity UI в опенсорс. 

Под катом — рассказ, зачем мы сделали Gravity UI, как его используем, в чём особенности и преимущества нашего подхода и как мы планируем развивать его дальше. А ещё — как настроить разные цветовые схемы в своих проектах и почему у нас четыре темы вместо двух стандартных.

Читать далее
Total votes 66: ↑64 and ↓2+67
Comments27

3X-UI: Shadowsocks-2022 & XRay (XTLS) сервер с простой настройкой и приятным интерфейсом

Level of difficultyEasy
Reading time13 min
Views284K

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

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

Поэтому сегодня мы поговорим об установке и использовании графической панели 3X-UI для сервера X-Ray с поддержкой всего того, что умеет X-Ray: Shadowsocks-2022, VLESS с XTLS и т.д.

Читать далее
Total votes 33: ↑32 and ↓1+36
Comments198

Универсальный SIP/H.323-терминал ВКС Vinteo + комплект Yealink

Level of difficultyMedium
Reading time9 min
Views3.1K

Компания Vinteo разработала уникальный на сегодняшний день групповой видео терминал - Vinteo ST. Терминал обладает гибким подключением аудио и видео периферии, имеет высокое качество и разрешение передачи видео вплоть до 4К, но самое главное - терминал Vinteo ST имеет встроенный сервер ВКС, позволяющий собирать на себе конференции до 20 участников без использования сервера видеоконференцсвязи или облачного сервиса ВКС.

Компания Yealink, в свою очередь, продолжает представлять рынку новые продукты по оборудованию переговорных комнат профессиональными и качественными аудио и видео решениями. На хабре уже обсуждались универсальные комплекты Yealink:

Уникальный AV-концентратор от Yealink. Комплексное решение для ВКС

Обзор новой камеры Yealink UVC86: наведение на голос и режим лектора

Уникальная ВКС-камера от Yealink — оптимальное решение для ZOOM/Skype/Teams

В этой статье мы рассмотрим терминал Vinteo ST совместно с комплектом оборудования Yealink на базе уже хорошо известной камеры UVC84 и нового конференц-телефона CP965 с дополнительными беспроводными микрофонами CPW65.

Читать далее
Total votes 3: ↑3 and ↓0+4
Comments2

Cтатья из старой книги — «Как создать оптический мозг»

Reading time12 min
Views3.1K
Добрый вечер всем!
Недавно мне в руки попала книга, статья из которой меня заинтриговала на столько, что я поспешил поделиться ею с сообществом. Книга старая — если не ошибаюсь 1986 г. выпуска. Конечно — эта статья типичная научная спекуляция — публикация малодоказанной гипотезы с целью привлечь внимание, но меня она заинтриговала.
Публикую прямо со сканера — один в один. Поэтому МНОГО БУКВ.
Читать дальше →
Total votes 15: ↑11 and ↓4+7
Comments12

Переизобретаем файловую систему: (Open)ZFS

Level of difficultyEasy
Reading time17 min
Views19K


Хранение данных — это всегда боль, у которой может быть больше 50 оттенков: железо, кэш, гарантии, производительность, скорость восстановления при проблемах, удобство и прочее. Как решить большинство из них, при этом получив что-то легко обслуживаемое, да ещё бесплатно? Сегодня поговорим про файловые системы на примере не совсем дефолтной OpenZFS.
Читать дальше →
Total votes 50: ↑49 and ↓1+60
Comments80

Двухтрубные системы отопления тупикового и попутного типа. Мнимая магия «петли Тихельмана»

Reading time21 min
Views52K

Двухтрубные системы отопления тупикового и попутного типа. В чём разница и что об этом говорят современные строительные нормы.

Ранее в одной из статей я уже рассказывал об однотрубных системах отопления.

Теперь настала очередь рассмотреть особенности проектирования и эксплуатации двухтрубных систем, которые крайне популярны у частных домовладельцев в ИЖС.

Так же двухтрубные вертикально-стояковые системы отопления пытаются применять и в многоквартирных домах.

Далее мы рассмотрим гидравлический расчёт систем для одного этажа частного дома с периметром в те же 50м для дом 10х15м по внутренним стенам (150м.кв на этаж).

А позже попытаемся применить те же подходы для максимальной высоты 50м в стояковой системе высотного дома.

Тупиковая система

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

Читать далее
Total votes 65: ↑61 and ↓4+66
Comments173

iPXE — заливка linux, windows, утилит по сети

Reading time12 min
Views53K

Раньше у нас использовалась заливка ОС по PXE с использованием syslinux, но как бывает с самодостаточными системами и без достаточного контроля и внимания - быстро превратилась в кашу из конфигураций, библиотек, загрузчиков.

Так же была необходимость в поддержке заливки разных ОС в режиме EFI - на тот момент заливка была только в Legacy.

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

Читать далее
Total votes 13: ↑13 and ↓0+13
Comments8

Как падает и поднимается Proxmox

Level of difficultyMedium
Reading time11 min
Views25K

Proxmox — это специализированный дистрибутив для виртуализации и контейнеризации на базе Debian Linux.


Когда потребности перерастают один, ответственный за все, железный сервер, но еще не настолько велики, чтобы использовать Kubernetes, на помощь приходят разные решения, позволяющие управлять кластером из нескольких хостов, организовать High Availability, репликацию и централизованный бэкап контейнеров и виртуалок. Proxmox — одно из них.


С ним мы уже больше двух лет, и очень довольны: он сильно упрощает очень многое: нарезку и резервирование ресурсов, живую миграцию (qemu VM's only), централизованный сбор метрик (без необходимости впихивать экспортер/агент в каждого гостя), управление (через WebUI, api и ssh).


Наша сеть разрослась от трех серверов до дюжины, из них количество хостов Proxmox выросло от нуля до восьми, на текущий момент. Но иногда ломается и он.

Взять щепотку лунного сахара и продолжить
Total votes 22: ↑21 and ↓1+22
Comments25

Как Rust меняет мышление разработчика

Level of difficultyEasy
Reading time9 min
Views49K
Я страшно ненавижу C++. Обычно я люблю программирование, но каждый проект, с которым я имел дело на C++, ощущался как монотонная рутина. В январе 2023 года я пошёл по пути изучения Rust, поэтому теперь могу сказать, что знаю язык системного программирования, который действительно люблю использовать.

Первый стабильный релиз Rust появился в 2015 году, и каждый год, начиная с 2016, он признаётся в Stack Overflow’s Annual Developer Survey самым любимым языком (в 2023 году эта категория называется «обожаемый»). Почему же разработчики, ощутившие вкус Rust, не могут отказаться от его использования? Похоже, в мире прогремевших наследников C/C++ репутация растёт только у Rust. Как же этот язык, появившийся на сцене меньше десятка лет назад, стал настолько популярным?

Ржавый красный краб Феррис по версии Midjourney

Кривая обучения оказалась крутой. Я нашёл многое, что мне нравится в Rust, но постоянно попадал в его ловушки. Однако в конечном счёте именно препятствия и проблемы, с которыми столкнулся, я научился любить больше всего.

Я начну историю с разговора о том, что легко полюбить — со среды Rust, управления пакетами и документации. Затем я расскажу о системе типов и типажах (trait). Далее я поведаю о тех возможностях тестирования и test driven development, которые становятся возможными благодаря Rust. Наконец, мы обсудим самую запутанную и сбивающую с толку часть — одержимость Rust тем, кто какой переменной владеет.
Читать дальше →
Total votes 87: ↑75 and ↓12+89
Comments147

Анатомия Интернета: что в имени тебе моём? (DNS)

Level of difficultyMedium
Reading time33 min
Views19K

Всем нам нравится писать в строке бровсера https://habr.com/. Никому не
захотелось бы писать там https://178.248.237.68/. К тому же, IP-адрес может
измениться, если Хабр решит перейти на другой хостинг.

Служба Интернета, которая превращает удобные всем имена в IP-адреса,
называется DNS, Domain Name System, "система доменных имен".

В этой статье я собираюсь описать работу DNS с разных аспектов, как с
технических, так и с организационно-административных.

Эта статья не является введением в DNS для начинающих. Скорее, моя
предполагаемая аудитория - это ИТ-профессионалы разной специализации,
которые хотят получше разобраться в анатомии сети Интернет.

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

Читать далее
Total votes 25: ↑24 and ↓1+30
Comments25

Как делается OpenSource: личный опыт

Level of difficultyMedium
Reading time17 min
Views37K

Я - автор двух пакетов, входящих более-менее во все дистрибутивы Linux: sane-airscan и ipp-usb.

Кроме того, sane-airscan входит во все основные дистрибутивы BSD (FreeBSD, NetBSD и OpenBSD) и в ChromeOS. ipp-usb в ChromeOS не взяли потому, что он написан на Go, а у них там очень жестко с размером исполняемых файлов, вместо этого они написали свое на Rust, но предпочли бы взять моё изделие, если бы могли. Совсем недавно появился порт ipp-usb на FreeBSD, вероятно, другие BSD тоже скоро подтянутся.

Вместе эти два пакета образуют стек "бездрайверного" сканирования документов для Linux и *BSD, а в перспективе нескольких лет, когда старые сканеры, наконец, вымрут, вероятно других драйверов и не останется.

Кроме того, ipp-usb делает возможным "бездрайверную" печать на USB-устройствах.

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

В целом, я полагаю, продвижение OpenSource пакетов структурно близко к продвижению на рынок программных продуктов. Занимаясь этой деятельностью, очень хорошо начинаешь понимать разницу между (1) написать программу, которая работает для меня (2) написать программу, которую можно назвать продуктом (3) вывести продукт на рынок.

Первое занимает гораздо меньше времени, чем второе. Второе - гораздо меньше времени, чем третье.

Читать далее
Total votes 394: ↑394 and ↓0+394
Comments71

Из лягушек в автоматизаторы — мое решение

Level of difficultyMedium
Reading time17 min
Views6K

Я являюсь создателем проекта, который кормит меня уже больше четырех лет.

Проект находится в открытом доступе и распространяется по лицензии MIT. К сожалению, он так и не дорос до широкой публики, по причине того, что у меня не остается времени на его разработку.

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

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

Читать далее
Total votes 17: ↑17 and ↓0+17
Comments9

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Fullstack Developer
JavaScript
HTML
CSS
Express
Node.js
Git
Linux
MySQL
PostgreSQL