Pull to refresh
-17
0.2
Send message

Принцип работы утилиты ping в Linux

Level of difficultyMedium
Reading time8 min
Views11K

Что такое ICMP протокол и с чем его едят? Что такое сетевая модель OSI? Как послать ICMP пакет на сайт и получить ответ? Как работает утилита ping на linux? Все это вы узнаете здесь.

Читать далее
Total votes 10: ↑8 and ↓2+9
Comments13

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

Level of difficultyMedium
Reading time46 min
Views19K

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

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

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

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

Ассемблер: x86/x86_64/Arm32/Arm64

Level of difficultyMedium
Reading time6 min
Views8.4K

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

Но как всегда для практики надо быть подготовленным, а как оказалось, я был не подготовлен...

Читать далее
Total votes 12: ↑11 and ↓1+13
Comments34

Моя коллекция 50+ вопросов для собеса C#

Reading time54 min
Views22K

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

Представляю 50+ вопросов для подготовки к собеседованию C#, грейд — джуниор/мидл.

Вопросы разные: есть сложные/простые, с детальным объяснением и с ответом в пару предложений.
Anyway, должно быть полезно, поскольку я выбрал самые частотные вопросы

Вообще по поводу собеседований на C#/.Net разработчика, на Хабре статей хватает, вот две, где освещаются вопросы с собесов: тут и здесь.
Но в этих статьях не хватает детального разбора вопросов, что я и решил исправить.

Вообще, по моим и не только наблюдениям C# сейчас бурно развивается, в прошлом 2023 году TIOBE даже назвали C# языком года, что придаёт некоторую уверенность в завтрашнем дне для шарписта.

Так что пока кто-то всё ждёт конец света сингулярность (ну же, ещё чуть-чуть), другая часть несмотря ни на что готовится, проходит тернистый путь от тестового задания до оффера и вливается в C#-разработку, с чем я их искренее поздравляю.

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

Читать далее
Total votes 35: ↑20 and ↓15+9
Comments30

Создание своего UEFI приложения

Level of difficultyMedium
Reading time5 min
Views40K

Привет, Хабр! Мне 16 лет, я студент, учусь на первом курсе колледжа на программиста. Начал увлекаться низкоуровневым программированием на Ассемблере и C/C++

Я заметил что на Хабре есть множество статей о написании своих простых "загрузчиков" для BIOS-MBR, которые выводят на экран "Hello World!". И при этом практически нет ни одной статьи о создании того же самого, но только для UEFI, хотя будущее именно за ним, ведь BIOS уже давно устарел! Это я и хочу исправить в этой статье.

Читать далее
Total votes 72: ↑71 and ↓1+84
Comments80

Почтовый сервер с нуля. Часть первая

Level of difficultyMedium
Reading time17 min
Views30K

Очень часто на этапе стажировки новых сотрудников мы в нашей компании сталкиваемся с типичными простыми ошибками, непониманием работы DNS и почты. При этом обучение новых сотрудников по этой теме — достаточно длительный и сложный процесс, так как сами вопросы требуют построения сложных логических цепочек в голове у начинающего инженера. В один момент мы составили свою вики и схемы для обучения и решили поделиться этим опытом на Хабре в виде серии статей, чтобы людям, которые решили связать свою жизнь с IT вообще и администрированием в частности, стало проще. Материалы этой серии предназначены для начинающих администраторов.

В этом материале будет представлена связка полноценного почтового сервера в виде Exim4+Dovecot+PostfixAdmin+RainLoop.

Читать далее
Total votes 20: ↑19 and ↓1+18
Comments27

SDR приемник GPS на микроконтроллере

Level of difficultyMedium
Reading time28 min
Views21K

В этой статье я расскажу о том, как я делал самодельный SDR GPS приемник на микроконтроллере. SDR в данном случае означает, что приемник не содержит готовых GPS-модулей или специализированных микросхем для обработки GPS сигналов - вся обработка "сырых" данных выполняется в реальном времени на микроконтроллере (STM32 или ESP32).
Зачем я это сделал — просто Just for fun, плюс - получение опыта.

Читать далее
Total votes 128: ↑127 and ↓1+160
Comments273

REST API сервер на Bash с использованием сокетов и Apache

Level of difficultyMedium
Reading time14 min
Views6K

Всем привет! Ранее рассказывал о том, как создать REST API и Web-сервер на PowerShell для Windows, а также упоминал, что подобный сервер будет работать и в системе Linux, благодаря кроссплатформенной версии PowerShell Core. Безусловно, для подобных целей лучше используются специализированные серверные фреймворки или библиотеки, такие как Flask или Django в Python, но меня не покидала идея реализации похожего сервера, где описание логики будет производиться на языке одного только Bash. Приведу примеры, с помощью которых можно создать такой сервер используя сетевые сокеты netcat , socat и ncat, а также веб-сервера Apache с использованием встроенных модулей.

Читать далее
Total votes 17: ↑15 and ↓2+16
Comments3

WinRAR CVE-2023-38831

Level of difficultyMedium
Reading time4 min
Views8.4K

10 июля 2023 года при исследовании распространения троянского ПО под названием DarkMe, специалистами из Group-IB была обнаружена раннее неизвестная уязвимость в WinRAR, которая касалась обработки zip-архивов. Данная уязвимость получила идентификатор CVE-2023-38831. С помощью этой уязвимости, по данным специалистов Group-IB, злоумышленники производили атаку на пользователей трейдерских форумов с апреля 2023 года. После заражения устройств пользователей, злоумышленники выводили деньги с брокерских счетов жертв. В этой статье мы разберемся, в чем кроется уязвимость и как её можно проэксплуатировать.

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

Эмуляция сотового телефона… на сотовом телефоне

Level of difficultyMedium
Reading time12 min
Views14K


О чём только не пишут на Хабре. Например, о создании J2ME-игры в 2024 году, о написании программ на ассемблере под Nokia 3310. Вдохновлённый этими статьями, я тоже решил создать нечто подобное. Это «нечто» должно удовлетворять следующим критериям:

а) Быть не слишком простым в техническом плане;
б) Быть, вероятно, бесполезным в практической эксплуатации;
в) Иметь ностальгические элементы.

Многие помнят линейку телефонов Siemens 65-75 серии, которые были в ходу около 20 лет назад. Мы попробуем провести необычный эксперимент на их основе, для чего напишем небольшую управляющую библиотеку на C, а также изменим код одной из встроенных в ОС Linux утилит. Подробнее в статье.
Читать дальше →
Total votes 57: ↑57 and ↓0+57
Comments10

12 лет спустя: Damn Small Linux снова в строю. По-прежнему быстрый, но изрядно «располневший»

Reading time3 min
Views7.7K

Проект Damn Small Linux достаточно странный. Он не обновляется по многу лет, все считают, что он умер, а потом его авторы снова начинают работу над дистрибутивом. Так произошло в далёком уже 2012 году, когда апдейтов не было около 4 лет. После всё снова затихло, уже на 12 лет. И вот сейчас дистрибутив возродился и готов служить Linux-комьюнити. Подробности — под катом.

Читать далее
Total votes 13: ↑12 and ↓1+19
Comments10

Ваш телефон – секретное оружие: Как превратить его в веб-камеру и оживить ваши онлайн-встречи! (Если у вас Linux)

Level of difficultyEasy
Reading time3 min
Views10K

Что объединяет удаленного сотрудника, на долю которого выпало много видеозвонков, зарождающуюся звезду YouTube и начинающего стримера? Все они, рано или поздно, осознают неотъемлемую важность повышения качества изображения, которое предоставляется их зрителям. А еще у них наверняка есть какой-нибудь Xiaomi Nano Porridge 10 Pro с довольно неплохой матрицей. И я не исключение, бросив вызов этой проблеме по-программистски и постаравшись обойтись без больших финансовых затрат, решением которой и хочу поделиться с вами. Добро пожаловать под кат!

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

Редактирование и подпись PDF в браузере локально

Reading time3 min
Views7.5K


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

В некоторых случаях эти современные приложения могут составить альтернативу платным нативным программам, таким как Adobe Acrobat Pro и DocuSign.
Читать дальше →
Total votes 12: ↑11 and ↓1+15
Comments1

Как установить Windows 11

Level of difficultyEasy
Reading time10 min
Views86K

Да, статья о том, как установить Windows 11 правильно. Этот процесс нынче сопровождается таким количеством шаманских плясок, что ей-богу, проще Arch устанавливать. Решил вот поместить все познания по этому вопросу из головы в статью.

Читать далее
Total votes 120: ↑98 and ↓22+99
Comments238

Призыв писать компактное ПО, версия 2024 года (с примером кода)

Level of difficultyEasy
Reading time11 min
Views34K

Этот пост посвящён памяти Никлауса Вирта, первопроходца в сфере вычислительных наук, ушедшего от нас 1 января этого года. В 1995 году он написал важную статью A Plea for Lean Software, и в своём посте я постараюсь воспроизвести её почти тридцать лет спустя, с учётом современных кошмаров разработки ПО.

Очень короткая версия поста: современные способы разработки/сборки ПО смехотворны, они приводят к созданию пакетов на 350 МБ для рисования графиков, а простые продукты импортируют 1600 зависимостей неизвестного происхождения. Уровень безопасности ПО ужасен, ведь он зависит и от качества кода, и от его объёма. Многие из нас понимают, что ситуация нерациональна. К сожалению, многие программисты (и их руководство) никогда не работали как-то иначе. А остальным редко выделяют время, чтобы выполнять работу качественно.

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

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

Читать далее
Total votes 117: ↑114 and ↓3+144
Comments197

STM32. Подготавливаем среду разработки в Linux

Level of difficultyEasy
Reading time21 min
Views19K
В недавнем времени получилось так, что у меня появилась пара интересных проектов, где одна из составных частей — микроконтроллер STM32. И каждый раз при смене ноутбука или ОС на домашнем компе приходится настраивать окружение для разработки как в первый раз. Плюсом, последние проекты, которые я делал для STM32 — выполнял в Windows, в демо-версии Keil uVision. Но поскольку я давно переехал в Linux — возникла необходимость основательно разобраться и изложить процесс настройки окружения для будущих применений.

Всем, кому интересно — добро пожаловать под кат.

Читать дальше →
Total votes 53: ↑52 and ↓1+61
Comments35

С новым годом: GPT в 500 строках на SQL

Reading time42 min
Views38K

В минувшем году все только и говорили об ИИ и о том, как он может всё за вас сделать.

Мне нравится, когда кто-то или что-то работает за меня. Поэтому решил: попрошу-ка ChatGPT написать за меня новогодний пост:

«Эй, ChatGPT. А ты можешь реализовать большую языковую модель на SQL?»
«Нет, SQL не подходит для реализации больших языковых моделей. Язык SQL предназначен для выполнения запросов к данным, хранящимся в РСУБД и для управления этими запросами. Для реализации большой языковой модели требуются сложные алгоритмы, обширные датасеты, а зачастую — и фреймворки для глубокого обучения. SQL всеми этими возможностями не обладает.»

Что ж, лишний раз убеждаешься, что, если хочешь что‑то сделать хорошо – сделай это сам.

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

Читать далее
Total votes 181: ↑177 and ↓4+207
Comments21

Сам себе мобильный интернет. Запускаем базовую станцию стандарта 4G LTE

Level of difficultyHard
Reading time13 min
Views85K
Приветствую всех!

Я уже не раз рассказывал про то, как в домашних условиях поднять сотовые сети разных стандартов. Но всё же все они были уже весьма древними. Самое время замахнуться на кое-что поинтереснее — LTE.



Итак, в сегодняшней статье поговорим о том, что детально в нашем сообществе не описывал практически никто — о том, как запустить базовую станцию самого нового из поддерживаемых большинством телефонов этой страны стандартов. Поговорим об особенностях её работы и о трудностях, с которыми, возможно, придётся столкнуться при запуске. Традиционно будет много интересного.
Читать дальше →
Total votes 313: ↑312 and ↓1+368
Comments156

Затыкаем рот Windows 10

Level of difficultyHard
Reading time33 min
Views101K


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

Однако жизнь сложная штука и не ограничивается только стандартными вариантами. Существуют ситуации, когда подобная сетевая активность операционной системы (ОС) нежелательна и даже вредна. За примерами далеко ходить не надо. Попробуйте подключить к Интернету давно не используемый резервный компьютер, собранный на старом железе. Пока софт на нём не обновится, использовать его будет практически невозможно, всё будет дико тормозить и еле шевелиться. А если вам в этот момент нужно срочно что-то сделать?

Для того чтобы подобного не происходило, необходимо «заткнуть рот Windows», то есть сделать так, чтобы она самостоятельно перестала «стучаться» в Интернет, устанавливать обновления и заниматься прочими непотребствами. Вот именно этим мы с вами и займёмся.
Читать дальше →
Total votes 171: ↑161 and ↓10+197
Comments308

Собираем автономную игру на C# в 2 килобайтах

Level of difficultyMedium
Reading time11 min
Views20K

Моё детство пришлось на эпоху 1,44-мегабайтных дискет и 56-килобитных модемов, поэтому я всегда любил маленькие программы. Раньше можно было записать на дискету кучу мелких игр и таскать её с собой. Если программа не помещалась на дискету, я задумывался, почему — в ней много графики? Есть музыка? Возможно, она выполняет много сложных операций? Или она просто раздута?

В наши дни дисковое пространство стало настолько дешёвым, что люди отказались от оптимизации по размеру.

Размер важен только при передаче: если вы передаёте программу по проводам, мегабайты равны секундам. По быстрому соединению на 100 Мбит в лучшем случае можно передать 12 МБ в секунду. Если на другом конце провода находится человек, ожидающий завершения скачивания, то разница между пятью и одной секундой может существенно повлиять на его ощущения.

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

Люди обычно воспринимают всё, что длится меньше 0,1 секунды, как мгновенное, 3 секунды — это примерно тот предел, после которого прерывается состояние потока пользователя; а уж 10 секунд удержать внимание пользователя очень сложно.

Хотя уменьшение сегодня уже необязательно, оно всё равно лучше.

Эта статья задумывалась как эксперимент, позволяющий выяснить, каким может быть минимальный размер полезного автономного исполняемого файла C#. Могут ли приложения на C# достичь размеров, при которых пользователи будут ощущать их скачивание как мгновенное? Позволит ли это использовать C# там, где он не используется сейчас?
Читать дальше →
Total votes 98: ↑97 and ↓1+126
Comments34

Information

Rating
2,326-th
Registered
Activity