Format String Vulnerability

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Format String Vulnerability"

Transcript

1 Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica April 15, 2005

2 Sommario 1 Format string Definizione Format function Componenti delle Format function Funzionamento delle Format function 2

3 Sommario 1 Format string Definizione Format function Componenti delle Format function Funzionamento delle Format function 2

4 Definizione Format function Componenti delle Format function Funzionamento delle Format function Introduzione Format string vs. Buffer Overflow La vulnerabilità del format string è stata pubblicata per la prima volta nel Giugno Mentre il buffer overflow fa la sua comparsa nelle prima metà anni 80. Il Format string è stato realizzato nel Giugno del Il buffer overflow si presenta prepotentemente negli anni 90. Il Format string è molto più semplice da ricercare rispetto alla vulnerabilità del buffer overflow.

5 Definizione Format function Componenti delle Format function Funzionamento delle Format function Definizione Format function Def. Format function Sono funzioni di conversione che sono usate per rappresentare i tipi di dati nel linguaggio C, in modo leggibile dall essere umano. Queste funzioni vengono usate per stampare informazioni, errori o per processare stringhe. fprintf: stampa su FILE stream. printf: stampa su stdout stream. sprintf: stampa all interno di una stringa snprintf: stampa all interno di una stringa con controllo della lunghezza....

6 Definizione Format function Componenti delle Format function Funzionamento delle Format function Format string Format function printf("il numero scelto e : %d\n", 1911); parametri output tipo di passaggio %d decimale per valore %u decimale senza segno per valore %x esadecimale per valore %s stringa per riferimento %n numero di byte scritti fin ora per riferimento

7 Definizione Format function Componenti delle Format function Funzionamento delle Format function Funzionamento delle Format function Format function printf("numero %d all indirizzo: %08x di lunghezza %d", i, &i, n); Il format string controlla il comportamento della funzione. specifica il tipo di parametri che devono essere stampati. i parametri sono salvati sullo stack.

8 (1) La vulnerabilità del format string può essere classificata, come channeling problem. Il channeling problem si può verificare quando informazioni di controllo e informazioni dati, coesistono nello stesso canale. L ipotesi di sfruttamento del channeling problem si ha quando l utente può specificare nello stesso canale di comunicazione sia dati che informazioni di controllo.

9 (2) Situazione Canali Dati Canali controllo Problemi Phone System Voce/dati Toni di contr. contr. can. Stack Dati Stack Ret contr. ret Malloc buffers dati Malloc Gestore info scri. in mem Format strings Stringa Out par. di formato contr func.

10 Esempio di vulenrabilità esempio vulnerabilità Codice contenente vulnerabilita int func(char * user) { printf(user) ; } Codice non contenente vulnerabita int func(char *user) { printf("%s", user) ; }

11 Attaco di tipo DoS Un semplice attacco che può essere portato a termine sfruttando la vulenrabilità del format string è quello di far terminare il processo vittima, causando di fatto un DoS (Esempio DNS spoofing). Per sfruttare l attacco si può utilizzare il formattatore %s: printf("%s%s%s%s%s%s%s%s%s%s") ;

12 Memoria stack del processo Memoria Stack del processo Un altro tipo di attacco che può essere portato a termine è rivolto all information gathering dei dati in memoria stack: Per portare a termine l attacco si può utilizzare il formattatore %x: printf("%08x.%08x.%08x.%08x.%08x.%08x") ;

13 Locazione arbitraria di memoria del processo (1) Locazione arbitraria di memoria L ipotesi per poter sfruttare questa tipologia d attacco sono due: formattatore che usa un indirizzo (per riferimento) come parametro dello stack, e visualizza la memoria dall indirizzo fornito. riuscire a fornire alla funzione format string l indirizzo da cui visualizzare la memoria.

14 Locazione arbitraria di memoria del processo (2) Locazione arbitraria di memoria La prima ipotesi, viene soddisfatta tramite il formattatore %s La seconda ipotesi, invece viene soddisfatta, fornendo l indirizzo come stringa alla format funcion. Esempio: address=0x printf("\x10\x01\x48\x08_%08x.%08x.%08x %s ") ;

15 (1) esempio di codice vulnerabile (QPOP 2.53) { char outbuf[512] ; char buffer[512] ; sprintf(buffer, "ERR Wrong command: %s", user) ; sprintf(outbuf, buffer) ; }

16 (2) Injection vector (QPOP 2.53) La dimensione del buffer user viene controllata, in modo che non ecceda i 512 byte. La vulnerabilità viene sfruttata attraverso il seguente injection vector: %497d\x3c\xd3\xff\xbf<nops><shellcode>

17 Esempio programmativo (wu-ftpd 2.6.0) { char buffer[512] ; snprintf( buffer, sizeof(buffer), user) ; buffer[sizeof(buffer) - 1] = \0 ; }

18 Sovrascrittura indirizzi (1) Sovrascrittura indirizzi in memoria Per poter sovrascrivere un indirizzo serve un formattatore in grado di poter scrivere in una cella di memoria (per riferimento). Si deve trovare un modo per poter scrivere nell indirizzo scelto un valore controllabile da noi.

19 Sovrascrittura indirizzi (2) Sovrascrittura indirizzi in memoria Per poter sovrascrivere un indirizzo si può utilizzare il formattatore %n, che scrive all indirizzo puntato dallo stack pointer, il numero di caratteri scritti fin ora. Per poter controllare quello che scriviamo, usiamo il padding presenti nei vari formattatori, per esempio %230u, esegue il padding della variabile a 230 caratteri.

20 Sovrascrittura indirizzi (3) Sovrascrittura indirizzi in memoria Esiste però un problema per la sovrascrittura: Non posso scrivere direttamente, per esempio, gli indirizzi dello stack, in quanto dovrei eseguire un padding di miliardi di caratteri (0xbfffffe2 = ). questo problema può essere risolto basandoci su una caratteristica dell architettura CISC, che permette di scrivere, indirizzi disallineati in memoria.

21 Sovrascrittura (4) Format string Sovrascrittura (4) {... printf("%16u%n", 7350, (int*) &foo[0]) ; printf("%32u%n", 7350, (int*) &foo[1]) ; printf("%64u%n", 7350, (int*) &foo[2]) ; printf("%128u%n", 7350, (int*) &foo[3]) ;... }

22 Algoritmo del calcolatore ad orologio (1) algoritmo dell orologio Quando sfruttiamo la vulnerabilità si deve tenere conto, che le scritture dell indirizzo avvengono sequenzialmente, quindi il numero di caratteri stampati si sommano ad ogni operazione. Quando scriviamo si deve tener conto di 2 parametri principali: byte scritti fin ora. valore da scrivere all indirizzo. nel caso che il valore da scrivere sia minore dei caratteri stampati fino a quell istante, si deve utilizzare l aritmetica in modulo, in particolare per scrivere all interno di byte (unsigned) aritmetica modulo 256.

23 Algoritmo del calcolatore ad orologio (2) algoritmo dell orologio if( already_written > write_byte ){ padding = ((already_written%256) - write_byte) ; if (padding < 4) padding += 256 ; } else if( already_written < write_byte ) { padding = write_byte - already_written; if (padding < 4) padding += 256 ; } already_written += padding ;

24 Parametri dell exploitation Parametri dell exploitation La prima informazione, che ci serve è il retloc, l indirizzo a cui è localizzato il return address. quante Word (32 bit) separano il puntatore del format string, relativo ai parametri della format function e il reale buffer contenuto in memoria. Indirizzo dello shellcode da eseguire.

25 Injection Vector Format string Injection vector dummy-addr-pair quattro coppie di interi dummy e indirizzi sui quale scrivere, gli indirizzi sono aumentati di 1 per ogni coppia. stackpop sequenza di stack popping che sposta il puntatore di riferimento ai parametri della format function. write-code parte della format string che esegue realmente la scrittura in memoria tramite i formattatori %nu%n. <dummy-addr-pair*4><stackpop><write-code>

26 Esempio Vulnerabilità Esempio programmativo int func(char *user, char *buffer, int len) { snprintf(buffer, len, user) ; buffer[len - 1] = \0 ; printf("%s\n", buffer) ; }/*endfunc*/

27 Link Utili Format string Link Utili

JAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) {

JAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) { JAVA C import javautil*; public static class test { private int variable; public void main (String[] args) { variable = 0; Systemoutprintln( Variable is: + variable); #include int variable; int

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari Input/Output Lettura e scrittura Caratteri e Stringhe: Terminale e file Input/output console file caratteri stringhe formattato ascii binari Linguaggio ANSI C Input/Output - 1 La libreria standard del

Dettagli

Introduzione al linguaggio C Primi programmi

Introduzione al linguaggio C Primi programmi Introduzione al linguaggio C Primi programmi Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

Esercitazione di Reti degli elaboratori

Esercitazione di Reti degli elaboratori Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione

Dettagli

Stack-based buffer overflow

Stack-based buffer overflow Università degli Studi di Milano Facoltà di Scienze e Tecnologie Stack-based buffer overflow Andrea Lanzi A.A. 2015 2016 Andrea Lanzi Stack-based buffer overflow A.A. 2015 2016 1 / 19 Classificazione attacchi

Dettagli

ELEMENTI DI INFORMATICA. Linguaggio C

ELEMENTI DI INFORMATICA. Linguaggio C Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica ELEMENTI DI INFORMATICA http://agile.diee.unica.it A.A. 2015/2016 Ing. Marco Ortu Diee, secondo piano Tel. 070-6755774 mail:

Dettagli

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 13 Corso di Informatica 2009-2010 Lezione 13 1 Input/output da file Stream Si definisce stream una sequenza di bytes di dati che può essere in ingresso (input

Dettagli

Scrittura formattata - printf

Scrittura formattata - printf Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri

Dettagli

Primi programmi in C

Primi programmi in C Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Uso del compilatore gcc Struttura di un programma

Dettagli

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

Dettagli

File e puntatori a file

File e puntatori a file File e puntatori a file Vitoantonio Bevilacqua vitoantonio.bevilacqua@poliba.it La libreria stdio.h mette a disposizione delle funzioni che hanno la peculiarità di trattare con questa nuova tipologia di

Dettagli

Lezione 11: Liste a Puntatori e Input/Output

Lezione 11: Liste a Puntatori e Input/Output Lezione 11: Liste a Puntatori e Input/Output Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Richiamo: strutture (struct)

Dettagli

I CARATTERI E LE STRINGHE

I CARATTERI E LE STRINGHE I CARATTERI E LE STRINGHE IL CODICE ASCII Per memorizzare i simboli grafici corrispondenti ai caratteri bisogna associare un numero intero a ciascuno di essi Il codice ASCII / æski/ (American Standard

Dettagli

Variabili e Istruzioni

Variabili e Istruzioni Exit Menù Variabili e Istruzioni 1 Le Variabili Una VARIABILE è un oggetto identificato da un NOME e da uno STATO, detto CONTENUTO o VALORE. Possiamo immaginarla come una scatola contenuto Pippo 11 nome

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 17 febbraio 2014 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Sistemi a microprocessore

Sistemi a microprocessore Sistemi a microprocessore Programma: Segnali analogici e digitali Uso di segnali digitali per la rappresentazione dei numeri interi La memoria e la CPU I programmi in linguaggio macchina La connessione

Dettagli

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Funzionamento macchina di von Neumann clock Memoria Centrale: Tutta l informazione prima di essere

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,

Dettagli

Lezione 22: Input/Output e Files

Lezione 22: Input/Output e Files Lezione 22: Input/Output e Files Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università di Salerno Struttura della lezione Esami: date e modalità Funzioni di libreria standard

Dettagli

Codifica dell informazione

Codifica dell informazione Codifica dell informazione Informatica B Come memorizzo l informazione nel calcolatore? 1 bit di informazione 1 bit di informazione La memoria del calcolatore L informazione nel calcolatore q Il calcolatore

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

File binari e file di testo

File binari e file di testo I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file

Dettagli

Input/Output su disco

Input/Output su disco Input/Output su disco In C, la gestione dei dispositivi di lettura (tastiera, file su disco,...) e scrittura (monitor, file su disco, stampante,...) viene effettuata mediante canali di comunicazione. Tali

Dettagli

L AMBIENTE CODE BLOCKS E L IO

L AMBIENTE CODE BLOCKS E L IO L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

Dettagli

Puntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a

Puntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a Puntatori in C Puntatori Variabili tradizionali indirizzo int a = 5; A00E... Proprietà della variabile a: nome: a A010 A012 5 tipo: int A014 valore: 5 indirizzo: A010 Finora abbiamo usato solo le prime

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Laurea in Ingegneria ivile e Ingegneria per l ambiente e il territorio Linguaggio : Le basi Stefano

Dettagli

Corso sul linguaggio C Modulo Tipi di dato

Corso sul linguaggio C Modulo Tipi di dato Corso sul linguaggio C Modulo 1 1.3 - Tipi di dato 1 Prerequisiti Concetto di espressione Cenni sulla struttura del calcolatore 2 1 Introduzione In questa lezione si esaminano i tipi di dato. I tipi di

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017

Dettagli

Spazio di indirizzamento virtuale

Spazio di indirizzamento virtuale Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 016-01 Spazio di indirizzamento virtuale Pietro Di Lena - pietro.dilena@unibo.it // The function name says it all int stack_overflow (){

Dettagli

1

1 Manuali di C Linguaggio C B. W. Kernigan, D. M. Ritchie Jackson La guida completa al C H. Schildt McGraw-Hill Fondamenti di Informatica 1 Linguaggio C Creato nei primi anni 70 per sviluppare il S.O. Unix

Dettagli

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola. Tipi di dato Le variabili in C KP Cap.3 pp.95-129 Cap.5 pp.190-193 DD Cap. 9 pp.352-355 Abbiamo già parlato delle variabili, ed abbiamo fin ora usato il tipo int, ma abbiamo molte altre possibiltà I tipi

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

Processore Danilo Dessì. Architettura degli Elaboratori.

Processore Danilo Dessì. Architettura degli Elaboratori. Processore 8088 Architettura degli Elaboratori Danilo Dessì danilo_dessi@unica.it Subroutine Anche nel linguaggio assemblativo è possibile suddividere un programma in subroutine Per invocare una subroutine

Dettagli

L AMBIENTE CODE BLOCKS E L IO

L AMBIENTE CODE BLOCKS E L IO L AMBIENTE CODE BLOCKS E L IO Il primo programma #include main() { printf("ciao Mondo!"); } Il file deve essere salvato con estensione.c Il primo programma in C++ #include using

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato

Algoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato Algoritmi, Strutture Dati e Programmi : Dati e Tipi di Dato Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Dati: Variabili e Costanti Un algoritmo (e il programma che ne è rappresentazione)

Dettagli

Rappresentazione di interi

Rappresentazione di interi Rappresentazione dei numeri Rappresentazione di interi Supponiamo 2 byte (16 bit) 2 16 = 65536 [-32767, 32768] con m bit 2 m -1 numeri Se prendiamo come segno il primo bit abbiamo ad esempio (01111111)

Dettagli

Sistemi Operativi Teledidattico

Sistemi Operativi Teledidattico Sistemi Operativi Teledidattico Anno 2002 3a esercitazione 5/10/2002 Paolo Torroni processi fork (creazione di un figlio) exec (sostituzione di codice del programma in esecuzione) wait (attesa della terminazione

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

Dettagli

http://www.hacklab.tk Pagina 1 irc.azzurra.org:6667 #hacklab

http://www.hacklab.tk Pagina 1 irc.azzurra.org:6667 #hacklab Exploittare vulnerabilità delle format string by styx^ 0 Pre introduzione Salve sono styx^,questa è l unico testo completo in italiano sulle vulnerabilità delle format string e su come exploittarle(o almeno

Dettagli

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010 Tipi di dati scalari (casting e puntatori) Alessandra Giordani agiordani@disi.unitn.it Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi

Dettagli

Informatica Generale Andrea Corradini I linguaggi di programmazione

Informatica Generale Andrea Corradini I linguaggi di programmazione Informatica Generale Andrea Corradini 17 - I linguaggi di programmazione Sommario Cos'è un linguaggio di programmazione? Una prospettiva storica: linguaggi di prima, seconda e terza generazione I paradigmi

Dettagli

LIBRERIE STANDARD in C Le librerie standard

LIBRERIE STANDARD in C Le librerie standard LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle

Dettagli

Fetch Decode Execute Program Counter controllare esegue prossima

Fetch Decode Execute Program Counter controllare esegue prossima Stored Program Istruzioni sono stringhe di bit Programmi: sequenze di istruzioni Programmi (come i dati) memorizzati in memoria La CPU legge le istruzioni dalla memoria (come i dati) Ciclo macchina (ciclo

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Dipartimento di Informatica Università di Pisa Corso Informatica I - 2012/2013 Outline Introduzione alla compilazione C 1 Introduzione alla compilazione C 2 Ricapitolando...

Dettagli

Le librerie standard. ! La libreria standard del C è in realtà un insieme di librerie

Le librerie standard. ! La libreria standard del C è in realtà un insieme di librerie ! La libreria standard del C è in realtà un insieme di librerie! Per usare una libreria, non occorre inse -rirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle! Ogni file sorgente

Dettagli

Gestione dei file in C

Gestione dei file in C Gestione dei file in C Fondamenti di Informatica Che cos è un file e a cosa serve? Memoria di massa vs memoria centrale q La memoria di massa (disco fisso) è un dispositivo di memorizzazione generalmente

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 26 Sommario: Gestione dei file in C. File ad accesso sequenziale: apertura, chiusura, lettura e scrittura. File binari. Gestione files

Dettagli

Unita aritmetica e logica. Input e output della ALU. Rappresentazione degli interi. Rappresentazione in modulo e segno. Aritmetica del calcolatore

Unita aritmetica e logica. Input e output della ALU. Rappresentazione degli interi. Rappresentazione in modulo e segno. Aritmetica del calcolatore Unita aritmetica e logica Aritmetica del calcolatore Capitolo 9 Esegue le operazioni aritmetiche e logiche Ogni altra componente nel calcolatore serve questa unita Gestisce gli interi Puo gestire anche

Dettagli

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 5 31/10/2013

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 5 31/10/2013 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 5 31/10/2013 Original work Copyright Sara Migliorini, University of Verona Modifications Copyright Damiano Macedonio, University

Dettagli

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII. Tipi di dati fondamentali Tipi di dati fondamentali Linguaggi di Programmazione I Ferdinando Cicalese caratteri: char signed char unsigned char interi short int long interi unsigned short unsigned unsigned

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI E STRUTTURE DATI ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 Puntatori e Liste StudentiDIA

Dettagli

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C... Sommario PREFAZIONE...XI Aggiornamenti e novità... xi Lo scopo di questo libro... xii Diagramma delle dipendenze... xii La metodologia di insegnamento... xiii Panoramica sul libro... xvi Ringraziamenti...

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018 Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018 Esercizi sull allocazione dinamica della memoria in C Il codice di questi esercizi é contenuto nella cartella parte1 1. Implementare una lista

Dettagli

Ingresso ed Uscita in C. Informatica 1 / 15

Ingresso ed Uscita in C. Informatica 1 / 15 Ingresso ed Uscita in C Informatica 1 / 15 Input e Output in C Linguaggio C: progettato per essere semplice e con poche istruzioni Non esistono istruzioni di ingresso / uscita (I/O)!!! Ingresso ed uscita

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 16 febbraio 2016 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori

Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori slide a cura di Salvatore Orlando & Marta Simeoni Architettura degli Elaboratori 1 Interi unsigned in base 2 Si utilizza un alfabeto

Dettagli

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico Architettura degli Elaboratori e Laboratorio Matteo Manzali Università degli Studi di Ferrara Anno Accademico 2016-2017 Analogico vs digitale Segnale analogico Segnale digitale Un segnale è analogico quando

Dettagli

Informatica per le discipline umanistiche 2

Informatica per le discipline umanistiche 2 Informatica per le discipline umanistiche 2 Rappresentazione dell informazione Rappresentazione dell informazione Informatica: studio sistematico degli algoritmi che descrivono e trasformano l informazione:

Dettagli

ciclo di vita della soluzione (informatica) di un problema

ciclo di vita della soluzione (informatica) di un problema Università di Roma Tor Vergata L2-1 ciclo di vita della soluzione (informatica) di un problema errori run-time errori sintattici codice editor codice C++ compilatore esegui eseguibile OK risultati scorretti

Dettagli

Fondamenti di Informatica L-A

Fondamenti di Informatica L-A Fondamenti di Informatica L-A Esercitazione del 23/11/07 Ing. Giorgio Villani Ripasso Teoria Funzioni ricorsive 2 fatt(2) 1 2*fatt(1) fatt(1) 1 2*1 1*fatt(0) fatt(0) 1*1 caso base fatt(0)=1 Esercizio 1

Dettagli

file informatica e laboratorio di programmazione Alberto Ferrari Informatica e Laboratorio di Programmazione

file informatica e laboratorio di programmazione Alberto Ferrari Informatica e Laboratorio di Programmazione file informatica e laboratorio di programmazione dati persistenti o la maggior parte dei programmi ha necessità di memorizzare informazioni in modo persistente non in memoria centrale o le variabili e

Dettagli

Esercizi Programmazione I

Esercizi Programmazione I Esercizi Programmazione I 0 Ottobre 016 Esercizio 1 Funzione valore assoluto Il file.c di questo esercizio deve contenere nell ordine, il prototipo (dichiarazione) di una una funzione abs, che prende in

Dettagli

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi Corso di Calcolatori Elettronici I A.A. 2012-2013 Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e

Dettagli

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono La codifica binaria Fondamenti di Informatica Come memorizzo l informazione nel calcolatore? 1 bit di informazione 1 bit di informazione La memoria del calcolatore Introduzione q Il calcolatore usa internamente

Dettagli

Stringhe e tipi di dati strutturati

Stringhe e tipi di dati strutturati Stringhe e tipi di dati strutturati Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 21 Marzo 2013 Info sui Labs http://tinyurl.com/ieimlabextra Ricordate di portare un adattatore!

Dettagli

Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009

Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009 Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009 Esercizio 1 (punti 3) Sia data la funzione ricorsiva seguente: void elabora (unsigned

Dettagli

I/O da tastiera + Alessandra Giordani Lunedì 2 maggio

I/O da tastiera + Alessandra Giordani Lunedì 2 maggio I/O da tastiera + costrutti while e if Alessandra Giordani agiordani@disi.unitn.it Lunedì 2 maggio 2011 http://disi.unitn.it/~agiordani/ Ripasso funzione printf() Usata per stampare il contenuto di una

Dettagli

La protezione dai memory error exploit

La protezione dai memory error exploit Università degli Studi di Milano Sommario Introduzione 1 Stack Guard Terminator Canaries Random Canaries 2 3 Buffer Overflow Stack Guard Introduzione Buffer Overflow Condizione anomala. Memorizzazione

Dettagli

INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO

INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO PROGRAMMA Aspetti fondamentali della programmazione con riferimento ad un linguaggio di programmazione: astrazione

Dettagli

L apertura di un file ci restituisce un puntatore a una struttura chiamata FILE fopen:

L apertura di un file ci restituisce un puntatore a una struttura chiamata FILE fopen: I FILE L apertura di un file ci restituisce un puntatore a una struttura chiamata FILE FILE *mfptr = NULL; mfptr = fopen( nome_del_file.txt, w ); fopen: primo argomento: nome del file secondo argomento:

Dettagli

Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande / VERSIONE 1

Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande / VERSIONE 1 Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande/ VERSIONE 1 1) Nell uso dei puntatori in C++ la scrittura -> vuol dire: a) riferimento

Dettagli

Introduzione al linguaggio macchina

Introduzione al linguaggio macchina Introduzione al linguaggio macchina Fondamenti di Informatica Come è fatto il linguaggio macchina? Progettare il linguaggio macchina q Il linguaggio macchina è un linguaggio di basso livello che viene

Dettagli

Stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione 1 C-Introduzione.tex: Versione 1.0, aa 2005-2006 Linguaggi di programmazione (1) Sono linguaggi che permettono la codifica di algoritmi in modo da renderli eseguibili, direttamente

Dettagli

Implementazione di DFA in C

Implementazione di DFA in C Implementazione di DFA in C Dispensa di Laboratorio di Linguaggi di Programmazione Sommario Corrado Mencar, Pasquale Lops, Stefano Ferilli Questa dispensa fornisce le linee guida per l implementazione,

Dettagli

I puntatori Referencing e Dereferencing Tipi e Dichiarazioni Assegnazioni. Programmazione 1. Lezione 11. Vincenzo Marra.

I puntatori Referencing e Dereferencing Tipi e Dichiarazioni Assegnazioni. Programmazione 1. Lezione 11. Vincenzo Marra. Programmazione 1 Lezione 11 Vincenzo Marra vincenzo.marra@unimi.it Dipartimento di Matematica Federigo Enriques Università degli Studi di Milano 21 maggio 2014 I puntatori: Introduzione I puntatori nel

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

La scorsa lezione. Laboratorio di Architettura. Word e bytes... Questa lezione. Lezione 8

La scorsa lezione. Laboratorio di Architettura. Word e bytes... Questa lezione. Lezione 8 La scorsa lezione Laboratorio di Architettura Lezione 8 Andrea Torsello 1 Dipartimento di Informatica Università Ca Foscari di Venezia Procedure Convenzione di chiamata Stack (Push / Pop) Implementazione:

Dettagli

Tipi di dato semplici

Tipi di dato semplici Tipi di dato semplici Informatica B Tipi di dati q In C esistono diversi tipi di dato built-in, tra cui int: numeri interi float: numeri con virgola (singola precisione) double : numeri con virgola (doppia

Dettagli

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0 STRINGHE: ARRAY DI CARATTERI Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1

Dettagli

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti Corso di Sicurezza Informatica Sicurezza del software Ing. Gianluca Caminiti Software Sicuro Privo di errori (logici) che comportino un comportamento inatteso. Tali bug possono minare la sicurezza dell

Dettagli

Modello di von Neumann

Modello di von Neumann Modello di von Neumann Bus di sistema CPU Memoria Centrale Memoria di Massa Interfaccia Periferica 1 Interfaccia Periferica 2 Codifica dei dati e delle istruzioni La più piccola unità di informazione memorizzabile

Dettagli