Den lufsar efter mig
There's a soft cotton dress on the line hangin' dry,
Window wide open, African trees
Bent over backwards from a hurricane breeze."
- Bob Dylan
I huvudet på...
"Tomt formulär, jag ska se om jag har några inloggningsuppgifter. Där ja, jag lägger in dem." *lägger in*
"Nej, men titta, det finns data i formuläret! Det måste jag lagra på kortet." *lagrar*
"Data i formuläret, det var nåt nytt! Jag minns inte om jag lagrade det innan, bäst att lagra igen" *lagrar många gånger*
"Oops, felmeddelande! Blev kortet fullt med data? Hur gick det till? Vad gör jag med felmeddelandet? Lägger det i den här utdatafilen." *lägger*
"Utdata i filen! Vart ska det? Säkert till formuläret." ...och sådär fortsätter det.
Jag har för tillfället en enda soppa av filer som det läses och skrives till av tre små program som inte har så stor koll på vad de gjorde nyss eller vad de andra har för sig. Vad som behövs är lite mer koll på vad som just har gjorts. Sen skulle jag nog behöva göra appleten ännu lite flexiblare. Den har två webbsidors namn och lösen lagrade från början samt att den i den nya versionen nu även kan lägga till namn och lösen till en sida som användaren väljer själv. Bäst vore om man kunde lägga till flera, förstås. Det mest akuta är dock att se till att inget krockar. Att köra läsning och skrivning av data samtidigt från samma fil känns sådär. :)
Hursomhelst, det positiva är att jag har lyckats bli av med en hel del buggar och nu bara behöver stoppa in lite felhantering. (Det lär också ta en hel del tid, men sånt har jag iaf gjort förut.) Rapporten är det inga problem med, den tänkte jag att kortet skulle få skriva. "ÌÌÌÌÌÌÌÌÌÌÌÌÌÌ...", skriver kortet i en utdatafil. Jomen, det låter väl bra. Vi tar det till diskussionsdelen på slutet. ;)
Var är buggen?
Somliga människor kan koncentrera sig på en sak i taget. Sån är nog inte jag, tyvärr. Jag koncentrerar mig bäst om jag får lite variation och därför sitter jag nu och kodar i tre olika programmeringsspråk samtidigt medan jag då och då hummar, knackar med fingrarna i bordet eller gör andra små ljud som inte skulle passa sig i ett kontorslandskap. :) Som det ser ut nu verkar den nya programvaran på kortet äntligen funka bra. Webbläsarpluginet gör också vad det ska, men agenten gillar inte alls ändringarna. Spara data kan jag få göra, men inte läsa data. Nånstans måste jag ändra i agenten så att den accepterar ändringarna i resten av systemet. Jag får nog ta till den gamla hederliga kommentera-bort-manövern: jag gör all kod inaktiv och sedan plockar jag tillbaka rad för rad och ser var det slutar fungera. Tidsödande, men en riktig klassiker.
En liten åkerhumla på äventyr. :)
Agenten luras
Dagens...
Låt: "Ballad of a teenage queen" - Johnny Cash
Dryck: Beskt kaffe.
Outfit: Svart och grönt och varmt. Bara för det kommer väl värmen tillbaka. :)
Plan: Få agenten att sätta rätt längder och skicka vettiga APDU:er, lagra dessa på ett bättre sätt än nu i det smarta kortet, processa de APDU:er som kortet skickar tillbaka (det funkar, men felhanteringen är obefintlig).
Smarta drag: Jag tänker skippa vitlådetestningen i min rapport. Den är något jag själv ville ha med för att kunna visa på bra kodkvalitet, men... Vi hoppar över det, tycker jag. :)
Lite data
Såhär är det alltså nu:
1) Du har namn och lösen till dina favorittjänster lagrade på ett smart kort.
2) Du surfar till en av dessa sidor och ett webbläsarplugin skriver en "kodsiffra" i en fil. 1 för den en ena sidan, 2 för den andra o.s.v.
3) Ett agentprogram som körs i bakgrunden läser filen och beroende på siffran kör agenten en scriptfil som innehåller kommandon för att få namn och lösen som hör till rätt webbsida.
4) Det smarta kortet som fått kommandon från agenten svarar med att ge ifrån sig data som den skickar till agenten som i sin tur skriver in det i en fil där webbläsarplugin:et kan läsa det.
5) Plugin:et fyller i ditt namn och lösen på den sida du besöker.
Såhär ska det bli:
1) Du surfar till en webbsida och webbläsarplugin:et skriver sidans URL i en fil.
3) Agentprogrammet läser filen och skapar en scriptfil som skickar URL:en till det smarta kortet. Om du skriver in namn och lösenord själv skickas det också till kortet.
4) Det smarta kortet ser efter om URL:en finns lagrad och skickar i sådana fall tillbaka de uppgifter du har lagrade. Om URL:en inte finns lagrad och du har skrivit in namn och lösen förhand lagrar kortet det åt dig.
5) Plugin:et fyller i ditt namn och lösenord på den sida du besöker.
6) När du lämnar ditt kontor tar en spion med sig ditt kort med alla dina lösenord lagrade på. Uppdraget slutfört! ;)
Inte ett måste
En spännande utökning lär det bli och den lades fram som ett förslag, något som jag kanske borde göra, men inte måste och som möjligtvis skulle bli svår och kräva en del minneshantering. Ok, det där är det bästa sättet att få mig att göra nåt. Jag lever för utmaningarna. :)
Idag blir det som sagt sista-minuten-krypto-plugg samt en massa örtte. Jag har dragit på mig en oläglig sommarförkylning som jag igårkväll försökte bota med en långpromenad. Det är 31 grader i min lägenhet så att vara inomhus är inte det trevligaste om man nu inte gillar bastubad. Puh!
Mor till mås
Dagens mås är utan tvivel duktiga Måsa-Lisa som blivit mor till två duniga måsungar. Vi lunchmänniskor ägnade en stund åt att iaktta dunbollarnas förehavanden och försöka hitta lämpliga namn. Lina och Linné kanske? :)
Ombytta roller
En annan liten kryptogrej
Förövrigt: Jag kan skvallra om Fiskens jobbresa och meddela att han delar rum med en ödla. Det finner jag väldigt exotiskt. Hans glasögon immar igen när han går ut också. Snacka om hög luftfuktighet! :)
En liten skiss
Efter lunch cyklade jag ner på stan för att se vad folk gjorde denna soliga dag. De verkade cykla runt planlöst och kolla vad andra gjorde. Inte särskilt spännande. ;) Sen blev det sill och den goda boken. Lite småhelg behövde jag allt, speciellt när det är för varmt för att göra nåt vettigt alls.
Här kommer en liten systemskiss för er som är nyfikna. Inte en optimal lösning, men en möjlig. Röran av språk och mellanlagring känns sådär, men jag skulle hellre köra det här än att sätta mig och knappa på ett tangentbord nånstans där det finns keyloggers. Hmm... Tror jag måste skaffa kortläsare här hemma. :)
Vad jag gör
Jag sysslar med smartcards. Ett smartcard ser ut som ett vanligt plastkort, men det finns ett microchip i det så det blir säkrare och det ryms mer på det. På de häftigare smartcarden kan man inte bara lagra data utan även köra program. Det som diskuteras mycket just nu är om man kan använda ett smartcard som kombinerat bankkort och ID-kort, det ultimata kortet med allt på. Naturligtvis är det inte riskfritt och vad jag gör är att jag förklarar för den oinvigde hur smartcards fungerar och vad man behöver tänka på om de ska användas till identitetshantering.
Den praktiska delen av mitt exjobb går ut på att bygga en prototyp till ett identitetshanteringssystem för smarta kort. Det består av ett program som körs på kortet och ett som ska finnas i användarens dator. Meningen är att man ska kunna ha alla sina användarnamn och lösenord lagrade på kortet istället för att lagra dem på datorn eller skriva in dem på tangentbordet. När systemet är klart ska jag analysera och testa det på alla tänkbara sätt och vis och försöka upptäcka säkerhetsproblem som kan finnas i ID-lösningar för smartcards. Egentligen borde jag granska något annat system än mitt eget, men det finns inget. (Inget som vänder sig till privatpersoner och som jag får rota runt i, vill säga. ;)
Så, det är alltså vad jag gör: jag skriver om smartcards och "det ultimata ID-kortet", bygger ett litet system som hanterar personlig data fast på en enklare nivå för hemmabruk samt analyserar den här typen av lösningar för att se om de är något att ha och hur man ska göra för att undvika alla de vanliga säkerhetsproblemen. Det är vad jag gör. :)
GPshell i VC++Express
Vet ni, jag har lyckats kompilera GPshell! Meningen är att min agent ska vara ett GUI (samt lite extrafunktioner) till det redan existerande GPshell. Man kan tycka att det är simpelt att bygga något om man har källkoden och en kompilator, men icke. Till slut gick det dock. Trial and error är en väldigt bra metod. :) Här kommer en liten manual för er som är nyfikna:
1) Ta hem VC++ Express (lättversionen av Visual Studio). GPshell är skrivet för Visual Studio och ville inte kompilera i exempelvis DevC++. (Det går säkert, men då får man nog skriva om en del saker.)
2) Blir förbryllad över att windows.h och liknande inte ingår i VC++Express. Det är mycket märkligt. :)
3) Ta hem Microsoft Platform SDK och plocka ut katalogerna Bin, Include och Lib
4) Skapa katalogen PlatformSDK i C:\Program Files\Microsoft Visual Studio 8\VC\ och lägg ovanstående där.
5) Öppna GPshells projektfil i VC++ och se till att lägga till filerna som finns i pcsclite-includes (följer med GPshells källkod), men döp om winscard.h för den finns redan i Platform SDK.
6) Lägg även till GlobalPlatform.h och unicode.h De ska ligga i katalogen GlobalPlatform i GPshell-katalogen. Allt krafs som hör till GlobalPlatforms källkod ska ligga löst i GPshells katalog vad du nu kallar den (förmodligen gpshell-1.4.0).
7) Du behöver dll:erna GlobalPlatform.dll, libeay32.dll, ssleay32.dll och zlib1.dll De som inte följer med GPshell:s och GlobalPlatform:s källkod kan följa med de färdiga versionerna av dessa program, eller så får du jaga rätt på dem på nätet. Lägg dem i gpshell-1.4.0
8) Får du kompileringsfel kan du behöva ändra #include <stdafx.h> till #include "stdafx.h" och liknande.
9) Om du kompilerar som "release" får du en fin exe-fil av GPshell i release-katalogen, men du behöver kopiera dit dll:erna för att de ska hittas.
10) Ta-daaah! Nu har du kompilerat ditt alldeles egna GPshell som du kan skriva söta tilläggsprogram till! Grattis! :)
Lagringsutrymme
Efter intagen blodpudding (ni som sett mig på synthklubb tvivlar väl inte på att jag är halvvampyr, här är ytterligare ett bevis ;) ska jag ut och gå. Tror att "Saras runda" är lagom. Den är i stadsmiljö och alldeles lagom lång.
Fluffet anfaller igen!
Dagens...
Kommentar: "Du hade sånt där otäckt i din blogg idag" (syftande på matteböckerna).
Plötsligaste: Att under redovisningen i användbarhetskursen få förklara hur en DoS-attack av mobiltelefoner skulle kunna tänkas gå till.
Synthpop: "You didn't want me" - Mesh, eller för den delen "Step by step" som är lite gladare. Oh, så fint det låter. :)
Slogan: "CarTex - The solution for the future!" Så ska det låta på torsdag då jag ska marknadsföra billack i entreprenörskursen. Kärnfullt, eller hur? *fniss, fniss*
Dags att bli syo nu?
Mitt andra alternativ är att under sommaren läsa in två valfria poäng samt en uschlig* mattekurs så är jag något ännu finare som har ordet teknologie i sig. Sen har jag fyra gamla datakurser där jag bara har något litet moment kvar (en åttondels labb, en pyttig tenta, sådana saker) som jag nu kan strunta i om jag vill, fast det känns dumt att ha halvfärdiga saker kvar (ifall de är rimliga att klara av, vill säga) så jag ska göra klart de kurserna också innan jag räknar mig som färdig. En liten bit in på hösten borde jag vara klar och då hittar jag säkert något nytt spännande som jag vill göra.
Imorgon är det seminarium. Jag tycker inte att jag gör annat än går på sådana, men det är allt rätt åt mig som valde tre projektkurser samtidigt av misstag... ;)
* Det finns iofs uschligare saker att studera så jag ska inte klaga. Matte är iaf vackert. Ekonomi däremot skulle jag vara direkt olämpad för. Uuhhh! :)
Fluff!
Förutom att skriva om smarta kort och sitta och förbereda gruppsaker har jag även hunnit fika med Vic samt plugga till duggan i entreprenörskap. Det är fullt med läskiga ekonomiord att lära sig. Likviditet, smaka på det ordet. Otäckt! :)
In progress
Dagens lilla lärdom till er därute: Vad är skillnaden mellan A) ett magnetremsekort, B) ett minneskort och C) ett mikroprocessorkort? Jo, på ett magnetremsekort (du har säkert massor av såna) går det lätt att kopiera remsan med allt ditt kortdata på. Ett minneskort är ett kort där datat lagras i ett litet chip istället så att det blir svårare att stjäla information. Bankkort är både A och B, fast tyvärr används remsan mest. I bästa fall är de A och C istället. I C, ett mikroprocessorkort, sitter det en liten dator i chipet under den guldiga lilla plattan. Det är mycket säkrare och bättre för den kan köra program och är svårare att lura. Nu vet ni. :) (Jag försöker förgäves få besökare att våga låta testa sina bankkort med min APDU-scanner för jag vill se vad det är för sorts kort, men ingen törs. Fegisar! Bara för att jag själv aldrig skulle göra det behöver det inte vara farligt. *elak-forskare-skratt* ;)
Det är lugnt
Idag ska två presentationer inför slutseminarierna i gruppkurserna förberedas och så ska jag fortsätta med rapporten, förstås. Jag tror att det behövs fler scenarion, såna är alltid bra.
Öde och tomt
Dagens plan: Skriva klart kapitlet om operativsystem och hårdvara samt det om attackträd, rita upp alla träden samt iaf några attackmönster... och skriva lite om fysiska attacker. Oki, let's åk, som raggarna säger. Nu kör vi! :)
Teamwork!
Dagens låt: "Tell me lies" - Eva Luna
Dagens hurra: Duktiga lokalgruppen gör något med det koax-fyllda förrådet och ser till att saker och ting kommer till användning och nytta.
Dagens dåliga täckning: Tydligen är det svårt att nå det trådlösa nätet i mitt exjobbsrum. Roligt var det när en projektkompis ställde upp sin dator högst upp på en bokhylla och sträckte sig allt han kunde för att få surfa lite. Det är inte lätt...
Dagens nedräkning: Exakt ett dygn kvar, sen dyker han upp, min Fisk.