INHOUDSOPGAWE:
Video: Morsekode -sleutelbord: 5 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
Hierdie program wys u hoe u 'n c ++-program kan skep wat 'n sleutel-logger-benadering gebruik om die sleutel te vind wat ingedruk word en die waarde van die Morse-kode te genereer deur die rolvergrendeling op u sleutelbord te gebruik (wie gebruik dit selfs?). Hierdie projek bestaan uit 41 verskillende programme wat met mekaar verweef en naatloos met mekaar omgaan en drie tale tussen die programme vertaal. Daar is nie veel foto's in hierdie artikel nie, aangesien die projek volledig op rekenaarkode gebaseer is. Vir hierdie projek benodig u: 'n sleutelbord met 'n blitslotlig Notepad Iets wat c ++ - kode kan saamstel (ek het CodeBlocks gebruik)
Wat het jy gemaak? Ek het 'n c ++ - program gemaak wat toetsaanslagen in Morse -kode vertaal deur die gebruik van vb -scriptprogramme wat ek gemaak het. Hoe het jy dit gemaak? Ek bestee 'n geruime tyd navorsing oor c ++, Morse -kode en vb -script, aangesien ek dit ook nie ken nie, en na 'n rukkie het ek die nodige kennis gehad om hierdie program te maak. Ek het 'n paar uur na die ondersoek bestee om 'n eenvoudige toetsaanslagprogram te ontwikkel, en daarna nog meer navorsing gedoen oor die opening van programme en die uitvoer van programme op die agtergrond (onopspoorbaar). Ek het hierdie metodes gebruik om 'n c ++ - program te skep wat werk sonder om die gebruiker te onderbreek of ruimte op die skerm in beslag te neem (dit loop op die agtergrond). Ek het ook 'n bondel lêer gemaak wat die c ++ program doodmaak as die gebruiker klaar is. Waar het jy dit gemaak? Ek het hierdie programme op die gesinsrekenaar tuis gemaak en tyd gevind toe ander familielede nie die rekenaar hoef te gebruik nie. In die loop van hierdie projek het ek amper 3 nuwe tale geleer en die vermoë ontwikkel om die tale met mekaar te laat "kommunikeer". Ek het ook die ingewikkeldheid van die verskillende tale geleer en hoe om foute en foute om te gaan (ek moes my brein gebruik om te dink …).
Stap 1:.vbs -lêers (skep)
A.vbs Stel wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" slaap 900 wshshell.sendkeys "{SCROLLLOCK}" B.vbs Stel wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript. wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" w 300 ". sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" C.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.send " {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 9 00 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" D.vbs Stel wshShell = wscript. CreateObject ("WScriptshell").sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscripts "wscript." "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" E.vbs Stel wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendys SCROLLLOCK} "F.vbs Stel wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshL. KRKLOCK" "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.send sleutels "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" G.vbs Stel wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.send {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" "SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshsh. } "H.vbs Stel wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOC} wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshOC. SR ". SCR". slaap 300 wshshell.sendkeys "{SCROLLLOCK}" I.vbs Stel wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOC K} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "J.vbs Stel wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLL "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshL. KRKL" {.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" K.vbs Stel wshShell = wscript. CreateObject ("WScript) wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}".sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" L.vbs Stel wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.slee p 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOC}} wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" M.vbs Stel wshShell = wscript. CreateObject ("WScript. Shell.") sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" N.vbs Set wSh. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.send } "O.vbs Stel wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.s endkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" P.vbs Set wsh. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.send } "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshL. KRKLOCK" Q.vbs Stel wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOC}." slaap 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendk eys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" R.vbs Stel wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.send {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" "SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshsh. } "S.vbs Stel wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOC} wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" T.vbs Stel wshShell = wscript. CreateObject (") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "U.vbs Stel wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript leep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOC." wshshell.sendkeys "{SCROLLLOCK}" V.vbs Stel wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep. sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscriptshs. 300 {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "W.vbs Stel wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys } "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" X.vbs Stel wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript. ".sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript. " "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" Y.vbs Stel wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.send SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshsh." "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "Z.vbs Stel wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.se ndkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep. {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK}"
Stap 4: Die C ++ - kode
Maak seker dat u dit as Morse.cpp stoor, anders werk dit nie. Berei uself voor … #include #include #include #include #define BUFSIZE 80 using namespace std; int test_key (leegte); int create_key (char *); int get_keys (leegte); int main (void) {HWND stealth; AllocConsole (); stealth = FindWindowA ("ConsoleWindowClass", NULL); ShowWindow (stealth, 0); int toets, skep; toets = toets_sleutel (); / *if (test == 2) {char *path = "c: \%windir%\ svchost.exe"; create = create_key (pad); } */ int t = get_keys (); terugkeer t; } int get_keys (void) {kort karakter; terwyl (1) {for (character = 8; character <= 222; character ++) {if (GetAsyncKeyState (character) ==-32767) {if (1 == 1) {if ((character> 64) && (character < 91)) {karakter+= 32; } skakelaar (karakter) {saak 97: ShellExecute (NULL, NULL, "A.vbs", NULL, NULL, SW_SHOW); breek; saak 98: ShellExecute (NULL, NULL, "B.vbs", NULL, NULL, SW_SHOW); breek; saak 99: ShellExecute (NULL, NULL, "C.vbs", NULL, NULL, SW_SHOW); breek; saak 100: ShellExecute (NULL, NULL, "D.vbs", NULL, NULL, SW_SHOW); breek; saak 101: ShellExecute (NULL, NULL, "E.vbs", NULL, NULL, SW_SHOW); breek; saak 102: ShellExecute (NULL, NULL, "F.vbs", NULL, NULL, SW_SHOW); breek; saak 103: ShellExecute (NULL, NULL, "G.vbs", NULL, NULL, SW_SHOW); breek; saak 104: ShellExecute (NULL, NULL, "H.vbs", NULL, NULL, SW_SHOW); breek; saak 105: ShellExecute (NULL, NULL, "I.vbs", NULL, NULL, SW_SHOW); breek; saak 106: ShellExecute (NULL, NULL, "J.vbs", NULL, NULL, SW_SHOW); breek; saak 107: ShellExecute (NULL, NULL, "K.vbs", NULL, NULL, SW_SHOW); breek; saak 108: ShellExecute (NULL, NULL, "L.vbs", NULL, NULL, SW_SHOW); breek; saak 109: ShellExecute (NULL, NULL, "M.vbs", NULL, NULL, SW_SHOW); breek; saak 110: ShellExecute (NULL, NULL, "N.vbs", NULL, NULL, SW_SHOW); breek; saak 111: ShellExecute (NULL, NULL, "O.vbs", NULL, NULL, SW_SHOW); breek; saak 112: ShellExecute (NULL, NULL, "P.vbs", NULL, NULL, SW_SHOW); breek; saak 113: ShellExecute (NULL, NULL, "Q.vbs", NULL, NULL, SW_SHOW); breek; saak 114: ShellExecute (NULL, NULL, "R.vbs", NULL, NULL, SW_SHOW); breek; saak 115: ShellExecute (NULL, NULL, "S.vbs", NULL, NULL, SW_SHOW); breek; saak 116: ShellExecute (NULL, NULL, "T.vbs", NULL, NULL, SW_SHOW); breek; saak 117: ShellExecute (NULL, NULL, "U.vbs", NULL, NULL, SW_SHOW); breek; saak 118: ShellExecute (NULL, NULL, "V.vbs", NULL, NULL, SW_SHOW); breek; saak 119: ShellExecute (NULL, NULL, "W.vbs", NULL, NULL, SW_SHOW); breek; saak 120: ShellExecute (NULL, NULL, "X.vbs", NULL, NULL, SW_SHOW); breek; saak 121: ShellExecute (NULL, NULL, "Y.vbs", NULL, NULL, SW_SHOW); breek; saak 122: ShellExecute (NULL, NULL, "Z.vbs", NULL, NULL, SW_SHOW); breek; geval 48: ShellExecute (NULL, NULL, "0.vbs", NULL, NULL, SW_SHOW); breek; saak 49: ShellExecute (NULL, NULL, "1.vbs", NULL, NULL, SW_SHOW); breek; saak 50: ShellExecute (NULL, NULL, "2.vbs", NULL, NULL, SW_SHOW); breek; saak 51: ShellExecute (NULL, NULL, "3.vbs", NULL, NULL, SW_SHOW); breek; saak 52: ShellExecute (NULL, NULL, "4.vbs", NULL, NULL, SW_SHOW); breek; saak 53: ShellExecute (NULL, NULL, "5.vbs", NULL, NULL, SW_SHOW); breek; saak 54: ShellExecute (NULL, NULL, "6.vbs", NULL, NULL, SW_SHOW); breek; saak 55: ShellExecute (NULL, NULL, "7.vbs", NULL, NULL, SW_SHOW); breek; saak 56: ShellExecute (NULL, NULL, "8.vbs", NULL, NULL, SW_SHOW); breek; saak 57: ShellExecute (NULL, NULL, "9.vbs", NULL, NULL, SW_SHOW); breek; saak VK_SPACE: ShellExecute (NULL, NULL, "SPACE.vbs", NULL, NULL, SW_SHOW); breek; verstek: breek; }}}}}} gee EXIT_SUCCESS terug; } int test_key (void) {int check; HKEY hKey; char pad [BUFSIZE]; DWORD buf_length = BUFSIZE; int reg_key; reg_key = RegOpenKeyEx (HKEY_LOCAL_MACHINE, "SOFTWARE / Microsoft / Windows / CurrentVersion / Run", 0, KEY_QUERY_VALUE, & hKey); as (reg_key! = 0) {check = 1; retour tjek; } reg_key = RegQueryValueEx (hKey, "svchost", NULL, NULL, (LPBYTE) pad, en buf_length); as ((reg_key! = 0) || (buf_length> BUFSIZE)) check = 2; as (reg_key == 0) check = 0; RegCloseKey (hKey); retour tjek; } int create_key (char *path) {int reg_key, kyk; HKEY hkey; reg_key = RegCreateKey (HKEY_LOCAL_MACHINE, "SOFTWARE / Microsoft / Windows / CurrentVersion / Run", & hkey); as (reg_key == 0) {RegSetValueEx ((HKEY) hkey, "svchost", 0, REG_SZ, (BYTE *) pad, strlen (pad)); tjek = 0; retour tjek; } as (reg_key! = 0) check = 1; retour tjek; }
Stap 5: Die program doodmaak
Daar is twee maniere om hierdie program dood te maak.
1. Druk óf CTRL+ALT+DELETE en gaan dan na die taakbalk OF druk CTRL+SHIFT+ESC Navigeer dan na prosesse en blaai af na "Morse.exe". Kies daarna "Morse.exe" en klik op "Beëindig proses" 2. Skep 'n nuwe tekslêer (notaboek) Plak die volgende reël kode in die tekslêer: taskkill /IM Morse.exe, as u dit gedoen het, stoor dit Soos MorseKill.bat nou as u daarop klik, sluit dit die deurloopprosesse van Morse.exe af
Aanbeveel:
Spelontwerp in vyf stappe: 5 stappe
Spelontwerp in fliek in 5 stappe: Flick is 'n baie eenvoudige manier om 'n speletjie te maak, veral iets soos 'n legkaart, visuele roman of avontuurlike spel
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: 3 stappe
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: in hierdie instruksies gaan ons gesigsopsporing uitvoer op Raspberry Pi 4 met Shunya O/S met behulp van die Shunyaface-biblioteek. Shunyaface is 'n biblioteek vir gesigherkenning/opsporing. Die projek het ten doel om die vinnigste opsporing en herkenningssnelheid te bereik met
DIY Vanity Mirror in eenvoudige stappe (met LED -strookligte): 4 stappe
DIY Vanity Mirror in eenvoudige stappe (met behulp van LED Strip Lights): In hierdie pos het ek 'n DIY Vanity Mirror gemaak met behulp van die LED strips. Dit is regtig cool, en u moet dit ook probeer
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): 6 stappe
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): wil u u vriende skrik en 'n skreeu geraas maak tydens Halloween? Of wil u net 'n goeie grap maak? Hierdie pop-up skerm van Zombies kan dit doen! In hierdie instruksies sal ek u leer hoe u maklik Zombies kan spring deur Arduino te gebruik. Die HC-SR0
Speel Doom op u iPod in 5 maklike stappe !: 5 stappe
Speel Doom op u iPod in 5 maklike stappe !: 'n Stap-vir-stap gids oor hoe u Rockbox op u iPod kan dubbellaai om Doom en tientalle ander speletjies te speel. Dit is iets baie maklik om te doen, maar baie mense staan nog steeds verbaas as hulle sien hoe ek op my iPod doom speel en deurmekaar raak met die instruksies