[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: