Обновить
4
0

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

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

О работе ПК на примере Windows 10 и клавиатуры ч. 1

Время на прочтение16 мин
Охват и читатели119K
image

Меня зовут Андрей Артемьев, я работаю в Microsoft над ядром ОС Windows 10, ранее я работал над Windows 10x (WCOS), XBox, Windows Phone и Microsoft Edge. Я хочу популярно в образовательных целях рассказать о том как работает компьютер на примере клавиатурного ввода и Windows 10. Данный цикл статей рассчитан в первую очередь на студентов технических специальностей. Мы рассмотрим какой путь проходит информация о нажатой клавише от клавиатуры до отображения в Notepad.exe. В виду обширности и междисциплинарности темы в статьях могут быть неточности, о которых сообщайте в комментариях. Какая-то информация может быть устаревшей в виду скорости с которой развивается Windows.
Читать дальше →

Keylogger для Windows с изменением прав в DACL

Время на прочтение6 мин
Охват и читатели16K
Здесь будет рассмотрено создание Keylogger на базе .Net C# с вызовами системных функций. Сами системные функции в кратце описываются, но лучше прочитать официальную документацию от Microsoft. Ссылка на репозиторий с рабочей сборкой приведена в конце, так же как и ссылка на доккументацию.

Что будет реализовано:

  • Логирование ввода с клавиатуры.
  • Логирование активного окна.
  • Блокировка процесса от пользователя без привилегий администратора.
  • Остановка процесса по сочетанию клавиш.
Читать дальше →

Так ли хорош PocketBook?

Время на прочтение14 мин
Охват и читатели72K

Или сказ о том, какие глюки нас поджидают




Меня восхищает компания PocketBook. Это лидер рынка на постсоветском пространстве, в области электронных книг, данную компанию знают все. Много было лестных постов тут о продукции данной компании. Нам дают красивую рекламу, хвалебные оды. Давайте нормально поковыряемся в железе и софте, и попробуем восстановить старенькую книжку Pocketbook 515 и посмотрим в душу изделиям данной компании. Ну и оценим, насколько же они реально хороши или плохи. Без прикрас.
Читать дальше →

Приключения немецкого обедненного гексафторида урана в России. Часть 1. История и технологии обогащения

Время на прочтение12 мин
Охват и читатели67K
Уже почти два месяца Гринпис и экологи-активисты ведут кампанию по запрету ввоза в Россию обедненного гексафторида урана (ОГФУ) из Германии. Я уже высказывался об этой истории в самом ее начале: В Россию начали завозить радиоактивные отходы из Европы? Разбираемся. За прошедшее время пришлось несколько раз выступать в СМИ на эту тему (тут вот подборка этих записей), поучаствовать в публичном обсуждении в Новоуральске, а также в очной публичной дискуссии с одним из главных оппонентов ввоза. А на прошлой неделе я побывал в пресс-туре и на самом комбинате УЭХК в Новоуральске, куда и везут ОГФУ.


Газовые центрифуги на УЭХК — крупнейшем в мире комбинате по обогащению урана

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

Как работают квантовые компьютеры. Собираем паззл

Время на прочтение33 мин
Охват и читатели307K


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


А недавно ко мне подошли коллеги и спросили “Ты понимаешь как работает квантовый компьютер? Можешь нам рассказать?” И тут я понял, что проблема со складыванием в голове целостной картинки есть не только у меня.


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

Получилось или нет - решать, как обычно, вам.

Парадокс Эйнштейна — Подольского — Розена на пальцах и… при чём тут эфир

Время на прочтение8 мин
Охват и читатели35K
Парадокс Эйнштейна — Подольского — Розена сейчас активно изучают в многих лабораториях мира и научных институтах. Пишутся тонны научных статей. Поднято много хайпа в около-научных кругах.


Только лишь одна загвоздка, хотя и достаточно парадоксальная. В самой квантовой механике нет ничего парадоксального в парадоксе ЭПР! Ни граммульки!

Так почему же его так пристально изучают?

И да, при чём тут эфир?!
Читать дальше →

GHIDRA vs. IDA Pro

Время на прочтение12 мин
Охват и читатели62K


Приветствую,


Думаю, пришла пора. Наболело/накипело/есть мнение. С выходом Гидры ситуация с инструментарием для реверс-инженеров достаточно сильно изменилась. Если раньше выбора чем пользоваться особо не было (здесь не будут упоминаться Binary Ninja, Hopper, JEB или Radare2, потому как в известных мне ИБ-компаниях и комьюнити ими пользуется очень малое количество человек, либо же порог вхождения в некоторые (привет, Радар) очень высок, либо же покрытие архитектур ограничено лишь x86/x64/ARM/ARM64/MIPS), то теперь мы имеем очень мощного конкурента Hex-Rays в лице АНБ с их GHIDRA.

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

uMCPIno: Пишем простой протокол с гарантированной доставкой для Arduino

Время на прочтение19 мин
Охват и читатели19K

Приветствую вас, Глубокоуважаемые!


На каком-то этапе жизни, каждому упорному упоротому DIY-щику перестает хватать кантовского Arduino как «вещи-в-себе» they just can't!: поморгать светодиодиком, взять данные с датчиков и передать по проводу на PC конечно весело, но святой Грааль кроется в мобильности, в освобождении от «медных пут», в истинной свободе среди волн вселенского эфира.
Вот здесь нам и открывается суровая реальность неустойчивых каналов связи, ошибок передачи, недоставленных сообщений.
Боже упаси претендовать на оригинальность в этой области: человечество давно использует целый ворох протоколов на все случаи жизни.
Но наша цель — научиться, а так как я ярый сторонник разведки боем, то учиться мы будем, изобретая свой собственный протокольный «велосипед».
Сегодня я предлагаю разработать протокол, который обеспечивает гарантированную доставку, целостность и очередность сообщений между двумя абонентами (соединение точка-точка, Point-to-Point), умеет и применяет алгоритм Нагла и protocol pipelining, чтобы это ни значило. При этом он должен иметь минимальный оверхед и втискиваться даже в тесный Arduino UNO.



Всех заинтересовавшихся прошу на борт, задраиваем люки, открываем кингстоны, заполняем балластные цистерны. Нам предстоит экскурсия в прошлое, destination: year 1974!
Читать дальше →

Функциональное программирование — это не то, что нам рассказывают

Время на прочтение17 мин
Охват и читатели133K

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



Хотя люди обычно признают удобства ФП фич, ведь намного приятнее писать:


int Factorial(int n)
{
    Log.Info($"Computing factorial of {n}");
    return Enumerable.Range(1, n).Aggregate((x, y) => x * y);
}

чем ужасные императивные программы вроде


int Factorial(int n)
{
    int result = 1;
    for (int i = 2; i <= n; i++)
    {
        result *= i;
    }
    return result;
}

Так ведь? С одной стороны да. А с другой именно вторая программа в отличие от первой является функциональной.


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

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

Оптимизация производительности .NET (C#) приложений

Время на прочтение11 мин
Охват и читатели45K
image

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

Нетоксичное лицемерие

Время на прочтение8 мин
Охват и читатели89K
Программистам сызмальства внушают важность технических навыков, забывая научить тактично общаться с окружающими. Наша конкурентная среда богата вызовами и достижениями. Это рождает комплексы равно как и высокомерие. Неудивительно, что в IT остро стоит проблема токсичности.

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

Как послать провайдера подальше, и включить DNS по HTTPS в любом браузере

Время на прочтение5 мин
Охват и читатели224K

Поддержка DoH уже встроена во все основные браузеры. Пользователям нужно её только включить и настроить.


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

Этот протокол является одной из самых обсуждаемых тем этого года. Он позволяет браузеру прятать DNS-запросы и ответы внутри обычного на первый взгляд HTTPS-трафика.

Это делает DNS-трафик пользователя невидимым для сторонних наблюдателей за сетью, например, провайдеров. Однако если пользователи обожают DoH и считают его благом для конфиденциальности, провайдеры и производители средств кибербезопасности его ненавидят.

Британский провайдер назвал Mozilla «интернет-злодеем» за планы компании по внедрению DoH, а группу лоббистов от Comcast уличили в подготовке документа касательно DoH, который они планируют представить законотворцам Британии, надеясь предотвратить более широкое распространение протокола.
Читать дальше →

Демистификация принципов квантовых вычислений

Время на прочтение11 мин
Охват и читатели25K

«Думаю, я смело могу сказать, что квантовую механику никто не понимает», — Ричард Фейнман


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

Реверс-инжиниринг приложений после обфускации (Часть 2)

Время на прочтение12 мин
Охват и читатели6.3K

Введение


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

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

Предмет исследования


Продолжаем изучать код плагина к Visual Studio Atomineer Pro Documentation (далее APD). Давайте познакомимся поближе с инструментом и с его возможностями.
Читать дальше →

Реверс-инжиниринг приложений после обфускации

Время на прочтение3 мин
Охват и читатели11K

Введение


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


Предмет исследования


В качестве примера будем изучать код Atomineer Pro Documentation (далее APD). Это плагин для Visual Studio предназначенный для автоматической генерации комментариев в исходных кодах. Для начала установим данный плагин и проверим его работу. Бесплатная версия имеет триальный период и ряд ограничений использования в течении этого времени. Так при добавлении комментариев в файл пользователю выдается сообщение о том, что в течении дня можно обработать только 10 файлов
Читать дальше →

Хождение по мукам или долгая история одной попытки восстановления данных

Время на прочтение5 мин
Охват и читатели35K
На дворе стоял 2019 год. В нашу лабораторию поступил не совсем обычный для нашего времени накопитель QUANTUM FIREBALL Plus KA емкостью 9.1Гб. Со слов владельца накопителя отказ случился в далеком 2004 году по вине вышедшего из строя блока питания, который прихватил за собой жесткий диск и другие компоненты ПК. Далее были хождения по различным сервисам с попытками отремонтировать накопитель и восстановить данные, которые не увенчались успехом. Где-то обещали дешево, но так и не решили проблему, где-то слишком дорого и клиент не пожелал восстанавливать данные, но в итоге диск прошел путь через множество сервисных центров. Неоднократно терялся, но благодаря тому, что владелец заблаговременно позаботился о записи информации с различных наклеек на накопителе ему удалось добиться, чтобы именно его жесткий диск был возвращен из некоторых сервисных центров. Хождения не прошли бесследно, на оригинальной плате контроллера остались множественные следы пайки, а также визуально ощущался недостаток SMD элементов (забегая вперед скажу, что это наименьшая из проблем этого накопителя).


Рис. 1 HDD Quantum Fireball Plus KA 9,1Гб
Читать дальше →

Алгоритм нечеткого поиска TextRadar. Основные подходы (ч. 1)

Время на прочтение5 мин
Охват и читатели9.8K
В отличие от нечеткого сравнения строк, когда обе сравниваемые строки равнозначны, в задаче нечеткого поиска выделяются строка поиска и строка данных, а определить необходимо не степень похожести двух строк, а степень присутствия строки поиска в строке данных.

Постановка задачи


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

Требуется найти в строке данных наиболее близкий к строке поиска по составу и взаимному расположения символов набор фрагментов.

Для оценки качества результата поиска вычислить коэффициент релевантности, значение которого должно лежать в диапазоне от 0 до 1, где 0 должен соответствовать полному отсутствию символов строки поиска в строке данных, а 1 – наличию строки поиска в строке данных в неискаженном виде.

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

Описание алгоритма


Поиск осуществляется в несколько этапов.

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


Матрица совпадений (M) представляет собой двумерную матрицу, количество столбцов которой соответствует длине строки данных, а количество строк – длине строки поиска. Элементы матрицы совпадений принимают значения 0 или 1 в зависимости от того, совпадают или нет соответствующие символы строк за исключением пробелов (разделителей слов).
Матрица совпадений для строки данных «ABCD EF» и строки поиска «ABC» имеет вид:

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

Сверточный слой: методы оптимизации основанные на матричном умножении

Время на прочтение9 мин
Охват и читатели16K

Введение


Данная статья является продолжением серии статей описывающей алгоритмы лежащие в основе
Synet — фреймворка для запуска предварительно обученных нейронных сетей на CPU.

Если смотреть на распределение процессорного времени, которое тратится на прямое распространение сигнала в нейронных сетях, то окажется что зачастую более 90% всего времени тратится в свёрточных слоях. Поэтому если мы хотим получить быстрый алгоритм для нейронной сети – нам нужен, прежде всего, быстрый алгоритм для свёрточного слоя. В настоящей статье я хочу описать методы оптимизации прямого распространения сигнала в свёрточном слое. Причем начать хочется с наиболее широко распространенных методов, основанных на матричном умножении. Изложение я буду стараться вести в максимально доступной форме, чтобы статья была интересна не только специалистам (они и так про это все знают), но и более широкому кругу читателей. Я не претендую на полноту обзора, так что любые замечания и дополнения только приветствуются.
Читать дальше →

Текст любой ценой: RTF

Время на прочтение14 мин
Охват и читатели91K
Что ж продолжим наши изыскания на предмет получения текста из различных форматов данных. Не так давно мы с вами научились вытаскивать текст из zipped-xml-based файлов (odt и docx), а также, в начале этой недели, из pdf. Сегодня мы продолжим с обещанным rtf.

Rich Text Format (он же rtf), вы могли бы подумать, достаточно забытый, хотя и не очень сложный формат представления текстовых данных. Что ж, относительно несложный для получения текста, но за свою историю: от своей первой версии до текущей 1.9.1 — он приобрёл под 300 страниц официально документации и огромное количество надстроек, которые в большей степени нам будут мешать при получении plain text'а. Попробуем их обойти…
Читать дальше →

Как запускается сервер

Время на прочтение9 мин
Охват и читатели77K

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

Информация

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