Как стать автором
Обновить
4
0
Виктор @trnc

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

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

Вирус бешенства. Беспощадная непостижимость

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров20K
Мой первый урок по бешенству начался с инструктора который молча вышел и нарисовал на доске огромные «100%» © LAB-66

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

Про бешенство. Под катом


Что он такое? Вирус бешенства
Всего голосов 160: ↑154 и ↓6+185
Комментарии157

Как легко расшифровать TLS-трафик от браузера в Wireshark

Время на прочтение2 мин
Количество просмотров160K
Многим из вас знаком Wireshark — анализатор трафика, который помогает понять работу сети, диагностировать проблемы, и вообще умеет кучу вещей.

image

Одна из проблем с тем, как работает Wireshark, заключается в невозможности легко проанализировать зашифрованный трафик, вроде TLS. Раньше вы могли указать Wireshark приватные ключи, если они у вас были, и расшифровывать трафик на лету, но это работало только в том случае, если использовался исключительно RSA. Эта функциональность сломалась из-за того, что люди начали продвигать совершенную прямую секретность (Perfect Forward Secrecy), и приватного ключа стало недостаточно, чтобы получить сессионный ключ, который используется для расшифровки данных. Вторая проблема заключается в том, что приватный ключ не должен или не может быть выгружен с клиента, сервера или HSM (Hardware Security Module), в котором находится. Из-за этого, мне приходилось прибегать к сомнительным ухищрениям с расшифровкой трафика через man-in-the-middle (например, через sslstrip).

Логгирование сессионных ключей спешит на помощь!


Что ж, друзья, сегодня я вам расскажу о способе проще! Оказалось, что Firefox и Development-версия Chrome поддерживают логгирование симметричных сессионных ключей, которые используются для зашифровки трафика, в файл. Вы можете указать этот файл в Wireshark, и (вуаля!) трафик расшифровался. Давайте-ка настроим это дело.
Читать дальше →
Всего голосов 83: ↑82 и ↓1+81
Комментарии22

Как настроить двухфакторную аутентификацию через Telegram для SSH

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

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

Двухфакторная аутентификация (2FA) – это мощный инструмент, который значительно повышает уровень безопасности, требуя подтверждения вашей личности с помощью второго фактора. В этом контексте, двухфакторная аутентификация через Telegram представляет собой эффективное решение, которое можно легко интегрировать в процесс SSH-подключения.

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

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

Читать далее
Всего голосов 25: ↑23 и ↓2+24
Комментарии35

strlcpy, или как CPU противоречат здравому смыслу

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

Один из моих старых постов о strlcpy недавно вызвал обсуждения на различных форумах. Вероятно, с этим как-то связан выпуск новой версии POSIX. Многие авторы приводили один контраргумент, который я слышал и раньше:

«В общем случае, когда исходная строка умещается в конечный буфер, strlcpy будет обходить строку только один раз, а strlen + memcpy будут обходить её дважды».

Под этим аргументом скрывается допущение о том, что однократный обход строки выполняется быстрее. И, честно говоря, это вполне разумное допущение. Но справедливо ли оно? Об этом мы и поговорим в статье.

Читать далее
Всего голосов 49: ↑48 и ↓1+65
Комментарии55

Lock-free структуры данных. 1 — Начало

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

Я надеюсь, что эта статья станет началом цикла заметок о lock-free структурах данных. Я хочу поделиться с хабрасообществом своим опытом, наблюдениям и размышлениями о том, что такое lock-free структуры данных, как их реализовывать, подходят ли концепции контейнеров стандартной библиотеки STL к lock-free контейнерам, и когда стоит (и стоит ли вообще) применять lock-free структуры данных.

Читать дальше →
Всего голосов 165: ↑161 и ↓4+157
Комментарии39

Как скачать весь интернет? Становимся датахордерами. Начинаем с SingleFileZ и yt-dlp

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

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

Со времен появления Интернета уже потеряно более 75% информации, то есть современный интернет представляет собой то ещё дырявое ведро, коллапса спасает эмиссия тиктоков.

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

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

Сохраниться
Всего голосов 31: ↑31 и ↓0+31
Комментарии26

Как работать с атомарными типами данных в C++

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

Насколько популярна сегодня тема атомарных данных, настолько же она обширна для одной статьи. Можно подробно останавливаться на разных аспектах атомарности: например, анализировать memory ordering, рассуждать о lock-free алгоритмах с использованием атомиков или исследовать производительность атомиков на разных платформах.

Под катом мы рассмотрим некоторые базовые принципы работы с атомарными типами данных в языке C++. А именно: осветим работу с атомарными данными, основные операции с ними в стандартной библиотеке C++, а также некоторые аспекты использования атомиков с пользовательскими типами данных.

Читать далее
Всего голосов 55: ↑54 и ↓1+59
Комментарии13

Просто о шаблонах C++

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

Статья для тех, кто боится слова template в C++. Вводная информация с примерами и их подробным разбором.

Читать далее
Всего голосов 62: ↑61 и ↓1+70
Комментарии35

Определитель типа блокировки сайтов у провайдера

Время на прочтение1 мин
Количество просмотров140K
image

Написал тут маленькую программку, которая позволяет определить тип блокировки сайтов из реестра, применяемый провайдером. Она умеет определять подмену DNS, перенаправление DNS, IP/Port restricted DPI, Full DPI, ну и блокировку по IP, конечно же.
Программа отправляет применяемый тип блокировки на сервер, в дальнейшем можно будет составить таблицу по провайдерам.

Написано на Python 3.
Репозиторий на Github
Бинарники для Windows
Всего голосов 124: ↑121 и ↓3+118
Комментарии118

Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

Время на прочтение7 мин
Количество просмотров739K
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

Существует два распространенных типа подключения DPI: пассивный и активный.

Пассивный DPI

Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
Читать дальше →
Всего голосов 212: ↑212 и ↓0+212
Комментарии352

Замедление YouTube с технической стороны: ограничение и обход

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

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

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

Сразу скажу, что буду говорить обо всём, что известно на данный момент. Понятно, что с этим разбирался далеко не один я: огромное спасибо обывателям ntc party форума за проделанный ресёрч.

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

UPD 10.08.2024 Многие жалуются на недоступность ютуба в целом: не грузит домашнюю страницу. Переживать не стоит, оно обрабатывается всё тем же ТСПУ по всё той же стратегии, обходы должны работать.

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

Чиним замедление YouTube на уровне роутера

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

Всех категорический приветствую. Буквально первого августа, прямо в ночь, стал у меня жутко лагать YouTube. Естественно, мне это сильно не понравилось. Ну, что же, давайте разбираться, почему и как это исправить в условиях моей личной сети.

Что случилось?

Хорошо описано произошедшее здесь, на Хабре. Если совсем кратко, своими словами - во время установки SSL соединения в открытом виде домен передается к которому мы подключаемся(так называемое SNI). И если это googlevideo.com то начинают твориться "интересные вещи". Можно проверить это локально коммандами из статьи.

$ curl https://speedtest.selectel.ru/100MB -o/dev/null

Читать далее
Всего голосов 360: ↑357 и ↓3+412
Комментарии1053

Как Orange Pi вернула мне Ютуб

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

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

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

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

«Range-based for»: что интересного лежит на поверхности

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

Новый синтаксис для циклов for в C++ появился уже давно - более десяти лет назад в стандарте C++11. Идея, скрывающаяся за этим синтаксисом, не является сколь-нибудь запутанной, и практически все, кто интересуются новыми свойствами языка, быстро разобрались с тем, как этим синтаксисом пользоваться и, что важнее, как создавать свои типы, совместимые с синтаксисом range-based for. Однако, как мне кажется, именно в вопросах взаимодействия с пользовательскими типами спецификация range-based for содержит несколько интересных деталей, лежащих практически на поверхности, которые остаются незамеченными просто потому, что идиоматические подходы прекрасно обходятся и без них. Возможно, кому-то будет интересно взглянуть на них повнимательнее.

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

Windows — причина медленного интернета. Низкая скорость «загрузки», при нормальной скорости «скачивания»

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

Если Вы являетесь клиентом провайдера МТС «домашний интернет» и у вас проблемы со скоростью «загрузки» — это статья для Вас.

И если Вы проверили всё, что могло быть причиной медленной скорости загрузки: интернет-кабели, роутер, патч-корды, а в вашей Windows проблема осталась, не спешите паниковать, проблема не у Вас, а у вашего провайдера.

Читать далее
Всего голосов 97: ↑93 и ↓4+106
Комментарии61

Что такое TCHAR, WCHAR, LPSTR, LPWSTR,LPCTSTR (итд)

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


Многие C++ программисты, пишущие под Windows часто путаются над этими странными идентификаторами как TCHAR, LPCTSTR. В этой статье я попытаюсь наилучшим способом расставить все точки над И. И рассеять туман сомнений.

В свое время я потратил много времени копаясь в исходниках и не понимал что значат эти загадочные TCHAR, WCHAR, LPSTR, LPWSTR,LPCTSTR.
Недавно нашел очень грамотную статью и представляю ее качественный перевод.
Статья рекомендуется тем кто бессонными ночами копошиться в кодах С++.

Вам интересно ??
Прошу под кат!!!
Читать дальше →
Всего голосов 91: ↑64 и ↓27+37
Комментарии85

IO_URING. Часть 3

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

Всем привет! Симулятор написания echo-server'ов на связи. Сегодня завершающая часть из цикла посвященного io_uring. В этом материале мы поговорим о настройке io_uring, режимах работы и перформансе. Полученные знания используем чтобы улучшить конкурента netpoller'у из предыдущей статьи. 

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

IO_URING. Часть 2. Let's GO

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

Всем привет! Продолжаем разбираться с io_uring. Сегодня попробуем использовать io_uring для решения прикладных задач. А именно напишем полноценный TCP сервер. Для этого мигрируем наши приложения с C на GO. Не буду писать длинные вступления, вперед экспериментировать!

Читать далее
Всего голосов 19: ↑17 и ↓2+17
Комментарии1

Variadic templates. Tuples, unpacking and more

Время на прочтение7 мин
Количество просмотров93K
В этом посте я поговорю о шаблонах с переменным числом параметров. В качестве примера будет приведена простейшая реализация класса tuple. Также я расскажу о распаковке tuple'а и подстановки, хранимых там значений в качестве аргументов функции. И напоследок приведу пример использования вышеописанных техник для реализации отложенного выполнения функции, которое может быть использовано, например, в качестве аналога finally блоков в других языках.
Читать дальше →
Всего голосов 53: ↑51 и ↓2+49
Комментарии7

Создание процессора с нуля для чайников

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

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

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

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

Читать далее
Всего голосов 112: ↑112 и ↓0+138
Комментарии70
1
23 ...

Информация

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