Почему `cat /dev/urandom` ломает ваш терминал?

В связи с этим вопросом: https://serverfault.com/questions/534449

Как cat /dev/urandom заставить некоторые терминальные эмуляторы работать шатко?

4 ответа

Решение

В то время как есть обычные печатные символы ASCII, которые отправляются туда и обратно на терминале, есть также много непечатаемых символов, которые используются системой для связи с терминалом. Например, если программа отправляет символ 0x07 ("ASCII Bell персонаж"), ваш терминал должен подать звуковой сигнал.

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

Когда ты

cat /dev/urandom

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

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

Фактически использование этой команды покажет, есть ли АНБ на вашем компьютере в данный момент:

strings < /dev/urandom | grep nsa -i

Если вы получаете какие-либо положительные результаты, это явный признак того, что они просматривают на вашем компьютере. Это даже работает на машинах с воздушным зазором, и причина, по которой ваш удар иногда становится "шатким", заключается в контрмеры АНБ. Быть осторожен!

Некоторым случайным выводом будут экранирующие коды ANSI ( http://en.wikipedia.org/wiki/ANSI_escape_code), которые могут делать такие забавные вещи, как скрытие курсора или выбор альтернативных шрифтов. Другой возможностью являются последовательности Юникода: случайный поток байтов не будет действительным UTF-8, и, вероятно, не все терминалы с поддержкой Юникода обрабатывают это изящно.

cat /dev/urandom даст вам поток случайных байтов между 0 а также 255не все эти значения являются допустимыми текстовыми символами. Поскольку окно терминала передавало недопустимые данные, оно никогда не ожидало, что оно может перевести приложение терминала в "сломанное" состояние.

Другие вопросы по тегам