Format String Vulnerability
|
|
- Amanda Conte
- 7 anni fa
- Visualizzazioni
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 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
DettagliDati 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
DettagliInput/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
DettagliIntroduzione 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
DettagliEsercitazione 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
DettagliStack-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
DettagliELEMENTI 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:
DettagliCorso 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
DettagliScrittura 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
DettagliPrimi 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
DettagliIntroduzione 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
DettagliFile 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
DettagliLezione 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)
DettagliI 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
DettagliVariabili 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
DettagliAppunti 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)
DettagliIl 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;
DettagliSistemi 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
DettagliSistemi 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
DettagliInformatica 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
DettagliLezione 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,
DettagliInformatica 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,
DettagliLezione 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
DettagliCodifica 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
DettagliPrimi 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
DettagliLIBRERIE 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
DettagliLe 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
DettagliFile 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
DettagliInput/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
DettagliL AMBIENTE CODE BLOCKS E L IO
L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout
DettagliCaratteri 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
DettagliPuntatori 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
DettagliFondamenti 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
DettagliCorso 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
DettagliIntroduzione 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
DettagliSpazio 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 (){
Dettagli1
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
DettagliTipi 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
DettagliLe 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
DettagliProcessore 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
DettagliL 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
DettagliAlgoritmi, 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)
DettagliRappresentazione 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)
DettagliSistemi 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
DettagliCaratteri 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
Dettaglihttp://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
DettagliTipi 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
DettagliInformatica 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
DettagliLIBRERIE 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
DettagliFetch 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
DettagliIntroduzione 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...
DettagliLe 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
DettagliGestione 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
DettagliINTRODUZIONE 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
DettagliINTRODUZIONE 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
DettagliELEMENTI 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
DettagliLaboratorio 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
DettagliUnita 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
DettagliLaboratorio 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
DettagliTipi 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
DettagliALGORITMI 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
DettagliSommario 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...
DettagliEsercitazioni 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
DettagliIngresso 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
DettagliSistemi 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
DettagliEsercitazioni 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
DettagliArchitettura 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
DettagliInformatica 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:
Dettagliciclo 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
DettagliFondamenti 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
Dettaglifile 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
DettagliEsercizi 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
DettagliArchitettura 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
DettagliLa 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
DettagliStringhe 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!
DettagliFondamenti 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
DettagliI/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
DettagliLa 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
DettagliINFORMATICA 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
DettagliL 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:
DettagliInformatica/ 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
DettagliIntroduzione 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
DettagliStringhe 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
DettagliLinguaggi 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
DettagliImplementazione 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,
DettagliI 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
DettagliC: 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
DettagliLa 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:
DettagliTipi 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
DettagliUna 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
DettagliCorso 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
DettagliModello 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