Gömda kanaler hemlig dataöverföring i en simulerad MLS-miljö i operativsystemet FreeBSD 6.2
|
|
- Adam Ola Håkansson
- för 6 år sedan
- Visningar:
Transkript
1 TDDC03 Projects, Spring 2007 Gömda kanaler hemlig dataöverföring i en simulerad MLS-miljö i operativsystemet FreeBSD 6.2 Jerry Falkcrona Jonas Tevemark Supervisor: Viiveke Fåk
2 Gömda kanaler - hemlig dataöverföring i en simulerad MLS-miljö i operativsystemet FreeBSD 6.2 Jonas Tevemark Jerry Falkcrona Linköpings universitet, Sweden {jonte466, jerer606@student.liu.se Sammanfattning Att designa ett MLS-system så att vissa användare inte kan kommunicera med varanadra är ingen lätt uppgift. Att begränsa sockets, IPC-kanaler och sätta filrättigheter är inte tillräckligt för att förhindra två lokala användare att dela hemlig information mellan varandra. I detta dokument beskrivs några alternativ av gömda kanaler för att kringgå satta restriktioner samt eventuella motmedel för att förhindra användningen av dessa. 1. Inledning I dagens samhälle är ofta information lagrad i digital form. Att bevara konfidentialiteten för hemlig information är betydligt svårare på digital form än med dess analoga motsvarighet, till exempel papper. Papper kan låsas in i kassaskåp dit endast betrodda har tillgång. Givetvis kan detta göras även med datorsystem, låsa in dem i bunkrar dit endast betrodda har tillträde. Oftast gäller dock att ett datorsystem hanterar flera olika användare samtidigt. I det fall då två användare med olika rättigheter på ett och samma system ska begränsas att inte dela information med varandra på grund av konfidentialitetsskäl uppstår ett problem. På grund av att användare i samma system delar på dess resurser, så som CPU, minne med mera, kommer det att vara näst intill omöjligt att förhindra delning av information mellan två användare. Om det är praktiskt omöjligt att helt förhindra delning av information på grund av delade resurser, skall alla eventuella kanaler som utnyttjar dessa resurser göras så pass långsamma att det är meningslöst för användarna att använda dessa för informationsdelning. Detta problem finns inom civila så väl som i militära system. Företagshemligheter för civila företag måste behållas hemliga och än viktigare är att försvarshemligheter som kan hamna i orätta händer hålls konfidentiella. Syftet med detta dokument är att undersöka eventuella gömda kanaler som finns i ett MLS-system simulerat på operativsystemet FreeBSD [1], version 6.2. Simuleringen utförs genom att skapa två användare med rättigheter som efterliknar en MLS-miljö av modellen Bell-LaPadula. Funna gömda kanalers kapacitet och hur svårt det är att upptäcka dem kommer att mätas eller diskuteras. Eventuella motmedel för hur skapandet av dessa kanaler kan förhindras kommer även diskuteras samt vilken inverkan ett sådant motmedel skulle ha på systemet. 2. Bakgrund Detta avsnitt beskriver de grundläggande koncept som hanteras genom hela detta dokument. 2.1 MLS MLS är en förkortning för Multilevel Security och är ett regelverk för hur ett system ska hantera rättigheter för läsning samt skrivning av objekt i ett fleranvändar-system. Ett objekt kan vara en fil, en resurs som till exempel en skrivare eller en socket med mera. Detta görs genom att införa säkerhetsnivåer för både objekt och användare, där varje objekt och användare måste tillhöra en och endast en av säkerhetsnivåerna. Användare i ett MLS-system har ingen möjlighet att själva ändra några rättigheter för objekt, detta är den stora skillnaden mellan rättigheter i ett traditionellt fleranvändarsystem där DAC (Descretionary Access Control) används och ett MLS-system. En användare kan inte heller själv ändra vilken säkerhetsnivå denne tillhör, vilket också är fallet med traditionella fleranvändarsystem. Hur åtkomst för objekt ska hanteras bestäms av en så kallad modell, en sådan modell kan bevara antingen konfidentialitet, integritet eller de båda. Exempel på modeller är Bell-LaPadula, Biba, Clark-Wilson och Chinese Wall. I detta dokument kommer endast modellen Bell-LaPadula att hanteras. 2.2 Bell-LaPadula Bell-LaPadula är en MLS-modell utvecklad av David Elliot Bell och Len LaPadula under 1970-talet då de hade som uppdrag att ta fram en MLS-modell åt U.S Air force [2]. Modellen är framtagen för att säkerställa att konfidentialitet för objekt i ett MLS-system bevaras. I praktiken innebär detta att en användare av lägre säkerhetsnivå ej kan läsa objekt av en högre säkerhetsnivå och att en användare av högre säkerhetsnivå ej kan skriva objekt till en lägre säkerhetsnivå än sin egen. Fördelen med detta är att en användare av en högre säkerhetsnivå inte kan dela med sig information till en annan användare med lägre säkerhetsnivå genom att ändra rättigheter för objekt. Dessutom skyddar detta mot trojaner och virus som annars skulle kunna ändra rättigheter för objekt så att en användare
3 av lägre säkerhetsnivå skulle kunna få tillgång till detta objekt. Figur 1 nedan visualiserar modellen Bell-LaPadula. Figur 1. Policys i modellen Bell-LaPadula. 2.3 Gömda kanaler En gömd kanal (eng. covert channel) är en kommunikationsväg som har som syfte att kunna överföra information utan att den upptäcks av någon utomstående. Då kanalen syftar till att vara gömd finns starka begränsningar vad gäller bandbredd, eftersom det är större risk att kanalen upptäcks om den använder mycket resurser. Detta kommer även naturligt i de flesta implementationer eftersom möjligheten att gömma information bland befintlig data ofta är väldigt begränsad. Gömda kanaler kan vara lokala i ett fleranvändar-system eller användas över nätverk. Gömda kanaler i nätverk innebär oftast att information göms i befintlig trafik till exempel genom att manipulera headers i nätverksprotokoll eller genom att skicka förutbestämt mönster av data Gömda kanaler i MLS-system Gömda kanaler i ett MLS-system innebär i de flesta fall att den satta säkerhetspolicyn kringgås. Detta kan oftast göras genom att utnyttja det faktum att delade resurser alltid finns i ett fleranvändar-system. Delade resurser kan vara både hårdvaruresurser så som minnen och hårddiskar och operativsystemsspecifika resurser som till exempel filsystem, växlingsfiler, schemaläggning och så vidare. 3. Undersökta kanaler Här beskrivs de gömda kanaler som undersökts samt resultat av undersökningen. 3.1 Åtkomsttider för delade resurser I de flesta filsystem lagras information om senaste åtkomsttid för samtliga filer och kataloger. Detta kan utnyttjas som en gömd kanal för att överföra information mellan två parter [3]. Detta kan genomföras på följande sätt: Två parter väljer en fil eller katalog att använda, sedan synkroniserar de med varandra på något sätt för att bestämma när överföringen skall börja. Mottagaren registrerar nuvarande åtkomsttid för objektet och väntar sedan ett förutbestämt intervall innan en ny åtkomsttid registreras. Sändaren läser sedan det valda objektet så att dess åtkomsttid ändras. Detta skulle kunna innebära att skicka en etta, skulle sändaren vilja skicka en nolla läses inte objektet varvid åtkomsttiden ej ändras. Mottagaren kan nu, genom att jämföra om åtkomsttiden ändrats sedan föregående kontroll, avgöra om en etta eller nolla sänts Kapacitet Upplösningen för tidsstämpeln för senaste åtkomsttiden för en fil i FreeBSD är i sekunder. En kanal kommer således att kunna överföra 1 bps (bit per sekund) per fil eller katalog som används som kanal. Om åtta filer eller kataloger används som transmissionsmedium kommer kanalen således att kunna överföra 1 Bps (byte per sekund), vilket innebär att två parter kan överföra ett tecken i sekunden. Om de kommunicerande parterna bestämmer sig för att koda om all text till gemener (och om man bortser från siffror och andra specialtecken) behövs endast 5 bitar för att kunna sända samtliga bokstäver i alfabetet. Görs detta fås en nästan dubbelt så snabb kanal jämfört med en kodning med 8 bitar per tecken. Ett problem som kan uppstå när flera filer eller kataloger används som transmissionsmedium (framför allt om kanalen ska användas på ett system med många användare) är den ökade risken till att en annan användare i systemet läser ett eller flera av de valda objekten. Åtkomsttiden för objektet kommer då att ändras som vanligt och (troligtvis) generera ett fel i överföringen för de två kommunicerande parterna. Problemet kan delvis lösas genom att skicka med paritetsbitar, dock medför extra paritetsbitarna att överföringshastigheten minskar. För att minska sannolikheten att en annan användare ska störa en överföring, bör objekt med låg åtkomstfrekvens väljas som transmissionsmedium. Väljs objekt med låg åtkomstfrekvens fås dock en annan ej önskvärd effekt, vilken beskrivs i avsnittet Motmedel Begränsningar En förutsättning för att denna kanal ska fungera är att de två kommunicerande parterna delar åtminstone en fil eller katalog som de båda har läsrättigheter till och att detta objekt inte används allt för ofta av övriga användare i systemet. Oftast finns det gott om systemfiler som alla användare måste ha läsrättigheter till, alltså bör detta sällan vara någon större begränsning. Eftersom upplösningen på tidsstämplar för filer eller kataloger är sekunder är den maximala
4 överföringshastigheten 1 bps för varje objekt som används som kanal, denna begränsning går inte att komma ifrån. Eventuellt kan det finnas filsystem som har högre upplösning än sekunder, men det är inget som författarna av detta dokument känner till. På ett system med många användare kan denna kanal bli märkbart begränsad på grund av att antalet passande objekt (objekt som inte läses ofta) blir betydligt färre än i ett system med få användare Motmedel Det mest självklara motmedlet är att helt enkelt stänga av åtkomsttidsloggningen i systemet. Då finns ingen som helst möjlighet att använda denna metod för att överföra data. Skulle administratören av ett system vara intresserad av åtkomsttider för filer och kataloger av någon anledning är detta en dålig lösning. Alternativet till att stänga av åtkomsttidsloggningen helt skulle kunna vara att logga onaturligt höga åtkomstfrekvenser per användare. Genom att logga åtkomstfrekvenser skulle en administratör även kunna avslöja vilka de eventuella spionerna är. Har de kommunicerande parterna valt objekt som sällan används i ett system (vilka oftast är önskvärt för att få så låg felfrekvens som möjligt) för att kommunicera blir det ännu lättare för en administratör att upptäcka detta. Om det inte finns några filer som de båda användarna har tillgång till kan de inte kommunicera med varandra. För att förhindra att användare av ett system delar på några som helst filer eller kataloger kan varje användare låsas in på en egen virtuell maskin. Detta kan i FreeBSD göras med kommandot 'jail' [4]. När användarna låsts in har de inte åtkomst till några gemensamma filer och kan således inte kommunicera med varandra Implementering En implementering av ovan beskriven kanal finns bifogad i Appendix A. Koden är kompilerad och testad under FreeBSD 6.2. Implementeringen består av ett sändarprogram och ett mottagarprogram, där båda tar en starttid som argument vid uppstart av programmet. Detta görs eftersom de båda programmen måste synkronisera med varandra. De två programmen använder sig sedan av systemklockan för att synkronisera med varandra. Sändarprogrammet tar även en fil som argument, innehållet i filen är den data som kommer att skickas över kanalen. Innehållet antas vara en text skriven med ascii-tecken (programmet är endast testad med ascii som indata). Programmen använder katalogerna /boot, /etc, /usr/lib och /lib som kommunikationskanaler (vilket inte är några optimala kataloger att använda i ett system med många användare, ty dessa används ganska ofta). Sändarprogrammet omvandlar ett tecken från filen till bitmönster och öppnar sedan de kataloger som ges av bitmönstret. Om en bit är en etta skall en katalog öppnas, annars öppnas inte katalogen. Detta görs med alla tecken som finns i filen. Exempel: bitmönstret är 0101, de kataloger som kommer att öppnas blir därför /etc och /lib. Skulle istället bitmönstret vara 1000, kommer endast /boot att öppnas. Mottagarprogrammet läser av katalogerna och ser om åtkomsttiden för någon katalog ändrats sedan föregående cykel, om så är fallet tolkas det som en etta, annars en nolla. Efter att ha mottagit åtta bitar omvandlar mottagarprogrammet de åtta bitarna till motsvarande ascii-tecken och skriver ut det till stdout. Sändningen avslutas då mottagarprogrammet erhåller åtta nollor i följd. 3.2 Skapande av existerande filer Enligt Bell-LaPadula är det ej tillåtet för en användare att läsa från en högre nivå eller att skriva till en lägre nivå än vad användaren har. Det är dock möjligt för en användare att skriva till en högre nivå än vad denne själv har. Om två parter har skrivrättigheter till ett och samma ställe, till exempel en temp-katalog, kan de kommunicera genom att försöka skapa filer med samma namn. Detta görs genom att användaren med högre nivå skapar en fil vars namn användaren med lägre nivå vet om. Användaren med lägre nivå försöker sedan skapa en fil med samma namn och om filen redan existerar fås ett felmeddelande, vilket motsvarar en förutbestämd bit. Den användaren som lyckas skapa filen måste sedan ta bort den innan nästa bit kan överföras Kapacitet Kapaciteten hos denna kanal beror på två huvudsakliga delar. Den första är hur bra upplösning hos systemklockan en användare har i userland, och avgör då hur storleksordningen för väntetiden mellan de två programmen kan väljas. I FreeBSD är denna upplösning i storleken mikrosekunder. Den andra delen är den tid det tar att skapa filer, vilket kan vara svårt att mäta då detta beror på hårdvara, vilket filsystem som används, systembelastning, eventuella inställningar som begränsar hur många filer en användare kan skapa, med mera. Dessa två delar är även beroende av varandra; om man väljer att skapa väldigt många filer kan detta ta ett antal mikrosekunder, vilket innebär att man måste öka den tid som de två programmen väntar så att de inte kommer ur synk. Det bör nämnas att avsevärt högre överföringshastighet går att få än i implementationen som presenteras här, vilken har en överföringshastighet på 1/3 byte per sekund Begränsningar Denna gömda kanal förutsätter att användare av två olika nivåer har skrivrättigheter till en gemensam katalog, till exempel en temp-katalog. Denna metod är realiserbar i ett MLS-system som använder modellen
5 Bell-LaPaula och kan eventuellt även fungera i andra modeller beroende på de policys som dessa definerar Motmedel Då denna gömda kanal innebär skapande och borttagande av flertalet filer i en snabb takt är den ganska lätt att finna för en administratör som aktivt letar efter suspekta aktiviteter i ett system. En administratör skulle kunna skriva ett simpelt bakgrundsprogram som kontrollerar delade kataloger efter skapande av många filer av en och samma användare och låta programmet vidta åtgärder i realtid Implementering Implementationen som återfinnes i Appendix B använder sig av åtta olika filer för överföringen. Att just åtta filer valdes beror på att varje enskild fil då kan representera en bit i varje tecken som överförs, vilket underlättade vid implementeringen. Högnivåanvändaren samt lågnivåanvändaren anger en överenskommen tid då överföringen skall starta som ett argument till programmet. Överföringen sker sedan för varje byte enligt figur 2. kärnan upptäcka att filen redan är öppnad genom att jämföra filens inode-nummer med de inode-nummer som finns i tabellen över öppna filer. Genom detta förfarande kan kärnan låta den nya läsningen göras direkt från primärminnet istället för att läsa in samma fil från disk igen. Om den första användaren endast läst i de första 4 kb av filen och den andra användaren läser utöver de 4 kb som finns lagrade i primärminnet, kommer ett sidfel (eng. page fault) att genereras och kärnan kommer då läsa in ytterliggare 4 kb av filen till primärminnet. Eftersom en läsning från disk tar betydligt längre än att läsa direkt från primärminnet skulle en gömd kanal kunna skapas enligt följande [6]: Användare H och användare L har båda tillgång till en referensfil, den bör vara stor eftersom varje sida i sidtabellen kommer att motsvara en bit. Användare H tillhör en högre säkerhetsnivå än användare L. Användare H läser in 4 kb av filen, hoppar över 4 kb, läser ytterliggare 8 kb, hoppar över 4 kb och läser till sist in 8 kb, se figur 3 nedan. (Egentligen räcker det med att läsa första byten i varje 4 kb's segment i filen eftersom att det virtuella minnet endast hanterar hela sidor). Tidpunkt Sändare Mottagare T1 Skapa filer för de bitar som är ettor. Vänta. T1+1s Vänta. Försök skapa alla filer och notera vilka som existerar. T1+2s Ta bort eventuella skapade filer. Ta bort eventuella skapade filer. Figur 2. Beskrivning av implementation. Det tar alltså 3 sekunder att överföra ett tecken. Anledningen till att implementationen är gjord på sekundnivå är att det är avsevärt lättare då man inte behöver addera sekunder och mikrosekunder för att räkna ut nästa tidpunkt i överföringen. 3.3 Minnesmappning En resurs som princip alltid är delad i ett fleranvändarsystem är primärminnet. När en användare öppnar en fil så lagrar operativsystemets kärna åtminstone så mycket av filen som motsvarar en sida av sidtabellen (eng. page table) i primärminnet. Antag att en sida i det virtuella minnets sidtabell är 4 kb. Vid läsning av första byten i en fil läses 4 kb in med automatik till primärminnet vilket refererande sida i sidtabellen sedan mappas mot [5]. Kärnan lagrar även den öppna filens inode-nummer i tabellen över öppna filer. Om ytterliggare en användare öppnar samma fil kommer Figur 3. Användare H's läsning av fil. Användare L läser nu hela filens innehåll. De sidor av filen som användare H har läst ligger redan i primärminnet och L kommer således att läsa dessa sidor direkt ur primärminnet istället för från disk. Se figur 4 nedan.
6 Figur 4. Användare L's läsning av hela filen. Genom att mäta den tid varje sida tar att läsa in från filen, kan användare L se vilka sidor av filen som H har läst in. De sidor som lästs kan till exempel motsvara ettor och de ej lästa nollor - användarna H och L kan nu kommunicera med varandra Utredning Denna kanal fungerar utmärkt i teorin men är betydligt svårare att implementera i praktiken. Skulle en kanal skapas enligt denna metod skulle överföringshastigheter i storleksordningen flera hundra bitar per sekund kunna fås [6]. Problemet med denna kanal ligger bland annat i att kunna mäta tider med tillräckligt hög upplösning i userland samt att mottagarprogrammet påverkas av en eventuell context switch. Antag att mottagarprogrammet startar en tidtagning innan den börjar läsa en sida. Om mottagarprogrammet blir avbruttet av en context switch precis efter att tidtagningen startat kommer tiden för sidläsningen att bli väldigt lång i förhållande till om mottagarprogammet inte blivit avbrutet. Mottagarprogrammet skulle i detta fall antagligen tolka det som en diskläsning, vilket det i själva verket kanske inte alls är, varpå en felaktig bit fås. För att få ett bra fungerande mottagarprogram skulle avbrott behöva stängas av under den tiden som mottagarprogammet gör sin tidtagning och läsning, för att på så sätt slippa bli avbrutet av en context switch. Dock så skulle detta kräva superuser-rättigheter, men skulle en användare ha dessa rättigheter så kan denne kringgå MLS-systemet ändå. 4. Slutsats Att eliminera alla möjligheter till gömda kanaler vid design av MLS-system är en otroligt svår, om inte omöjlig uppgift. Så fort ett system skall kunna hantera flera användare uppstår ett behov av delade resurser, vilket är förutsättningen för att en gömd kanal skall kunna skapas. Ett system som är designat att eliminera så många kända gömda kanaler som möjligt får även lidande prestanda eftersom att man då undviker att dela resurser mellan användare i den mån som detta är möjligt. En anledning till att system delar resurser mellan användare är just av prestandaskäl; det är ju till exempel slöseri med minne att ha samma saker på flera olika ställen i minnet. Som visats i denna rapport behöver en simpel gömd kanal inte vara svår att implementera, det är tvärtom en ganska lätt uppgift. Dock är ofta dessa simpla gömda kanaler relativt lätta att finna för en administratör som aktivt letar efter gömda kanaler, vilket kan, som beskrivits tidigare göras genom att skriva en process som körs i bakgrunden och regelbundet letar efter kända mönster. Gömda kanaler är ett stort område, vilket alltid är aktuellt vid utveckling av säkra system och är något som är viktigt att ha i åtanke. Referenser [1] FreeBSD, The FreeBSD foundation, [2] Bell, D.D. and L.J. La Padula (1974). Secure Computer System: Unified Exposition and Multics Interpretation, ESD-TR Bedford, MA: ESD/AFSC, Hanscom AFB [3] V. Petricek (2001), Information hiding and covert channels, Proceedings of 14th Annual Student Conference Week of Doctoral Students (WDS2001),Prague, ih-wds.pdf, [4] FreeBSD 6.2, jail utility, [5] A. Silberschatz, P.B. Galvin, G. Gagne (2004), Operating system concepts, seventh edition, John Wiley & Sons, Inc. ISBN [6] C. Percival (2005), Cache missing for fun and profit, IRMACS Center, Simon Fraser University, Burnaby, BC, Canada,
7 Appendix A ---- Begin atime_write.c ---- /* atime_write.c * * To compile: gcc -o send atime_write.c -lm * * Written by, * jerer606@student.liu.se * jonte466@student.liu.se */ #include <stdio.h> #include <fcntl.h> #include <sys/time.h> /* Delay before starting to send */ #define STARTUP_DELAY 1 /* Delay between sending bits */ #define WRITE_DELAY 2 /* Number of channels */ #define NUMCHANNELS 4 /* Macros for common things */ #define GETBIT(a, b) (a&(int)pow(2,b)) > 0? 1 : 0 #define SEND(a) if (a == 0 a == 4) read(fd[0], &c, 1); else if \ (a == 1 a == 5) read(fd[1], &c, 1); else if \ (a == 2 a == 6) read(fd[2], &c, 1); else read(fd[3], &c, 1) #define WAIT() starttime += WRITE_DELAY; do { time(&currtime); usleep(10); \ while (starttime > currtime) char *channels[numchannels] = { "/boot", "/etc", "/usr/lib", "/lib" ; int main(int argc, char *argv[]) { int i, j; size_t len; int fd[4]; u_char c; u_char sendbuf[512]; FILE *fp; struct tm tm; time_t currtime, starttime; if (argc < 3) { printf("usage: %s <input file> HH:MM:SS\n", argv[0]); /* Try to open the file containing the data to be sent */ if ((fp = fopen(argv[1], "r")) == NULL) { perror("open()"); /* Read the file containing the message to send */ len = fread(sendbuf, sizeof(u_char), sizeof(sendbuf), fp); sendbuf[len-1] = '\0'; printf("[*] Start time: %s\n", argv[2]); /* Get the current time, we do this so we don't have to set all the fields in tm before we call strptime() below. */ time(&starttime); tm = *localtime(&starttime); /* We want to use the time specified in the command line argument */ if (strptime(argv[2], "%H:%M:%S", &tm) == NULL) { perror("strptime()");
8 /* Convert to epoch time */ starttime = mktime(&tm); /* We have a small delay compared to the receiver */ starttime += STARTUP_DELAY; /* Wait until the specified time before we start to send */ do { time(&currtime); usleep(10); while (starttime > currtime); printf("[*] Sending message: "); /* Open the target directories */ for (i = 0; i < NUMCHANNELS; i++) { if ((fd[i] = open(channels[i], O_RDONLY O_NONBLOCK)) == -1) { perror("open()"); /* Send the data */ for (i = 0; i < len; i++) { for (j = 0; j < 4; j++) { if (GETBIT(sendbuf[i], j)) SEND(j); WAIT(); for (j = 4; j < 8; j++) { if (GETBIT(sendbuf[i], j)) SEND(j); printf("%c", sendbuf[i]); WAIT(); printf("\n[*] Data has been sent!\n"); /* Clean up */ for (i = 0; i < NUMCHANNELS; i++) { close(fd[i]); fclose(fp); return 0; ---- End atime_write.c Begin atime_read.c ---- * atime_read.c * * To compile: gcc -o receive atime_read.c * * Written by, * jerer606@student.liu.se * jonte466@student.liu.se */ #include <stdio.h> #include <unistd.h> #include <time.h> #include <sys/types.h> #include <sys/stat.h> /* specifies the time to wait for the sender to send its bits in each cycle. In seconds. */ const int sleeptime = 2;
9 /* to keep info about out channel objects */ struct ch { time_t atime_old, atime_new; struct stat sb; ; /* specifies what catalogs or files we will be using to communicate */ const char *channels[] = { "/boot", "/etc", "/usr/lib", "/lib" ; /* * Converts an 8 bytes long string that must contain * only 1:s and 0:s, to the corresponding integer value * using the last byte in the string as the MSB. */ char convert(char *letter) { char b; bzero(&b,0); b += letter[7]*128; b += letter[6]*64; b += letter[5]*32; b += letter[4]*16; b += letter[3]*8; b += letter[2]*4; b += letter[1]*2; b += letter[0]*1; return b; int main(int argc, char *argv[]) { int i, j; struct ch channel[4]; time_t currtime, starttime; struct tm tm; unsigned char received_char[8], tkn; if(argc < 2 ) { printf("usage: %s hh:mm:ss\n", argv[0]); // get start time time(&starttime); tm = *localtime(&starttime); strptime(argv[1], "%H:%M:%S", &tm); starttime = mktime(&tm); printf("waiting for start time to arrive...\n"); /* do not start until specified time has arrived */ do { time(&currtime); usleep(10); while (starttime > currtime); printf("starting to receive!\n"); printf("receiving message: "); do { for(j = 0; j < 2 ; j++) { // sets the next time we will check atime for our channels starttime += sleeptime; // read status for our channels for(i = 0; i < 4 ; i++) { if ((stat(channels[i], &channel[i].sb)) == -1) {
10 perror("stat() channel[i]"); // save atime channel[i].atime_old = channel[i].sb.st_atime; // wait until read time arrives so that the // sender gets time to change atime of the channels do { time(&currtime); usleep(10); while (starttime > currtime); // read status again for(i = 0; i < 4 ; i++) { if ((stat(channels[i], &channel[i].sb)) == -1) { perror("stat() channel[i]"); // save new atime channel[i].atime_new = channel[i].sb.st_atime; // write the received bits if(channel[i].atime_new > channel[i].atime_old) { // received a 1 #ifdef DEBUG printf("received: 1\n"); received_char[i+(j*4)] = 1; else { // received a 0 #ifdef DEBUG printf("received: 0\n"); received_char[i+(j*4)] = 0; // if we have received 8 bits if(j == 1) { tkn = convert(received_char); // if message is finished if(tkn == 0) { printf("\nmessage received succesfully! Exiting...\n"); exit(0); printf("%c", tkn); while(1); return 0; ---- End atime_read.c ---- Appendix B ---- Begin cc_file.c ---- /* Covert channel using file creation. * * To build the sender: gcc cc_file.c -DSENDER -lm -o sender * To build the receiver: gcc cc_file.c -DRECEIVER -lm -o receiver * * Written by, * jerer606@student.liu.se * jonte466@student.liu.se */
11 #include <stdio.h> #include <sys/types.h> #include <time.h> #include <fcntl.h> #include <math.h> /* We use 8 channels.. one for each bit of a character */ #define NUMCHANNELS 8 /* Each character takes 3*DELAY seconds to transmit */ #define DELAY 1 /* Macro to get a specified bit */ #define GETBIT(a, b) (a&(int)pow(2,b)) > 0? 1 : 0 /* Macro for waiting */ #define WAIT(a) starttime += a; do { time(&currtime); usleep(10); \ while (starttime > currtime); /* The channels we use */ char *channels[numchannels] = \ { "/tmp/test111", "/tmp/test222", "/tmp/test333", "/tmp/test444", \ "/tmp/test555", "/tmp/test666", "/tmp/test777", "/tmp/test888"; /* We must keep track of which files we successfully created so that we can delete them later. */ int created[numchannels]; void clean() { int i, err; /* Remove all created files */ for (i = 0; i < NUMCHANNELS; i++) { if (created[i] == 1) { if ((err = remove(channels[i])) == -1) { perror("remove()"); /* Reset the list */ created[i] = 0; int create(int target) { int fd; /* Try to create the file */ if ((fd = open(channels[target], O_CREAT O_EXCL)) == -1) { #ifdef SENDER /* Shouldn't happen, bail out */ perror("open()"); #elif RECEIVER /* The file already exists - return that this bit should be a 1 */ return 1; else { /* We successfully created the file, keep track of it in our list. */ created[target] = 1; close(fd); return 0; int main(int argc, char *argv[])
12 { int i, j; struct tm tm; time_t currtime, starttime; #ifdef SENDER size_t len; u_char sendbuf[512]; FILE *fp; #elif RECEIVER u_char b; /* We dont have any created files yet */ for (i = 0; i < NUMCHANNELS; i++) created[i] = 0; #ifdef SENDER if (argc < 3) { printf("usage: %s HH:MM:SS <file to send>\n", argv[0]); #elif RECEIVER if (argc < 2) { printf("usage: %s HH:MM:SS\n", argv[0]); printf("[*] Start time: %s\n", argv[1]); time(&starttime); tm = *localtime(&starttime); if (strptime(argv[1], "%H:%M:%S", &tm) == NULL) { perror("strptime()"); /* Convert to epoch time */ starttime = mktime(&tm); #ifdef SENDER /* Try to open the file to send */ if ((fp = fopen(argv[2], "r")) == NULL) { perror("open()"); /* Read in the contents of the file */ len = fread(sendbuf, sizeof(u_char), sizeof(sendbuf), fp); sendbuf[len -1] = '\0'; fclose(fp); #elif RECEIVER /* We have a small delay compared to the sender */ starttime += DELAY; /* Wait until the specified time before we start */ do { time(&currtime); usleep(10); while (starttime > currtime); #ifdef SENDER printf("[*] Sending message:\n"); for (i = 0; i < len; i++) { /* Get the individual bits of each character */ for (j = 0; j < 8; j++) { if (GETBIT(sendbuf[i], j)) create(j);
13 printf("%c", sendbuf[i]); WAIT(2*DELAY); clean(); WAIT(DELAY); printf("\n[*] Message was sent!\n"); #elif RECEIVER printf("[*] Receiving message:\n"); while (1) { b = 0; /* Build the character from the received bits */ for (i = 0; i < 8; i++) { b += pow(2, i)*create(i); WAIT(DELAY); clean(); WAIT(2*DELAY); /* We received NULL, transmission is complete */ if (b == 0) break; printf("%c", b); printf("\n[*] Message recieved!\n"); /* Clean up */ clean(); return 0; ---- End cc_file.c ----
Programmeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 6: Filhantering Henrik Björklund Umeå universitet 13 oktober 2009 Björklund (UmU) Programmeringsteknik 13 oktober 2009 1 / 22 Textfiler Filer är sekvenser
printenv sort pager printenv grep args sort pager
1 Problembeskrivning Uppgiften var att skriva ett program, digenv för att visa miljövariabler. programmet vara ekvivalent med att köra: Kört utan argument så skulle printenv sort pager och kört med argument
Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00
Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen 2019-04-16 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Anteckningarna lämnas
Raspberry Pi och Tellstick, ett program i C.
Raspberry Pi och Tellstick, ett program i C. Ett program skrivet i C för att med Tellstick tända och släcka en eller flera lampor. Programmet startas med kommandot: /home/pi/development/cprog/tellstick/tellstick-13
4 grundregler. Minneshantering. Problemet. Windows minkrav
4 grundregler 1. Man kan aldrig få för mycket minne 2. Minnet kan aldrig bli för snabbt Minneshantering 3. Minne kan aldrig bli för billigt 4. Programmens storlek ökar fortare än minnet i datorerna (känns
Styrteknik: Binära tal, talsystem och koder D3:1
Styrteknik: Binära tal, talsystem och koder D3:1 Digitala kursmoment D1 Boolesk algebra D2 Grundläggande logiska funktioner D3 Binära tal, talsystem och koder Styrteknik :Binära tal, talsystem och koder
Operativsystem ID1200/06 Tentamen :00-18:00
Operativsystem ID1200/06 Tentamen 2018-01-12 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Svaren skall lämnas på dessa sidor,
Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document
Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document Användarhandledning inloggning Logga in Gå till denna webbsida för att logga in: http://csportal.u4a.se/
Support Manual HoistLocatel Electronic Locks
Support Manual HoistLocatel Electronic Locks 1. S70, Create a Terminating Card for Cards Terminating Card 2. Select the card you want to block, look among Card No. Then click on the single arrow pointing
... Funktionsanrop. Vad händer när man kör ett program?
Vad händer när man kör ett program? När man kompilerar ett program och sedan länkar ihop det så stoppar länkaren in lite extra kod i programmet. Det är denna kod som i sin tur anropar main-funktionen ungefär
Isolda Purchase - EDI
Isolda Purchase - EDI Document v 1.0 1 Table of Contents Table of Contents... 2 1 Introduction... 3 1.1 What is EDI?... 4 1.2 Sending and receiving documents... 4 1.3 File format... 4 1.3.1 XML (language
Tellstick-15.c. Kompilering av programmet: gcc -o tellstick-15 -Wall -ltelldus-core -W -O2 -s -pipe -lm tellstick-15.c
Tellstick-15.c Ett program skrivet i C för att med Tellstick tända och släcka en eller flera lampor. Det nya i detta program är att strömbrytare 1 tänds och släcks efter solens upp- och nedgång, tänds
Exempelsamling Assemblerprogrammering
Exempelsamling Assemblerprogrammering I uppgifterna nedan utgå från följande programskelett: #include.data var1:.word 12 var2:.word 19 sum: prod:.float 0.set noreorder.text.globl start.ent start
Övning 7. Timer, serieport
Övning 7 Timer, serieport 7.6 timer_1 Memory-Mapped addresses 0x920 status 0x924 control 0x928 periodl 0x92C periodh 0x930 snapl 0x934 snaph 15 0 Run TO (Time-Out) ITO cont start stop timer_1 start D Q
Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00
Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen 2019-04-16 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Anteckningarna lämnas
Enkla datatyper minne
Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in
GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167
GU / Chalmers Campus Lindholmen Tentamen Programutveckling 2016-01-13 LEU 482 / TIG167 Examinator: Henrik Sandklef (0700-909363) Tid för tentamen: 2016-01-13, 08.30 12.30 Ansvarig lärare: Henrik Sandklef,
OBS!! Detta är DEL 2 av tentan. För att få ut denna måste du ha lämnat in del 1. Om du inte fått ut del 1 bör du meddela skrivningsvakten. OBS!!
Sid 1 av 8 Datavetenskap Tentamen för DVG A03 Datorsystemteknik, 7,5 hp, del 2 fredag 2009-01-09 kl. 08.15-13.15 Tentamen del 2 består av 4 sidor. Ansvariga lärare: Tillåtna hjälpmedel: Kerstin Andersson
Att skriva till och läsa från terminalfönstret
Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen
Operativsystem ID1200/06 och ID2200/06 Tentamen TENA 6 hp :00-18:00
Operativsystem ID1200/06 och ID2200/06 Tentamen TENA 6 hp 2018-04-03 14:00-18:00 Omtentander på ID2200 TEN1 3.8 hp och ID2206 TEN1 4.5 hp skall inte skriva denna tentamen! Instruktioner Du får, förutom
HANTERING AV UPS CX
HANTERING AV UPS CX2100-0904 Hantering av UPS-modulen CX2100-0904. I WES7 och TwinCAT 2. Inställning av UPS:en i WES7 UPS:ens konfigurationsflik Inställningsmöjligheterna för hur UPS:en beter sig finns
Realtidsstöd i Minix. En laborationrapport. Oktober 2012
Realtidsstöd i Minix En laborationrapport Karl Zylinski Hampus Gustafsson Oktober 2012 1 Innehåll 1 Introduktion 3 1.1 Problem................................ 3 1.1.1 Skapa ett testprogram....................
Tentamen PC-teknik 5 p
Tentamen PC-teknik 5 p Namn:. Klass:... Program: Di2, Em3, Et3 Datum: 03-08-15 Tid: 13:30-18:30 Lokal: E171 Hjälpmedel: Linjal, miniräknare, Instruktionsrepertoar för 8086 (utdelas), Lathund, Pacific C
Michael Q. Jones & Matt B. Pedersen University of Nevada Las Vegas
Michael Q. Jones & Matt B. Pedersen University of Nevada Las Vegas The Distributed Application Debugger is a debugging tool for parallel programs Targets the MPI platform Runs remotley even on private
Öppna filer och filsystem i PintOS Hemuppgift TDDI81, 21/
Öppna filer och filsystem i PintOS Hemuppgift TDDI8, /0-03 Almquist Mathias (matal09) Nguyen Johan (johng86) Hamzic Mirza (mirha348) Timliden Erik (eriti930) INLEDNING PintOS är ett operativsystem utvecklat
Avancerad SSL-programmering I
Tekn.dr. Göran Pulkkis Överlärare i Datateknik Avancerad SSL-programmering I 25.1.2012 1 Innehåll SSL-sessioner Förnyad SSL-handskakning Blockerad/oblockerad in/uthantering 25.1.2012 2 SSL-sessioner Session
TDDIU81. Processer och trådar. Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl
TDDIU81 Processer och trådar Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl Sammanfattning Den här rapporten innehåller en kort genomgång av allmän process och trådhantering
Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson
Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående
Övning från förra gången: readword
(9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver
Fö 8 TSEA81. Real-time Linux
Fö 8 TSEA81 Real-time Linux Real-time Linux Olika sätt att åstadkomma Real-time Linux: * Linux 2.6 har CONFIG_PREEMPT option, dvs även processer som gör systemanrop kan preemptas. * Linux 2.6 kan köras
2.45GHz CF Card Reader User Manual. Version /09/15
2.45GHz CF Card Reader User Manual Version 2.0 2008/09/15 Install SYRD245-CF Card Reader to PDA: 1. Explorer SYRD245-CF folder of SYRIS Xtive CD-ROM 2. Check your PDA OS (Mobile5 or PPC2003) NETCF V2 currently
Pekare och arrayer. Indexering och avreferering
Pekare och arrayer En array är ett sammanhängande minnesområde rymmande ett antal element av en viss typ. Arraynamnet kan ses som adressen till arrayens början, dvs. dess första element. En pekare är en
TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19
TDDC74 Programmering: Abstraktion och modellering Dugga 2, 2017-04-06, kl 17-19 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i
Beijer Electronics AB 2000, MA00336A, 2000-12
Demonstration driver English Svenska Beijer Electronics AB 2000, MA00336A, 2000-12 Beijer Electronics AB reserves the right to change information in this manual without prior notice. All examples in this
Cache coherence hos multicoreprocessorer
Cache coherence hos multicoreprocessorer Benjamin Holmqvist, EDT621 December 5, 2016 1 Contents 1 Inledning 3 2 Syfte 3 3 Cache Coherence 3 3.1 Implementering.......................... 4 3.2 Snoop baserade..........................
Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning
Generell säkerhet Här finns det inga direkta rätt eller fel. Snarare saker man bör tänka på när man implementerar ett program. Kort sagt: Efter att du kommit på hur du tänkt göra, sov på saken och tänk
Möte 7: Uppföljning av föreläsningen med Peer Instruction - (PI)
Möte 7: Uppföljning av föreläsningen med Peer Instruction - (PI) Som sagt så kommer den här kursen endast innehålla en enda föreläsning och det var förra gången. Från och med nu så kommer vi förutsätta
Datorteknik ERIK LARSSON
Datorteknik ERIK LARSSON Inledning Ken Thompson och Dennis M. Ritchie utvecklade C Turingpriset( Nobelpris i datavetenskap ), 1983 Alan Turing (1912-1954) För deras utveckling av generell OS teori och
En kort text om programmering i C.
En kort text om programmering i C C skapades 1972 av Brian Ritchie och Dennis Kerighan på Bell Labs i USA Det blev det språk som är mest använt genom tiderna Det finns många olika språk Pascal, FORTH,
Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,
Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman
Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås
Schenker Privpak AB Interface documentation for web service packageservices.asmx 2012-09-01 Version: 1.0.0 Doc. no.: I04304b Sida 2 av 7 Revision history Datum Version Sign. Kommentar 2012-09-01 1.0.0
Alias 1.0 Rollbaserad inloggning
Alias 1.0 Rollbaserad inloggning Alias 1.0 Rollbaserad inloggning Magnus Bergqvist Tekniskt Säljstöd Magnus.Bergqvist@msb.se 072-502 09 56 Alias 1.0 Rollbaserad inloggning Funktionen Förutsättningar Funktionen
Det finns en handledning till kortet på hemsidan. AVR STK500.
Laboration 1 (ver 1) Uppgifter: AVR Studio 4.lnk Bli bekant med utvecklingskortet, och AVR studio. Skriva in program för binärräknare. Simulera detta samt ladda ner det till kortet. Förse ovanstående program
INSTALLATION INSTRUCTIONS
INSTALLATION - REEIVER INSTALLATION INSTRUTIONS RT0 RF WIRELESS ROOM THERMOSTAT AND REEIVER MOUNTING OF WALL MOUTING PLATE - Unscrew the screws under the - Pack contains... Installation - Receiver... Mounting
TDDC74 Lab 04 Muterbara strukturer, omgivningar
TDDC74 Lab 04 Muterbara strukturer, omgivningar 1 Översikt I den här laborationen kommer ni att lära er mer om: Tillstånd, och skillnader mellan ren funktionell programmering och imperativ. Skillnaden
FÖRBERED UNDERLAG FÖR BEDÖMNING SÅ HÄR
FÖRBERED UNDERLAG FÖR BEDÖMNING SÅ HÄR Kontrollera vilka kurser du vill söka under utbytet. Fyll i Basis for nomination for exchange studies i samråd med din lärare. För att läraren ska kunna göra en korrekt
http://marvel.com/games/play/31/create_your_own_superhero http://www.heromachine.com/
Name: Year 9 w. 4-7 The leading comic book publisher, Marvel Comics, is starting a new comic, which it hopes will become as popular as its classics Spiderman, Superman and The Incredible Hulk. Your job
Tillämpad programmering
Tillämpad programmering C++ make, configure och arrayer Johan Montelius 1 C++ sndcopy.cc #include #include sndreader.h #incldue sndwrite.h int main(int argc, char *argv[]) { 2 C++ sndreader.h #include
Ulf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment:
Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volafle, #define Arrayer av pekare, arrayer av arrayer Hemuppgi9er: v2. Föregående
1.1 Invoicing Requirements
1.1 Invoicing Requirements Document name The document should clearly state INVOICE, DOWNPAYMENT REQUEST or CREDIT NOTE. Invoice lines and credit lines cannot be sent in the same document. Invoicing currency.
Webbregistrering pa kurs och termin
Webbregistrering pa kurs och termin 1. Du loggar in på www.kth.se via den personliga menyn Under fliken Kurser och under fliken Program finns på höger sida en länk till Studieöversiktssidan. På den sidan
Lösningar till tentamen i EIT070 Datorteknik
Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 7 mars 2012, klockan 14:00 19:00 i Vic 2, 3. Tillåtna hjälpmedel: på tentan utdelad formelsamling,
Föreläsning 3. Programmering, C och programmeringsmiljö
Föreläsning 3 Programmering, C och programmeringsmiljö Vad är programmering? Ett väldigt kraftfullt, effektivt och roligt sätt att kommunicera med en dator Att skapa program / applikationer till en dator
Information Coding / Computer Graphics, ISY, LiTH CUDA. En lösning för generella beräkningar. En introduktion: Programmingsmodell och språk
CUDA En lösning för generella beräkningar. En introduktion: Programmingsmodell och språk Minnesareor och minnesaccess Delat minne Exempel CUDA = Compute Unified Device Architecture Utvecklat av NVidia
2.1 Installation of driver using Internet Installation of driver from disk... 3
&RQWHQW,QQHKnOO 0DQXDOÃ(QJOLVKÃ'HPRGULYHU )RUHZRUG Ã,QWURGXFWLRQ Ã,QVWDOOÃDQGÃXSGDWHÃGULYHU 2.1 Installation of driver using Internet... 3 2.2 Installation of driver from disk... 3 Ã&RQQHFWLQJÃWKHÃWHUPLQDOÃWRÃWKHÃ3/&ÃV\VWHP
Webbreg öppen: 26/ /
Webbregistrering pa kurs, period 2 HT 2015. Webbreg öppen: 26/10 2015 5/11 2015 1. Du loggar in på www.kth.se via den personliga menyn Under fliken Kurser och under fliken Program finns på höger sida en
Förskola i Bromma- Examensarbete. Henrik Westling. Supervisor. Examiner
Förskola i Bromma- Examensarbete Henrik Westling Handledare/ Supervisor Examinator/ Examiner Ori Merom Erik Wingquist Examensarbete inom arkitektur, grundnivå 15 hp Degree Project in Architecture, First
Datasäkerhet och integritet
Chapter 4 module A Networking Concepts OSI-modellen TCP/IP This module is a refresher on networking concepts, which are important in information security A Simple Home Network 2 Unshielded Twisted Pair
Hur man kompilerar och kör IT++-program med MinGW. 1 Sammanfattning. 2 Om dokumentet. 3 Om min konfiguration
1 (12) Hur man kompilerar och kör IT++-program med MinGW 1 Sammanfattning Detta dokument visar hur man lätt (med några få extra raders kod) kan få IT++ att bli kompatibelt med kompilatorn MinGW. Med den
F6: I/O hantering. Typer av I/O i ett datorsystem. Protokoll för synkronisering. Drivrutiner. Memory mapped Port mapped. Polling Timed Interrupt DMA
F6: I/O hantering Typer av I/O i ett datorsystem Memory mapped Port mapped Protokoll för synkronisering Polling Timed Interrupt DMA Drivrutiner 1 Memory mapped I/O enheter avkodas precis som ett minne
TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16
TDDC74 Programmering: Abstraktion och modellering Dugga 2, 207-04-06, kl 4-6 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i svårighetsordning.
Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning
Generell säkerhet Här finns det inga direkta rätt eller fel. Snarare saker man bör tänka på när man implementerar ett program. Kort sagt: Efter att du kommit på hur du tänkt göra, sov på saken och tänk
Systemnära programmering 2012-11-05. Tentamen. Systemnära programmering, 7.5hp 5 november 2012
Tentamen Systemnära programmering, 7.5hp 5 november 2012 Skrivtid: 9 13 Hjälpmedel: EN av följande böcker Bilting & Skansholm: Vägen till C ELLER J.R. Hanly & E.B. Koffman: C Program Design for Engineers
Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson
Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående
Problem som kan uppkomma vid registrering av ansökan
Problem som kan uppkomma vid registrering av ansökan Om du har problem med din ansökan och inte kommer vidare kan det bero på det som anges nedan - kolla gärna igenom detta i första hand. Problem vid registrering
Föreläsning 13. In- och utmatning
Föreläsning 13 In- och utmatning Dagens kluring Deklarera en struct som kan användas för att representera en rät linje Använd den I main för att deklarera en variabel som du initierar så att den representerar
Information technology Open Document Format for Office Applications (OpenDocument) v1.0 (ISO/IEC 26300:2006, IDT) SWEDISH STANDARDS INSTITUTE
SVENSK STANDARD SS-ISO/IEC 26300:2008 Fastställd/Approved: 2008-06-17 Publicerad/Published: 2008-08-04 Utgåva/Edition: 1 Språk/Language: engelska/english ICS: 35.240.30 Information technology Open Document
Operativsystem (ID2200/06) XX XX:00-XX:00
Operativsystem (ID2200/06) 2017-01-XX XX:00-XX:00 Namn: Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4-sida med anteckningar. Mobiler etc skall lämnas till
Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2014-06-12 Skrivtid: 1400-1900 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Installation av F13 Bråvalla
Website: http://www.rbdesign.se Installation av F13 Bråvalla RBDESIGN FREEWARE - ESCK Norrköping-Bråvalla 1. Ladda ner och packa upp filerna i en mapp som du har skapat på ett lättöverskådligt ställe utanför
Filsäkerhet i Windows NT (NTFS)
Filsäkerhet i Windows NT (NTFS) Jens Granlund 19.10.2000 Introduktion Detta dokument försöker att beskriva säkerhetsmekanismerna i Windows NTs filsystem NTFS på ett lättbegripligt sätt. Access Control
Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson
Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson Kravhantering På Riktigt, 16 maj 2018 Anna Fallqvist Eriksson Agilista, Go See Talents linkedin.com/in/anfaer/
Översättning av galleriet. Hjälp till den som vill...
Hjälp till den som vill... $txt['aeva_title'] = 'Galleri'; $txt['aeva_admin'] = 'Admin'; $txt['aeva_add_title'] = 'Titel'; $txt['aeva_add_desc'] = 'Beskrivning'; $txt['aeva_add_file'] = 'Fil att ladda
Integritetspolicy på svenska Integrity policy in English... 5
Innehållsförteckning / Table of content Integritetspolicy på svenska... 2 In Vino Veritas... 2 Vilka vi är... 2 Vilka personuppgifter vi samlar in och varför vi samlar in dem... 2 Namninsamlingen... 2
Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.
Fö 8: Operativsystem II Minneshantering och Virtuelltminne. Virtuella I/O enheter och Filsystemet. Flerprocessorsystem. Minneshantering Uniprogrammering: Minnet delas mellan operativsystem och användarprogrammet.
C++ Objektorientering - Klasser. Eric Elfving
C++ Objektorientering - Klasser Eric Elfving 1 / 20 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data till en ny datatyp. Ett problem med struct är åtkomst... 2 / 20 Följande
Recap Mera om nya typer Kort Fält. Programmering. Sommarkurs 2007 www.hh.se/staff/vero/programmering. Verónica Gaspes. IDE-sektionen.
Programmering Sommarkurs 2007 www.hh.se/staff/vero/programmering Verónica Gaspes IDE-sektionen Juni 14 Utkast 1 Recap 2 Mera om nya typer 3 Kort 4 Fält Recap Man kan ge namn till typer. Vi undersökte enum
Tentamen Nätverksprogrammering Lösningsförslag
LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2014 06 02, 8.00 13.00 Del 1 1. a) TCP (Transmission Control Protocol) och UDP (User Datagram
Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson
Fakulteten för ekonomi, kommunikation och IT Corba Datum: 2007-10-17 Namn: Kurs: Henrik Bäck Mathias Andersson DVGC02 Innehållsförteckning Implementation 3 IDL-fil 3 Server 3 Klient 3 Körning 3 Bilagor
Utkast. Programmering. Signals. Olika typer av program. Sommarkurs 2007 www.hh.se/staff/vero/programmering. Avbrott i mjukvara.
Programmering Sommarkurs 2007 www.hh.se/staff/vero/programmering Verónica Gaspes Utkast Avbrott i mjukvara Larm signaler Avslutnings signaler IDE-sektionen Curses Juli 2 Olika typer av program Signals
Och!efter!ca!20!omgångar!hamnade!den!på!en!stabil!konfiguration!enligt!nedan! där!den!stannar!kvar.!
Inlämningsuppgift5/GameofLife GameofLifeärettklassigtspel/emulator.Sistidokumentetserduemexempel kodskriveniprogrammetmatlab.skrivomprogrammeticiställetochstarta medattskrivaerainitialerpåspelbrädet.förmerinformationom
Taking Flight! Migrating to SAS 9.2!
Taking Flight! Migrating to SAS 9.2! Joel Orr, System Engineering Division June 1, 2011 Agenda Introduction Benefits of Migration Possible Migration Scenarios To Do List Potential Problems Resources Introduction
Cacheminne Intel Core i7
EDT621 Datorarkitekturer med operativsystem 7,5 hp 2015-12-07 Cacheminne i Intel Core i7 Författare: Adnan Karahmetovic Handledare: Erik Larsson Innehåll 1. Inledning... 1 1.1 Syfte... 1 1.2 Frågeställning...
Dagens föreläsning. Specialtecken. Mer om printf. Formateringssträngar. Mer om scanf. Programmeringsteknik för Ingenjörer VT05
Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 12 Filhantering Funktionsbibliotek Mer om kompilering Lagrinsklasser Makron Programmeringsteknik VT05 2 Mer om printf Utskrifter
Recitation 4. 2-D arrays. Exceptions
Recitation 4. 2-D arrays. Exceptions Animal[] v= new Animal[3]; 2 declaration of array v Create array of 3 elements v null a6 Assign value of new-exp to v Assign and refer to elements as usual: v[0]= new
CVUSD Online Education. Summer School 2010
CVUSD Online Education Summer School 2010 A New Frontier for Education This is an exciting time for CVUSD First opportunity for the Online US History course and second time for the Online Health course
Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.
Datorteknik Tomas Nordström Föreläsning 6 För utveckling av verksamhet, produkter och livskvalitet. Föreläsning 6 Vad händer vid uppstart SoC och Kringkretsar, PIO Programmering i Assembler Lab2 genomgång
lex källkod lex.l lexkompilator lex.yy.c C- kompilator lex.yy.c a.out sekvens av tokens a.out input specifikation av tokens mha reguljära uttryck
input läs tecken stoppa tillbaka ett tecken skicka ett token och dess attribut parser Eliminera white space och kommentarer Gruppera lästa tecken till tokens identifierare, nyckelord, numeriska konstanter,
Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock
Inledning Vad är ett datorprogram, egentligen? Olika språk Problemlösning och algoritmer 1 (14) Varför använda en dator? Genom att variera de program som styr datorn kan den användas för olika uppgifter.
Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte
CT3760 Mikrodatorteknik Föreläsning 4 Tisdag 2005-09-06 Stacken I datasammmanhang är en stack ett minnesområde. Det är processorn som använder stacken. För att skapa en stack anger man en adress i stackpekarregistret.
Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013
DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013 Innehåll Trådar i Java swing- klassen Timer Klient-Server-program Trådar Tråd = enkel process Ett program kan ha flera trådar, flera
Övning 3 i 2D1324. Strukturering h filer deklaration vs definition Debuggning gdb Preprocessorn #define assert(s) FILE LINE Länkning
Övning 3 i 2D1324 Strukturering h filer deklaration vs definition Debuggning gdb Preprocessorn #define assert(s) FILE LINE Länkning Avancerad c-programering och repetition Typisk h-fil #ifndef special_a
Preschool Kindergarten
Preschool Kindergarten Objectives CCSS Reading: Foundational Skills RF.K.1.D: Recognize and name all upper- and lowercase letters of the alphabet. RF.K.3.A: Demonstrate basic knowledge of one-toone letter-sound
Föreläsning 3. Programmering, C och programmeringsmiljö
Föreläsning 3 Programmering, C och programmeringsmiljö Vad är programmering? Ett väldigt kraftfullt, effektivt och roligt sätt att kommunicera med en dator Att skapa program / applikationer till en dator
TDDC76 - Programmering och Datastrukturer
TDDC76 - Programmering och Datastrukturer Objektorientering - Klasser Eric Elfving Institutionen för datavetenskap 1 / 20 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data
Workplan Food. Spring term 2016 Year 7. Name:
Workplan Food Spring term 2016 Year 7 Name: During the time we work with this workplan you will also be getting some tests in English. You cannot practice for these tests. Compulsory o Read My Canadian
Schenker Privpak AB Telefon 033-178300 VAT Nr. SE556124398001 Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr 033-257475 Säte: Borås
Schenker Privpak AB Interface documentation for web service packageservices.asmx 2010-10-21 Version: 1.2.2 Doc. no.: I04304 Sida 2 av 14 Revision history Datum Version Sign. Kommentar 2010-02-18 1.0.0
C++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap
C++ Objektorientering - Klasser Eric Elfving Institutionen för datavetenskap 1 / 23 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data till en ny datatyp. Ett problem med
Malmqvist, Daniel. Daniel Verhoeff [dav@mark-info.com] Skickat: den 2 juni 2009 16:22 Till: Från: Malmqvist, Daniel Ämne: RE: Brana Supporten
Malmqvist, Daniel Från: Daniel Verhoeff [dav@mark-info.com] Skickat: den 2 juni 2009 16:22 Till: Malmqvist, Daniel Ämne: RE: Brana Supporten Vilket terminal nummer har du upprättat i BranaTime sa du? From:
electiaprotect GSM SEQURITY SYSTEM Vesta EZ Home Application SMART SECURITY SYSTEMS! SVENSKA ios... 2-4 Android... 5-7
GSM SEQURITY SYSTEM Vesta EZ Home Application SVENSKA ios... 2-4 Android... 5-7 ENGLISH ios... 8-10 Android... 11-13 electiaprotect SMART SECURITY SYSTEMS! 1.1. Vesta EZ Home för ios Vesta EZ Home för