Differences

This shows you the differences between two versions of the page.

Link to this comparison view

so2:laboratoare:lab05:exercitii [2018/03/21 11:35]
ionel.ghita
so2:laboratoare:lab05:exercitii [2019/03/20 11:49] (current)
gabriel.bercaru [1. [2.5p] Alocare de porturi I/O] - fixed typo ('kdb' instead of 'kbd')
Line 141: Line 141:
  
 Descărcați modulul din kernel folosind comanda<​code>​ Descărcați modulul din kernel folosind comanda<​code>​
-rmmod kdb+rmmod kbd
 </​code>​ și verificați acum conținutul fișierului ''/​proc/​ioports'';​ observți că a dispărut alocarea spațiului I/O pentru cele două porturi. </​code>​ și verificați acum conținutul fișierului ''/​proc/​ioports'';​ observți că a dispărut alocarea spațiului I/O pentru cele două porturi.
  
Line 207: Line 207:
 <note tip> <note tip>
 Pentru afișare în cadrul handler-ului de întrerupere folosiți o construcție de forma:<​code>​ Pentru afișare în cadrul handler-ului de întrerupere folosiți o construcție de forma:<​code>​
-pr_info("​IRQ:% dscancode = 0x% x (% u,% c\ n" + pr_info("​IRQ %dscancode=0x%x (%u) pressed=%d ch=%c\n", 
-        irq_no, scancode, scancode, ​scancode);+ irq_no, scancode, scancode, ​pressed, ch);
 </​code>​ </​code>​
 unde ''​scancode''​ este valoarea registrului citit cu ajutorul funcției ''​i8042_read_data()''​. unde ''​scancode''​ este valoarea registrului citit cu ajutorul funcției ''​i8042_read_data()''​.
Line 256: Line 256:
 <note tip> <note tip>
 Pentru afișare în cadrul handler-ului de întrerupere folosiți o construcție de forma:<​code>​ Pentru afișare în cadrul handler-ului de întrerupere folosiți o construcție de forma:<​code>​
- printk(LOG_LEVEL "IRQ %d: scancode=0x%x (%u) pressed=%d ch=%c\n",​+ pr_info(LOG_LEVEL "IRQ %d: scancode=0x%x (%u) pressed=%d ch=%c\n",​
  irq_no, scancode, scancode, pressed, ch);  irq_no, scancode, scancode, pressed, ch);
 </​code>​ </​code>​
Line 279: Line 279:
 Dimensiunea curentă a buffer-ului este dată de câmpul ''​count''​ din structura de tip ''​struct kbd''​ aferentă dispozitivului. Câmpul ''​put_idx''​ specifică următoarea poziție de scriere, iar ''​get_idx''​ următoarea poziție de citire. Urmăriți implementarea funcției ''​put_char''​ pentru a observa cum sunt adăugate datele în buffer-ul circular. Dimensiunea curentă a buffer-ului este dată de câmpul ''​count''​ din structura de tip ''​struct kbd''​ aferentă dispozitivului. Câmpul ''​put_idx''​ specifică următoarea poziție de scriere, iar ''​get_idx''​ următoarea poziție de citire. Urmăriți implementarea funcției ''​put_char''​ pentru a observa cum sunt adăugate datele în buffer-ul circular.
 </​note>​ </​note>​
-==== 4. [2.5p] Citirea bufferului printr-un apel ''​read''​ ====+==== 4. [2p] Citirea bufferului printr-un apel ''​read''​ ====
  
 Pentru a avea acces la datele colectate de keylogger va trebui să le transmitem în user space. Facem acest lucru prin intermediului unui dispozitiv de tip caracter (''/​dev/​kbd''​). La citirea din acest dispozitiv de tip caracter vom primi datele din buffer-ul din kernel space în care am colectat tastele apăsate. Pentru a avea acces la datele colectate de keylogger va trebui să le transmitem în user space. Facem acest lucru prin intermediului unui dispozitiv de tip caracter (''/​dev/​kbd''​). La citirea din acest dispozitiv de tip caracter vom primi datele din buffer-ul din kernel space în care am colectat tastele apăsate.
Line 324: Line 324:
 O să obțineți conținutul bufferului keylogger-ului din kernel space. O să obțineți conținutul bufferului keylogger-ului din kernel space.
  
-==== 5. [1p] Curățarea buffer-ului la scriere ====+==== 5. [1.5p] Curățarea buffer-ului la scriere ====
  
 Dorim să %%"​curățăm"​%% buffer-ul atunci când se scrie în device node-ul asociat driver-ului. În acel moment buffer-ul va fi resetat: conținutul său va fi resetat și dimensiunea va fi ''​0''​. Dorim să %%"​curățăm"​%% buffer-ul atunci când se scrie în device node-ul asociat driver-ului. În acel moment buffer-ul va fi resetat: conținutul său va fi resetat și dimensiunea va fi ''​0''​.
so2/laboratoare/lab05/exercitii.1521624922.txt.gz · Last modified: 2018/03/21 11:35 by ionel.ghita
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0