Pull to refresh
8
0

Программист

Send message

Как установить ботов для StarCraft II

Reading time6 min
Views12K

(с) Blizzard Entertainment

В StarCraft II есть встроенные боты, и все с ними хорошо, за исключением того, что они немного тупые, но речь пойдет не о них. В 2017 году разработчик игры компания Blizzard Entertainment опубликовала API, позволяющий создавать внешних ботов. Однако, по какой-то странной причине Blizzard рассматривает этот API как сугубо исследовательский проект, где боты должны сражаться только друг с другом. Нормальной возможности поиграть человеку с ботами они почему-то не сделали, хотя многие геймеры рассматривают ботов как довольно неплохой инструмент тренировок.

Тем не менее все не так плохо. Раз штатной возможности нет, то будем использовать нештатную. Мы все же настроим ботов и повоюем против них. Потом мы с вами, движимые исследовательским порывом, разберемся как устроен АPI, и поднимем окружение разработки, в котором сможем сами писать подобных ботов.
Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments3

Мгновенные снепшоты postgres на tablespace и btrfs

Reading time4 min
Views7.7K

Для работы бывает полезно иметь несколько копий одной реальной базы для экспериментов, фикстур или просто тестовых приложений. База растет и время копирования через разворачивание дампа или с помощью шаблона также возрастает до утомительных величин. Для решения этого кейса уже описаны варианты использования файловой системы с поддержкой CoW - Btrfs. В интернете находил  такие инструкции, они сводятся к тому, что делается снепшот всего сервера. И для работы второго "скопированного" нужно перегенерировать pid и сменить порт для предотвращения конфликтов. Этот способ довольно универсальный относительно конфигурации баз на сервере, но кажется имеет ограничение для неопределенного кол-ва параллельных снепшотов серверов.

В этой статье предлагаю свой вариант реализации снепшотов на одном экземпляре сервера postgres и одной базы, на произвольное кол-во копий.

Инструкция linux only, про поддержку CoW файловых систем на Windows не в курсе.

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments9

Народная дозиметрия. Бюджетный детектор радиации своими руками

Reading time7 min
Views20K

Сегодня мы изготовим простой и бюджетный DIY-дозиметр на базе wifi-контроллера ESP32 и платы RadSens. В качестве сенсора будет использована популярная трубка СБМ20. 

Целью статьи является создание максимально подробной инструкции по сборке. Если повторить описанные шаги сможет самый юный инженер-дозиметрист - мы достигли успеха.

Читать далее
Total votes 34: ↑33 and ↓1+32
Comments29

Пишем аудио-разведчик своими руками

Reading time12 min
Views7.7K

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

Что мы в итоге хотим получить и какой алгоритм работы реализовать:

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

2. Клиент, который подключается к серверу и начинает принимать аудио поток и воспроизводить его в режиме реального времени. Для того, чтобы клиент мог правильно (в нужном формате) открыть устройство воспроизведения звука, он получает нужную мета информацию от сервера в Hello сообщении.

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments3

15 лучших и бесплатных инструментов компьютерного криминалиста

Reading time4 min
Views33K

Добрый день Хабр. Сегодня, мы с вами окунемся в «О дивный мир» форензики. В данной статье Мы решили собрать программы, которые помогут Вам в проведении расследований и, что немаловажно, будут при этом бесплатными.

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

Читать далее
Total votes 39: ↑37 and ↓2+35
Comments9

Получаем список российских IP-адресов

Reading time4 min
Views40K

Мир меняется. И в текущей ситуации становится полезным список IP-адресов, условно принадлежащих автономным системам той или иной страны.

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

Читать далее
Total votes 31: ↑30 and ↓1+29
Comments10

Использование procmon от sysinternals для диагностики проблемных мест в исполняемом коде

Reading time3 min
Views9.9K

Сразу хочу сказать, что это только демонстрация возможностей procmon для определения проблемных мест в программном обеспечении. 1С83 была выбрана для опытов из-за неочевидности способа поиска точки входа в процедуру проверки наличия установленных эмуляторов ключа. Она выполняется через различное время после старта порядка 3~10 мин, и вызывает появление окна «нарушение целостности системы» с последующим закрытием приложения. Я призываю всех использовать только лицензионное программное обеспечение. Рассматривать эту статью, как описание возможности взлома, нет смысла. Хотя бы потому, что 1С83 давно взломана и без меня. Любой 1с-ник за секунду вам скажет, как ее запустить без ключа.

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

Итак, ставим фильтр по имени процесса 1с.

Читать далее
Total votes 16: ↑15 and ↓1+14
Comments5

Атака Ферма на RSA

Reading time4 min
Views15K

В 1643 году Пьер де Ферма предложил метод факторизации. Этот метод позволяет эффективно раскладывать целые числа на простые множители.

Алгоритм шифрования и подписи RSA основывается на том, что факторизация — это задача с высокой сложностью. Открытый ключ RSA содержит составное число (обычно называемое N), которое является произведение двух простых чисел (обычно p и q).

Если ключи RSA генерируются из «близко стоящих» простых чисел, то RSA можно взломать с помощью метода факторизации Ферма. И хотя это довольно известный факт, но, насколько я знаю, уязвимые ключи RSA не обнаруживались в «дикой природе» — до сегодняшнего дня.

Я применил метод факторизации Ферма к большим наборам открытых ключей RSA. И я смог обнаружить небольшое количество уязвимых ключей, которые принадлежали принтерам Canon и Fujifilm (первоначально выпускавшихся под маркой Fuji Xerox). В этих устройствах используется криптографический модуль от компании Rambus.
Читать дальше →
Total votes 43: ↑34 and ↓9+25
Comments22

Парсинг FIT файлов c данными тренировок

Reading time7 min
Views5.6K

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

Читать далее
Total votes 12: ↑11 and ↓1+10
Comments3

База данных с 1 трлн записей и опыт использования отображаемых на память файлов

Reading time4 min
Views6.2K

До подобного момента надо ещё дожить, но однажды случается и такое. В один прекрасный день мне понадобилась БД с 1 триллионом записей. Причём, понадобилась на домашнем компьютере, где свободного места 700 гигабайт на двух дисках.

По счастью, моя БД не совсем обычная: размер записи всего 1 бит. В базе должны храниться данные о простых числах. Соответственно, вместо того, чтобы хранить сами числа, проще хранить один бит (1 - простое число, 0 - композитное). И тогда, чтобы хранить один триллион битов, нужно всего 116 ГБайт.

Однако сделав такой файл, мы получили только лишь хранилище, но не собственно БД. Нам нужен код, который будет записывать и считывать данные. Традиционный FileStream был отброшен сразу, по причине его медленности. Постоянное чередование Seek и чтения/записи по 1 байту даёт результат примерно в 100 раз худший, чем сопоставленные в памяти файлы, опытом использования которых я и хочу поделиться в этой статье.

Читать далее
Total votes 10: ↑9 and ↓1+8
Comments33

Отображение данных из подписанного ЭЦП PDF-файла в Joomla

Reading time14 min
Views14K

На Joomla CMS сделано очень много сайтов для образовательных учреждений самого разного уровня и сложности. На сайты образовательных учреждений распространяется (на момент написания статьи) Приказ Рособрнадзора от 14.08.2020 №831, согласно которому документация должна быть на сайте образовательного учреждения в текстовом и табличном виде, а так же в виде файлов, подписанных электронной подписью (ЭЦП, ЭП).

Данная статья показывает, как можно автоматизировать отображение данных о подписанте из PDF-файлов применительно к Joomla CMS (и не только), дабы избежать огромного количества ручной работы при изменении документации.

В конце статьи прикладывается ссылка на скачивание готового плагина для Joomla 3 и 4.

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments7

AccessUSB: «флешка всевластия» для телевизоров LG

Reading time7 min
Views50K

Многие современные телевизоры имеют скрытые сервисные меню, через которые можно посмотреть и изменить различные параметры, недоступные в обычном пользовательском меню. В телевизорах LG есть 2 основных сервисных меню - InStart и EzAdjust, которые можно вызвать посылкой "секретных" ИК кодов, отсутствующих на обычном пульте. Подробности о том, как открыть эти меню, легко найти в интернете, не буду на этом останавливаться, один из вариантов - в этой статье. К сожалению, многие интересные опции в сервисных меню были недоступны для изменения.

В меню InStart меня заинтересовала строка Access USB Status. Гугление не давало никакой информации о том, что это за Access USB, но интуиция подсказывала, что это что-то интересное.

Читать далее
Total votes 186: ↑186 and ↓0+186
Comments46

Программирование необычных шахмат

Reading time18 min
Views19K

Написание своего шахматного движка - обширная тема, про которую пишут целые книги.

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

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

Я запрограммировал 15 шахматных вариаций - для каждой опишу неожиданные ходы и результаты партий компьютера друг с другом.

Читать далее
Total votes 67: ↑67 and ↓0+67
Comments17

Утилита времен «динозавров»: история системного вызова chroot и его применение в современности

Reading time13 min
Views25K

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

Этот простой системный вызов подменяет местонахождение «корня» файловой системы, «заключая» программу в специально созданное ограниченное окружение. Самая распространенная ситуация — восстановление загрузки операционной системы с помощью live-образа. Но при создании chroot о таком применении не задумывались.

Чтобы найти истоки появления chroot в *NIX-подобных операционных системах, нужно пройти немалый путь по истории IT. В этой статье я расскажу про появление chroot и его применение в современном мире. А еще покажу проекты, которые позволяют прикоснуться к операционным системам эпохи, когда Интернета не было.
Читать дальше →
Total votes 107: ↑106 and ↓1+105
Comments8

Обход блокировки OpenVPN в Египте

Reading time3 min
Views35K

Во время поездки в отпуск в Египет я приобрел сим карту местного оператора и решил посмотреть как быстро будет (по сравнению с традиционно медленным wifi отеля) работать интернет включая подключение к нашей внутренней инфраструктуре.

Поскольку власти Египта используют DPI для блокирования VPN стандартный OpenVPN не работает, так как блокируются авторизационные пакеты как по tcp, так и по UDP.

Данная статья показывает методы обхода DPI которые я испробовал для обхода блокировок OpenVPN

Исследование и результаты
Total votes 14: ↑14 and ↓0+14
Comments46

Управляем подсветкой клавиатуры при смене языка ввода

Reading time7 min
Views13K

Недавно я купил себе клавиатуру от Corsair модели K55 RGB Pro. У нее есть модная нынче RGB-подсветка, а чтобы ее настраивать, производитель предлагает скачать программу iCUE. На сайте написано, что некоторые игры могут управлять подсветкой совместимых устройств. Я заинтересовался, как они это делают. Гугл обнаружил официальный SDK с примерами, а также документацию. Я решил сделать что-то полезное для себя, а заодно посмотреть, как создаются приложения под Windows.

Мой код (для Visual Studio) можно найти здесь.

Подробнее о том, как я это сделал, примеры кода и как это выглядит - под катом.

Читать далее
Total votes 38: ↑37 and ↓1+36
Comments29

Как сделать стрим в Postgres?

Reading time4 min
Views9.8K

На одной конференции мне задали вопрос (спасибо Александру!): как сделать стрим в PostgreSQL? Представьте, что имеется bytea и вы к нему хотите что-то дописать. Люди столкнулись с тем, что на это в PostgreSQL  тратится гигантское время  и растет WAL-трафик. 

Расскажу, что с этим возможно сделать — это будет еще один пример оптимизации TOAST (о чем я недавно писал), на на этот раз — для быстрой записи потока бинарных данных. На самом деле мой коллега, Никита Глухов, за несколько часов сделал расширение, которое «вылечило» проблему, и мы даже успели рассказать про это на сессии блиц-докладов на PGConf.Online 2021.

Читать далее
Total votes 33: ↑33 and ↓0+33
Comments2

Испытание по криминалистической экспертизе дампа .NET

Reading time5 min
Views5.1K

Это испытание с MetaCTF CyberGames 2021, в рамках которого нужно было выполнить криминалистическую экспертизу дампа памяти .NET. Проведение такой экспертизы может быть многим незнакомо, так что, надеюсь, данная статься окажется полезной.
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments0

Шарим (в) консоль

Reading time5 min
Views18K
Мы уже все привыкли, что конференции проводятся виртуально. Мы все работаем через зумы, скайпы, миты и тимзы. Удобно, конечно, но у нас есть одна занудная проблема. Когда нам, программистам надо расшарить экран, мы тяжело вздыхаем и нажимаем кнопку Share Screen. Всё это не без проблем.


Как показать детям те прелести, которые происходят в консоли?

Самое неприятное — это когда возникает необходимость показать какую-то ссылку на экране. После завершения операции в консоли отобразилась ссылка, или ключ, который надо расшарить с командой. Естественно, приходится выделять, копировать и «дублировать в чатик». Особенно это неудобно, когда в чатик надо продублировать то, что выплюнула тебе какая-нибудь команда терминала. Строки, конечно же, заботливо съедут, форматирование потеряется, а цвета поблёкнут.
Читать дальше →
Total votes 83: ↑79 and ↓4+75
Comments27

Запросы в PostgreSQL: 6. Хеширование

Reading time20 min
Views17K

В предыдущих статьях я рассказал про этапы выполнения запросов, про статистику, про два основных вида доступа к данным — последовательное сканирование и индексное сканирование, — и перешел к способам соединения.

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

Читать далее
Total votes 14: ↑14 and ↓0+14
Comments0

Information

Rating
Does not participate
Location
Россия
Registered
Activity