Pull to refresh
0
0

Embedded programmer

Send message

Как взломать Harley Davidson. Часть 2

Level of difficultyMedium
Reading time16 min
Views11K

В прошлой части дизассемблировали код прошивки ECM последнего поколения мотоциклов в Ghidra, подправили его и запустили на тестовой плате Aurix TC275 Lite Kit, получили возможность обмениваться с ним сообщениями CAN и отлаживать его в winIDEA. Теперь настало время посмотреть, что же там интересного.

Читать далее

Сравнение Bash и Python при написании скриптов в Linux

Level of difficultyMedium
Reading time24 min
Views31K

Sh (от shell) является обязательным командным интерпретатором для UNIX‑совместимых систем по стандарту POSIX. Однако по возможностям он ограничен, поэтому зачастую вместо него используются более богатые возможностями командные интепретаторы, такие как Bash или Ksh. Ksh обычно используется в операционных системах семейства BSD, в то время как Bash — в операционных системах семейства Linux. Командные интерпретаторы облегчают решение мелких задач, связанных с работой с процессами и файловой системой. В данной статье будут рассматриваться операционные системы Linux, поэтому речь пойдёт о Bash.

Python, в свою очередь, является полноценным интерпретируемым языком программирования, и он также нередко используется для написания скриптов или решения мелких прикладных задач при работе с операционной системой. Современную UNIX‑подобную систему сложно представить как без Sh, так и без Python, если только это не устройство с минималистичной ОС вроде маршрутизатора. Например, в Ubuntu Oracular пакет python3 удалить не получится хотя бы потому, что от него зависит пакет grub‑common, от которого, в свою очередь зависят пакеты grub2-common и, соответственно, grub‑pc, то есть непосредственно загрузчик операционной системы. Таким образом, Python 3 можно смело использовать как замену Bash в случае необходимости.

Читать далее

Список Full-Mesh VPN решений

Reading time2 min
Views235K

Введение


Многие интересуются Full-Mesh (или P2P) VPN, хотят использовать их для игр с друзьями, для связи удаленных офисов, серверов, да для чего угодно. Обычные VPN, вроде OpenVPN или PPTP, пропускают весь трафик через центральный сервер, а Full-Mesh соединяются непосредственно с нодами, зачастую пробивая NAT.
Читать дальше →

Введение в Iptables

Reading time6 min
Views133K

Iptables - это мощный инструмент управления сетью в Linux, который позволяет администраторам управлять входящими и исходящими пакетами данных. Это основной инструмент для настройки межсетевых экранов в системах Linux.

Читать далее

Получаем бесплатные сервера в Oracle Cloud Free Tier

Reading time6 min
Views152K

Искал я как-то себе дешевый VPS сервер. Ну для отладки чего-нибудь, моделирования сетей... Да мало ли еще для чего может понадобится личный сервер? И вот в результатах поиска всплыло, что Oracle предоставляет возможность получить бесплатно и "пожизненно" до двух виртуальных машин (Oracle Cloud Infrastructure Compute). А также еще кое-какие вкусняшки. Зарегистрировался, получил - действительно выдают, действительно работает, и действительно бесплатно. Но хочется же подключить полученные машинки в свою сеть! И, желательно, штатными средствами. Вот из экспериментов и получились две статьи, может быть кому-то они сэкономят часа четыре рабочего времени.

Читать далее

Вторая жизнь китайского чудо-шнурка J2534

Reading time5 min
Views27K

Давным-давно, когда деревья были большими и вариации комплектаций одной модели автомобиля можно было перечислить пальцами одной руки, был куплен диагностический адаптер, о котором сегодня пойдет речь. Творение неизвестного китайца получило название Mini-VCI J2534. Откуда он взялся доподлинно неизвестно, но позиционируется как интерфейс для работы с различными Тойотами, а так же как J2534 совместимый адаптер (спойлер - нет). В момент покупки его было достаточно для диагностики и ковыряния в мозгах автомобилей тех лет, но прогресс не стоит на месте и в нынешних реалиях он если так можно выразиться - "не вывозит". О том, можно ли с этим что-то сделать и пойдет речь ниже.

Итак, знакомьтесь - наш пациент снаружи и внутри.

Читать далее

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

Level of difficultyMedium
Reading time46 min
Views305K

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

Вы, наверняка, помните отличный цикл статей на Хабре в прошлом году от пользователя MiraclePtr, который рассказывал о разных методах блокировок, о разных методах обхода блокировок, о разных клиентах и серверах для обходов блокировок, и о разных способах их настройки (раз, два, три, четыре, пять, шесть, семь, восемь, десять, десять, и вроде были еще другие), и можете спросить, а зачем еще одна? Есть две основные причины для этого.

Читать далее

Почти все, что вы хотели знать про плавающую точку в ARM, но боялись спросить

Reading time10 min
Views28K
Привет, Хабр! В этой статье я хочу рассказать про работу с плавающей точкой для процессоров с архитектурой ARM. Думаю, эта статья будет полезна прежде всего тем, кто портирует свою ОС на ARM-архитектуру и при этом им нужна поддержка аппаратной плавающей точки (что мы и делали для Embox, в котором до этого использовалась программная реализация операций с плавающей точкой).

Итак, приступим.
Читать дальше →

Корутины C++ для чайников: пишем асинхронный веб-клиент

Level of difficultyMedium
Reading time24 min
Views31K

Написать этот материал меня побудило... отсутствие хороших статей по корутинам в C++ в русскоязычном интернете, как бы странно это не звучало. Ну серьезно, C++20 существует уже несколько лет как, но до сих пор почти все статьи про корутины, что встречаются в рунете, относятся к одному из двух типов. Или обзор начинается с самых глубин и мелочей, пересказывая cppreference, а потом автор выдыхается и все сводится к "ну а дальше все понятно, возьмите и примените это в своем коде", что напоминает известную картинку с совой. Либо иногда в статьях рассматривается применение корутин на примере генераторов, и этим все и ограничивается. Но, давайте будем честны, генераторы — это замечательно, но за все время моей многолетней карьеры разработчика я, вероятно, делал что‑то подобное генераторам разве что разок, в то время как асинхронный ввод‑вывод приходится использовать почти в каждом проекте. И поэтому меня гораздо больше интересует реализация асинхронного ввода‑вывода с использованием корутин, а не генераторы. Поэтому пришлось разбираться во всем самому.

Читать далее

Совершенный цикл for

Reading time6 min
Views55K

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


Я довольно давно пишу код, и так вышло, что практически всегда на C++. Даже и не могу прикинуть, сколько раз я написал подобную конструкцию:


for (int i=0; i<size; i++) {
    [...]
}

Хотя почему не могу, очень даже могу:


find . \( -name \*.h -o -name \*.cpp \) -exec grep -H "for (" {} \; | wc -l
43641

Наш текущий проект содержит 43 тысячи циклов. Проект пилю не я один, но команда маленькая и проект у меня не первый (и, надеюсь, не последний), так что в качестве грубой оценки пойдёт. А насколько такая запись цикла for хороша? Ведь на самом деле, важно даже не то количество раз, когда я цикл написал, а то количество раз, когда я цикл прочитал (см. отладка и code review). А тут речь очевидно идёт уже о миллионах.


На КПДВ узел под названием «совершенная петля» (perfection loop).


image


Так каков он, совершенный цикл?

Читать дальше →

MMU в картинках (часть 1)

Reading time11 min
Views78K
Хочу поговорить об устройстве управления памятью (Memory Management Unit, MMU). Как вы, разумеется, знаете, основной функцией MMU является аппаратная поддержка виртуальной памяти. Словарь по кибернетике под редакцией академика Глушкова говорит нам, что виртуальная память — это воображаемая память, выделяемая операционной системой для размещения пользовательской программы, ее рабочих полей и информационных массивов.

У систем с виртуальной памятью четыре основных свойства:
  1. Пользовательские процессы изолированы друг от друга и, умирая, не тянут за собой всю систему
  2. Пользовательские процессы изолированы от физической памяти, то есть знать не знают, сколько у вас на самом деле оперативки и по каким адресам она находится.
  3. Операционная система гораздо сложнее, чем в системах без виртуальной памяти
  4. Никогда нельзя знать заранее, сколько времени займет выполнение следующей команды процессора

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

К сожалению, по какой-то причине все вышеперечисленные товарищи недостаточно почтительно относятся к MMU, а их знакомство с виртуальной памятью обычно начинается и заканчивается изучением страничной организации памяти и буфера ассоциативной трансляции (Translation Lookaside Buffer, TLB). Самое интересное при этом остается за кадром.
Читать дальше →

Полноценный трехпортовый USB-Serial адаптер на STM32 Blue Pill (STM32F103C8T6)

Reading time4 min
Views26K

Некоторое время назад мне в очередной раз потребовался USB-Serial адаптер. И не просто адаптер c RX/TX, а чтобы еще присутствовали управляющие сигналы. И не один UART, а несколько. И еще желательно, в виде одного композитного устройства, чтобы все это хозяйство не занимало больше одного USB-порта. Так и началась эта история...

Читать дальше →

Петля обратной связи в импульсных источниках питания

Reading time4 min
Views13K

Для получения требуемого напряжения в схемотехнике, как правило, используются микросхемы импульсных  DC-DC преобразователей. Очень удобные микросхемы - высокий КПД, возможность как понизить, так и повысить напряжение, миниатюрные размеры… Но иногда они словно сходят с ума: выходное напряжение начинает плавать, скакать, они издают чётко слышимый ухом свист (на самом деле свист издаёт выходной дроссель), микросхемы начинают очень сильно нагреваться (вплоть до выхода из строя).. Причём, как правило, это наблюдается не на одном-двух экземплярах, а сразу на всех устройствах из партии, то есть, налицо какая-то схемотехническая ошибка.  Вопросу “почему это происходит, и как с этим бороться” и посвящена эта статья. 

Читать далее

Программы-клиенты для протоколов недетектируемого обхода блокировок сайтов: V2Ray/XRay, Clash, Sing-Box, и другие

Level of difficultyMedium
Reading time16 min
Views253K

В предыдущей статье “Современные технологии обхода блокировок: V2Ray, XRay, XTLS, Hysteria и все-все-все” я рассказывал про прокси-протоколы. Теперь настало время рассказать про клиенты: консольные, GUI для десктопа и для мобильных платформ. 

Надеюсь, что эта статья вам окажется полезной, потому что, как выяснилось, найти хороший клиент даже для тех же V2Ray/XRay в наше время не так-то просто. Потому что большая часть того, что находится при поиске в интернете “в лоб” и даже в списках типа Awesome V2Ray - или уже неподдерживаемое, или довольно кривое, или не умеющее в актуальные версии и фичи (например, XTLS и uTLS), а самые жемчужины прячутся где-нибудь в глубинах Github’а и сторов.

Читать далее

Современные технологии обхода блокировок: V2Ray, XRay, XTLS, Hysteria, Cloak и все-все-все

Reading time20 min
Views418K

Три месяца назад здесь на Хабре была опубликована статья “Интернет-цензура и обход блокировок: не время расслабляться”, в которой простыми примерами показывалось, что практически все популярные у нас для обхода блокировок VPN- и прокси-протоколы, такие как Wireguard, L2TP/IPSec, и даже SoftEther VPN, SSTP и туннель-через-SSH, могут быть довольно легко детектированы цензорами и заблокированы при должном желании. На фоне слухов о том, что Роскомнадзор активно обменивается опытом блокировок с коллегами из Китая и блокировках популярных VPN-сервисов, у многих людей стали возникать вопросы, что же делать и какие технологии использовать для получения надежного нефильтрованного доступа в глобальный интернет.

Мировым лидером в области интернет-цензуры является Китай, поэтому имеет смысл обратить на технологии, которые разработали энтузиасты из Китая и других стран для борьбы с GFW (“великим китайским файрволом”). Правда, для неподготовленного пользователя это может оказаться нетривиальной задачей: существует огромное количество программ и протоколов с похожими названиями и с разными не всегда совместимыми между собой версиями, огромное количество опций, плагинов, серверов и клиентов для них, хоть какая-то нормальная документация существует нередко только на китайском языке, на английском - куцая и устаревшая, а на русском ее нет вообще.

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

Читать далее

Сортировка слиянием — не так просто, как кажется

Reading time20 min
Views32K

В одной конторе соискателю на позицию Senior C# developer выдали тестовое задание: отсортировать файл со строками определенного формата.

Требования такие:

* Формат строки: число, точка, пробел, далее любые символы до конца строки.

* Порядок сортировки — сначала сортируем текстовой части строки, потом по числу если текстовые части совпадают.

* Кодировка — UTF-8.

* Размер файла — 100гб - гарантированно больше объема ОП.

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

Как и многие другие программисты, узнав о таком тестовом задании, я возмутился. Внешнюю сортировку слиянием практически всех проходили в ВУЗе, но практически никто никогда не писал её. Задача очень непрактическая и непонятно какие навыки проверяет. Так мне казалось.

Эта задача вызвала бурные обсуждения о способах её решения. Многие программисты, причисляющие себя к рангу senior, предложили использовать базы данных, ибо не барское это дело - вручную писать алгоритмы сортировки. Некоторые даже попытались сделать решение на Apache Spark. Однако никто до конца задачу не решил, ибо мало кому удалось отсортировать в нужном порядке даже 10ГБ файл менее чем за 15 минут без SSD.

Я подумал, что стоит решить задачу до конца с помощью программирования, и тоже причислить себя к рангу senior developer.

Читать далее

Как улучшить английский в документации

Reading time11 min
Views37K

Я работаю техническим писателем в компании documentat.io. Мы занимаемся заказной разработкой технической документации, в том числе на английском языке. Иногда я дорабатываю уже существующие документы или спецификации к API на английском. Как правило, такие документы написаны русскоязычными разработчиками, которые неплохо владеют английским. И всё же они часто допускают характерные грамматические, пунктуационные и стилистические ошибки.

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

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

Читать далее

Пособие по программированию модулей ядра Linux. Ч.1

Reading time19 min
Views45K

Перед вами последняя версия пособия по программированию модулей ядра Linux, вышедшего 2 июля 2022 года. Пособие большое, поэтому материал будет разбит на серию статей. В первой части мы разберём, что такое модули ядра, рассмотрим необходимые подготовительные этапы для их создания и в завершении по традиции напишем первый простейший модуль «Hello world», попутно разобрав вопросы лицензирования, передачу аргументов командной строки и прочие нюансы. Это пособие вы можете смело воспроизводить и изменять в соответствии с условиями Open Software License v 3.0.
Читать дальше →

YouTube Vanced больше нет. Но есть ReVanced

Reading time8 min
Views162K


Статья навеяна этой новостью на Хабре


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

Читать дальше →

Релокация на машине в Армению

Reading time14 min
Views61K

Доброго дня всем хабровчанам. Примерно месяц назад я переехал из Москвы жить и работать в Ереван. С тех пор периодически меня спрашивают про то как мне удалось доехать до Армении на автомобиле, как вообще устроена релокация и как мне живется после переезда. Так что я подумал-подумал и решил написать об этом статью на Хабр.

Для тех кто заинтересовался
1
23 ...

Information

Rating
5,668-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity