Un modello integrato control-flow e data-flow per il rilevamento automatico di intrusioni

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Un modello integrato control-flow e data-flow per il rilevamento automatico di intrusioni"

Transcript

1 Università degli Studi di Udine Facoltà di Scienze Matematiche Fisiche e Naturali Corso di Laurea Specialistica in Informatica Tesi di Laurea Un modello integrato control-flow e data-flow per il rilevamento automatico di intrusioni Candidato: Matteo Cicuttin Relatore: Prof. Marino Miculan Anno Accademico 2010/2011 Università degli Studi di Udine Via delle Scienze, Udine Italia

2

3 Alla mia famiglia, che mi ha sempre supportato.

4

5 Ringraziamenti In questo percorso mi sono trovato ad affrontare molte situazioni impegnative, quindi desidero innanzitutto ringraziare chi mi era vicino in quei momenti per avermi sopportato, Ilaria in particolare. Spesso il suo aiuto è stato determinante e spesso non sono stato capace di ricambiarlo. Il successivo ringraziamento va al mio relatore, Prof. Miculan, per l opportunità che mi ha dato e per il clima in cui questo lavoro si è svolto. Sono in debito con lui. Tra quelli che devo ringraziare ci sono anche gli amici, interni ed esterni all università, compresi quelli che ultimamente hanno perso un po la testa. Con loro ho condiviso momenti di divertimento e importanti scambi di idee. Naturalmente il ringraziamento più grande va alla mia famiglia per avermi supportato in questo percorso, nonostante i momenti difficili. Anche se non leggeranno mai questi ringraziamenti, desidero dire grazie a chiunque sia coinvolto nello sviluppo dei software che ho usato per mettere insieme questa tesi. Per scriverla ho usato Vim ma mi sono serviti anche un sacco di altri programmi, tra cui: L A TEX, GraphViz, GHC, GCC, GDB, NASM, Subversion, le shell Bourne e Korn, DTrace e anche qualcosina closed source come OmniGraffle. Questi software mi hanno permesso tra l altro di creare dei tool che hanno automatizzato molte parti del mio lavoro, semplificandolo enormemente. Il loro denominatore comune però è il sistema operativo che li fa girare, ovvero Unix. Ho usato in particolare Mac OS X per elaborare il testo e la grafica e Solaris (OpenIndiana) per tutta la parte legata a DTrace. FreeBSD invece sul mio server garantiva tutta una serie di servizi che mi sono stati assai utili, storage e backup in primis. Senza Unix e tutto quello che ci sta sopra tutto questo sarebbe stato infinitamente più difficile e frustrante. Desidero infine rivolgere un ringraziamento particolare a Chad Mynhier, che mi ha fornito materiale e consigli preziosissimi relativamente a DTrace. Durante questa laurea specialistica poche cose sono andate come pensavo e sono particolarmente felice di essere finalmente giunto al traguardo, anche se purtroppo la felicità di questi giorni è offuscata dalla cattiva salute del mio Micio. Con la laurea triennale avevo visto la punta di un iceberg, con la laurea specialistica ho

6 iv Ringraziamenti scoperto nuovi mondi. Spero che il futuro mi riservi una strada che mi consenta di non smettere di studiare.

7 Indice 1 Introduzione Anomaly detection e system call Obiettivo del lavoro Struttura della tesi Modelli per l anomaly detection Modelli control flow Automi a stati finiti VtPath Execution graphs Abstract stack, un modello costruito staticamente Modelli data flow Un modello data flow Discussione dei modelli studiati Un modello che integra control flow e data flow Debolezze dei modelli esistenti Primo scenario: vulnerabilità nel codice Secondo scenario: errore di configurazione di un server Terzo scenario: debolezza delle relazioni binarie Proposta Costruzione del modello Algoritmo di apprendimento delle relazioni unarie Algoritmo di apprendimento delle relazioni binarie Descrizione dell algoritmo L algoritmo completo per la costruzione del modello Relazione con l algoritmo originale rispetto ai falsi positivi Una possibile variante

8 vi Indice 3.5 L algoritmo per la verifica delle tracce rispetto al modello Gestione delle anomalie L implementazione Struttura generale del sistema Introduzione a DTrace Interfacciamento a DTrace tramite libdtrace(3lib) Note riguardo a DTrace Implementazione del sistema Lo script di data collection Implementazione di NewArgs() Costo computazionale del modello Costo del learning Costo della verifica Alcuni dati sperimentali Conclusioni e sviluppi futuri Riepilogo del lavoro svolto Il modello L implementazione Sviluppi futuri L uso dello stack nell apprendimento delle relazioni binarie Una dimensione statistica per il modello Costruzione statica del modello Applicazione del modello a sistemi virtualizzati Bibliografia 69

9 Elenco delle figure 1.1 Codice semanticamente equivalente Buffer overflow Architettura generale di un sistema black-box FSA d esempio Esempio riguardante la parte induttiva della definizione dell EG Rappresentazione grafica del significato di successore Time to check to time of use Banale programma vulnerabile ad un non-control data attack Informazioni apprese a runtime dall analisi data flow Programma vulnerabile d esempio FSA per il primo esempio Execution graph per il primo esempio Passi dell attacco al programma Programma per il secondo esempio FSA per il secondo esempio Execution graph per il secondo esempio Codice d esempio per il terzo scenario Nuovo modello per l esempio del primo scenario Nuovo modello per l esempio del terzo scenario Esecuzione dell algoritmo su una traccia Esecuzione dell algoritmo su una traccia Struttura generale del sistema Script di DTrace per monitorare lo stack Tempi di esecuzione di ls senza e con tracing Script di DTrace per monitorare lo stack Strutture dati usate da un consumer DTrace

10 viii Elenco delle figure 4.6 Snippet di walk() Struttura dati di supporto all implementazione di NewArgs() Automa senza e con peso sugli archi

11 1 Introduzione Dai tempi della dot-com bubble stiamo assistendo ad una crescita enorme della diffusione di dispositivi informatici di ogni tipo e, a differenza di dieci anni fa, è abbastanza difficile pensare di poter vivere senza interagire ogni giorno con un computer potenzialmente connesso alla rete. Router casalinghi e telefonini montano CPU sufficientemente potenti da poter far girare un kernel Unix, per non parlare di televisori e media-center. Se pensiamo a quanti di questi dispositivi ognuno di noi ha in casa e, soprattutto, alla quantità di dati personali che essi manipolano, la loro protezione da attacchi informatici diventa un obiettivo primario. Le minacce per un computer, comprendendo negli oggetti indicati con questa parola anche i dispositivi appena citati, sono dei tipi più svariati ed impensabili e le tecniche di difesa sono letteralmente centinaia, ognuna volta a proteggere da determinati tipi di attacchi. Volendo prescindere dalla tipologia d attacco possiamo distinguere due metodologie fondamentali nel rilevamento, la misuse detection, altrimenti detta signaturebased detection e la anomaly detection. Gli antivirus in buona approssimazione fanno un lavoro di misuse detection: essi infatti, dato ad esempio un file eseguibile, sono in grado di cercare al suo interno delle sequenze di byte corrispondenti a payload malevoli già noti. Il confronto è puramente sintattico e quindi una versione B del payload sintatticamente diversa ma semanticamente equivalente potrebbe non venire rilevata. Prendiamo i due frammenti di assembler x86 di Figura 1.1: jmp 0x01ab23cd push 0x01ab23cd ret (a) (b) Figura 1.1: Codice semanticamente equivalente. l effetto netto del codice è esattamente lo stesso, quindi semanticamente sono identici

12 2 1. Introduzione ma nel caso (a) la signature è E9 C2 23 AB 01 mentre nel caso (b) è 68 CD 23 AB 01 C3, quindi sintatticamente sono diversi. Se un programma antivirus conosce la prima signature ma non la seconda il payload passa inosservato e il virus può fare il suo lavoro. Naturalmente gli antivirus sono un po più furbi di così, ma anche chi scrive i virus è molto furbo e si serve di payload polimorfici, crittografati e quant altro, molto difficili da rilevare (si veda ad esempio [23]). Al fine di contrastare questo tipo di payload sono stati proposte diverse soluzioni basate sulla semantica [19, 5, 20] ma, purché molto potenti, anche queste sono aggirabili. Un idea fondamentale da tenere in considerazione però è che per poter attaccare un sistema è necessario interagire con esso, ed è qui che entra in gioco l anomaly detection. Per quanto l affermazione precedente possa sembrare banale è abbastanza naturale chiedersi se le interazioni che avvengono sono lecite o meno. Quello che in genere succede è infatti che tramite interazioni non lecite un sistema viene spinto a comportarsi in un modo non previsto originariamente dai suoi progettisti creando quindi un anomalia nel suo comportamento, una deviazione rispetto a quello che dovrebbe essere il comportamento corretto. Rilevare un attacco dunque corrisponde all accorgersi della presenza di questa anomalia. Sorgono alcune domande: Quale è il comportamento corretto di un sistema? Come può essere rappresentato? Come si può rilevare un anomalia? L anomaly detection prevede l esistenza di un modello che descriva quali sono i comportamenti corretti del sistema. A runtime il sistema viene monitorato costantemente e viene verificata la conformità delle sue azioni rispetto al modello. Naturalmente più il modello è dettagliato più il rilevamento di anomalie sarà accurato e più il suo costo computazionale sarà elevato: la costruzione del modello è un punto critico. In letteratura è possibile trovare moltissimi modelli per l anomaly detection costruiti nei modi più svariati e con gli obiettivi più svariati. La distinzione fondamentale che però va fatta tra tutti i vari modelli esistenti è dovuta alla modalità con cui sono costruiti, ovvero se con tecniche black-box o con tecniche white-box. Le prime prevedono soltanto l osservazione di un processo a runtime, le seconde richiedono che sia fatta un analisi sul codice sorgente o comunque sul codice binario del programma. La ricaduta fondamentale ovviamente è sull applicabilità. Il codice sorgente non sempre è disponibile e le analisi sul binario sono tutt altro che semplici. Nel caso

13 1.1. Anomaly detection e system call 3 dell architettura x86, attualmente la più diffusa in ambiente desktop e server, il problema di disassemblare correttamente un binario è addirittura indecidibile [25, 14]. Certamente disassemblatori come IDAPro fanno un egregio lavoro ma il loro output, per quanto vicino al codice vero, è inerentemente non corretto. Una conseguenza di questo fatto è che la ricostruzione del control flow di un programma dato il suo binario non è possibile, se non in modo approssimato. Un interessante lavoro in questa direzione basato sull interpretazione astratta è [11]. Le tecniche blackbox di contro, pur essendo universalmente applicabili, possono osservare soltanto le interazioni di un processo con l ambiente (ad esempio col sistema operativo o con la rete). Potrebbe succedere però che, pur osservando per tempi molto lunghi un processo, non si riesca ad osservare tutte le interazioni ottenendo anche in questo caso un quadro incompleto. Le tecniche white-box tipicamente sono di tipo statico, mentre le black-box di tipo dinamico. Le prime quindi necessitano della capacità di riconoscere ed elaborare sintassi e semantica del programma che si vuole analizzare (quindi devono avere la capacità di leggere ed interpretare il codice sorgente o il codice eseguibile) e questo richiede il supporto di tool abbastanza complessi, come ad esempio il compilatore, il che introduce un ulteriore livello di complessità. Le tecniche black-box al contrario richiedono una fase di apprendimento in cui tramite l osservazione viene costruito il modello. La bontà di quest ultimo è direttamente legata al training svolto. Come nel caso del testing del software, anche il training del modello deve essere fatto cercando di massimizzare la copertura dei casi. Nel caso del testing però se la copertura non è adeguata non si scoprono possibili bug, nel caso dei modelli black-box invece si ha una quantità inaccettabile di falsi positivi. 1.1 Anomaly detection e system call Una tecnica d attacco notevolmente diffusa è quella di fornire ad un programma un input confezionato ad hoc per far si che esso esca dal suo comportamento previsto ed esegua delle azioni utili al malintenzionato. Nel 1996 Aleph One in [17] mostrava come, sfruttando una copia di stringhe fatta senza controllare i bound, fosse possibile iniettare codice arbitrario in un programma e portarlo a lanciare una shell. Come si può immaginare, se il programma gira con privilegi di superutente, in questo modo è possibile ottenere il controllo completo sul sistema. L idea di questo tipo di attacco è molto semplice e in Figura 1.2 è riportato un programma vulnerabile. Nel frammento di codice la stringa some other string viene copiata in buf, che è un vettore allocato sullo stack. Non essendoci alcun controllo sul numero di caratteri

14 4 1. Introduzione 1 void g(void) 2 { 3 char buf[128]; 4 strcpy(buf, some_other_string); 5 } 6 7 void f(void) 8 { 9 g(); 10 } Figura 1.2: Buffer overflow. copiati è possibile scrivere oltre la fine del vettore, fino ad arrivare al record di attivazione della procedura g. Nel record di attivazione è memorizzato il punto del programma al quale restituire il controllo una volta che g è terminata: se lo sovrascriviamo con l indirizzo di buf e in buf inseriamo del codice eseguibile, esso verrà eseguito senza problemi. Una buona prassi da seguire durante la stesura del codice consiste quindi nell evitare di allocare vettori sullo stack e preferire l utilizzo di malloc(). Naturalmente questo non evita totalmente questo tipo di problemi, tant è che dal buffer overflow (il tipo di attacco appena visto) si è passati ad altri attacchi più sofisticati che vanno sotto i nomi di jump to register, heap overflow, return into libc solo per citarne alcuni. Questo tipo di approccio ha avuto (ed ha) un successo tale che esistono dei framework (Metasploit) che permettono la costruzione semiautomatica dell attacco. Gli sforzi fatti per contrastare questo tipo di attacchi sono stati svariati e vanno da tecniche puramente software, tipo la Address Space Layout Randomization oppure lo Stack Protector di gcc a tecniche assistite dall hardware, tipo il noto execute disable bit (XD) implementato nelle recenti CPU Intel e AMD. Nella stragrande maggioranza dei casi attaccare tramite l iniezione di codice malevolo comporta l esecuzione di chiamate di sistema estranee al normale flusso d esecuzione di un programma: per lanciare una shell ad esempio è necessario eseguire almeno una execve(). In Solaris è esistito un buffer overflow nel comando ping (CVE ) che permetteva appunto l esecuzione di codice arbitrario. Tale comando necessita di usare le raw socket, che però possono essere aperte solo dal superutente: ping quindi era installato setuid root e dunque anche il codice iniettato veniva eseguito a privilegi elevati. Ora è chiaro che se ping esegue una execve, questo è un evento del tutto anomalo perché per svolgere le sue funzioni il comando in questione non ha bisogno di lanciare in esecuzione alcun processo. Avendo questa

15 1.2. Obiettivo del lavoro 5 informazione diventa quindi possibile approntare un semplice sistema che osserva le chiamate di sistema e se non sono pertinenti prende provvedimenti quali impedirle o addirittura uccidere il processo dal quale sono state fatte. Già a metà degli anni 90 ci si è resi conto che l osservazione delle chiamate di sistema effettuate da un programma durante la sua esecuzione è un buon modo per capire se il suo comportamento è normale o meno. In [9] ad esempio viene proposto un semplice metodo che, osservando le ultime tre chiamate di sistema effettuate da un processo, è in grado di stabilire con buona approssimazione se il suo comportamento è anomalo. Negli anni successivi sono stati proposti svariati nuovi metodi basati sulle più disparate tecniche, sia statiche che dinamiche. Di queste ultime molte di esse sono di tipo probabilistico, molte di esse si basano su analisi più formali. Le più recenti tecniche dinamiche presenti in letteratura sono in grado di ricostruire una parte significativa del control flow di un programma. Successivamente queste tecniche sono state applicate con successo a sistemi virtualizzati, permettendo di monitorare le attività dei processi in modo completamente invisibile dall interno della macchina virtuale [15]. Presto ci si è resi conto che osservare soltanto qual era la system call effettuata era limitativo e si è iniziato a prendere in considerazione anche i parametri. Anche in questo caso sono state proposte idee molto diverse, prevalentemente di tipo statistico. Recentemente però è stato proposto un modello in grado di apprendere il data flow tra le chiamate di sistema. 1.2 Obiettivo del lavoro Il lavoro presentato in questa tesi è centrato proprio sull anomaly detection basata sull osservazione delle system call. Tra i vari modelli che si possono costruire a questo scopo ne esistono alcuni basati su automi o su grafi, che si differenziano per la loro precisione nel rappresentare il control flow del programma. Dal lato data flow i modelli sono invece tutt altro che numerosi. In questa tesi verranno prese in considerazione entrambe le tipologie di modelli, verranno studiate le loro possibilità sia considerando i modelli presi singolarmente sia se integrati tra di loro (control flow + data flow) e verranno evidenziate delle debolezze. Verrà quindi proposto un nuovo modello integrato che cerca di superarle.

16 6 1. Introduzione 1.3 Struttura della tesi La tesi si sviluppa in 4 ulteriori capitoli oltre a quello presente. Nel secondo capitolo verranno esaminati alcuni modelli per il control flow presenti in letteratura, sia costruiti dinamicamente che staticamente. Verranno mostrate le tecniche necessarie alla loro costruzione e verranno discussi vantaggi e svantaggi dei modelli. Finita la discussione dei modelli control flow si osserverà come la protezione di quest ultimo non sia sufficiente a impedire che un processo venga attaccato e verrà mostrato un semplice programma che è vulnerabile ad un attacco che permette di ottenere una shell senza che il suo control flow sia alterato. Si osserverà quindi che è necessario proteggere anche il data-flow e dopo una breve discussione verrà presentato un modello in grado di apprendere relazioni tra i parametri delle chiamate di sistema, anch esso presente in letteratura. Il terzo capitolo si aprirà vedendo come anche unendo un execution graph (uno dei più potenti modelli control flow) con il modello data flow si possa comunque trovare dei casi in cui è possibile attaccare il sistema senza essere scoperti. Si osserverà quindi che questo è dovuto principalmente a due motivi che sono dati da un basso accoppiamento tra i due modelli e dalla relativa povertà delle informazioni data flow raccolte. Il modello data flow può infatti trarre notevole vantaggio da informazioni già raccolte per la costruzione del modello control flow, inoltre verrà data la capacità al modello data flow di apprendere delle alternative. Senza il loro apprendimento vi sono casi in cui l informazione raccolta è veramente povera. Si proporrà dunque un nuovo modello integrato per control flow e data flow in grado di risolvere i problemi osservati, assieme a tutti gli algoritmi necessari a costruirlo. Il quarto capitolo tratterà l implementazione. In una prima parte verrà analizzato il framework DTrace che permetterà la raccolta dati necessaria alla costruzione del modello. Dopo aver visto come specificare quali dati si vuole raccogliere si passerà ad alcuni dettagli di libdtrace(3lib), necessaria per l interfacciamento low-level al framework e per l estrazione dei dati raw. Verranno poi trattati alcuni dei dettagli implementativi salienti del sistema e infine, in modo del tutto informale, si discuterà sulla complessità computazionale del modello, sia dal punto di vista del training sia dal punto di vista della verifica online. Il quinto capitolo è dedicato alle conclusioni e alla descrizione dei possibili sviluppi futuri di questo lavoro. In particolare saranno proposte tre possibili estensioni. La prima cerca di spremere ulteriormente i dati già raccolti per la costruzione del modello per carpire più informazioni sulla struttura interna del programma. La

17 1.3. Struttura della tesi 7 seconda parte dall osservazione che questi modelli sono totalmente ciechi di fronte al denial of service e quindi la proposta in questo caso è di aggiungere una dimensione statistica al modello che vada in questa direzione. La terza idea è quella di cercare di costruire il modello control flow staticamente invece che dinamicamente, in modo che il compilatore oltre a restituire l eseguibile restituisca un modello della sua struttura che verrà successivamente controllato a runtime.

18 8 1. Introduzione

19 2 Modelli per l anomaly detection In questa tesi si è interessati al rilevamento e alla conseguente segnalazione di comportamenti anomali tenuti da parte di un processo in esecuzione su un elaboratore. Questo obiettivo prevede innanzitutto il possesso di un modello del comportamento del processo e successivamente la capacità di verificare che il processo, durante l esecuzione, si comporti conformemente al modello (Figura 2.1). Offline Online Processo Processo Eventi Eventi Algoritmo di apprendimento Modello Motore di verifica del modello Figura 2.1: Architettura generale di un sistema black-box. In letteratura si possono trovare decine di metodologie volte alla costruzione di modelli per l anomaly detection basate su idee anche molto differenti tra di loro. La distinzione fondamentale però è forse quella tra metodologie white-box e black-box. Le prime prevedono di avere a disposizione il codice sorgente (o anche il binario) del programma in modo da poterlo analizzare staticamente e costruire un modello. Le seconde invece prevedono esclusivamente l osservazione dell esecuzione di un programma e, in base agli eventi generati, costruiscono un modello.

20 10 2. Modelli per l anomaly detection Le tecniche white-box e black-box hanno entrambe vantaggi e svantaggi: se per esempio si è interessati alla struttura del programma è difficile ricostruirla solo guardandone varie esecuzioni. Se ci sono dei rami di codice morto per un sistema black-box è impossibile scoprirli, mentre per un sistema white-box è immediato. Tuttavia, come vedremo, anche dalle sole osservazioni (a patto di eseguirle correttamente) è possibile ottenere un incredibile quantità di informazioni. Una delle molte situazioni in cui invece le tecniche black-box sono avvantaggiate è ad esempio quella in cui si sta osservando dove si trovano i file che una chiamata ad open() apre: se in un numero ragionevolmente grande di osservazioni si vede che i file stanno tutti in una data directory dir si può affermare che quella open() deve aprire solo file che stanno in dir. Questa, non conoscendo la struttura interna del programma osservato è sicuramente un informazione tutt altro che certa ma nonostante l incertezza è comunque un informazione che l analisi statica nella maggioranza dei casi non può dare. In questa tesi si cercherà di modellare per via black-box sia il control flow del programma che il data flow. Verranno prese in considerazione diverse tecniche già note, le quali però in certi contesti presentano delle debolezze e dunque l obiettivo è di migliorarle e di combinarle in modo da eliminare i problemi che presentano, ottenendo un modello in grado di rilevare un numero maggiore di attacchi. 2.1 Modelli control flow I modelli che analizzeremo in questa sezione sono basati sulla descrizione di proprietà che riguardano il flusso di controllo di un programma. Analizzando gli eventi che si osservano a runtime è possibile costruire degli automi che rappresentano in modo più o meno fine le transizioni ammesse per un dato programma Automi a stati finiti Il modello di automi a stati finiti sicuramente più interessante è stato proposto in [21]. Gli autori osservano come tutti i modelli precedenti abbiano problemi o limitazioni più o meno gravi, o di carattere computazionale [10, 18] o dovute al fatto che semplicemente è stata proposta una metodologia che poco si presta all implementazione [12] e propongono una tecnica molto veloce per apprendere un automa in grado di rilevare una consistente categoria di attacchi. L automa viene costruito a partire da una o più tracce ottenute dall osservazione del sistema. Ogni traccia è composta da un certo numero di eventi, rappresentabili

21 2.1. Modelli control flow 11 con una coppia (s i, p i ). Ogni evento contiene due informazioni e in particolare la chiamata di sistema che è stata eseguita e il punto del programma dal quale è stata eseguita. L automa è rappresentabile come un grafo G = (V {end}, E = V V L) e, dati due eventi consecutivi (s i, p i ) e (s i+1, p i+1 ) di una traccia di lunghezza k, la costruzione avviene nel seguente modo: per 0 i k: V = V {p i } per 0 i k: E = E {(p i, p i+1, s i )} infine: E = E {(p k, end, s k )} L idea dietro a questo automa è che per passare da uno stato ad un altro del programma deve avvenire una transizione causata da una chiamata di sistema. Intuitivamente, questa costruzione porta quindi ad un automa in cui gli stati sono etichettati con il punto del programma dal quale viene eseguita la system call e gli archi con la chiamata di sistema coinvolta nella transizione. Vediamo un esempio. 1 void f(int cond) 2 { 3 open(); 4 if (cond % 2) 5 read(); 6 else 7 write(); 8 close(); 9 } int main(void) 12 { 13 int i = 3; 14 while (i--) 15 f(i); 16 } La traccia di una esecuzione del programma d esempio sarebbe la seguente: (open, 3), (write, 7), (close, 8), (open, 3), (read, 5), (close, 8), (open, 3), (write, 7), (close, 8)

22 12 2. Modelli per l anomaly detection open 5 read 3 open 7 write 8 close end close Figura 2.2: FSA d esempio. che da luogo agli insiemi V ={3, 5, 7, 8, end} E ={(3, 5, open), (3, 7, open), (5, 8, read), (7, 8, write), (8, 3, close), (8, end, close)} corrispondenti all automa rappresentato in Figura VtPath VtPath [6] è un metodo che migliora gli FSA, andando a guardare l intero user space stack del processo nel momento della chiamata di sistema invece di osservare soltanto il punto del programma in cui la chiamata è stata fatta. Questo sistema si basa sul concetto di virtual path, di seguito delineato. Siano A = {a 1,..., a n } e B = {b 1,..., b m } gli stack osservati in due system call consecutive. Essi vengono confrontati finché non si trova un indice l tale che a l b l. A questo punto si definisce il path tra le due system call come: P = a n Exit;... ; a l+1 Exit; a l b l ; Entry b l+1 ;... ; Entry b m Entry ed Exit sono dei nodi fittizi che rappresentano rispettivamente il punto d ingresso e il punto d uscita di una funzione. Questi path vengono appresi durante il training e, a training completato, vengono utilizzati per verificare il corretto comportamento del programma. Possono generarsi differenti anomalie, in particolare: Stack anomaly, se lo stack osservato non è tra quelli appresi durante il training Return address anomaly, se uno qualunque dei return address sullo stack non è corretto rispetto a quelli osservati durante il training System call anomaly, se la system call eseguita non è corretta

23 2.1. Modelli control flow 13 Virtual path anomaly, se non è possibile trovare il percorso effettuato tra quelli appresi Execution graphs Gli execution graphs costituiscono forse il più potente modello control flow presente in letteratura ottenuto con tecniche black-box [7] ed è uno dei due componenti da cui si è partiti per sviluppare il modello presentato in questa tesi. L obiettivo dell execution graph è quello di ottenere, osservando le esecuzioni di un programma, un modello che accetta le stesse sequenze di chiamate di sistema che sarebbero accettate da un modello basato sul control flow graph, quindi costruito staticamente. Naturalmente questo non è possibile perché nel codice potrebbero esserci dei rami morti, rilevabili solo a tempo di compilazione. Tuttavia utilizzando solo tecniche black-box si riesce a costruire un execution graph con due proprietà molto importanti: accetta solo sequenze di chiamate di sistema che sono consistenti con il control flow graph del programma il linguaggio accettato dall execution graph è massimale rispetto ai dati appresi durante il training: in altre parole ogni estensione dell execution graph potrebbe far passare inosservati degli attacchi Definizione 1 (Osservazione ed esecuzione) Un osservazione è una n-pla di interi positivi r 1, r 2,..., r k con k > 1. Un esecuzione è una sequenza di lunghezza arbitraria di osservazioni. In particolare in un osservazione r 1, r 2,..., r k, r 1 è un indirizzo in main(), r k 1 è il return address corrispondente all istruzione che esegue la system call ed r k è il numero corrispondente alla system call eseguita. In altre parole un osservazione è una fotografia dello stack del processo al momento in cui viene eseguita una system call. Definizione 2 (Execution graph, foglia, crs ) Un execution graph per un insieme di esecuzioni X è un grafo EG(X ) = (V, E call, E crs, E ret ) in cui V è un insieme di nodi mentre E call, E crs, E ret V V sono insiemi di archi diretti, definiti come segue:

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Esercizi su. Funzioni

Esercizi su. Funzioni Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Fondamenti di Informatica 2. Le operazioni binarie

Fondamenti di Informatica 2. Le operazioni binarie Corso di per il corso di Laurea di Ingegneria Gestionale Le operazioni binarie Università degli Studi di Udine - A.A. 2010-2011 Docente Ing. Sandro Di Giusto Ph.D. 1 L'algebra binaria Il fatto di aver

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

Software per Helpdesk

Software per Helpdesk Software per Helpdesk Padova - maggio 2010 Antonio Dalvit - www.antoniodalvit.com Cosa è un helpdesk? Un help desk è un servizio che fornisce informazioni e assistenza ad utenti che hanno problemi nella

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 3-Compilatori e interpreti 1 Prerequisiti Principi di programmazione Utilizzo di un compilatore 2 1 Introduzione Una volta progettato un algoritmo codificato in un linguaggio

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Dettagli

ORDINE DEGLI INGEGNERI DELLA PROVINCIA DI TERAMO

ORDINE DEGLI INGEGNERI DELLA PROVINCIA DI TERAMO ORDINE DEGLI INGEGNERI DELLA PROVINCIA DI TERAMO Teramo, 4 dicembre 2014 Ns. Prot. n. 1913 Spett.le Consiglio Nazionale Ingegneri Via IV Novembre n. 114 00187 Roma segreteria@ingpec.eu Comitato Italiano

Dettagli

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL STRUTTURA DEI SISTEMI OPERATIVI 3.1 Struttura dei Componenti Servizi di un sistema operativo System Call Programmi di sistema Struttura del sistema operativo Macchine virtuali Progettazione e Realizzazione

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

Convertitori numerici in Excel

Convertitori numerici in Excel ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel

Dettagli

Analisi e diagramma di Pareto

Analisi e diagramma di Pareto Analisi e diagramma di Pareto L'analisi di Pareto è una metodologia statistica utilizzata per individuare i problemi più rilevanti nella situazione in esame e quindi le priorità di intervento. L'obiettivo

Dettagli

Mac Application Manager 1.3 (SOLO PER TIGER)

Mac Application Manager 1.3 (SOLO PER TIGER) Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i

Dettagli

( x) ( x) 0. Equazioni irrazionali

( x) ( x) 0. Equazioni irrazionali Equazioni irrazionali Definizione: si definisce equazione irrazionale un equazione in cui compaiono uno o più radicali contenenti l incognita. Esempio 7 Ricordiamo quanto visto sulle condizioni di esistenza

Dettagli

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca

Dettagli

risulta (x) = 1 se x < 0.

risulta (x) = 1 se x < 0. Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

TECNICHE DI SIMULAZIONE

TECNICHE DI SIMULAZIONE TECNICHE DI SIMULAZIONE INTRODUZIONE Francesca Mazzia Dipartimento di Matematica Università di Bari a.a. 2004/2005 TECNICHE DI SIMULAZIONE p. 1 Introduzione alla simulazione Una simulazione è l imitazione

Dettagli

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione 4 LEZIONE: Programmazione su Carta a Quadretti Tempo della lezione: 45-60 Minuti. Tempo di preparazione: 10 Minuti Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione SOMMARIO:

Dettagli

Capitolo 25: Lo scambio nel mercato delle assicurazioni

Capitolo 25: Lo scambio nel mercato delle assicurazioni Capitolo 25: Lo scambio nel mercato delle assicurazioni 25.1: Introduzione In questo capitolo la teoria economica discussa nei capitoli 23 e 24 viene applicata all analisi dello scambio del rischio nel

Dettagli

Procedura per creare un archivio storico remoto nelle 24 ore giornaliere

Procedura per creare un archivio storico remoto nelle 24 ore giornaliere Procedura per creare un archivio storico remoto nelle 24 ore giornaliere La seguente procedura ha lo scopo di illustrare il metodo di creazione di un archivio storico fotografico nell arco delle 24 ore

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Dettagli

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012 Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono

Dettagli

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da Data una funzione reale f di variabile reale x, definita su un sottoinsieme proprio D f di R (con questo voglio dire che il dominio di f è un sottoinsieme di R che non coincide con tutto R), ci si chiede

Dettagli

Capitolo 2. Operazione di limite

Capitolo 2. Operazione di limite Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

MINIGUIDA PER RISORSE SU CLASH OF CLANS

MINIGUIDA PER RISORSE SU CLASH OF CLANS MINIGUIDA PER RISORSE SU CLASH OF CLANS Visto che le richieste in chat sono sempre maggiori ed è difficile riassumere in poche righe il sistema che utilizzo per fare risorse in poco tempo, ho pensato che

Dettagli

Sistema operativo: Gestione della memoria

Sistema operativo: Gestione della memoria Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e

Dettagli

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Dettagli

Che cosa è un VIRUS?

Che cosa è un VIRUS? Virus & Antivirus Virus Nella sicurezza informatica un virus è un software, appartenente alla categoria dei malware, che è in grado, una volta eseguito, di infettare dei file in modo da riprodursi facendo

Dettagli

Probabilità discreta

Probabilità discreta Probabilità discreta Daniele A. Gewurz 1 Che probabilità c è che succeda...? Una delle applicazioni della combinatoria è nel calcolo di probabilità discrete. Quando abbiamo a che fare con un fenomeno che

Dettagli

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software di sistema e software applicativo I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software soft ware soffice componente è la parte logica

Dettagli

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6 Appunti di Calcolatori Elettronici Esecuzione di istruzioni in parallelo Introduzione... 1 Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD...

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

Generazione Automatica di Asserzioni da Modelli di Specifica

Generazione Automatica di Asserzioni da Modelli di Specifica UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA FACOLTÀ DI SCIENZE MATEMATICHE FISICHE E NATURALI Corso di Laurea Magistrale in Informatica Generazione Automatica di Asserzioni da Modelli di Specifica Relatore:

Dettagli

Dispense di Informatica per l ITG Valadier

Dispense di Informatica per l ITG Valadier La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di

Dettagli

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. *+33(GLWRU GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. Il programma si basa su un architettura di tasti funzionali presenti

Dettagli

Protezione. Protezione. Protezione. Obiettivi della protezione

Protezione. Protezione. Protezione. Obiettivi della protezione Protezione Protezione La protezione riguarda i meccanismi per il controllo dell accesso alle risorse in un sistema di calcolo da parte degli utenti e dei processi. Meccanismi di imposizione fissati in

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico Processo di risoluzione di un problema ingegneristico 1. Capire l essenza del problema. 2. Raccogliere le informazioni disponibili. Alcune potrebbero essere disponibili in un secondo momento. 3. Determinare

Dettagli

Via Mazzini,13 10010 Candia Canavese (TO) 011 9834713

Via Mazzini,13 10010 Candia Canavese (TO) 011 9834713 Via Mazzini,13 10010 Candia Canavese (TO) 011 9834713 1 - IL SITO WEB Il programma DPS ONLINE è disponibile all url: http://dpsonline.scinformatica.org/ Per poter usufruire di questo servizio è necessario

Dettagli

B+Trees. Introduzione

B+Trees. Introduzione B+Trees Introduzione B+Trees Il B+Trees e la variante maggiormente utilizzata dei BTrees BTrees e B+trees fanno parte della famiglia degli alberi di ricerca. Nel B+Trees i dati sono memorizzati solo nelle

Dettagli

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste versione 2.1 24/09/2015 aggiornamenti: 23-set-2015; 24-set-2015 Autore: Francesco Brunetta (http://www.francescobrunetta.it/)

Dettagli

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia L informatica È la disciplina scientifica che studia INTRODUZIONE I calcolatori, nati in risposta all esigenza di eseguire meccanicamente operazioni ripetitive Gli algoritmi, nati in risposta all esigenza

Dettagli

Metodologie di programmazione in Fortran 90

Metodologie di programmazione in Fortran 90 Metodologie di programmazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2007/2008 Fortran 90: Metodologie di programmazione DIS - Dipartimento di

Dettagli

Approccio stratificato

Approccio stratificato Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

Statistica e biometria. D. Bertacchi. Variabili aleatorie. V.a. discrete e continue. La densità di una v.a. discreta. Esempi.

Statistica e biometria. D. Bertacchi. Variabili aleatorie. V.a. discrete e continue. La densità di una v.a. discreta. Esempi. Iniziamo con definizione (capiremo fra poco la sua utilità): DEFINIZIONE DI VARIABILE ALEATORIA Una variabile aleatoria (in breve v.a.) X è funzione che ha come dominio Ω e come codominio R. In formule:

Dettagli

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Scopo della lezione. Informatica. Informatica - def. 1. Informatica Scopo della lezione Informatica per le lauree triennali LEZIONE 1 - Che cos è l informatica Introdurre i concetti base della materia Definire le differenze tra hardware e software Individuare le applicazioni

Dettagli

SDD System design document

SDD System design document UNIVERSITA DEGLI STUDI DI PALERMO FACOLTA DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA TESINA DI INGEGNERIA DEL SOFTWARE Progetto DocS (Documents Sharing) http://www.magsoft.it/progettodocs

Dettagli

LA PROGETTAZIONE DI UN NUOVO STRUMENTO PER IL WEB

LA PROGETTAZIONE DI UN NUOVO STRUMENTO PER IL WEB UNIVERSITÀ DEGLI STUDI DI PADOVA FACOLTÀ DI LETTERE E FILOSOFIA CORSO DI LAUREA MAGISTRALE IN STRATEGIE DI COMUNICAZIONE LA PROGETTAZIONE DI UN NUOVO STRUMENTO PER IL WEB LA PROPOSTA DI UN MODELLO MIRATO

Dettagli

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX Parte 2 Struttura interna del sistema LINUX 76 4. ASPETTI GENERALI DEL SISTEMA OPERATIVO LINUX La funzione generale svolta da un Sistema Operativo può essere definita come la gestione dell Hardware orientata

Dettagli

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Premessa Con l analisi di sensitività il perito valutatore elabora un range di valori invece di un dato

Dettagli

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 10 Correttezza A. Miola Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Correttezza 1 Contenuti Introduzione alla correttezza

Dettagli

Questa guida è realizzata per spiegarvi e semplificarvi l utilizzo del nostro nuovo sito E Commerce dedicato ad Alternatori e Motorini di avviamento.

Questa guida è realizzata per spiegarvi e semplificarvi l utilizzo del nostro nuovo sito E Commerce dedicato ad Alternatori e Motorini di avviamento. Guida all uso del sito E Commerce Axial Questa guida è realizzata per spiegarvi e semplificarvi l utilizzo del nostro nuovo sito E Commerce dedicato ad Alternatori e Motorini di avviamento. Innanzitutto,

Dettagli

L archiviazione della posta elettronica può aiutarci a recuperare spazio senza costringerci a cestinare documenti importanti

L archiviazione della posta elettronica può aiutarci a recuperare spazio senza costringerci a cestinare documenti importanti L archiviazione della posta elettronica può aiutarci a recuperare spazio senza costringerci a cestinare documenti importanti Potete immaginare un ufficio senza archivio? Sarebbe un inferno. Dover rintracciare

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/2014. 1.1 Lato client

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/2014. 1.1 Lato client RETI INFORMATICHE - SPECIFICHE DI PROGETTO A.A. 2013/2014 1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/2014 Il progetto consiste nello sviluppo di un

Dettagli

Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005. Lezione 11

Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005. Lezione 11 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Docente: Ugo Vaccaro Lezione 11 In questa lezione vedremo alcune applicazioni della tecnica greedy al progetto di algoritmi on-line. Vediamo

Dettagli

Introduzione alla Virtualizzazione

Introduzione alla Virtualizzazione Introduzione alla Virtualizzazione Dott. Luca Tasquier E-mail: luca.tasquier@unina2.it Virtualizzazione - 1 La virtualizzazione è una tecnologia software che sta cambiando il metodo d utilizzo delle risorse

Dettagli

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi Il Software Il software impiegato su un computer si distingue in: Software di sistema Sistema Operativo Compilatori per produrre programmi Software applicativo Elaborazione testi Fogli elettronici Basi

Dettagli

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

Dettagli

INSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014)

INSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014) INSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014) Se la Suite risulta già stata installata e quindi sono già presenti le configurazioni di seguito indicate, si prega di andare direttamente alla fine

Dettagli

Che differenza c è tra una richiesta XML ed una domanda XML? (pag. 4)

Che differenza c è tra una richiesta XML ed una domanda XML? (pag. 4) FAQ INVIO DOMANDE CIGO CON FLUSSO XML Cosa serve per inviare una domanda CIGO con il flusso XML? (pag. 2) Come si prepara una domanda in formato XML? (pag. 3) Che differenza c è tra una richiesta XML ed

Dettagli

Software di interfacciamento sistemi gestionali Manuale di installazione, configurazione ed utilizzo

Software di interfacciamento sistemi gestionali Manuale di installazione, configurazione ed utilizzo 01595 Software di interfacciamento sistemi gestionali Manuale di installazione, configurazione ed utilizzo INDICE DESCRIZIONE DEL SOFTWARE DI INTERFACCIAMENTO CON I SISTEMI GESTIONALI (ART. 01595) 2 Le

Dettagli

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria

Università degli Studi Roma Tre Dipartimento di Informatica ed automazione. Facoltà di Ingegneria Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Tesi di Laurea AUTENTICAZIONE PER APPLICAZIONI WEB Relatore

Dettagli

Lezioni di Matematica 1 - I modulo

Lezioni di Matematica 1 - I modulo Lezioni di Matematica 1 - I modulo Luciano Battaia 16 ottobre 2008 Luciano Battaia - http://www.batmath.it Matematica 1 - I modulo. Lezione del 16/10/2008 1 / 13 L introduzione dei numeri reali si può

Dettagli

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico MANUALE MOODLE STUDENTI Accesso al Materiale Didattico 1 INDICE 1. INTRODUZIONE ALLA PIATTAFORMA MOODLE... 3 1.1. Corso Moodle... 4 2. ACCESSO ALLA PIATTAFORMA... 7 2.1. Accesso diretto alla piattaforma...

Dettagli

La selezione binaria

La selezione binaria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per

Dettagli

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files

Dettagli

ESEMPIO 1: eseguire il complemento a 10 di 765

ESEMPIO 1: eseguire il complemento a 10 di 765 COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

Ing. Paolo Domenici PREFAZIONE

Ing. Paolo Domenici PREFAZIONE Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte

Dettagli

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante: Sommario Macchine a stati finiti M. Favalli Engineering Department in Ferrara 4 Sommario (ENDIF) Analisiesintesideicircuitidigitali / 35 (ENDIF) Analisiesintesideicircuitidigitali 2 / 35 4 Le macchine

Dettagli

EXCEL FUNZIONI PRINCIPALI

EXCEL FUNZIONI PRINCIPALI EXCEL FUNZIONI PRINCIPALI Funzione SE() Sintassi: SE(VERIFICA, VALORE SE VERO, VALORE SE FALSO): verifica un valore e ritorna una risposta in base al risultato vero/falso Esempio: =SE(A2=15; "OK"; "NO")

Dettagli

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Dettagli

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo

Dettagli

Registratori di Cassa

Registratori di Cassa modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...

Dettagli

IL SISTEMA OPERATIVO IL SISTEMA OPERATIVO INTERFACCE TESTUALI INTERFACCE TESTUALI FUNZIONI DEL SISTEMA OPERATIVO INTERFACCE GRAFICHE

IL SISTEMA OPERATIVO IL SISTEMA OPERATIVO INTERFACCE TESTUALI INTERFACCE TESTUALI FUNZIONI DEL SISTEMA OPERATIVO INTERFACCE GRAFICHE IL SISTEMA OPERATIVO Insieme di programmi che opera al di sopra della macchina fisica, mascherandone le caratteristiche e fornendo agli utenti funzionalità di alto livello. PROGRAMMI UTENTE INTERPRETE

Dettagli

Configurazione della ricerca desktop di Nepomuk. Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith

Configurazione della ricerca desktop di Nepomuk. Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith Configurazione della ricerca desktop di Nepomuk Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith 2 Indice 1 Introduzione 4 1.1 Impostazioni di base....................................

Dettagli

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO. 2015 e PARAMETRI2015

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO. 2015 e PARAMETRI2015 COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO. 2015 e PARAMETRI2015 Vicenza, 3 giugno 2015 Gentile cliente, si ricorda che a partire dall aggiornamento PROFIS 2011.1 è stato automatizzato

Dettagli

Tutte le interrogazioni possono essere condotte su qualsiasi campo della banca dati (ad esempio, Forma, Frequenza, Lunghezza, ecc...).

Tutte le interrogazioni possono essere condotte su qualsiasi campo della banca dati (ad esempio, Forma, Frequenza, Lunghezza, ecc...). ESEMPIO DI QUERY SUL FILE Formario_minuscolo Tutte le interrogazioni possono essere condotte su qualsiasi campo della banca dati (ad esempio, Forma, Frequenza, Lunghezza, ecc...). Durante l interrogazione,

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

Dettagli

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento

Dettagli