Хакер #305. Многошаговые SQL-инъекции
Финский инженер Пекка Вяанянен (Pekka Väänänen) поставил перед собой непростую и неординарную задачу: вывести действие игры Quake 1 на экран осциллографа в реальном режиме времени.
На первый взгляд, задача кажется неподъёмной: как можно отобразить игру на монохромном экране, который принимает аналоговый сигнал? Ведь осциллограф с электронно-лучевой трубкой предназначен для визуализации волн, то есть амплитудных и временных параметров электрического сигнала, подаваемого на вход прибора. Тем не менее, инженер сумел найти решение (видео).
Для подачи сигнала Пекка использовал аудиокабель от наушников, а осциллограф перевёл в режим X-Y. Затем он нашёл способ, как кодировать изображение в звуковом сигнале, чтобы осциллограф выводил на экране нужную картинку. Пришлось написать специальный конвертер. Кстати, подобный приём использовался в знаменитом демо Youscope от 2007 года, но там осциллограф показывает заранее подготовленное отрендеренное видео. Здесь же Quake кодируется в реальном времени.
Пропускной способности аудиотракта хватает на передачу примерно 1000 строк за раз. Главной проблемой стал обход встроенных звуковых фильтров. Обойти их всё-таки не удалось, так что пришлось адаптировать конвертер. Для генерации сигнала в реальном времени инженер использовал программы ASIO и PortAudio, а также движок рендеринга Darkplaces.
В принципе, с помощью такого способа можно даже играть в Quake, глядя на экран осциллографа. Хотя это не слишком удобно.