Obtenha o conteúdo de um terminal

-1

Eu gostaria de fazer um mini game / terminal saver como cmatrix mas no conceito original seria use o conteúdo real do terminal. Existe uma maneira de obter o conteúdo atualmente exibido no terminal em que um script é iniciado?

    
por lvictorino 20.09.2018 / 19:21

3 respostas

3

Existe uma seqüência de escape para consultar o conteúdo do terminal (DECRQCRA). Mais precisamente, ele informa a soma de verificação de uma área retangular, mas, emitindo-a para cada retângulo 1x1, você provavelmente poderia ler o conteúdo da tela. Devido a suas implicações de segurança, a maioria dos emuladores de terminal não o implementa.

No entanto, para obter um efeito cmatrix com o conteúdo da tela, você não precisa ler as células. Você poderia até usar DECCARA para alterar os atributos (por exemplo, invisibilidade, cor, ousadia) de células já existentes. Isto é novamente apenas suportado por alguns emuladores de terminal, e. Kitty .

Definindo regiões de rolagem (superior e inferior, bem como as margens esquerda e direita), eu acho que você deve ser capaz de mover caracteres individuais verticalmente. Eu não tenho certeza, eu não tentei. Mais uma vez, provavelmente só é suportado por alguns emuladores de terminal.

    
por 20.09.2018 / 20:01
2

Não de um modo geral, não. Os programas interagem com um terminal enviando um fluxo de comandos - eles não têm acesso direto à grade de caracteres.

O protocolo de comunicação possui alguns comandos que retornam certas informações. No entanto, tenho certeza de que um comando para retornar o buffer de tela cheia não existe e, se existir, seria considerado um risco de segurança significativo. (Por exemplo, ssh'ing para um servidor permitiria ver o que você fez localmente antes disso.) Isso já aconteceu com algo aparentemente tão pequeno quanto ser capaz de consultar o título

da janela do terminal.

(Compare isso com o "console" do Windows, que sempre age como um buffer de caracteres e fornece APIs oficiais para isso.)

    
por 20.09.2018 / 19:34
1

Sim, há uma maneira de fazer isso ; mas requer programação contra a biblioteca NCurses, ou algo similar. NCurses é uma camada de compatibilidade entre o programa do usuário e várias APIs de terminais diferentes.

Quanto ao vetor de ataque de um script em uma sessão remota podendo acessar o terminal local, isso seria um problema para o SSH lidar, já que está retransmitindo todos os dados entre o sistema remoto e o local - incluindo o terminal comandos.

    
por 20.09.2018 / 19:55