Pull to refresh
1
0
killov @killov

User

Send message

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

Reading time10 min
Views71K

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

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

Управление по защите данных Германии: телеметрия в Windows 10 1909 Enterprise может быть полностью отключена

Reading time8 min
Views36K

Телеметрия давно стала горячо обсуждаемой темой с момента, когда Microsoft выпустил первую версию Windows 10. Microsoft решил глубоко интегрировать сбор данных в операционную систему — да так глубоко, что у пользовательских выпусков Windows 10 Home и Windows 10 Pro не было опции по полному отключению телеметрии.

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

Лазерный станок своими руками

Reading time4 min
Views107K


Привет, Хабр! Сегодня расскажу о своем лазерном станке для резки фанеры и гравировки кожи. Цель была как всегда – максимум функционала за минимум денег).
Читать дальше →

Firefox Send: свободный сервис обмена шифрованными файлами

Reading time2 min
Views24K


Вчера Mozilla довела до финальной версии один из своих экспериментальных проектов Firefox Send: простой и безопасный сервис обмена зашифрованными файлами. Поддерживаются файлы до 1 ГБ (до 2,5 ГБ после авторизации в Firefox Account).

Сервис выглядит просто, но под ним работает движок, который обеспечивает настоящее end-to-end шифрование, то есть вы никуда не передаёте файлы в открытом виде — они шифруются конкретно на вашем ПК, а расшифровываются на компьютере получателя (JS в браузере). Как это работает, можно посмотреть на примере Firefox Sync, здесь реализована похожая архитектура.
Читать дальше →

Точечная маршрутизация на роутере с OpenWrt. WireGuard и DNSCrypt

Level of difficultyMedium
Reading time13 min
Views166K
Данный материал не является призывом к действию и публикуется исключительно в образовательных целях.

UPD 14.10.2023
Эта статья немного устарела. Здесь можно узнать, как использовать готовые списки IP-адресов, что не совсем актуально. Актуальная статья с маршрутизацией по доменам: https://habr.com/ru/articles/767464/


UPD 16.10.2022


  • Исправлены конфиги для Openwrt 22
  • Добавлен community список
  • В скрипт добавлена проверка загрузки файлов. Которая решает проблему, если при старте устройства не удалось сразу загрузить списки
  • DNSCrypt изменён на DNSCrypt v2

UPD 15.03.2023


  • Добавлена логика для работы с доменами, используются список доменов из community
  • Изменена проверка загрузки файлов в скрипте
  • В Ansible playbook теперь можно выбрать определённые списки

UPD 20.04.2023
Если у вас роутер получает IPv6 адрес, то роутинг будет работать криво. Пока нет инструкции для IPv6, поэтому нужно будет его выключить на роутере.


Часть 2: Поиск и исправление ошибок


Чем отличается от подобных материалов?


  • Реализация на чистом OpenWrt
  • Использование WireGuard
  • Конфигурация роутера организуется с помощью конфигов OpenWrt, а не кучей в одном скрипте
  • Предусмотрены ситуации при рестарте сети и перезагрузке
  • Потребляет мало ресурсов роутера: подсети содержатся в ipset, а не в таблицах маршрутизации. Что позволяет развернуть это дело даже на слабых устройствах
  • Автоматизация конфигурации с помощью Ansible (не требуется python на роутере)
Читать дальше →

Заметки фитохимика. Картофель. Часть вторая. Рассказ про картофельный жир или «День сыроеда»

Reading time15 min
Views23K
Я думаю постоянные читатели моих заметок уже заметили достаточно скептическое мое отношение ко всевозможным, с позволения сказать, пищевым и диетологическим девиациям вроде сыроедения, моноедения, праноедения («тысячи их»). Но сегодня я хочу поговорить о таких «нутриентах» картофеля, которые в большинстве случаев доступны только тем, кто употребляет картофель в сыром виде (ну или делает картофельный сок) и не принесет особой пользы «варщикам и жарщикам всех мастей» (к коим относится, кстати, и автор этих строк). Должен же быть праздник и на улице Сыроеда. Вот этот день и настал…

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


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

Проброс USB в виртуалку по сети средствами UsbRedir и QEMU

Reading time6 min
Views49K


На сегодняшний день существет довольно много способов пробросить USB-устройство на другой компьютер или виртуалку по сети.
Из наиболее популярных — железячные такие как AnywhereUSB и чисто програмные продукты, из тех что я попробовал сам: USB Redirector и USB/IP.
Я бы хотел рассказать вам еще об одном интересном способе, который работает непосредственно с эмулятором QEMU.
Он так же является частью проекта spice, официально поддерживаемым RedHat.

UsbRedir, это открытый протокол для проброса usb-устройств по tcp на удаленный виртуальный сервер, разработанный при поддержке RedHat в рамках проекта spice. Но как оказалось им можно вполне успешно пользоваться и без spice. В роли сервера выступает usbredirserver, который шарит usb-устройство на определенный порт, а в качестве клиента сам QEMU, который эмулирует подключение экспортированного usb-устройства в определенный usb-контроллер вашей виртуальной машины. Благодаря такому подходу в качестве гостевой системы может использоваться абсолютно любая ОС, так как она даже не знает, что устройство является проброшенным удаленно, а вся логика ложится на QEMU.
Читать дальше →

Самообучение английскому — оптимальная организация времени. Практика занятий по методу Умин для компьютера и смартфона

Reading time15 min
Views63K
Метод Умин является одной из наиболее популярных альтернативных методик изучения иностранного языка, он известен уже более 20 лет и имеет многие сотни отзывов в прессе и интернете. Метод был опубликован в 1993 году в книге Умин Е. А. “Иностранный легко и с удовольствием” (50 стр., доступно в интернете). Автор метода, член-корреспондент РАМН Евгений Алексеевич Умрюхин, в интервью рассказывает о его возможностях так:
— Я видел много примеров, когда после полугода изучения языка моим методом человек получал возможность общаться на нем, может несовершенно, допуская отдельные ошибки или испытывая иногда трудности в выражении сложных мыслей. Но в общении, восприятии речи и чтении книг на иностранном языке эти трудности быстро преодолевались. Предложенный метод эффективен, потому что он существенно отличается от многих стандартных.

Сам метод основан на научных исследованиях Е. А. Умрюхина по функционированию мозга, изложенных, например, в книгах “Механизмы мозга: информационная модель и оптимизация обучения” (1999 г.), “Медико-биологические аспекты интеллектуальной деятельности” (2004 г.), а также в преподаваемых им учебных курсах, в том числе и в МГТУ им. Баумана, где я и познакомился с ним самим и с его исследованиями.
Читать дальше →

Межпроцессная репликация объектов с помощью QtRemoteObjects

Reading time7 min
Views12K
7 октября 2014 года в публичном доступе появились исходники Qt-модуля QtRemoteObjects. Модуль создан в недрах Ford Motor Company (автор Brett Stottlemyer). Вещь, на мой взгляд, очень перспективная. Модуль позволяет, например, передавать сигналы между объектами по сети. Но этим возможности модуля не ограничиваются. Более точно суть модуля описывает его предыдущее наименование — Replica, так как объекты «реплицируются» между процессами.



Ключевой идеей QtRemoteObjects, которая качественно отличает его от других способов межпроцессного взаимодействия/удаленного вызова процедур, является идея полностью продублировать Qt-объект в другие процессы. Это значит, что все изменения свойств (properties) в объекте — источнике отражаются (с уведомлением посредством сигналов) в объекте-реплике. Любые сигналы, которые эмитируются объектом-источником будут также эмитированы в каждом объекте-реплике. Также можно устанавливать свойства, вызывать слоты и в объекте-реплике, при этом запросы отправляются объекту-источнику, который их обрабатывает и затем изменения отражаются в других объектах-репликах посредством сигналов или с помощью изменения свойств. В результате все объекты (включая объект-источник) синхронизируются. При этом вся сложность межпроцессного взаимодействия скрыта внутри QtRemoteObjects.
Читать дальше →

Что такое интерактивный проектор? Часть вторая — программное обеспечение

Reading time6 min
Views8K
В предыдущем посте на Хабре мы вкратце рассказали о том, что собой представляет интерактивный проектор Epson, и какие технологии, собственно, обеспечивают его «интерактивность».

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

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

Краткий конспект по языку JavaScript

Reading time15 min
Views114K
Я —.NET разработчик. Но в последнее время всё чаще сталкиваюсь с JavaScript. Причём, процентах в 50 случаев я что-то на нём пишу, в остальных 50 — разбираюсь с чужим кодом, да ещё и прошедшим через минификацию, а иногда и обфускацию. В этой статье захотелось поделиться теми моментами, которые мне показались важными для понимания языка и эффективной работы с ним. Тут не будет ничего нового или неизвестного для людей, уже имевших дело с языком, и не будет чего-то такого, чего нельзя найти в других источниках. Для меня статья будет полезна как способ лучше разобраться в предмете, для читателей, я надеюсь, — как повод освежить знания.

Брендан Айк упоминал, что JavaScript был создан за 10 дней. Думаю, идея вынашивалась дольше. Как бы то ни было, язык получился и с тех пор только набирает популярность. Особенно после появления AJAX.

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

JavaScript состоит из трёх обособленных частей:

  • ядро (ECMAScript),
  • объектная модель браузера (Browser Object Model или BOM),
  • объектная модель документа (Document Object Model или DOM).


В статье, в основном, пойдёт речь о ядре. Конечно, в примерах кода будут использоваться элементы DOM и BOM, но заострять на них внимание не буду.
Читать дальше →

(#KatawaShoujo) Визуальный роман «Katawa Shoujo» как яркое событие в мире свободной культуры и благотворительности

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

Жизнь одних продуктов — это процесс, во многом подобный постепенному росту дерева. Семечко идеи, согретое солнцем энтузиазма, медленно прорастает, либо попав на благодатную почву целого коллектива увлечённых авторов продукта, либо благодаря упорству первоначального автора идеи. Ствол реализации этой идеи неуклонно движется всё выше, продукт всё лучше достигает своей первоначальной цели, и постепенно одевается, как ветвями и листьями, полезными дополнениями. Этим путём развиваются многие бесплатные программы (утилиты, серверы, клиенты), операционные системы, библиотеки функций, технические стандарты и спецификации, статьи вики. Всеми ими можно пользоваться годами, их полезность возрастает со временем, и они уходят корнями всё глубже в почву, созданную насущною необходимостью в них — она даёт им поддержку (то есть пользовательскую базу) и питательные вещества (то есть новых авторов). Год от года всё больше пользователей сходятся насладиться красотою, пользою, изяществом таких продуктов. Возможности пользователей, обновляющих свои продукты, развиваются с ними вместе. Чтобы развитие не останавливалося, этим продуктам наиболее подходят такие лицензии, которые допускают не только свободное копирование, но и свободное дополнение: MIT, LGPL, GPL, FDL, CC-BY-SA, и так далее. Польза же от таких продуктов в том, что они являются предметом повседневного быта их пользователей.

Жизнь других продуктов — это событие, во многом подобное резкому взрыву сверхновой звезды. Безо всякого предупреждения в небесах ослепительно вспыхивает сияние нового и величественного явления, исходя из той одной точки, на которую ранее не обращали пристального внимания — исходя от автора или небольшого авторского коллектива, ранее никому не заметного. Стремительно возрастая в объёме пропорционально третьей степени прошедшего времени, в киберпространстве нарастает восторг зрителей, затронутых этим явлением и начавших упоминать о нём в Твиттере и блогосфере. Если первоначальный заряд был силён, то день или неделю это сияние видно даже на дневном небе — в трендах и топах. Этим манером появляются перед нами многие бесплатные музыкальные произведения, литературные произведения, компьютерные игры, трёхмерные рендеры, полотна (файлы) живописи, визуальные романы. Только после их появления некоторые зрители, если пожелают, смогут углубиться в историю и увидеть там, что на месте открывшегося им зрелища вот ужé несколько лет, не привлекая излишнего внимания, тлела звёздочка первоначальной идеи — блог её творца или авторского коллектива. Но вот прекрасное мгновение невозвратно уходит в вечность прошлого: музыка прослушана, книга прочитана, компьютерная игра пройдена, иллюстрацией полюбовались, визуальный роман прочитали (прошли) несколько раз, по всем возможным путям развития сюжета — нужда в них отпадает, и на месте взрыва сверхновой остаётся туманность благодарной памяти публики. Для таких продуктов легко могут сгодиться даже лицензии, допускающие одно только свободное копирование, но не доработку: CC-BY-ND, CC-BY-NC-ND, и им подобные — потому что в создании производных продуктов заинтересованы только потенциальные авторы таких производных (авторы ремиксов, фэнфиков, «фотожаб», экранизаций, адаптаций, переводов, озвучиватели подкастов, игровые моддеры, гомосексуальные слэшеры), но не основная масса первоначальных потребителей, и без того насладившихся совершенно. Польза же от таких продуктов (здесь я имею в виду первоначальные, а не производные) в том, что они являются произведениями искусства и предназначены для однократного употребления их потребителей; впрочем, хорошие произведения вполне допускают и повторное (понравившуюся книгу можно время от времени перечитывать, компьютерную игру перепроходить, и так далее), а вот при ежедневном (или даже еженедельном) неминуемо надоедят достаточно скоро.

Уместно оговориться, что такое качество (быть скорее событием, чем процессом) свойственно не только свободным произведениям искусства: мы можем обнаружить его и в коммерческих хитах (обратите внимание, например, на истории появления хитов отечественной поп-музыки, изложенные в новогоднем номере «Афиши»). Также уместно оговориться, что это разделение не абсолютно: некоторые произведения искусства могут иметь все качества процесса (таковы, например, сериалы, комиксы и др.), а также предметом внимания и наблюдения может быть творческий путь автора или коллектива авторов (который, несомненно, также является процессом).

На все вышеизложенные мысли меня натолкнуло появление на небосклоне киберпространства очередного, и даже весьма заметного, продукта-события — им является вышедший десять дней назад (4 января 2012 года) визуальный роман «Katawa Shoujo». Но прежде, чем начать рассказ о нём, позвольте привести небольшую (≈188 килобайтов) иллюстрацию с обложки японского издания его руководства, на которой видны все основные персонажи «Katawa Shoujo»:

[Katawa Shoujo]

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

Исследуем базы данных с помощью T-SQL

Reading time26 min
Views291K
Как dba и консультант по оптимизации производительности SQL Server в Ambient Consulting, я часто сталкиваюсь с необходимостью анализа узких мест производительности на экземплярах SQL Server, которые вижу первый раз в жизни. Это может быть сложной задачей. Как правило, у большинства компаний нет документации по их базам данных. А если есть, то она устарела, или же её поиск занимает несколько дней.

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

Если вы когда-нибудь пытались получить часть этой информации, с помощью GUI, я думаю вы будете приятно удивлены количеством той информации, которая, с помощью этих скриптов, получается мнгновенно.

Как и с любыми скриптами, сначала проверьте их в тестовом окружении, прежде чем запускать в продакшене. Я бы рекомендовал вам погонять их на тестовых базах MS, таких как AdventureWorks или pubs.

Ну, хватит слов, давайте я покажу скрипты!
Читать дальше →

Простые догмы при работе с цветом в интерфейсах

Reading time5 min
Views111K
image

Привет, username!

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

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

Набор иконок Material Design от Google

Reading time1 min
Views106K


В списке самых популярных репозиториев Github за неделю на первое место вышел набор иконок Material Design, разработанный в компании Google.

Набор содержит аж 750 (!) глифов. Это пиктограммы, часто используемые в различных мобильных приложениях для воспроизведения медиа, коммуникаций, редактирования контента, установки соединения и т.д.
Читать дальше →

Анализ эксплойта Dianti.A

Reading time5 min
Views10K
Недавно мы писали про набор обнаруженных уязвимостей в Windows, которые использовались атакующими в направленных атаках, до выхода соответствующего исправления со стороны Microsoft (0day). Одна из таких уязвимостей в компоненте OLE Package manager (Packager.dll) была добавлена нашими вирусными аналитиками в базы как Win32/Exploit.CVE-2014-4114.A. Атакующие могли эксплуатировать эту уязвимость через специальным образом подготовленный документ презентации PowerPoint со встроенным туда OLE-объектом.



В этом посте мы хотели бы остановиться на другой уязвимости из этого списка. Этой уязвимости был присвоен идентификатор CVE-2014-4113 и она присутствует в драйвере win32k.sys всех поддерживаемых версий Windows (2k3+). Уязвимость позволяет несанкционированно (в обход ограничений ОС) исполнять код режима ядра и повышать привилегии запускаемого эксплойтом приложения до максимально возможного уровня (SYSTEM). CVE-2014-4113 была закрыта обновлением MS14-058 в рамках октябрьского patch tuesday, а 64-битная версия эксплойта была добавлена нами в базы как Win64/Dianti.A.

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

Установка и настройка Asterisk для работы с WebRTC

Reading time4 min
Views85K

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

Всё, что вы должны знать о прототипах, замыканиях и производительности

Reading time9 min
Views50K

Не всё так просто


На первый взгляд, JavaScript может показаться достаточно простым языком. Возможно, это из-за достаточно гибкого синтаксиса. Или из-за схожести с другими известными языками, например, с Java. Ну или из-за достаточно малого количества типов данных, по сравнению с Java, Ruby, или .NET.

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

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

Программирование и стриптиз

Reading time1 min
Views99K


Новость недели в мире программирования: запущен сайт Code Babes. Многие уже окрестили этот проект худшим событием в истории. Суть Code Babes заключается в привнесении развлечения в процесс обучения программированию с помощью сексуальной составляющей. Каждый раз, когда вы выполняете предложенное задание, выбранная вами «дама» снимает одну часть своего гардероба. Мотивация подобной «игры на раздевание» ясна каждому.


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

Изолирование приложения с IP-адресом из VPN другой страны на примере Steam

Reading time7 min
Views71K
Abstract: Изоляция приложения на уровне сети использованием network namespaces Линукса. Организация SSH-туннелей.

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

Вместо вступления. Я просто покажу эту картинку:

147%… Что-то мне это напоминает. Впрочем, хабр не для политики.

Цена на игры в Стиме зависит от региона. Регион — от IP'шника. Есть желание иметь цены в рублях, а не в евро.

Для этого мы используем VPN через SSH с использованием tun-устройств, плюс network namespaces для изоляции приложения от всех остальных сетевых устройств.

Network namespaces


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

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

Если у нас есть несколько интерфейсов (один из которых относится к VPN), то нет штатных методов сказать стиму, что надо использовать его, а не eth0/wlan0. Точнее, мы можем «завернуть» весь трафик в VPN, но это не всегда желательно. Как минимум — рост latency и снижение скорости (даже если VPN ведёт на супербыстрый сервер, увеличение latency, оверхед от туннеля и фиксированная ширина локального канала ставят TCP в положение, когда приходится резать скорость). Как максимум — одно дело «покупать через русский VPN», другое дело — пускать туда весь трафик. Меня совсем не прельщает использование VPN для получения защиты роскомнадзором от оппозиции и вольнодумства.

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

Для решения этой задачи в Linux, уже довольно давно (аж с 2007 года) существует технология, называемая network namespaces, то есть пространства имён для сетей. Суть технологии: над сетевыми интерфейсами создаётся подобие «каталогов», в каждом каталоге может быть несколько сетевых интерфейсов и приложений. Приложение, оказавшееся в заданном сетевом пространстве имён, может использовать (и видит) только те сетевые интерфейсы, которые отнесены к этому пространству.

Картинка ниже поясняет происходящее:

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

Information

Rating
Does not participate
Registered
Activity