Pull to refresh
152
0.1
Павел Довгалюк @Dovgaluk

Системный программист

Send message

Зачем искать поверхность атаки для своего проекта

Level of difficultyEasy
Reading time7 min
Views1.5K

Любые программные системы включают в себя нужные и не очень нужные пакеты. Получается огромный объём кода (для одного несложного сайта npm list -a выдаёт список из 4256 зависимостей). А так как «весь код — это ваш код», то такие зависимости надо тестировать. И регулятор требует, да и просто собственные продукты хочется защитить от вторжений, утечек и других неприятностей.

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

Криптография и другие вычисления на детских логических машинах

Level of difficultyEasy
Reading time6 min
Views1.9K

Электрическая игрушка "Детская логическая машина" (ДЛМ) представляет собой устройство, позволяющее решать несложные логические задачи про приведённым в настоящей инструкции рисункам и описаниям программ.

ДЛМ способна отвечать на вопросы, решать поставленные перед ней задачи, быть партнёром в играх и даже экзаменатором.

На коробке предупреждение, что игрушка только для детей 13-15 лет. Читайте статью с осторожностью, если не попадаете в указанный диапазон.

Читать далее
Total votes 19: ↑18 and ↓1+24
Comments7

Как найти поверхность атаки незнакомых приложений с помощью Natch

Level of difficultyMedium
Reading time10 min
Views2.3K

Поиск ошибок в программах дело творческое и интересное. Чаще всего мы ищем ошибки в своём коде, чтобы его починить. Кто-то может искать ошибки в чужом коде, чтобы его сломать или поучастовать в баунти-программе.

А вот где именно искать ошибки? Какие функции тестировать? Хорошо, если программа полностью ваша. Но что если вы занимаетесь тестированием, а эти программисты постоянно придумывают что-то новое? Никаких рук не напасёшься.

Как хоть немного автоматизировать процесс?
Total votes 8: ↑7 and ↓1+6
Comments0

Релейный компьютер, телетайп и интересный алгоритм игры в крестики-нолики

Reading time10 min
Views7.5K

Крестики-нолики – классическая игра, которую наверное пытался написать каждый. При этом программы иногда получаются довольно запутанные, несмотря на простоту правил. Электромагнитные реле – классическая элементная база для компьютеров и калькуляторов. Они тёплые, ламповые и прикольно щёлкают. Если добавить к этому телетайп, то получится игровая консоль в стиле 1940х.

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

Демосцена на релейном компьютере

Reading time3 min
Views5.1K

Какой компьютер без демосцены? Обратимся к классике от @Manwe_SandS@frog:

До моего визита на Assembly'99 я каждый pаз удивлялся pезультатам голосования на заpубежных demo party. Мне было непонятно, как столько людей могут отдавать голоса за pаботы состоящие из тупой (я пpошу пpощения, но это именно так) последовательности эффектов - плазмы, туннеля, огня, вpащающегося куба (тоpа) и пpочих подобных вещей, не объединенных никаким сюжетом, не несущими никакой идеи.

То что нужно! Возьмём первый попавшийся релейный компьютер и понаделаем эффектов.

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

Игры наших бабушек

Reading time7 min
Views9.9K

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

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

Пишущая машинка из телетайпа и Arduino

Reading time4 min
Views7.8K

Consul 254 похож на принтер, но это не принтер. Ещё у него есть клавиатура, но при этом печатающая часть никак не связана со вводом, поэтому так просто получить что-то на бумаге не выйдет. Эту проблему мы и будем сегодня решать с помощью Ардуино и цветных проводочков. Конечно всё уже украдено до нас, и такую вещь уже описывали в журнале Моделист-Конструктор в 1989 году. Правда при этом использовался компьютер "Специалист", а не Ардуино.

Читать далее
Total votes 41: ↑40 and ↓1+55
Comments14

Портируем Maniac Mansion (1987) на ZX Spectrum Next (2017)

Reading time11 min
Views5.1K

Maniac Mansion - это классическая приключенческая игра с интерфейсом point and click. Она вышла в конце 80х годов для платформ Commodore 64, Apple II, Atari ST, Amiga, IBM PC и NES. Популярный в наших краях ZX Spectrum этой игры не увидел.

Может быть дело в том, что графический режим ZX Spectrum поддерживает только два цвета на знакоместо. А может, потому что аппаратных спрайтов там не было (хотя в Apple II их не было тоже).

Пришло время исправить эту несправедливость и портировать Maniac Mansion на улучшенный ZX Spectrum - ZX Spectrum Next.

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

Используем телетайп Consul 254 вместо клавиатуры для Arduino

Reading time4 min
Views4.7K

Из документации:

Электрифицированная пишущая машина Consul 254 предназначена:

а) для ввода алфавитно-цифровой информации в ЭВМ при печатании оператора на клавиатуре машины

б) для вывода алфавитно-цифровой информации в порядке печати на лист или рулон бумаги по сигналам, посылаемым от ЭВМ

в) для применения в устройствах подготовки данных или в других устройствах, параметры которых соответствуют параметрам указанной машины

Сегодня мы займёмся пунктом "а" - будем читать данные с клавиатуры с помощью ЭВМ Arduino Uno.

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

Карты, фаззинг, OSM: ищем поверхность атаки для сложного приложения

Reading time13 min
Views3.9K

Фаззинг - это такое тестирование, в котором не надо придумывать тесткейсы, потому что умная машина (или настойчивый алгоритм перебора) делает это за вас.

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

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

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

Как коллекционировать старые компьютеры и не запутаться в них

Reading time4 min
Views4.9K

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

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

Обратная отладка виртуальных машин в QEMU

Reading time7 min
Views5.9K

Обратная отладка - это как прокрутить фарш назад. Как запихнуть желток и белок обратно в скорлупу. Как сделать доллар по 6 рублей. В общем, она помогает нам находить источники сбоев в программах, перемещаясь "назад во времени" от места их возникновения.

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

Как написать игру для компьютера, в котором нет устройств ввода и вывода

Reading time3 min
Views14K
Что можно сделать с компьютером на электромагнитных реле у которого нет никаких устройств ввода, а из устройств вывода — только дамп восьми регистров?

Поиграть в игры, конечно! Играли же древние люди на калькуляторах МК-61/52, которые лишь немногим нагляднее.


Total votes 37: ↑35 and ↓2+33
Comments19

Когда в gcc 16-битные адреса, а памяти внезапно 256к

Reading time3 min
Views6.1K

… или как выстрелить себе в ногу на Arduino




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

Сейчас в нём установлена плата Arduino Mega с процессором ATmega2560, в котором целых 256 килобайт флеш-памяти. Предполагалось, что этого хватит очень надолго, ведь игры получаются простые (экран-то всего лишь 64x64 пикселя). В реальности мы столкнулись с некоторыми проблемами уже по достижении прошивкой размера примерно 128 килобайт.
Total votes 18: ↑18 and ↓0+18
Comments14

Мини-бенчмарк домашних релейных компьютеров

Reading time4 min
Views6.3K
Леонард: «Беспредельный Шелдон»?!
Шелдон: «Беспредельный Шелдон» бьёт все остальные карты и не нарушает запрет на изготовление карт в домашних условиях, потому что я сделал эту на работе.

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

Запускал я программы только на своём компьютере (по понятным причинам), но и для остальных нашёл несколько программ, написанных авторами, чтобы можно было сравнить хотя бы их сложность.

Числа Фибоначчи мы уже считали в прошлый раз, поэтому продолжим с программами чуть посложнее.
Total votes 22: ↑22 and ↓0+22
Comments6

Разработка игр для консоли на Arduino в летнем лагере

Reading time3 min
Views7.9K
В прошлом году мы в летней компьютерной школе проводили кружок по Arduino. Там поучаствовали и преподаватели, в результате чего появилась 8-битная игровая консоль с экраном 64x64.

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


4095 светодиодов и все-все-все
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments6

Эмулятор в эмуляторе для проигрывания чиптюн-мелодий на YM2149F

Reading time4 min
Views6.2K

Кто помнит Tetris 2 на Спектруме? Там были куча уровней, возможность играть вдвоём и классная музыка.

Недавно мы сделали 8-битный компьютер для несложных игр, но никаких звуковых возможностей в нём не предусмотрели. И вот захотелось добавить туда какую-нибудь 8-битную музыку. Мне вспомнилась именно мелодия из Tetris 2 (много за ним часов проведено), поэтому я стал с ней ковыряться.

Процессор ATmega328P в нашем компьютере большую часть времени занят отрисовкой изображения, поэтому времени на синтезирование нормальной музыки совсем нет. Значит нам понадобится звуковой процессор YM2149F (он же AY-3-8910), такой же как в ZX Spectrum и других компьютерах.
Total votes 14: ↑12 and ↓2+10
Comments35

A fistful of relays. Часть 4. Система команд или что можно уместить в 8 машинных инструкций?

Reading time4 min
Views7.8K

Наконец-то можно запустить в моём компьютере на электромагнитных реле программу длиннее одной инструкции. Сейчас в нём есть ПЗУ на 8 команд, процессор с АЛУ и 8 восьмибитных регистров (один из которых PC).

Всего процессор поддерживает 5 групп инструкций: Арифметико-логические операции (ALU), Загрузка числа в регистр (MOVI), пересылка между регистрами (MOV), Остановка работы (HALT), Работа с памятью (LDST). Но есть нюансы…
Total votes 31: ↑31 and ↓0+31
Comments12

Как удалённо отлаживать через WinDbg не включая отладочный режим Windows

Reading time4 min
Views13K
Иногда при анализе какой-нибудь платной программы малвари случается так, что она не хочет нормально работать, если в памяти есть отладчик или включён отладочный режим Windows.
В таких ситуациях помогает использование виртуальной машины с подключённым к ней отладчиком (например, GDB или IDA). Это если программа не пытается «сломаться» и в виртуальной машине тоже.
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments1

Backspace Invaders или как подключить светодиодный дисплей 64x64 к Arduino

Reading time3 min
Views17K

4095 светодиодов и все-все-все

Как ни удивительно, с выводом изображения на такой дисплей вполне справляется контроллер ATmega328, что лежит в основе Arduino Uno. Из этого всего получилась «карманная» консоль (весом несколько килограмм), в которую прошита игра по мотивам Space Invaders. В планах придумать что-нибудь ещё, ведь свободной памяти осталось полно.

Под катом вы сможете прочитать о том, как такой дисплей устроен и как им можно управлять.
Total votes 35: ↑35 and ↓0+35
Comments32
1

Information

Rating
3,581-st
Location
Великий Новгород (Новгород), Новгородская обл., Россия
Date of birth
Registered
Activity

Specialization

Software Architect
Lead
C++
System Programming
Compilers
C
Algorithms and data structures
QEMU