Как стать автором
Обновить
-1
0
Вадим @Dele1

Пользователь

Отправить сообщение

Фокусы с опторазвязкой

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров24K

Нюансы оптронной развязки, борьба с её недостатками и интересный на мой взгляд костыль: как разогнать скорость копеечной опторазвязки и наполучать других бонусов. Я не силён в рекламе, поэтому на месте КДПВ будет сразу тема статьи.

Читать далее
Всего голосов 125: ↑124 и ↓1+160
Комментарии63

Разбираем TLS по байтам. Кто такой этот HTTPS?

Уровень сложностиСредний
Время на прочтение32 мин
Количество просмотров29K


Подключение к сайту бывает защищённым, а бывает нет — это надо знать всем детям. Только мало детей знают, что это значит и как работает.

Я, изучая веб-разработку, узнал об HTTP. Разобраться в нём несложно: в каждой статье о протоколе множество наглядных примеров запросов и ответов. Затем узнал о схеме HTTPS, с которой всё не так наглядно. В ней используется то ли SSL, то ли TLS, и что-то где-то шифруется, и зачем-то нужны какие-то сертификаты. Короче, всё расплывалось в тумане: где пример ответа, запроса, сертификата, как его создать, зачем он нужен и почему гайд по созданию http-сервера уже написал каждый школьник, а https-сервер — недоступная для начинающих разработчиков роскошь?

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

Во второй обсудим, как это дело реализуется в протоколе TLS и разберём формат TLS-пакетов по байтам. Статьи рассчитаны в первую очередь на изучающих веб-разработку, знакомых с HTTP и жаждущих осознать, кто такое https. Но материал актуален для любых применений TLS, будь то веб или не веб.
Читать дальше →
Всего голосов 52: ↑51 и ↓1+60
Комментарии21

Многообразие связных списков

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров8.4K

Связный список — классическая структура данных, которая позволяет быстрые вставки/удаления, но при этом просаживает другие операции (случайный доступ к элементу). Мы пройдёмся от базовой реализации до других возможных вариаций этой структуры данных и, надеюсь, вместе узнаем что‑то новое. Краем глаза увидим возможные применения связных списков. И в конце, для любителей C++, бонус: использование связного списка для сбора диагностики выделений динамической памяти в вашем коде.

Связать себя со знаниями!
Всего голосов 25: ↑25 и ↓0+33
Комментарии7

Устройство памяти процессов в ОС Linux. Сбор дампов при помощи гипервизора

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров9K

Иногда для анализа ВПО или, например, для отладки какого-либо процесса может потребоваться дамп памяти процесса. Но как его собрать без отладчика? Постараемся ответить на этот вопрос в этой статье.

Задачи:

- Обозначить цель сбора дампа процесса.

- Описать структуру памяти процессов в Linux и отметить различия в старой и новой версиях ядра ОС

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

Читать далее
Всего голосов 16: ↑16 и ↓0+20
Комментарии2

Реверс-инжиниринг сигнала автомобильного брелка

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров15K

Я уже пару лет как изучаю протоколы радиосвязи. Началось это с момента, когда я из любопытства решил поэкспериментировать с USB-донглом RTL-SDR. Мне всегда хотелось понять, как передаются данные в пультах дистанционного управления (в частности, автомобильных брелках), попробовать перехватить их сигнал и выяснить, какие ещё в этом случае есть векторы атаки.

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

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

Ещё одной целью, пожалуй, будет доказательство, что большинство машин не так уж просто угнать посредством перехвата сигнала (разве что Honda, хах), несмотря на то, что недавно в Канаде запретили якобы опасный Flipper Zero, который можно собрать из дешёвых модулей беспроводной связи.
Читать дальше →
Всего голосов 78: ↑78 и ↓0+78
Комментарии21

ToolChain: Настройка сборки прошивок для микроконтроллеров Artery из Makefile

Уровень сложностиПростой
Время на прочтение22 мин
Количество просмотров5.6K

Настало время освоить очередное семейство микроконтроллеров: от компании Artery Technology.

Компания Artery Technology уже возвела полноценную экосистему для своих процессоров. Есть фирменные отладочные платы, программаторы, документация, исходные коды MCAL и даже кодо генераторы.

В этом тексте я представил пошаговую инструкцию того как запрограммировать микроконтроллер Artery.

Читать далее
Всего голосов 13: ↑10 и ↓3+7
Комментарии11

Почему Сборка с Помощью Есlipse ARM GCC Плагинов это Тупиковый Путь

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2.4K

В программировании микроконтроллеров часто используют Eclipse с плагинами.
Главным образом от незнания языков скриптов сборки (Make, Cmake, Ninjia и т п).

В этом тексте я напишут почему способ сборки из Eclipse c ARM плагинами — это тупиковый путь в разработке больших промышленных командных проектов.

И как можно частично компенсировать недостатки Eclipse с плагинами.

Читать далее
Всего голосов 10: ↑5 и ↓5+3
Комментарии21

Xv6: учебная Unix-подобная ОС. Глава 1. Интерфейсы операционной системы

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров13K

Эта книга рассказывает о принципах работы операционных систем на примере xv6. Операционная система xv6 реализует базовый интерфейс, который Кен Томпсон и Деннис Ритчи предложили в операционной системе Unix, и подражает внутреннему устройству Unix. Комбинации простейших механизмов Unix дают удивительную свободу действий. Современные операционные системы признали успех Unix и реализуют похожие интерфейсы - BSD, Linux, macOS, Solaris, и даже Microsoft Windows. Изучение xv6 поможет понять работу и других операционных систем.

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии6

Устройство GPIO-драйверов в Linux

Уровень сложностиСредний
Время на прочтение26 мин
Количество просмотров7K

Рассмотрим, как устроены GPIO-драйверы в Linux, и почему это сделано именно так. Поймем, почему для простого мигания светодиодом в этой операционной системе надо пройти через N слоев абстракции.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии18

Загрузка драйверов в ядре Linux

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров8.1K

Почти все знают, как написать простой драйвер под Linux. На эту тему много материалов в сети. Очень мало информации о том, что находится "под капотом" у процедуры загрузки драйверов.

Читать далее
Всего голосов 18: ↑18 и ↓0+18
Комментарии4

Выполняем сторонние программы на микроконтроллерах с Гарвардской архитектурой: как загружать программы без знания ABI?

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров15K
image


Зачастую в процессе разработки собственных устройств или моддинга уже существующих, встаёт задача выполнения стороннего кода: будь то ваши собственные программы с SD-флэшек, или программы, написанные другими пользователями с помощью SDK для вашего устройства. Тема компиляторов и кодогенерации достаточно сложная: чтобы просто загрузить ELF или EXE (PE) программу, вам нужно досконально разбираться в особенностях вашей архитектуры: что такое ABI, релокации, GOT, отличие -fPIE от -fPIC, как писать скрипты для ld и т. п. Недавно я копал SDK для первых версий Symbian и основываясь на решениях из этой ОС понял, каким образом можно сделать крайне «дешевую» загрузку любого нативного кода практически на любом микроконтроллере, совершенно не вникая в особенности кодогенерации под неё! Сегодня мы с вами: узнаем, что происходит в процессе загрузки программы ядром Linux, рассмотрим концепцию, предложенную Symbian Foundation и реализуем её на практике для относительно малоизвестной архитектуры — XTensa (хотя она используется в ESP32, детали её реализации «под капотом» для многих остаются загадкой). Интересно? Тогда добро пожаловать под кат!
Читать дальше →
Всего голосов 47: ↑46 и ↓1+61
Комментарии37

К вопросу о ESP32

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров19K

Решил я приобщиться к модным трендам и купить себе (для побаловаться) платку на ESP32, тем более и повод выдался неординарный - на сайте одной из российских фирм, торгующих Arduino, обнаружился модуль ESP32 lolin32 OLED по цене ниже, чем на Aliexpress. Пнп: не знаю, будет ли это рекламой, но вот ссылка на модуль https://iarduino.ru/shop/boards/wemos-esp32-oled.html, а фирму вы узнаете сами. Не то, чтобы мне было очень жалко 1200-990=210 рублей, но возможность получить платку сразу, без ожидания посылки дорогого стоит. Пнп: кстати, если заказывать доставку до пункта выдачи, то даже получается чуть дороже, хотя и быстрее, чем из Китая - всего 3 рабочих дня. Но можно съездить в "столицу нашей Родины город-герой Москва" и получить заказ на следующий день, что я и сделал. Не очень понятно, зачем я это все совершил в пятницу, потому что в выходные с платой возится так и не начал, но охота пуще неволи.

Тем не менее, на следующей неделе приступил к освоению платы. Для начала включил плату в USB порт - экран засветился и появилась надпись, заявляющая о любви к ESP - начало неплохое. Нужно установить среду разработки программ, и я решил поступить, как нормальный самодельщик, тем более что мне это рекомендовали на сайте фирмы продавца - скачать Arduino. Читатели, испытывающие непреодолимое отвращение к этому термину, могут далее себя не мучить, все остальные могут нажать на транспарант ниже.

Читать далее
Всего голосов 22: ↑18 и ↓4+20
Комментарии36

Структура драйвера Linux для одноплатного компьютера

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров14K

Здраствуйте меня зовут Дмитрий. Недавно я написал статью как собрать прошивку для одноплатного компьютера Orange PI i96 с нуля. Если вы не читали то очень советую. И там я упоминал что для того чтобы собрать прошивку на новом ядре Linux, мне пришлось переписать драйверы с учетом архитектуры Device Tree, которую использует современное ядро. В этой статье я опишу как я это сделал.

Читать далее
Всего голосов 34: ↑33 и ↓1+35
Комментарии5

Глубина кроличьей норы: бинарная граница и ABI C++

Время на прочтение26 мин
Количество просмотров6.7K

Вопрос ABI (Application Binary Interface), бинарной границы и бинарной совместимости в C++, раскрыт на просторах интернета не так хорошо как хотелось бы. Особенно сложно в его изучении приходится новичкам, потому что эта тема связана со множеством деталей нарочно скрытой от глаз программиста имплементации языка.

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

Подробнее о статье:

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

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

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

В рамках всей статьи будут рассмотрены темы: системный стек, системные регистры, динамическая память, детали механизма виртуальных функций, стандарт С++ и реальная имплементация, детали механизма исключений, copy elision при линковке библиотек, шаблоны, POD-типы и ODR violation.

Break -in- ABI
Всего голосов 12: ↑10 и ↓2+12
Комментарии40

IMSProg — программатор для CH341a в Linux

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров16K

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

Читать далее
Всего голосов 67: ↑67 и ↓0+67
Комментарии43

Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров82K

Рассказываем, как работать с CI/CD, о шагах при настройке сервера и о полезных командах, которые помогут в работе.

Привет! Меня зовут Николай, я Backend-разработчик в РЕЛЭКС.

В статье ты найдешь полезный теоретический материал, сравнение инструментов CI/CD и подробный гайд по сборке и развертыванию через Docker на удаленный сервер с помощью Gitlab CI/CD — на примере Spring Boot приложения.

Читать далее
Всего голосов 15: ↑12 и ↓3+11
Комментарии6

Аэропоника — это сложно

Уровень сложностиПростой
Время на прочтение19 мин
Количество просмотров28K

Аэропоника — перспективный и эффективный способ выращивания растений. Такие выводы я сделал, начитавшись статей. Я только что успешно вырастил на балконе клубнику и полон энтузиазма двигаться дальше. Я берусь за аэропонику. Кажется, что это не сложно, надо, всего лишь, вместо размещения растений в земле, разместить их в каких-нибудь ёмкостях и распылять раствор на корни. Это привело меня к эпопее с клубникой в контейнере (1, 2, 3) и ряду экспериментов с аэропоникой, о которых я ещё не писал. За это время у меня накопился некоторый багаж знаний относительно аэропоники, им я и буду делиться в этом посте.

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

Читать далее
Всего голосов 105: ↑104 и ↓1+128
Комментарии59

Типы struct, union и enum в Modern C++

Время на прочтение9 мин
Количество просмотров157K

Язык C++ сильно изменился за последние 10 лет. Изменились даже базовые типы: struct, union и enum. Сегодня мы кратко пройдёмся по всем изменениям от C++11 до C++17, заглянем в C++20 и в конце составим список правил хорошего стиля.

Читать дальше →
Всего голосов 64: ↑62 и ↓2+60
Комментарии63

Атакуем DHCP с помощью Raspberry Pi

Время на прочтение5 мин
Количество просмотров7.4K

На тему атак с использованием протокола DHCP написано достаточно много статей. Атаки DHCP Starvation и поддельный DHCP Сервер являются важными инструментами проведения пентеста.  Однако я предлагаю посмотреть на проблему немного под другим углом. А именно, использовать в качестве аппаратной платформы, с которой будут реализовываться атаки микрокомпьютер, например Raspberry Pi 3. Благодаря небольшим размерам и возможности работать от аккумулятора это устройство можно незаметно разместить рядом с сетевой розеткой и использовать для реализации атаки.

В этой статье я не буду разбирать процесс установки ОС на Raspberry, на эту тему написано достаточно статей и к тому же там все достаточно просто. Замечу лишь, что дистрибутив Kali Linux, который лучше всего использовать для описываемых атак, есть и для Raspberry Pi.

Читать далее
Всего голосов 9: ↑7 и ↓2+7
Комментарии5

Как работает компьютер: глубокое погружение (на примере Linux)

Уровень сложностиСложный
Время на прочтение48 мин
Количество просмотров148K



Введение


Я делала много вещей с компьютерами, но в моих знаниях всегда был пробел: что конкретно происходит при запуске программы на компьютере? Я думала об этом пробеле — у меня было много низкоуровневых знаний, но не было цельной картины. Программы действительно выполняются прямо в центральном процессоре (central processing unit, CPU)? Я использовала системные вызовы (syscalls), но как они работают? Чем они являются на самом деле? Как несколько программ выполняются одновременно?


Наконец, я сломалась и начала это выяснять. Мне пришлось перелопатить тонны ресурсов разного качества и иногда противоречащих друг другу. Несколько недель исследований и почти 40 страниц заметок спустя я решила, что гораздо лучше понимаю, как работают компьютеры от запуска до выполнения программы. Я бы убила за статью, в которой объясняется все, что я узнала, поэтому я решила написать эту статью.


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


Более удобный формат статьи.

Читать дальше →
Всего голосов 151: ↑151 и ↓0+151
Комментарии36
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Ромны, Амурская обл., Россия
Дата рождения
Зарегистрирован
Активность