Seguridad. Felipe Andres Manzano FaMAF - Universidad Nacional de Córdoba - Argentina

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Seguridad. Felipe Andres Manzano FaMAF - Universidad Nacional de Córdoba - Argentina"

Transcripción

1 Seguridad Felipe Andres Manzano FaMAF - Universidad Nacional de Córdoba - Argentina 2011

2 Se puede ganar?? i n t main ( ) { i n t cookie ; char buf [ 8 0 ] ; gets ( buf ) ; } i f ( cookie == 0x ) p r i n t f ( " Gansaste! \ n " ) ;

3 Atacante/Ataque/Vulnerabilidad Los programas tienen bug/errores Vulnerabilidad es un tipo de error que permite un ataque Ataque es simplemente una tecnica que utiliza el atacante Atacante es es quien intenta ver, modificar o corromper informacion que no deberia (con un fin malicioso)

4 Ataques de Ingenieria Social Caballitos de troya (Ejecutame este programita por favor) Login falso Lluvia de Pendrives

5 Rootkits (persistencia/ataques del programador) Hooking. Interceptar la ejecucion en algun punto y devolver el control al programa/funcion original. Cambiar programas de usuario. Cambiar codigo fuente Cambiar compilador Rootkit de kernel

6 Atacante externo Server side (servicios) Client Side (desktop) Local (Escalacion de privilegios)

7 Vulnerabilidades en software El input es controlado por un atacante Bugs + datos mezclados con informacion de control = vulnerabilidades Emergen clases de equivalencia Inyeccion de comandos Desbordamiento de enteros Buffer Overflows Format strings... etc..

8 Inyeccion de comandos Un programa vulnerable a injeccion de comandos utiliza la entrada del usuario para construir una linea de comando de shell si realizar los checkeos necesarios. El atacante controla parte de la linea de comandos a ejecutarse por el programa vulnerable y finalmente puede insertar comandos subrepticiamente.

9 Inyeccion de comandos - Ejemplo i n t main ( i n t argc, char argv ) { char b u f f e r [ 6 4 ] = " date " ; p r i n t f ( " Bienvenido a Megaserver! \ n \ r " ) ; p r i n t f ( " La hora y fecha a c t u a l es : " ) ; system ( " date " ) ; p r i n t f ( " Por f a v o r ingrese l a nueva : " ) ; gets ( b u f f e r + s t r l e n ( b u f f e r ) ) ; system ( b u f f e r ) ; return 0; }

10 Inyeccion de comandos - System system - ejecuta una orden del interprete de ordenes SINOPSIS #include <stdlib.h> int system(const char *string); DESCRIPCION system() ejecuta una orden especificada en string llamando a /bin/sh -c string, y regresa despues de que la orden se haya terminado de ejecutar. blah...

11 Inyeccion de comandos - Demo DEMO

12 Desbordamiento de enteros #include < s t d i o. h> i n t main ( i n t argc, char argv [ ] ) { unsigned i n t cookie = 0x ; unsigned i n t parameter = a t o i ( argv [ 1 ] ) ; i f ( cookie > cookie+parameter ) p r i n t f ( "NAAAAAAAAAAH! \ n \ a " ) ; return 0; }

13 Stack Overflows El tipo de vulnerabilidad mas conocido y documentado "Smashing the stack for Fun and Profit" (Aleph, One, 1996) ( 14&issue=49) Esto se viene explotando desde hace 25 anhos

14 Buffers Un cacho de memoria. Una porcion memoria continua y limitada En C, el buffer mas comun es un arreglo Los desbordamientos son posibles porque C/C++ no revisa los limites de los accesos Entonces se puede leer y escribir! fuera de rango

15 Leyendo fuera de rango #include < s t d i o. h> #include < s t r i n g. h> i n t main ( ) { i n t array [ 5 ] = { 1, 2, 3, 4, 5 } ; p r i n t f ( "%08x \ n ", array [ 5 ] ) ; } gcc -O0 -g read5.c -o read5 El compilador no se queja, pero cuando lo ejecutamos imprime un valor "loco"

16 Escribiendo fuera de rango i n t main ( ) { i n t array [ 5 ] ; i n t i ; for ( i = 0; i < 255; i ++) array [ i ] = 10; } gcc -O0 -g write5.c -o write5 El compilador no se queja, pero cuando lo ejecutamos "crashea"

17 La pila estructura de datois LIFO sirve para guardar variables automaticas(locales) e informacion de control para la anidacion de funciones en INTEL el registro *ESP* apunta al tope de la pila (al ultimo valor usado) y *EBP* a la base del marco de activacion actual (no es necesario) las intrucciones PUSH and POP usan ESP para acceder a la memoria de la pila

18 Buffer Overflows - Stack i n t main ( i n t argc, char argv [ ] ) { i n t cookie = 0x ; char b u f f e r [ 4 0 ] ; } s t r c p y ( b u f f e r, argv [ 1 ] ) ; i f ( cookie == 0x ) p r i n t f ( " Ganaste! \ n \ a " ) ; return 0;

19 Buffer Overflows - Stack $ gcc -O0 -g stack.c -o stack $./stack XXXXXXXXXXX...XXXXXXXXXXDCBA

20 Buffer Overflows - Controlando el eip EY! Pero ahi tambien esta la direccion de retorno de la funcion Intentemos sobreescribirla poniendo mucho mas input Vamos a sobreescribir todo el marco de activacion La direccion de retorno de la funcion actual es una variable local implicita e *invisible* para el programador

21 Buffer Overflows - EIP? A donde saltar? Hay que decidir donde saltar Historicamente se salta nuevamente a la pila Podemos elejir un lugar en la funcion main... digamos printf ("Ganaste!\n"); La direccion se investiga usando el gdb

22 Format strings SINOPSIS int printf(const char *format,...); DESCRIPCION Las funciones de la familia printf producen una salida de acuerdo a format. FORMAT %d El argumento int se convierte a la notacion decimal con signo. %n El numero de caracteres escritos hasta ahora se guarda en el entero indicado por el argumento de tipo puntero int * No se convierte ningun argumento.!!!!!!

23 Format strings - Ejemplo i n t main ( i n t argc, char argv [ ] ) { i n t value = 0xdeadbeef ; i n t cookie = 0x ; i n t value_p = &value ; i n t cookie_p = &cookie ; p r i n t f ( " La d i r de cookie :%08x \ n ", cookie_p ) ; p r i n t f ( " La d i r de value :%08x \ n ", value_p ) ; p r i n t f ( argv [ 1 ] ) ; } p r i n t f ( " El v a l o r de cookie :%08x \ n ", cookie ) ; p r i n t f ( " El v a l o r de value :%08x \ n ", value ) ; i f ( cookie == value ) p r i n t f ( "NAAAAAAAAAAH! \ n \ a " ) ; return 0;

24 Format strings - DEMO DEMO

25 Protecciones NX/DEP Mapas de memoria no ejecutables son... ergh.. no executables ASLR Aleatorizacion de la posicion base de los mapas de memoria /GS Cookie o propolice. Canaries en las stacks.

26

Exploiting... Stack Based Buffer Overflow

Exploiting... Stack Based Buffer Overflow Exploiting... Stack Based Buffer Overflow FAMAF UNC November 10, 2015 Se puede ganar? int main () { int cookie ; char buf [80]; } gets ( buf ); // Lee hasta el primer... if ( cookie == 0 x41424344 ) printf

Más detalles

Administración de memoria: Memoria y seguridad

Administración de memoria: Memoria y seguridad Índice Introducción 1 Introducción 2 3 4 Seguridad? Introducción En un sistema de cómputo, no podemos asumir la mejor intención Un sistema puede tener distintos usuarios, el sistema protege a los datos

Más detalles

Introducción a Sistemas Operativos: Ficheros

Introducción a Sistemas Operativos: Ficheros Introducción a Sistemas Operativos: Ficheros Clips Fr ancisco J Ballesteros 1. Entrada/Salida Es importante saber cómo utilizar ficheros. En UNIX, es aún más importante dado que gran parte de los recursos,

Más detalles

CRIPTOGRAFÍA Y SEGURIDAD INFORMÁTICA (66.69) Trabajo Práctico: Buffer Overflow

CRIPTOGRAFÍA Y SEGURIDAD INFORMÁTICA (66.69) Trabajo Práctico: Buffer Overflow Universidad de Buenos Aires, Facultad de Ingeniería CRIPTOGRAFÍA Y SEGURIDAD INFORMÁTICA (66.69) Trabajo Práctico: Buffer Overflow Alumnos: Benarós, Pablo 78623 pbenaros@yahoo.es Paván, Adrián 77659 tanistico@gmail.com

Más detalles

Entender los aspectos técnicos, por los cuales un intruso puede ingresar a un sistema y tomar el control de este

Entender los aspectos técnicos, por los cuales un intruso puede ingresar a un sistema y tomar el control de este COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar a un sistema y tomar el control de este AGENDA Programas

Más detalles

Pila / Convención C / Interacción C-ASM. Ejercicios. Pila. Organización del Computador II. 21 de marzo de 2017

Pila / Convención C / Interacción C-ASM. Ejercicios. Pila. Organización del Computador II. 21 de marzo de 2017 Organización del Computador II 21 de marzo de 2017 / / Hoy vamos a ver / / Para ponernos de acuerdo... Está en memoria. RSP y RBP la definen. Crece númericamente para atrás. / / Cómo la usamos? PUSH y

Más detalles

05 Funciones en lenguaje C. Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales

05 Funciones en lenguaje C. Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales 05 Funciones en lenguaje C Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales 1 Temario Programación funcional Declaración (prototipos) y definición de funciones

Más detalles

Introducción a Sistemas Operativos: Procesos

Introducción a Sistemas Operativos: Procesos Introducción a Sistemas Operativos: Procesos Clips xxx Fr ancisco J Ballesteros 1. Variables de entorno Otra forma de darle información a un proceso (además de usando sus argumentos) es utilizar las llamadas

Más detalles

Estructuras de Datos. La pila es un objeto dinámico en constante cambio.

Estructuras de Datos. La pila es un objeto dinámico en constante cambio. 21 Capítulo 2. LA PILA (STACK). 2.1 Definición y ejemplos. Una pila es un conjunto ordenado de elementos en el cual se pueden agregar y eliminar elementos de un extremo, el cual es llamado el tope de la

Más detalles

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por

Más detalles

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Departamento de Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Uso de punteros Objetivos de la práctica: - Entender la representación de números (enteros y reales) en el

Más detalles

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III Lenguaje C 1 Puntos previos Los códigos fuentes generados en C requieren ser compilados

Más detalles

Ejercicios sobre tuberías

Ejercicios sobre tuberías Boletín 3. Ejercicios sobre tuberías July 14, 016 1. Indica de manera justificada si las siguientes afirmaciones sobre la utilización de tuberías como mecanismo de sincronización entre dos procesos son

Más detalles

Hacer ejercicios del libro (Cap. 9 Seguridad): 4,5,6,7,8,9,10,12,13

Hacer ejercicios del libro (Cap. 9 Seguridad): 4,5,6,7,8,9,10,12,13 Práctico Seguridad Sistemas Operativos Hacer ejercicios del libro (Cap. 9 Seguridad): 4,5,6,7,8,9,10,12,13 1) Suponga que se previene la ejecucion de datos localizados en la pila de una funcion (osea,

Más detalles

Uso avanzado de punteros

Uso avanzado de punteros Uso avanzado de punteros Mario Medina C. mariomedina@udec.cl Punteros Contienen direcciones de memoria Punteros a tipos de datos simples int, char, float, double Punteros a estructuras Punteros a vectores

Más detalles

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales

Más detalles

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas.

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas. Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas. Febrero 2016 [Curso de programación en C] - Archivos & Cadenas 1/17 Archivos

Más detalles

Programación I Funciones

Programación I Funciones 1 Funciones Iván Cantador 2 Funciones: definición, sintaxis, ejemplos (I) Una funciónes un bloque de sentencias identificado con un nombre que se ejecutan de manera secuencial ofreciendo una funcionalidad

Más detalles

El lenguaje de Programación C. Fernando J. Pereda <ferdy@gentoo.org>

El lenguaje de Programación C. Fernando J. Pereda <ferdy@gentoo.org> El lenguaje de Programación C Fernando J. Pereda Por qué aprender C? Portable y muy extendido Estándar (C89, C99) El lenguaje de los sistemas Un lenguaje fácil (no, no es broma) Por

Más detalles

ESTRUCTURAS DINÁMICAS DE DATOS (PILAS)

ESTRUCTURAS DINÁMICAS DE DATOS (PILAS) 200 UNAN LEON Departamento de Computación Ingeniería en Sistema y Telemática Docente: Ing. Juan Carlos Antón S. Asignatura: Algoritmo y Estructuras de Datos ESTRUCTURAS DINÁMICAS DE DATOS (PILAS) Pilas

Más detalles

SOLUCION EXAMEN junio 2006

SOLUCION EXAMEN junio 2006 SOLUCION EXAMEN junio 2006 1. Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas: I) (1 p) En UNIX únicamente se distinguen dos tipos de procesos: los procesos de usuario y los

Más detalles

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior PUNTEROS

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior PUNTEROS PUNTEROS 1 Punteros en C Un puntero es una variable que almacena direcciones de memoria tipo *puntero; tipo variable; puntero = &variable; ffd0 valor variable fff0 ffd0 puntero A partir de la última sentencia

Más detalles

TP N 14 Compilando C/C++ bajo GNU/Linux

TP N 14 Compilando C/C++ bajo GNU/Linux Taller de GNU/Linux 2003- TP14 - hoja 1/5 Universidad Nacional de La Matanza Ingeniería en Informática-Taller de GNU/Linux 2003 TP N 14 Compilando C/C++ bajo GNU/Linux Objetivos: Utilizar en forma básica

Más detalles

VULNERABILIDADES DE VALIDACIÓN DE ENTRADA

VULNERABILIDADES DE VALIDACIÓN DE ENTRADA VULNERABILIDADES DE VALIDACIÓN DE ENTRADA Explotación, Modelo de Ataques y Riesgo Residual Juan Rafael Álvarez Correa Fluidsignal Group Juan Guillermo Lalinde Pulido Universidad EAFIT 1 ORDEN DEL DÍA Definición

Más detalles

Curso: (62612) Diseño de aplicaciones seguras

Curso: (62612) Diseño de aplicaciones seguras Curso: (62612) Diseño de aplicaciones seguras Fernando Tricas García Departamento de Informática e Ingeniería de Sistemas Universidad de Zaragoza http://webdiis.unizar.es/~ftricas/ http://moodle.unizar.es/

Más detalles

Lenguaje de Programación: C++, INPUT OUTPUT(Variables)

Lenguaje de Programación: C++, INPUT OUTPUT(Variables) UG Lenguaje de Programación: C++, INPUT OUTPUT() Universidad de Guanajuato Septiembre 2010 MAIN int main (); // no arguments int main (inl argc, char* argv[]); // arguments arcg: cantidad de parámetros

Más detalles

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS Caso 1: 1.- Necesitamos un cd o Dvd para grabar alguna de las versiones de livecd de Linux. 2.- Liga de una

Más detalles

Entrada/Salida (Standard) Clase 6 Introducción a la Computación Patricia Borensztejn

Entrada/Salida (Standard) Clase 6 Introducción a la Computación Patricia Borensztejn Entrada/Salida (Standard) Clase 6 Introducción a la Computación Patricia Borensztejn Euler 3 The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 600851475143?

Más detalles

PROGRAMACION ESTRUCTURADA: Tema 1. El lenguaje de programación C

PROGRAMACION ESTRUCTURADA: Tema 1. El lenguaje de programación C PROGRAMACION ESTRUCTURADA: Tema 1. El lenguaje de programación C Presenta: David Martínez Torres Universidad Tecnológica de la Mixteca Instituto de Computación Oficina No. 37 dtorres@mixteco.utm.mx Contenido

Más detalles

Seguridad hoy en día. Claudio Salazar csalazar@inf.utfsm.cl http://nlc.pinguinux.cl PinguinuX Team

Seguridad hoy en día. Claudio Salazar csalazar@inf.utfsm.cl http://nlc.pinguinux.cl PinguinuX Team Seguridad hoy en día. Claudio Salazar csalazar@inf.utfsm.cl http://nlc.pinguinux.cl PinguinuX Team (cc) muehlinghaus Un montón de noticias Se filtran datos personales de 6 millones de chilenos vía Internet

Más detalles

SEMINARIO C para programadores java. Sesión 5

SEMINARIO C para programadores java. Sesión 5 2º de Ingeniería Informática, Curso 2008/2009 SEMINARIO C para programadores java (este seminario forma parte de las actividades del proyecto piloto) Sesión 5 Contenidos: 1. Depuración de programas en

Más detalles

ESTRUCTURAS DINÁMICAS DE DATOS (PILAS) EN C

ESTRUCTURAS DINÁMICAS DE DATOS (PILAS) EN C 2013 ESTRUCTURAS DINÁMICAS DE DATOS (PILAS) EN C Departamento de Computación UNAN-León TEMA 4: ESTRUCTURAS DINÁMICAS DE DATOS (PILAS) 4.1 INTRODUCCIÓN: En términos de listas lineales, una pila puede ser

Más detalles

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO TIPOS DE DATOS BÁSICOS: Tipo Tipo Tamaño aproximado en bits Rango mínimo Carácter char 8 0 a 55 Entero int 16-3767 a 3767 Real float 3

Más detalles

Curso: (30227) Seguridad Informática

Curso: (30227) Seguridad Informática Curso: (30227) Seguridad Informática Fernando Tricas García Departamento de Informática e Ingeniería de Sistemas Universidad de Zaragoza http://webdiis.unizar.es/~ftricas/ http://moodle.unizar.es/ ftricas@unizar.es

Más detalles

Informática Ingeniería en Electrónica y Automática Industrial

Informática Ingeniería en Electrónica y Automática Industrial Informática Ingeniería en Electrónica y Automática Industrial Funciones en lenguaje C Funciones en lenguaje C Definición de funciones Declaración de funciones Relación entre variables y funciones Parámetros

Más detalles

Qué es un Buffer Overflow? Código a analizar:

Qué es un Buffer Overflow? Código a analizar: Qué es un Buffer Overflow? Es una falla dentro de un software, en la cual, mientras se copian datos hacia un buffer se sobrepasa el límite del mismo, escribiendo así datos sobre la memoria adyacente permitiendo

Más detalles

Taller de Protección y Seguridad

Taller de Protección y Seguridad Taller de Protección y Seguridad Sistemas Operativos Diego Fernandez Slezak (gracias Sabi!!!) 1 Departamento de Computación Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires SO - Taller

Más detalles

Tema: Lenguaje ensamblador embebido

Tema: Lenguaje ensamblador embebido Compiladores. Guía 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Lenguaje ensamblador embebido Contenido En esta guía se presenta una breve introducción a las estructuras

Más detalles

Actividad Algoritmos, Estructura y Programación I. FOR, DO-WHILE

Actividad Algoritmos, Estructura y Programación I. FOR, DO-WHILE Actividad Algoritmos, Estructura y Programación I. FOR, DO-WHILE 1. Qué es un bucle? 2. A que se denomina cuerpo de un bucle? 3. Define iteración de un bucle. 4. Cuál es el cuerpo de un bucle? 5. Qué es

Más detalles

mov_and_reg =========== En este reto se nos pedía que calculásemos el valor del registro eax al final de la ejecución del siguiente código:

mov_and_reg =========== En este reto se nos pedía que calculásemos el valor del registro eax al final de la ejecución del siguiente código: mov_and_reg =========== En este reto se nos pedía que calculásemos el valor del registro eax al final de la ejecución del siguiente código: inicio: mov $1337, %eax mov $31337, %ebx mov $3371, %ecx xor

Más detalles

ANÁLISIS DE LAS PRINCIPALES VULNERABILIDADES DE UN SISTEMA INFORMÁTICO

ANÁLISIS DE LAS PRINCIPALES VULNERABILIDADES DE UN SISTEMA INFORMÁTICO ANÁLISIS DE LAS PRINCIPALES VULNERABILIDADES DE UN SISTEMA INFORMÁTICO Luis Villalta Márquez INTRODUCCIÓN Existen diferentes vulnerabilidades que, dependiendo de sus características, las podemos clasificar

Más detalles

Examen Teórico (1/3 de la nota final)

Examen Teórico (1/3 de la nota final) Examen Teórico (1/3 de la nota final) 105000016 - Programación para Sistemas Grado en Ingeniería Informática (2009) Lenguajes y Sistemas Informáticos e Ingeniería de Software Facultad de Informática Universidad

Más detalles

T1-Introducción. Índice

T1-Introducción. Índice T1-Introducción 1.1 Índice El papel del S.O. Servicios que ofrece el S.O. Formas de acceder al kernel (Tema 8 EC) Modos de ejecución Interrupciones, excepciones y llamadas a sistema Llamadas a sistema

Más detalles

Construyendo Programas más Complejos

Construyendo Programas más Complejos Arquitectura de Ordenadores Construcciones de Alto Nivel en Ensamblador Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Construyendo Programas más

Más detalles

Examen Teórico (1/3 de la nota final)

Examen Teórico (1/3 de la nota final) Examen Teórico (1/3 de la nota final) 105000016 - Programación para Sistemas Grado en Ingeniería Informática (2009) Lenguajes y Sistemas Informáticos e Ingeniería de Software Facultad de Informática Universidad

Más detalles

Preliminares. Tipos de variables y Expresiones

Preliminares. Tipos de variables y Expresiones Preliminares. Tipos de variables y Expresiones Felipe Osorio Instituto de Estadística Pontificia Universidad Católica de Valparaíso Marzo 5, 2015 1 / 20 Preliminares Computadoras desarrollan tareas a un

Más detalles

Sistemas Operativos: Programación de Sistemas. Curso 2006-07. Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Sistemas Operativos: Programación de Sistemas. Curso 2006-07. Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Tema 2 : entorno programación linux Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Francisco J. Santana 1 Programación

Más detalles

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México Unidad Académica Profesional Tianguistenco Ingeniería de Software Estructura de Datos

Más detalles

Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1.

Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1. Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1. Anjuta es un entorno de desarrollo de C que podemos encontrar en cualquier distribución de GNU/Linux. Si nuestra distribución no dispone de ella,

Más detalles

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos 1.1 Tipos de Datos Primitivos 1.2 Tipos de datos estructurados 1.2.1 Arreglos unidimensionales, bidimensionales y cadenas de caracteres 1.2.2 Registros o Estructuras (unión y estructura) 1.3 Definición

Más detalles

Ejercicios de la sesión 4 de C resueltos

Ejercicios de la sesión 4 de C resueltos Ejercicios de la sesión 4 de C resueltos 1. Usando el procedimiento del ejercicio 2 del seminario anterior, escribe un programa que multiplique dos matrices A y B leídas de ficheros, la primera de tamaño

Más detalles

Introducción al lenguaje C

Introducción al lenguaje C Introducción al lenguaje C Ampliación de Informática Belarmino Pulido Junquera Índice 1. Presentación del lenguaje C 2. Estructura de un programa en C 3. Tipos de datos escalares 4. Operadores básicos

Más detalles

Objetivo. Introducción. Tema: GENERACION DE CODIGO. Compiladores, Guía 11 1

Objetivo. Introducción. Tema: GENERACION DE CODIGO. Compiladores, Guía 11 1 Compiladores, Guía 11 1 Tema: GENERACION DE CODIGO. Facultad : Ingeniería Escuela :Computación Asignatura:Compiladores Objetivo Reconocer las diferentes instrucciones para la generación de código.ensamblador

Más detalles

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C. El primer objetivo de un programa informático es el manejo de datos. Un dato es toda aquella información que se puede tratar en un programa informático. En este artículo vamos a conocer los tipos de datos

Más detalles

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS Una vez que ya sabes crear tus propios programas, vamos a analizar los fundamentos del lenguaje de programación C. Este capítulo incluye además los siguientes temas:

Más detalles

Funciones Definición de función

Funciones Definición de función Funciones Definición de función Una función es un bloque de código que realiza una tarea específica. Una función es una porción de programa, identificable mediante un nombre, que realiza determinadas tareas

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN Asignatura correspondiente al plan de estudios de la carrera de Ingeniería Informática

FUNDAMENTOS DE PROGRAMACIÓN Asignatura correspondiente al plan de estudios de la carrera de Ingeniería Informática Página 1/14 Universidad Nacional del Litoral Facultad de Ingeniería y Ciencias Hídricas Departamento de Informática FUNDAMENTOS DE PROGRAMACIÓN Asignatura correspondiente al plan de estudios de la carrera

Más detalles

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C)

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C) APRENDERAPROGRAMAR.COM REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I Fecha revisión: 2039 Resumen:

Más detalles

.: ASM / Shellcoding Series :. II Bypassing local Linux x86 ASLR protection

.: ASM / Shellcoding Series :. II Bypassing local Linux x86 ASLR protection .: ASM / Shellcoding Series :. II Bypassing local Linux x86 ASLR protection por vlan7 vlan7 [at] overflowedminds [point] net http://www.overflowedminds.net http://zen7.vlan7.org 27-Feb-2011 1 Índice 1.

Más detalles

REPRESENTACIÓN DE DATOS

REPRESENTACIÓN DE DATOS REPRESENTACIÓN DE DATOS Tipos de datos primitivos Tipos de Datos Estructurados TIPOS DE DATOS SIMPLES O PRIMITIVOS Dato Longitud Rango 2 TIPOS DE DATOS SIMPLES O PRIMITIVOS Surgen de la necesidad de tener

Más detalles

PROGRAMACION / Clave: 11214

PROGRAMACION / Clave: 11214 PRACTICA 10. Programas en DevC++ 1.- Programa que imprima las tablas de multiplicar del 1 al 10, se deberá hacer una pausa entre tabla y tabla de multiplicar. 2.- Programa que se repita N cantidad de veces

Más detalles

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior. Trabajo Final

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior. Trabajo Final Trabajo Final 1 Objetivo Comprender (en gran parte) un programa desarrollado en: C++ (Core ) Generador de código / Ejecución de comandos Flex (Lex) Lexer Genera un Analizador Léxico en C http://en.wikipedia.org/wiki/lex_(software)

Más detalles

SCHOOL OF HACKING 2015 RETO BUFFER OVERFLOW

SCHOOL OF HACKING 2015 RETO BUFFER OVERFLOW SCHOOL OF HACKING 2015 RETO BUFFER OVERFLOW INSTRUCCIONES Para la resolución del reto habrá que tener una máquina física o virtual Linux instalada al menos con las siguientes características: - Compilador

Más detalles

Procesos e Hilos en C

Procesos e Hilos en C Procesos e Hilos en C 6 de febrero de 2012 En esta sesión vamos a escribir programas en lenguaje C que utilicen hilos y procesos para comparar el rendimiento del sistema ante la gestión de unos y otros.

Más detalles

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos]

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos] Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos] M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 14-O Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura

Más detalles

Avanzando un poco, Buffer Overflow con pila no ejecutable: Return into libc Ampliación del artículo sobre Stack-Based Buffer Overflow, by TuXeD

Avanzando un poco, Buffer Overflow con pila no ejecutable: Return into libc Ampliación del artículo sobre Stack-Based Buffer Overflow, by TuXeD Avanzando un poco, Buffer Overflow con pila no ejecutable: Return into libc Ampliación del artículo sobre Stack-Based Buffer Overflow, by TuXeD Hola de nuevo ;-). Vimos en la revista número 27 qué son

Más detalles

Introducción a la Computación (Matemática)

Introducción a la Computación (Matemática) Introducción a la Computación (Matemática) Primer Cuatrimestre de 2016 Brevísima Introducción a la Organización de Computadoras 1 Mapa de la materia Programas simples en C++. Especificación de problemas.

Más detalles

TRUCOS con el DDD. // '&' para que la terminal no se quede pillada // si nos olvidamos el &: <Ctrl+Z> fg<intro>

TRUCOS con el DDD. // '&' para que la terminal no se quede pillada // si nos olvidamos el &: <Ctrl+Z> fg<intro> TRUCOS con el DDD Autor: Manel Guerrero Versión: 0.1 Ultima versión en: http://personals.ac.upc.edu/guerrero/fo Fuentes: http://www.gnu.org/software/ddd/manual/html_mono/ddd.html

Más detalles

Introducción al lenguaje C

Introducción al lenguaje C Introducción al lenguaje C Programación 2 Profesorado de Informática CeRP del Suroeste, Colonia, Uruguay 15 de marzo de 2016 Programación 2 Introducción al lenguaje C 15 de marzo de 2016 1 / 34 Objetivos

Más detalles

Prueba N o 1. Programación II

Prueba N o 1. Programación II UNIVERSIDAD ANDRÉS BELLO 1 Prueba N o 1 Programación II Profesores: José Luis Allende y Carlos Beyzaga. Fecha: 10 de Septiembre de 2013 Nombre: Nota: Instrucciones: Coloque su nombre a todas las hojas.

Más detalles

Por ejemplo, para declarar un arreglo de enteros llamado a con diez elementos se hace de la siguiente forma:

Por ejemplo, para declarar un arreglo de enteros llamado a con diez elementos se hace de la siguiente forma: Arreglos unidimensionales y multidimensionales Los arreglos son una colección de variables del mismo tipo que se referencian utilizando un nombre común. Un arreglo consta de posiciones de memoria contigua.

Más detalles

Introducción a C: Variables, Tipos El tipo «int» Clase 3 Introducción a la Computación Patricia Borensztejn

Introducción a C: Variables, Tipos El tipo «int» Clase 3 Introducción a la Computación Patricia Borensztejn Introducción a C: Variables, Tipos El tipo «int» Clase 3 Introducción a la Computación Patricia Borensztejn Estructura de un programa en C Hello, World Un programa en C consta de funciones y variables.

Más detalles

Fundamentos de la programación

Fundamentos de la programación Fundamentos de la programación 4A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Facultad de Informática Universidad Complutense Archivos como parámetros

Más detalles

Programación Básica Estructuras de Datos y Funciones en C

Programación Básica Estructuras de Datos y Funciones en C Arturo Vega González a.vega@ugto.mx Division de Ciencias e Ingenierías Universidad de Guanajuato Campus León Sesión 8 Universidad de Guanajuato, DCI, Campus León 1 / 33 Contenido 1 Estructuras de Datos

Más detalles

Esquema de un programa en C: bloques básicos

Esquema de un programa en C: bloques básicos Esquema de un programa en C: bloques básicos // Incluimos los ficheros de cabecera que necesitemos. // Esto es un comentario #include #include // Si queremos definir alguna constante,

Más detalles

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial FUNDAMENTOS DE INFORMÁTICA 1º PRÁCTICA 1: Introducción al entorno de programación Dev-C++ CURSO 2005/2006 División de Ingeniería de Sistemas y Automática ISA-UMH R-00-FI001v1.0 1. Objetivos Los objetivos

Más detalles

Tema 18: Memoria dinámica y su uso en C

Tema 18: Memoria dinámica y su uso en C Tema 18: Memoria dinámica y su uso en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1

Más detalles

Lenguaje C Entrada y Salida de Datos. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Lenguaje C Entrada y Salida de Datos. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Lenguaje C Entrada y Salida de Datos Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia E/S por consola Se refiere a las operaciones que ocurren

Más detalles

Tipos de variables. Lenguaje C. Departamento de Electrónica. Tipos de datos, variables y constantes. Fundación San Valero

Tipos de variables. Lenguaje C. Departamento de Electrónica. Tipos de datos, variables y constantes. Fundación San Valero Lenguaje C Tipos de variables Departamento de Electrónica Fundación San Valero Tipos de datos, Cinco tipos de datos básicos: Carácter (char): 8 bits -128 a 127. Entero (int): 32 bits -2.147.483.648 a 2.147.483.647.

Más detalles

Introducción a C++ y Code::Blocks

Introducción a C++ y Code::Blocks Introducción a C++ y Práctica Imperativo Clase 1 Luis Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 28 de mayo de 2010 Menu de esta Tarde Funcional Vs. Imperativo (Intérprete

Más detalles

FACULTAD DE INGENIERÍA

FACULTAD DE INGENIERÍA NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Variables y Tipos de Datos PRÁCTICA NÚM. [ 1 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería Computacional Lenguaje

Más detalles

Tema 5. Entrada y Salida

Tema 5. Entrada y Salida Tema 5 Entrada y Salida Contenidos 1. Conceptos Previos de Entrada y Salida de Datos. 2. Funciones de Salida de Datos. putchar puts printf 3. Funciones de Entrada de Datos. getchar gets scanf 4. Ficheros

Más detalles

Operaciones de E/S en ANSI C

Operaciones de E/S en ANSI C Operaciones de E/S en ANSI C Las operaciones de entrada/salida estándar (realizadas habitualmente con printf y scanf) se realizan en realidad sobre ficheros que representan los dispositivos mediante los

Más detalles

Examen Programación para Sistemas. Grado en Ingeniería Informática (2009)

Examen Programación para Sistemas. Grado en Ingeniería Informática (2009) Apellidos: Nombre: Matrícula: Examen 105000016 - Programación para Sistemas Grado en Ingeniería Informática (2009) Lenguajes y Sistemas Informáticos e Ingeniería de Software Facultad de Informática Universidad

Más detalles

SEGURIDAD Y ALTA DISPONIBILIDAD

SEGURIDAD Y ALTA DISPONIBILIDAD SEGURIDAD Y ALTA DISPONIBILIDAD 1 Nombre: Existen diferentes vulnerabilidades que, dependiendo de sus características, las podemos clasificar e identificar en los siguientes tipos: De configuración: Si

Más detalles

TEMA 0 Gestión de Memoria Dinámica

TEMA 0 Gestión de Memoria Dinámica TEMA 0 Gestión de Memoria Dinámica ESTRUCTURAS DE DATOS 1 Objetivos Tema preliminar para entender el uso de la herramienta básica en la gestión de memoria dinámica: punteros Objetivos: Conocer el concepto

Más detalles

Sistemas Operativos Práctica 3

Sistemas Operativos Práctica 3 Sistemas Operativos Práctica 3 Ing. Andrés Bustamante afbustamanteg@unal.edu.co Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que

Más detalles

Lenguaje de Programación: C++ ARCHIVOS I/O

Lenguaje de Programación: C++ ARCHIVOS I/O UG C++ Lenguaje de Programación: C++ ARCHIVOS I/O Universidad de Guanajuato Octubre 2010 Como abrir un archivo Antes de poder escribir datos en un archivo, debemos abrirlo, esto significa que debemos decirle

Más detalles

Introducción a Lenguaje C. Jornadas de Octubre 2009 Grupo de Usuarios de Linux Universidad Carlos III Tania Pérez

Introducción a Lenguaje C. Jornadas de Octubre 2009 Grupo de Usuarios de Linux Universidad Carlos III Tania Pérez Jornadas de Octubre 2009 Grupo de Usuarios de Linux Universidad Carlos III Tania Pérez El lenguaje C es: Estructurado Portable. Flexible, veloz y potente. Fácil modificación. Compilado. 2 Algunas características

Más detalles

Introducción a Sistemas Operativos: Comunicación entre Procesos

Introducción a Sistemas Operativos: Comunicación entre Procesos Introducción a Sistemas Operativos: Comunicación entre Procesos Clips xxx Fr ancisco J Ballesteros. Pipelines Hace tiempo, UNIX disponía de las redirecciones que hemos visto y los usuarios combinaban programas

Más detalles

Programación segura. Seguridad en los Sistemas Informáticos. Ismael Ripoll. Universidad Politècnica de València. Abril 2011

Programación segura. Seguridad en los Sistemas Informáticos. Ismael Ripoll. Universidad Politècnica de València. Abril 2011 Programación segura Seguridad en los Sistemas Informáticos Ismael Ripoll Universidad Politècnica de València Abril 2011 Ismael Ripoll (Universidad Politècnica de València) Programación segura Abril 2011

Más detalles

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada.

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada. Arquitectura de sistemas Abelardo Pardo University of Sydney School of Electrical and Information Engineering NSW, 00, Australia Autor principal del curso de 00 a 0 Iria Estévez Ayres Damaris Fuentes Lorenzo

Más detalles

Introducción a C. Grupo de Sistemas y Comunicaciones. Febrero 2008 C 1. Programación imperativa estructurada.

Introducción a C. Grupo de Sistemas y Comunicaciones. Febrero 2008 C 1. Programación imperativa estructurada. Grupo de Sistemas y Comunicaciones gsyc-profes@gsyc.es Febrero 2008 C 1 C Características: Programación imperativa estructurada. Relativamente de bajo nivel. Lenguaje simple, la funcionalidad está en las

Más detalles

Programación en lenguaje C

Programación en lenguaje C 1 Introducción UNIVERSIDAD NACIONAL ANDRÉS BELLO Programación en lenguaje C Lenguaje de programación creado en 1972 por Dennis Ritchie, es la evolución del lenguaje de programación B. Linux, kernel del

Más detalles

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas Unidad II Fundamentos de programación en Java Ing. José Luis Llamas Cárdenas En java para poder escribir se emplea el objeto System.out, t pero para leer del teclado es necesario emplear System.in Et Este

Más detalles

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía Tema 3 SUBRUTINAS ÍNDICE Definición e instrucciones básicas Soporte para el tratamiento de subrutinas (ejecución de la subrutina y gestión del bloque de activación) Interrupciones vs llamadas a procedimiento

Más detalles

Sistemas Operativos I Manual de prácticas

Sistemas Operativos I Manual de prácticas Sistemas Operativos I Manual de prácticas Grupo de Sistemas Operativos (DSIC/DISCA) Práctica 3: Procesos POSIX ANTES DE EMPEZAR...... 2 PRÁCTICA 3: PROCESOS POSIX... 2 CREACIÓN DE PROCESOS MEDIANTE FORK...

Más detalles

Tema 1. Programación modular. Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas

Tema 1. Programación modular. Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas Tema 1. Programación modular Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas 1.1. Objetivos Repasar brevemente mediante ejemplos los elementos principales del lenguaje

Más detalles

Lex. Lex. Ing. Adrian Ulises Mercado Martínez. Enero 30, Ing. Adrian Ulises Mercado Martínez Lex Enero 30, / 27

Lex. Lex. Ing. Adrian Ulises Mercado Martínez. Enero 30, Ing. Adrian Ulises Mercado Martínez Lex Enero 30, / 27 Lex Ing. Adrian Ulises Mercado Martínez Enero 30, 2015 Ing. Adrian Ulises Mercado Martínez Lex Enero 30, 2015 1 / 27 1 Lex 2 Compilar con lex 3 Estructura de un programa en lex 4 Expresiones Regulares

Más detalles

Tipos de Datos. Tipos de Datos Simples Estándar

Tipos de Datos. Tipos de Datos Simples Estándar Departamento de Informática Universidad Técnica Federico Santa María Tipos de Datos Programación de Computadores Profesor: Teddy Alfaro Tipos de Datos Simples Estándar char es un carácter (alfanumérico),

Más detalles