O keylogger das teclas de log não funciona na caixa do Ubuntu no Vagrant; parece não ver eventos de teclado

1

Estou tentando logkeys para trabalhar em uma caixa Vagrant "ubuntu / precise64" para um projeto de trabalho, mas nada está sendo registrado. Passei várias horas lendo e tentando rastrear o problema.

O código das teclas de log localiza o dispositivo correto "/ dev / input / event2" e o fopens:

input_fd = open(args.device.c_str(), O_RDONLY);

O código deve então inserir um loop while quando for lido:

while (read(input_fd, &event, sizeof(struct input_event)) > 0) {

O loop while não é inserido (confirmado com instruções de depuração). Parece que nenhum evento de teclado está realmente acontecendo. Isso tudo pode ser porque eu estou rodando esta é uma VM, mas eu não tenho certeza como algumas outras coisas saem. Por exemplo, por vários posts como este , parece que o event2 está em fato o dispositivo correto no meu Ubuntu VM:

cat /proc/bus/input/devices
...
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input2
...
B: EV=120013
...

Confirmei que as teclas de log realmente escolheram ouvir o evento2 por meio de instruções de depuração para o console incluído no código.

Quando eu cat /dev/input/event2 e tipo, as teclas são mostradas no console. Eu tinha pensado que esse era um teste preciso para determinar o evento correto a ser ouvido; no entanto, quando eu cat /dev/input/event4 , que é suposto ser um mouse, a mesma coisa acontece - teclas pressionadas ecoam no console.

Eu não tenho uma máquina Ubuntu para testar. Eu poderia tentar em uma máquina VirtualBox com um ISO Ubuntu, mas não siga como isso seria diferente do que estou fazendo agora. Eu tentei outras caixas do Vagrant Ubuntu também (ubuntu / trusty e outra) sem mudanças. Eu gosto da velocidade e conveniência de fazer meu dev na caixa do Vagrant. Bem, geralmente é bem rápido e conveniente, mas não no momento.

Alguém tem algum insight sobre o que pode estar acontecendo e o que está faltando?

Muito obrigado, jz.

    
por J.Z. 06.02.2016 / 00:21

1 resposta

1

Respondendo a minha pergunta para a posteridade, no caso de alguém fazer algo semelhante, o que é altamente improvável!

Nos meus testes, eu tinha apenas me conectado à caixa com vagrant ssh e estava digitando na minha janela de terminal original. Mudei meu arquivo Vagrant para incluir um gui, com config.vm.provider "virtualbox" { |v| v.gui = true } , e o vagrant lançou uma janela CLI com o convidado. A digitação no terminal funcionou, e a depuração foi enviada para o terminal original.

Infelizmente eu não tenho tempo para investigar exatamente porque as teclas na caixa do host não estavam aparecendo no convidado ... provavelmente algo óbvio que está faltando. Se alguém tiver uma boa ideia, por favor poste como eu estou interessado.

    
por J.Z. 06.02.2016 / 16:35