Как стать автором
Поиск
Написать публикацию
Обновить
0
@SlavaFrozeread⁠-⁠only

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

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

Жизнь в одну строчку

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

Если уменьшение размера бинарников Go на 6% - это то, в чем вы отчаянно нуждаетесь, то эта статья для вас. (Я проводил этот эксперимент в рамках помощи Tailscale. Следует отметить, что я инвестор.) Если же вас не сильно заботит размер двоичных файлов, что ж, может быть, вам хотя бы будет интересно почитать это для развлечения.

Чтобы получить примерные цифры для этой статьи, я взял первый попавшийся файл из моего GOPATH. Все конкретные цифры в этой статье относятся к github.com/mvdan/sh/cmd/shfmt. После нескольких экспериментов, они кажутся мне довольно репрезентативными.

В качестве базового комита я использую коммит 9d812cfa5c тулчейна Go. Это ветка master по состоянию на 29 апреля 2020 г.; вероятно, он будет схож с версией Go 1.15beta1. Я использую его, а не Go 1.14, потому что он включает в себя несколько сокращений размера бинарников, в том числе одно конкретное, которое вам обязательно понадобится, если для вас важен размер.

Читать далее

Ещё раз про аппаратные ключи GPG за копейки

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


В февралe 2020 года на Хабре появилась увлекательная статья про преобразование программатора ST-Link v2 в аппаратный ключ шифрования. Уже тогда в комментариях появились жалобы на то, что результат не удаётся повторить, но они остались без ответа.


За прошедшее время до меня дошла пара посылок с Aliexpress и теперь, самостоятельно пройдя весь путь, я попытаюсь представить более или менее полную инструкцию с комментариями, которая поможет неспециалисту перепрошить микропроцессор в китайском клоне ST-Link v2. Постараюсь не повторять уже известное, поэтому про пайку контактов и использование GPG с аппаратным ключом смотрите в исходной статье.

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

Аппаратный ключ шифрования за 3$ — возможно ли это?

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

Итоговый результат — ключ размером с флешку

Повсеместное шифрование и, как следствие, обилие ключей заставляет задуматься об их надежном хранении. Хранение ключей на внешних устройствах, откуда они не могут быть скопированы, уже давно считается хорошей практикой. Я расскажу о том, как за 3$ и 2 часа сделать такой девайс.
Читать дальше →

Вскрытие трафика в публичных сетях

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


Эта статья о том, как стать кулхацкером (или по-английски Script Kiddie) — условным злоумышленником, который испытывает недостаток знаний в области программирования и использует существующее программное обеспечение, чтобы провести атаку на смартфоны и планшеты своих одноклассников.

Шучу. На самом деле передо мной стояла задача понять две вещи:

  1. Насколько опасно пользоваться публичным WiFi в 2020 году, в мире где господствуют браузеры и сайты с повсеместно победившими технологиями HTTPS (на основе TLS 1.1+) и HSTS
  2. Сможет ли человек моего уровня знаний (не самого высокого) “залезть” в чужой браузер и стащить ценные данные.

Спойлер
А в спойлере спойлер:
  1. Да, Опасно!
  2. Вполне сможет

Двойной VPN в один клик. Как легко разделить IP-адрес точки входа и выхода

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


TL;DR В статье описывается самый простой способ настроить VPN-сервер, у которого IP-адрес для подключения VPN-клиентов отличается от IP-адреса, с которого клиенты выходят в интернет.

Используете VPN для защиты приватности в интернете и арендуете для этого свой личный сервер? При этом вы единственный клиент, который подключается к этому серверу во всем мире? Так ли сложно найти ваш реальный IP-адрес, как вам кажется? С вступлением в силу пакета Яровой, это становится намного проще.

Double VPN — популярная тема, вокруг которой много спекуляций. Часто этим термином называют совершенно разные технологии, но почти всегда это означает разнесенные на уровне IP-адресов точки подключения и выхода в интернет. Мы рассмотрим самый простой способ настройки VPN-сервера в таком режиме, который не требует дополнительной настройки на серверной стороне и позволяет получить максимальную скорость и самые низкие задержки.
Читать дальше →

PostgreSQL Antipatterns: анализируем блокировки — SELF JOIN vs WINDOW

Время на прочтение4 мин
Количество просмотров4.4K
Ранее мы уже научились перехватывать блокировки из лога сервера PostgreSQL. Давайте теперь положим их в БД и разберем, какие фактические ошибки и проблемы производительности можно допустить на примере их простейшего анализа.

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

  • ожидание блокировки
    LOG: process 38162 still waiting for ExclusiveLock on advisory lock [225382138,225386226,141586103,2] after 100.047 ms
  • получение блокировки
    LOG: process 38162 acquired ExclusiveLock on advisory lock [225382138,225386226,141586103,2] after 150.741 ms
  • взаимоблокировка
    ERROR: deadlock detected

deadlock'и исключим из анализа — это просто ошибки, и попробуем выяснить, сколько всего времени мы потеряли из-за блокировок за конкретный день на определенном хосте.
Читать дальше →

PostgreSQL Antipatterns: «Бесконечность — не предел!», или Немного о рекурсии

Время на прочтение4 мин
Количество просмотров8.4K
Рекурсия — очень мощный и удобный механизм, если над связанными данными делаются одни и те же действия «вглубь». Но неконтролируемая рекурсия — зло, которое может приводить или к бесконечному выполнению процесса, или (что случается чаще) к «выжиранию» всей доступной памяти.


СУБД в этом отношении работают по тем же принципам — "сказали копать, я и копаю". Ваш запрос может не только затормозить соседние процессы, постоянно занимая ресурсы процессора, но и «уронить» всю базу целиком, «съев» всю доступную память. Поэтому защита от бесконечной рекурсии — обязанность самого разработчика.

В PostgreSQL возможность использовать рекурсивные запросы через WITH RECURSIVE появилась еще в незапамятные времена версии 8.4, но до сих пор можно регулярно встретить потенциально-уязвимые «беззащитные» запросы. Как избавить себя от проблем подобного рода?
Читать дальше →

Возможности для массового деанона в Telegram

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


tl;dr: исследую возможности для сопоставления аккаунтов с номерами телефонов в российском сегменте Телеграма.

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

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

Я ограничил интересы только российскими пользователями. База номерных диапазонов, как оказалось, публикуется Россвязью, что дополнительно упростило мне задачу, избавив от необходимости скрейпить сайты с подобной информацией. Всего операторам на седьмое сентября раздали почти шестьсот миллионов номеров, а точнее, ровно 598035003.
Читать дальше →

Пошаговое руководство по написанию сервиса для Kubernetes

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

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


Если вы когда-либо пробовали Go, вы знаете, что писать сервисы на Go очень просто. Нам нужно буквально несколько строк кода для того, чтобы можно было запустить http-сервис. Но что нужно добавить, если мы хотим приготовить такое приложение в продакшн? Давайте рассмотрим это на примере сервиса, который готов к запуску в Kubernetes.


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

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

Чистая архитектура с Go

Время на прочтение12 мин
Количество просмотров36K
Меня зовут Эдгар (ZergsLaw), я работаю в компании, которая занимается  финтех-разработкой для b2b и b2c. Когда только устроился в компанию, то попал в команду большого финтех-проекта и получил «в нагрузку» небольшой микросервис. Мне поручили его изучить и подготовить план рефакторинга, чтобы в дальнейшем выделить отдельную команду поддержки для сервиса.



«Мой» сервис — это proxy между определенными модулями большого проекта. На первый взгляд изучить его можно за один вечер и браться за дела поважнее. Но приступив к работе я понял, что ошибся. Сервис был написан полгода назад за пару недель с задачей протестировать MVP. Всё это время он отказывался работать: терял события и данные, или переписывал их. Проект перекидывали из команды в команду, потому что никто не хотел им заниматься, даже его создатели. Теперь стало ясно почему под него искали отдельного программиста.

«Мой» сервис — это пример плохой архитектуры и изначально неправильного проектирования. Все мы понимаем, что так делать нельзя. Но почему нельзя, к каким последствиям это приводит и как попытаться все исправить, я и расскажу.
Читать дальше →

Go? Bash! Встречайте shell-operator (обзор и видео доклада с KubeCon EU'2020)

Время на прочтение10 мин
Количество просмотров7.8K
В этом году главная европейская конференция по Kubernetes — KubeCon + CloudNativeCon Europe 2020 — была виртуальной. Впрочем, такая смена формата не помешала нам выступить с давно запланированным докладом «Go? Bash! Meet the Shell-operator», посвящённым нашему Open Source-проекту shell-operator.

В этой статье, написанной по мотивам выступления, представлен подход к упрощению процесса создания операторов для Kubernetes и показано, как с минимальными усилиями при помощи shell-operator'а можно сделать свой собственный.



Представляем видео с докладом (~23 минуты на английском, заметно информативнее статьи) и основную выжимку из него в текстовом виде. Поехали!

Let's Go! Три подхода к структурированию кода на Go

Время на прочтение12 мин
Количество просмотров11K
Привет, Хабр! Не так давно у нас вышла новая книга по Golang, и успех ее настолько впечатляет, что мы решили опубликовать здесь очень важную статью о подходах к проектированию приложений на Go. Идеи, изложенные в статье, очевидно не устареют в обозримом будущем. Возможно, автору даже удалось предвосхитить некоторые гайдлайны по работе с Go, которые могут войти в широкую практику в ближайшем будущем.
Читать дальше →

Пишем движок полнотекстового поиска на Go

Время на прочтение8 мин
Количество просмотров20K
Полнотекстовый поиск — один из тех инструментов, которые мы используем практически каждый день, когда ищем какую-то информацию в интернете. Full-Text Search (FTS) — это метод поиска текста в коллекции документов. Документ может ссылаться на веб-страницу, газетную статью, сообщение электронной почты или любой структурированный текст.

Сегодня мы собираемся написать собственный движок FTS. К концу этой статьи он сможет выполнять поиск по миллионам документов менее чем за миллисекунду. Начнём с простых поисковых запросов, таких как «Выдать все документы со словом cat», а потом расширим движок для поддержки более сложных логических запросов.

Примечание: самым известным движком полнотекстового поиска является Lucene (а также Elasticsearch и Solr, построенные на его основе).
Читать дальше →

Как программисту сделать резюме

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


Привет всем! На связи Дима, бэкенд разработчик, который недавно обнаружил, что его резюме больше не работает и доллáры перестали литься рекой на банковский счет. Каким-то загадочным образом мое старое резюме работало долгое время, но наступил момент когда я осознал что все… пора переделывать. В этой статье поделюсь своим опытом, а так же шаблоном для составления резюме.
Читать дальше →

FritzFrog — новое поколение ботнетов

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

Краткое содержание


  • Guardicore обнаружили сложный ботнет пиринговой (P2P) сети FritzFrog, который еще с января 2020 года активно взламывал SSH серверы.
  • Вредоносное ПО на Golang: FritzFrog исполняет модульный, мультипоточный и безфайловый вредоносный код на Golang, который не оставляет следов на жестком диске зараженного устройства.
  • Активное таргетирование государственных, образовательных, финансовых и прочих ресурсов: FritzFrog пытался брутфорсить и распространяться на десятках миллионов IP адресов правительственных офисов, образовательных учреждений, медицинских центров, банков и множества телекоммуникационных компаний. Среди них успешно подвержены атаке оказались более чем 500 серверов, включая известные университеты США и Европы, и одну железнодорожную компанию.
  • Сложность: FritzFrog полностью проприетарен, его имплементация P2P написана с нуля, что говорит о высоком уровне профессионализма его создателей в области разработки ПО.
  • Перехват: Guardcore Labs разработали клиентскую программу на Golang, способную перехватывать P2P соединения FritzFrog и подключаться к сети как пир.
  • Принадлежность: мы не смогли определить конкретную группу, ответственную за создание FritzFrog, однако текущий ботнет частично похож на ранее известный ботнет Rakos.

Введение


FritzFrog это очень изощренный пиринговый ботнет, который активно взламывает SSH серверы по всему миру. Благодаря своей децентрализованной структуре он распределяет контроль по всем своим узлам. В этой сети нет единой точки отказа, и пиры постоянно общаются друг с другом, чтобы поддерживать ее в устойчивом, обновляемом и постоянно активном состоянии. P2P соединение проводится через зашифрованный канал с использованием AES для симметричного шифрования и протокола Диффи-Хеллмана для обмена ключами.
Читать дальше →

Как крадут деньги, которых нет. Или кое-что новенькое о криптовалютах

Время на прочтение7 мин
Количество просмотров45K
Привет, Хабр!

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

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

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

Кстати, финансовые регуляторы считают биткойн и всех его друзей валютными суррогатами, и мы ни в коем случае не пропагандируем их использование, а наоборот, призываем пользоваться фиатными деньгами как надёжным и стабильным платёжным инструментом. (Тут мог бы быть смайл)
Читать дальше →

Основы правил проектирования базы данных

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

Введение


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

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

Для начала, разберем создание базы данных в MS SQL Server для сервиса поиска соискателей на работу.

Этот материал можно перенести и на другую СУБД такую как MySQL или PostgreSQL.
Читать дальше →

Создание голосового ассистента на Python, часть 1

Время на прочтение3 мин
Количество просмотров65K
Добрый день. Наверное, все смотрели фильмы про железного человека и хотели себе голосового помощника, похожего на Джарвиса. В этом посте я расскажу, как сделать такого ассистента с нуля. Моя программа будет написана на python 3 в операционной системе windows. Итак, поехали!

Реализация

Работать наш ассистент будет по такому принципу:

  1. Постоянно «слушать» микрофон
  2. Распознавать слова в google
  3. Выполнять команду, либо отвечать

1) Синтез речи

Для начала мы установим в систему windows русские голоса. Для этого переходим по ссылке и скачиваем голоса в разделе SAPI 5 -> Russian. Там есть 4 голоса, можно выбрать любой, какой вам понравится. Устанавливаем и идём дальше.

Нам нужно поставить библиотеку pyttsx3 для синтеза речи:

pip install pyttsx3
Читать дальше →

Скрытый взлом паролей с помощью Smbexec

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


Мы регулярно пишем о том, как хакеры часто опираются на использование методов взлома без вредоносного кода, чтобы избежать обнаружения. Они буквально «выживают на подножном корму», используя стандартные средства Windows, тем самым обходя антивирусы и другие утилиты выявления вредоносной активности. Мы, как защитники, теперь вынуждены иметь дело с печальными последствиями таких хитрых техник взлома: удачно расположенный сотрудник может использовать тот же подход для скрытой кражи данных (интеллектуальная собственность компании, номера кредиток). И если он не будет торопиться, а работать медленно и незаметно, будет чрезвычайно сложно — но все же возможно, если применять правильный подход и соответствующие инструменты, — выявить такую активность.

С другой стороны, мне бы не хотелось демонизировать сотрудников, так как никто не хочет работать в бизнес-среде прямиком из «1984» Оруэлла. К счастью, существуют ряд практичных шагов и лайфхаков, которое могут значительно усложнить жизнь инсайдерам. Мы рассмотрим скрытные методы атаки, используемые хакерами сотрудниками с некоторым техническим бэкграундом. А чуть дальше мы обсудим варианты сокращения таких рисков – изучим как технический, так и организационный вариант действий.
Читать дальше →
2

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность