Re: [OT] - Realizzare un semplice keylogger per "tastiera" USB
Gianluca ha scritto:
> Giorgio Luciani ha scritto:
> > gianluca@bucchianico.net ha scritto:
> >> Salve a tutti,
> >> ho la necessità di scrivere un programmino C che sia ingrado di
> >> leggere ciò che una tastiera USB invia.
> >> Il dispositivo non è proprio una tastiera ma un lettore di tessere che
> >> viene visto da Linux (e da Windows) come una testiera USB e quindi se
> >> eseguo una lettura mentre è aperto un editor di testo, sullo schermo
> >> mi compare la sequenza numerica letta e poi va a capo.
> >> Purtroppo io deve intercettare questo evento in background ed eseguire
> >> successivi processi.
> >> Qualcuno può darmi qualche spunto? Ho iniziato a vedere il sorgente di
> >> un keylogger ma è troppo maestoso rispetto a ciò che serve a me.
> >>
> >> Grazie a tutti,
> >> Gianluca
> >>
> >>
> > Ciao, in generale becchi l'output semplicemente con un cat sul device
> > corretto in /dev/input/ (nel mio caso, per la tastiera ps2,
> > /dev/input/event0) e puoi redirigerlo come ti pare (ad es. via pipe)
> > (devi essere root o comunque avere i diritti in lettura).
> > Per trovare a realtime il nome esatto del device usb puoi provare a fare
> > un grep su
>
> > cat /proc/bus/input/devices
>
> > Il problema è poi interpretare i raw data ottenuti come stringhe di
> > caratteri.
> > Prova a vedere qui, per farti un'idea:
> > http://www.linuxquestions.org/questions/showthread.php?t=454869
> > http://www.redsend.org/?p=142
>
> > My two cents
>
>
> Grazie per la risposta.
> Avevo gia provato a stampare l'output di /dev/input/etc...etc... ma
> non era tanto comprensibile!
> Ho visto il link che mi hai dato e cercherò di trasformare lo script
> Python in C...o in PHP!:)
>
> Grazie ancora, se hai novità fammi sapere!
>
> Gianluca
>
A mio avviso l'idea del file che è stata proposta è piuttosto inutile.
Farei tutto via pipe o chiamate dirette all'interno del codice. Il
problema non è dove passi i dati, ma come li converti.
Provo a dare una piccola idea, presa scopiazzando un po' qua e là.
Ti fai un header file con qualcosa tipo:
*char* *decod_key*(*int* key);
*const* *char* *decode_key*(*int* key) {
*switch*(key){
case(2): *return* *'1'*; *break*; //* num row *//
case(3): *return* *'2'*; *break*;
case(4): *return* *'3'*; *break*;
case(5): *return* *'4'*; *break*;
... ...
... ...
}
}
Per avere le associazioni giuste con le tastiere italiane, prova a scaricarti lkl:
http://sourceforge.net/projects/lkl/
(Mai provato, ma visti i sorgenti: nella dir "keymaps" dovrebbero esserci le mappature per la tastiera italiana.
Ogni carattere che leggi lo passi a decode_key e poi lo stampi, lo logghi, lo passi a quel che ti pare.
Ho scritto idiozie? Spero di no, ma non sono un programmatore c. Magari hai più successo su qualche ng specifico.
My (now) four cents.
Saluti
--
Giorgio Luciani
http://www.lucius.it
Reply to: