Por que o 'cat / dev / urandom' quebra seu terminal?

13

Em referência a essa pergunta: link

Como o cat /dev/urandom faz com que alguns emuladores de terminal fiquem malucos?

    
por enthdegree 28.08.2013 / 21:06

4 respostas

20

Embora existam caracteres ASCII normais imprimíveis que são enviados de um lado para outro em um terminal, também há muitos caracteres não imprimíveis usados para o sistema se comunicar com o terminal. Por exemplo, se um programa enviar o caractere 0x07 ("ASCII Bell character"), seu terminal deverá emitir um bipe.

Outras seqüências especiais podem ser usadas para alterar a cor do texto sendo exibido, a direção que é exibida, o título da janela, o tamanho da janela, etc., entre muitas outras coisas.

Quando você

cat /dev/urandom

Um monte de caracteres aleatórios são jogados no seu terminal, e o terminal não pode dizer que não são códigos de controle reais.

Como o programa está efetivamente enviando comandos aleatórios para o terminal, o terminal termina em um estado aleatório, muitas vezes inutilizável.

    
por 28.08.2013 / 21:16
13

usar este comando na verdade mostrará se a NSA está no seu computador a qualquer momento:

strings < /dev/urandom | grep nsa -i

Se você obtiver resultados positivos, é um sinal de que eles estão bisbilhotando em seu computador. Isso funciona até mesmo em máquinas com lacunas de ar, e a razão pela qual seu bash às vezes fica "instável" é por causa de uma contramedida da NSA. Tenha cuidado!

    
por 09.12.2014 / 16:42
4

Algumas das saídas aleatórias serão códigos de escape ANSI ( link ), que podem fazer coisas divertidas como ocultar o cursor ou selecione fontes alternativas. Outra possibilidade são seqüências de unicode: Um teste de bytest aleatório não será válido UTF-8, e provavelmente nem todos os terminais com reconhecimento de unicode lidam com isso graciosamente.

    
por 28.08.2013 / 21:14
1

cat /dev/urandom fornecerá um fluxo de bytes aleatórios entre 0 e 255 , nem todos esses valores são caracteres de texto válidos. Como a janela do terminal foi alimentada com dados inválidos, ela nunca esperou que ela pudesse fazer com que o aplicativo do terminal entrasse em um estado "quebrado".

    
por 28.08.2013 / 21:15