Logiranje tipk

Po Wolframovi ideji, o kateri pišem v prejšnjem postu, sem tudi sam izdelal aplikacijo, ki beleži aktivnost na tipkovnici in klikanje miške. Zadeva je trivialna (lotil sem se v dobrem starem VB61 🙂 )

'mouse & keyboard deklaracija za v BAS file ========
Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer

Public Function GetKey() As Integer
    For i = 0 To 255
        If (GetAsyncKeyState(i) And &H8001) <> 0 Then
            GetKey = i
            Exit Function
        End If
    Next i
End Function
'LOG keys and clicks ================ 
Private Sub keytimer_Timer()
    'get keys
    newkey = GetKey
    'Replace letters with X to prevent keylogging
    If newkey > 48 And newkey < 100 Then
        dbkeycode = 88
    Else
        dbkeycode = newkey
    End If
    
    If oldkey <> newkey And newkey <> 0 Then
        'open db, insert
        Set Db = OpenDatabase(App.Path & "\data.mdb")
        Set Rs = Db.OpenRecordset("SELECT * FROM key_log", dbOpenDynaset)
        Rs.AddNew
        Rs!Time = Date & " " & Time
        Rs!keycode = dbkeycode
        Rs.Update
        Db.Close
    End If
    oldkey = newkey
End Sub

Prva finta opisane kode je, da beleži tako evente tipkovnice kot miške. Če funkcija GetKey vrne 1, 2, 3 ali 4, gre za gumb na miški, ostalo je tipkovnica. To zadevo sem nekaj časa uporabljal in beležil vse GetKey evente v MDB bazo, nakar sem postal rahlo paranoičen. MDB je vseboval vse passworde in vedno obstaja verjetnost, da taka zadeva pride v napačne roke. Zato v zgornji kodi brž replacal vse alfanumerične znake z ‘x’. Razlog, da nisem vseh, je naslednji: želel sem pustiti notri kode tipk, ki bi se izkazale za uporabne. Takšne so naprimer delete in backspace; ti dve omogočata, da beležiš kolikokrat se je uporabnik zmotil pri tipkanju; sigurno pa so še druge podobne skrite informacije.

Že ti podatki lahko dajo dokaj dobro analizo produktivnosti glede na čas dneva, če pa bi jih uparili še z imenom aplikacije, Shazam detekcijo muzike, ki se vrti v ozadju, s podatki o količini dnevnega gibanja (recimo s FitBita), kvaliteti spanca (FitBit/SleepTracker), s TV sporedom, porabo električne energije v bajti, zunanjo in notranjo temperaturo, telesno temperaturo, srčnim utripom in/ali ročno vnesenimi podatki (splošno počutje, lakota, žeja), bi dobili pravi recept za optimalne pogoje produktivnosti ali kreativnosti.

Problem take rešitve je, da predstavlja precej velik vdor v zasebnost uporabnika. Edina sprejemljiva varianta je, da reč zapakiraš v desktop aplikacijo, s tem pa izgubiš vse prednosti oblaka: spremljanje več naprav, centraliziran pregled statistike, ipd.

Glede na to, da tudi sam takih podatkov ne bi zaupal nikomur (in da sem takoj odinštaliral Rescue Time, ki podobne podatke zbira na webu), vidim kot edino možnost privaten oblak. Mnogi (tudi Eric Schmidt) menijo, da bo regulativa na tem področju šla po sledeh bank, in da se bo nivo zaupanja do ustreznih ponudnikov dvignil do te mere, da bomo podatke “nakazovali” brez strahu, da jih bo kdo ukradel. In ko bo mogoče najeti simpl sef za podatke, bo tudi take občutljive zadeve možno preko VPN shranjevati od kjerkoli.

  1. ta je še ena antična, z začetki v 2006 kot aplikacija, ki je bila po želeni funkcionalnosti na las podobna današnjemu ManicTime-u []