Enunciado 2 Descifrar claves cifradas con crypt
|
|
- Óscar Toro Sandoval
- hace 5 años
- Vistas:
Transcripción
1 Enunciado 2 Descifrar claves cifradas con crypt INDICE 1 Definición del problema Solución secuencial Tabla de tiempos Para saber más Listado de programas cifrado.h cifrar.c descifrar.c...6 Descifrar claves cifradas con crypt 0
2 1 Definición del problema Los sistemas tipo UNIX utilizan la función crypt para cifrar la clave de acceso de un usuario al sistema. Esta función se define como: char *crypt(const char *key, const char *salt); Su efecto es devolver un puntero a la clave cifrada correspondiente a la clave indicada por key, utilizando la variante salt (una cadena de dos caracteres del alfabeto [a-za-z0-9./], que permite un total de 4096 valores distintos). La clave cifrada consta de trece caracteres imprimibles, siendo los dos primeros los mismos que la variante salt utilizada al cifrar. Puede obtenerse una definición completa de esta función con el comando man de UNIX. A continuación se muestra el resultado de crypt aplicado a tres claves distintas: crypt ( abrir, aa ) => aahuvtmrcqhaw crypt ( ajaja, aa ) => aacv68p63epr6 crypt ( clave, aa ) => aa80jyxyfbfpi En versiones antiguas de sistemas tipo UNIX, estas claves cifradas se guardaban como un campo más dentro de cada línea del fichero /etc/passwd que, además, tiene permisos de lectura para todos. Si la clave de root fuese clave, la primera línea del fichero /etc/passwd tendría un aspecto similar a: root: aa80jyxyfbfpi:0:0:root:/root:/bin/bash Encontrar ahora la clave de root, puede consistir en probar a cifrar claves ( abracadabra, , etc.) hasta dar con una que resulte darnos como clave cifrada aa80jyxyfbfpi. Los sistemas UNIX actuales evitan ya este potencial coladero para la seguridad mediante el uso de lo que se conoce como Shadow password. Aquí, sin embargo, supondremos conocidas unas cuantas claves cifradas y se tratará de encontrar las claves que las originaron. 2 Solución secuencial Para poder resolver el problema en un tiempo razonable, se limitará el espacio de búsqueda fijando como parámetro el tamaño del alfabeto de claves y forzando que todas las claves tengan la misma longitud (parámetros típicos serán alfabeto de 26 letras [a..z] y claves de 4 caracteres). Además, se considerará siempre salt = aa. Con estos parámetros, las posibles claves serían desde aaaa hasta zzzz, y la solución mediante fuerza bruta (probando con todas las claves posibles) puede expresarse como: Desde clavecruda = aaaa hasta zzzz Si crypt (clavecruda, aa ) = claveencriptada Informar de que la clave buscada es clavecruda Descifrar claves cifradas con crypt 1
3 Para facilitar la escritura del programa secuencial que descifre claves, así como la versión paralela que habrá que implementar, se suministra un módulo cifrado.h que: Determina los parámetros del alfabeto de claves. Permite saber cuántas claves totales son posibles, obtener cualquiera de ellas según su orden lexicográfico (la cero correspondiente a aaa a y la última a zzz z ), así como la siguiente clave a otra dada. También nos dará el resultado de cifrar una clave. Facilita leer claves (tanto crudas como cifradas) almacenadas en un fichero de texto. Todos estos aspectos se concretan en la definición siguiente: #define NUM_LETRAS 26 // Rango de letras de la clave cruda, // empezando por la 'a' minuscula #define LONG_CLAVE_CRUDA 4 // Longitudes sin tener en cuenta #define LONG_CLAVE_CIFRADA 13 // el caracter terminador de string int numclavesposibles(void); void clavecrudaiesima (int i, char *laclave); void siguienteclavecruda (char *laclave); void cifrar (char *laclave, char *laclavecifrada); int abrir (char *ficheroclaves); int leerclavecruda (char *laclave); int leerclavecifrada (char *laclave); Apoyándonos en cifrado.h, se ha escrito el programa cifrar.c que, a partir de un fichero que contiene un conjunto de claves en crudo, nos imprime por la salida estándar las claves cifradas correspondientes. Así, se han generado tres ficheros de claves crudas y sus correspondientes ficheros de claves cifradas, cuyo contenido es el siguiente: crudas4 cifradas4 crudas5a cifradas5a crudas5b Cifradas5b aaaa gala hola musa nada puma tiza tomo vaso zzzz aarqbnb6ma0my aalxg9cclsnie aavuagikck3se aaxtmvzrqjgyg aacz9rbx8qj5o aa/.5hkynyftc aao2rq54rjq8. aa39yzznz/tfo aaaowtaid3/oa aazmmyv6wt7dg aaaaa galas hojas musas nadas pumas tizas tomos vasos zzzzz aa3dmvtssfzcg aarufzu.xyu4w aassyh70ejer6 aasjbur3erirq aaruw80qpwbaq aagnctcqtdsza aafienlnggy7c aazokal4vjuza aaqwbsfdwycju aamsmb0re2pp6 bozal dedal fatuo gluma irani jaula mutuo tarta vagon zzzzz aawnxqowg4wk2 aasi7kzeggloi aaui1lxhjqw/2 aarnnfocw7cuq aaxssgsrwsdz2 aa.iy8dixl79q aaipmrbmefvlk aagus4pk0arq2 aa5omwfaf4c4e aamsmb0re2pp6 Descifrar claves cifradas con crypt 2
4 El programa descifrar.c recibe como parámetro un fichero de claves cifradas, intenta descifrarlas e informa del tiempo que le cuesta localizar cada clave así como del total de tiempo invertido en localizarlas todas (Ver sección siguiente). 3 Tabla de tiempos Los datos que figuran en la tabla siguiente se han obtenido ejecutando el programa descifrar.c en un equipo con Intel Core 2 Quad a 2,2 GHz con 4M de caché por cada dos núcleos y 4GB de memoria. cifradas4 cifradas5a cifradas5b Claves Tiempos Claves Tiempos Claves Tiempos aaaa 0:000 aaaaa 0:000 bozal 3:586 gala 0:544 galas 13:654 dedal 7:170 hola 0:663 hojas 17:137 fatuo 11:417 musa 1:122 musas 29:042 gluma 14:648 nada 1:141 nadas 29:516 irani 19:644 puma 1:385 pumas 35:829 jaula 20:501 tiza 1:697 tizas 43:9 mutuo 29:053 tomo 1:715 tomos 44:393 tarta 43:196 vaso 1:844 vasos 47:734 vagon 47:703 zzza 2:281 zzzzz 59:029 zzzzz 59:036 T. total 12: : :957 4 Para saber más Aquí, en la sección de contraseña, puede comprobarse que, pese a los esfuerzos por evitar que puedan verse las claves cifradas de los usuarios, hay un interés continuo por conseguir saltarse todas las barreras. 5 Listado de programas El conjunto de ficheros de apoyo que se suministran son los siguientes: Makefile: Para obtener los ejecutables de forma cómoda. cifrado.h: Definición del módulo de apoyo para codificar y decodificar. cifrado.c: Implementación del módulo de apoyo para codificar y decodificar. cifrar.c: Programa que genera claves codificadas. descifrar.c: Programa secuencial que decodifica un fichero de claves codificadas. A continuación se listan los ficheros que se consideran relevantes. En cualquier caso, se dispone de todos ellos en soporte informático. Descifrar claves cifradas con crypt 3
5 5.1 cifrado.h // PCM. Arquitecturas Avanzadas Curso 16/17 ETSISI 07/03/17 // // cifrado.h: Modulo que encapsula las cuestiones relativas al // cifrado de claves. #define NUM_LETRAS 26 // Rango de letras de la clave cruda, // empezando por la 'a' minuscula #define LONG_CLAVE_CRUDA 4 // Longitudes sin tener en cuenta #define LONG_CLAVE_CIFRADA 13 // el caracter terminador de string // Devuelve el numero de claves posibles dado un alfabeto de tamanio // NUM_LETRAS y claves de longitud LONG_CLAVE_CRUDA. int numclavesposibles(void); // Devuelve la clave "i"esima segun el orden lexicografico que // considera la clave 0 la que es todo aes. void clavecrudaiesima (int i, char *laclave); // Actualiza laclave para que sea la siguiente segun el orden // lexicografico. void siguienteclavecruda (char *laclave); // Cifra "laclave" indicada, copiando la clave cifrada en la zona // de usuario apuntada por "laclavecifrada". Se utiliza "crypt" con // salt = "aa". void cifrar (char *laclave, char *laclavecifrada); // Abre el fichero de claves indicado, devolviendo cuantas claves // contiene, o cero en caso de no haber podido abrirlo. int abrir (char *ficheroclaves); // Lee una clave del fichero de claves previamente abierto, // comprobando que el tamanio de la misma es el adecuado y que todas // sus letras estan dentro del alfabeto de claves. Si hay error // devuelve un -1 y sino un 0 y el valor de la clave leida. int leerclavecruda (char *laclave); // Lee una clave cifrada del fichero de claves previamente abierto, // comprobando que el tamanio de la misma es el adecuado y que sus // dos primeras letras son "aa", ya que se trabaja siempre con // (salt = "aa"). int leerclavecifrada (char *laclave); Descifrar claves cifradas con crypt 4
6 5.2 cifrar.c // PCM. Arquitecturas Avanzadas Curso 16/17 ETSISI 07/02/17 // // cifrar.c: Programa secuencial para cifrar claves. #include <stdio.h> #include <unistd.h> #include "cifrado.h" int main(int argc, char *argv[]) { int i, numclaves; char clave [LONG_CLAVE_CRUDA+1]; char cifrada [LONG_CLAVE_CIFRADA+1]; if (argc!= 2) { printf ("Uso: cifrar ficherodeclaves\n"); numclaves = abrir (argv[1]); for (i=0; i<numclaves; i++) if (leerclavecruda (clave) == 0) { cifrar (clave, cifrada); printf ("%s\n", cifrada); else printf ("La clave no es correcta\n"); Descifrar claves cifradas con crypt 5
7 5.3 descifrar.c // PCM. Arquitecturas Avanzadas Curso 16/17 07/02/17 // // descifrar.c: Programa secuencial para descifrar claves. #include <assert.h> #include <stdio.h> #include <string.h> #include <sys/time.h> #include <unistd.h> #include "cifrado.h" void descifrar (void) { int i, totalclaves; char clave [LONG_CLAVE_CRUDA+1]; char cifradaactual [LONG_CLAVE_CIFRADA+1]; char cifradabuscada [LONG_CLAVE_CIFRADA+1]; struct timeval t0, tf, t; if (leerclavecifrada (cifradabuscada)!= 0) { printf ("La clave no es correcta\n"); return; assert (gettimeofday (&t0, NULL) == 0); totalclaves = numclavesposibles(); clavecrudaiesima (0, clave); for (i=0; i<totalclaves; i++) { cifrar (clave, cifradaactual); if (strcmp (cifradaactual, cifradabuscada) == 0) { assert (gettimeofday (&tf, NULL) == 0); timersub (&tf, &t0, &t); printf ("%s ", clave); printf ("Tiempo = %ld:%ld (seg:mseg)\n", t.tv_sec, t.tv_usec/00); return; siguienteclavecruda (clave); printf ("No encontrada\n"); int main(int argc, char *argv[]) { int numclaves, i; struct timeval t0, tf, t; if (argc!= 2) { printf ("Uso: descifrar ficherodeclaves\n"); numclaves = abrir (argv[1]); assert (gettimeofday (&t0, NULL) == 0); for (i=0; i<numclaves; i++) descifrar(); assert (gettimeofday (&tf, NULL) == 0); timersub (&tf, &t0, &t); printf ("Tiempo total = %ld:%ld (seg:mseg)\n", t.tv_sec, t.tv_usec/00); Descifrar claves cifradas con crypt 6
Enunciado 3 Buscar palabras de estructura similar
Enunciado 3 Buscar palabras de estructura similar INDICE 1 Definición del problema...1 2 Solución secuencial...1 3 Tabla de tiempos...2 4 Para saber más...2 5 Listado de programas...2 5.1 palabrasec.c...2
Más detallesPráctica 3. Generación de números primos
Práctica 3 Generación de números primos Septiembre-Diciembre 2007 1 Algoritmo secuencial (primosec) En esta práctica vamos a trabajar con la generación de números primos basado en el método conocido como
Más detalles1 Primitivas básicas de OpenMP
1 Primitivas básicas de OpenMP Consultar la página oficial de la plataforma OpenMP http://www.openmp.org/drupal/ Pragmas Es una directiva para el compilador que permite la definición de nuevas directivas
Más detallesEjercicios 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 detallesETSISI - UPM Procesamiento Paralelo Curso 18/19. Práctica 2. Método de Monte Carlo y Superaceleración
Práctica 2 Método de Monte Carlo y Superaceleración 2 de Octubre 2018 ÍNDICE 1 Objetivos... 2 2 El método de Monte Carlo aplicado al cálculo de PI... 2 2.1 El método... 2 2.2 Tres versiones secuenciales...
Más detallesProgramació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 detallesMPI Introducción Procesos Envío y recepción simple Envío y recepción no tan simple Comunicación colectiva. Herramientas de depuración y evaluación
Tutorial sobre MPI Temario 1 MPI Introducción Procesos Envío y recepción simple Envío y recepción no tan simple Comunicación colectiva Herramientas de depuración y evaluación arqavapar MPI (Introducción)
Más detallesToma de contacto con MPI
Toma de contacto con MPI Práctica 0: Toma de contacto con MPI Página - 0 ÍNDICE 1 Visión global de MPI...2 2 Primitivas básicas de MPI para crear procesos y comunicarse entre ellos...3 2.1 Control de procesos...3
Más detallesEsquema 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 detallesApellidos: Nombre: Matrícula: Examen Programación para Sistemas Grado en Ingeniería Informática (2009)
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 Politécnica de Madrid
Más detallesSistemas 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 detallesArchivos & 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 detallesIntroducció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 detallesPara C un chero no es más que una porción de almacenamiento
Ficheros en C Para C un chero no es más que una porción de almacenamiento de memoria. C representa un chero como una estructura, de hecho el chero stdio.h contiene la dención de un chero como si fuese
Más detallesC. Listado de programas.
C. Listado de programas. C.1. Módulos de traducción. C.1.1. Módulo para tildado con rasgos letras. #include #include #include #include "portable.h" #include "portimpr.h"
Más detallesHerramientas Visuales de Compilación en C. LUIS MENGUAL (c)
Herramientas Visuales de Compilación en C Visual Studio 2005 (I) Herramienta para implementar, ejecutar y compilar código fuente en distintos lenguajes Entorno visual amigable y flexible Entorno de Depuración
Más detallesExamen 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 detallesEscuela Politécnica Superior de Elche
EXAMEN DE SISTEMAS INFORMÁTICOS INDUSTRIALES ((SOLUCIÓN) (TEORÍA) La duración del examen es de 2 horas. JUNIO 2016 1. Indicar si las siguientes afirmaciones son verdaderas o falsas: (a) En C++ para cada
Más detallesLenguaje 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 detallesHerramientas Visuales de Compilación en C. LUIS MENGUAL (c)
Herramientas Visuales de Compilación en C Visual Studio 2010 (I) Herramienta para implementar, ejecutar y compilar código fuente en distintos lenguajes Entorno visual amigable y flexible Entorno de Depuración
Más detallesHerramient tas Vi Visuales de l d Compilación en C LUIS MENGUAL (c)
Herramientas Visuales de Compilación en C Visual Studio 2005 (I) Herramienta para implementar, ejecutar y compilar código fuente en distintos lenguajes Entorno visual amigable y flexible Entorno de Depuración
Más detallesAplicación Multiproceso sobre HTTP Ejemplo -
LABORATORIO DE SISTEMAS OPERATIVOS (Curso 2013/2014) PRÁCTICA 3 Aplicación Multiproceso sobre HTTP Ejemplo - Objetivos del documento Este documento presenta un ejemplo, en el contexto de desarrollo planteado
Más detallesExamen Fundamentos de Programación 15 de enero de 2016 Curso 2015/16
Problema 1: [1 punto] Examen Fundamentos de Programación 15 de enero de 2016 Curso 2015/16 Duración: 2,45 horas 10 PUNTOS Publicación de notas 26 de enero Revisión de examen 1 de febrero En el horario
Más detallesProgramación I Teoría : Entrada/Salida - Archivos.
Programación I Teoría : Entrada/Salida - Archivos http://proguno.unsl.edu.ar proguno@unsl.edu.ar Entrada/Salida Interacción del programa con su ambiente para leer (entrada) y escribir (salida) datos. 2
Más detallesUso 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 detallesTema 2: La clase string. Índice. Notas. Programación 2. Curso Notas. Definición Declaración Entrada / salida Métodos Operaciones
: string Programación 2 Curso 2013-2014 Índice 1 Cadenas de caracteres en C 2 Entrada / salida 3 entre vectores de caracteres y string 4 5 Cadenas de caracteres en C En C, las cadenas de caracteres tienen
Más detallesPráctica 1: Intérprete de mandatos. Sistemas Operativos Área de Arquitectura y Tecnología de Computadores
Práctica 1: Intérprete de mandatos Introducción Desarrollo de un intérprete de mandatos (minishell) en UNIX/Linux en lenguaje C. Debe permitir: Ejecución de mandatos simples ls, cp, mv, rm, etc. Ejecución
Más detallesEl 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 detallessockets Flujo (SOCK_STREAM) Comunicación bidireccional Confiable (entrega garantizada) Información ordenada en el destino Datagrama (SOCK_DGRAM)
s s Comunicación punto-a-punto entre procesos Los s son los extremos de la comunicación Diferentes dominios UNIX: Entre procesos de un mismo equipo Internet: Entre procesos de diferentes equipos (TCP/IP)
Más detallesGrado en Ingeniería de Tecnologías y Servicios de Telecomunicación Programación II. PRÁCTICA 1: Utilización del concepto de Tipo Abstracto de Dato
PRÁCTICA 1: Utilización del concepto de Tipo Abstracto de Dato OBJETIVOS El objetivo de esta práctica es utilizar los conceptos aprendidos en las clases de teoría sobre los Tipos Abstractos de Datos (TAD)
Más detallesTipos de Datos en C. Palabras reservadas en C
Tipos de Datos en C Tipo Tamaño de bits Rango char 8-128 a 127 unsigned char 8 0 a 255 signed char 8-128 a 127 int 16 32768 a 32767 unsigned int 16 0 a 65535 signed int 16 Igual que int short int 16 Igual
Más detallesFILE *nombre_puntero_fichero; fopen(char_nombre_archivo,char_modo_apertura ); MODOS DE APERTURA. Abre un archivo de texto para lectura.
FICHEROS El sistema de archivos de C está diseñado para secuencias que son independientes del dispositivo. Existen dos tipos se secuencias: de texto que es una ristra de caracteres organizados en líneas
Más detallesEjercicio Sockets Suma Resta. Descripción
Ejercicio Sockets Suma Resta Siguiendo con nuestra propuesta de construir embriones de servicios, como hemos hecho en la práctica programando un embrión de Telnet, un embrión de cliente de un servidor
Más detallesAnalista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior STRINGS
STRINGS 1 Strings (Cadena de caracteres) En C no existe un tipo de dato y operadores para el tratamiento de cadenas de caracteres de manera atómica Un string es una cadena de cero o más caracteres finalizados
Más detallesÍndice. Estructuras de datos en Memoria Principal: Vectores. Matrices. Cadenas de caracteres. Estructuras. Estructuras de datos en Memoria Externa:
Índice Estructuras de datos en Memoria Principal: Vectores Matrices Cadenas de caracteres Estructuras Estructuras de datos en Memoria Externa: Ficheros Tema: Estructuras de Datos 2 Cadenas de caracteres
Más detallesConcepto Concept s Los L nom res re d e e los h c eros: exter te n r os o o fí s fí ico nom re ú nico i del del ar chiv chiv o o o ficher ficher en
Conceptos Los nombres de los ficheros: externos o físico (nombre único del archivo o fichero en el sistema de archivos) e interno o lógico (identificador del fichero dentro de un programa). Las operaciones
Más detallesEscuela Politécnica Superior de Elche
EXAMEN DE SISTEMAS INFORMÁTICOS INDUSTRIALES ((SOLUCIÓN) (TEORÍA)jUJ jhshshs JUNIO 2015 1. Indicar si las siguientes afirmaciones son verdaderas o falsas: (a) En C++, cuando se destruye un objeto de una
Más detallesRecursión como herramienta en resolución de problemas computacionales
Recursión como herramienta en resolución de problemas computacionales Modularidad! Es común dividir los algoritmos en módulos! Cada módulo lleva a cabo cierta funcionalidad! Muchas veces los módulos sirven
Más detallesLenguaje 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 detallesRepaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)
Repaso Lenguaje C OBJETOS Variables Constantes Variable: objeto del ambiente cuyo contenido puede cambiar. Constante: objeto cuyo contenido no puede cambiar. Variables: - un nombre que la identifica. Deben
Más detallesSistemas Operativos sesión 12: tuberías
Sistemas Operativos sesión : tuberías Grado en Ingeniería Informática Universidad Carlos III de Madrid Agenda Linux Comunicación con tuberías Ejercicios Agenda Linux Comunicación con tuberías Ejercicios
Más detallesEscuela Politécnica Superior de Elche
EXAMEN DE SISTEMAS INFORMÁTICOS INDUSTRIALES ( (TEORÍA)jUJ jhshshs DICIEMBRE 2015 1. Indicar si las siguientes afirmaciones son verdaderas o falsas: a. Una función global amiga de una clase (friend) puede
Más detallesEscuela Politécnica Superior de Elche
EXAMEN DE SISTEMAS INFORMÁTICOS INDUSTRIALES ((SOLUCIÓN) (TEORÍA)jUJ jhshshs SEPTIEMBRE 2015 1. Indicar si las siguientes afirmaciones son verdaderas o falsas: (a) En C++, una clase derivada puede acceder
Más detallesRedes de Computadores Nivel de Aplicación: Programación con sockets 3
Redes de Computadores Nivel de Aplicación: Programación con sockets 3 Área de Ingeniería Telemática Dpto. Automática y Computación http://www.tlm.unavarra.es/ En clases anteriores... Clientes y servidores
Más detallesLic. Diego A. Bottallo Plan de la materia
Lic. Diego A. Bottallo Plan de la materia http://www.fceia.unr.edu.ar/~diegob/plan_sistop.html MAIL diego.bottallo@gmail.com WEB http://www.fceia.unr.edu.ar/~diegob/ Bibliografía Tanenbaum, Andrew - Modernos
Más detallesEJERCICIOS PRÁCTICOS: LLAMADAS A PROCEDIMIENTOS REMOTOS
EJERCICIOS PRÁCTICOS: LLAMADAS A PROCEDIMIENTOS REMOTOS El objetivo de estos ejercicios es familiarizarse con la programación de servicios utilizando RPCs. A continuación se incluye una guía de programación
Más detallesIntroducción a Sistemas Operativos: Concurrencia
Introducción a Sistemas Operativos: Concurrencia Clips xxx Fr ancisco J Ballesteros 1. Semáforos Quizá la abstracción más conocida para sincronizar procesos en programación concurrente controlar el acceso
Más detallesInformática. Prueba de conjunto (0.25 puntos) Considerar el siguiente fragmento de código:
NOMBRE Y APELLIDOS DEL ALUMNO: Informática Prueba de conjunto 23.05.14 1.- (0.25 puntos) Considerar el siguiente fragmento de código: for(i=0;i
Más detallesApartado a.- Obtenga un listado de todos los ficheros regulares del sistema terminados en.y ó.c, con permiso de lectura para el grupo.
Examen de Sistemas Operativos (Parte práctica). Primera Convocatoria. Curso 2008/09. Tercero Ingeniería Técnica Informática Nombre: Gestión Sistemas Apellidos: 5 de Febrero de 2009 [Cuestión 1.] Resuelva
Más detallesDiagrama de transiciones del autómata. Tabla de transiciones
Universidad Nacional Autónoma de México Facultad de Ingeniería Compiladores Grupo 4, Semestre 2016-1 Analizador Léxico en C Diagrama de transiciones del autómata letra letra 1 0 3 e 4 5 6 e 2 espacio Tabla
Más detallesLex. 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 detallesOperaciones 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 detallesCadenas de caracteres. 1. Definición 2. Funciones para manejo de cadenas
Cadenas de caracteres 1. Definición 2. Funciones para manejo de cadenas Cadenas de Caracteres Una cadena en C es un conjunto de caracteres, o valores de tipo "char", terminados con el carácter nulo (\0).
Más detallesPROBLEMA 1. Rellena el hueco 1 (línea 23). Realiza la reserva de memoria para almacenar los n puntos.
PROBLEMA 1. El siguiente programa tiene algunos huecos en blanco que tienes que rellenar para que funcione correctamente. En cada hueco va una única línea de C, salvo en el cuerpo de la función calcula_area_triangulo,
Más detallesPROGRAMACION MODULAR FUNCIONES
PROGRAMACION MODULAR FUNCIONES Ventajas de la programación modular: Aumentar la legibilidad y comprensión del programa Reducir el tiempo de desarrollo, aprovechando módulos ya existentes Permitir la resolución
Más detallesFundamentos de Informática
Tema 5: 5: Funciones de de Lectura/Escritura Fundamentos de Informática 1º Ingeniería Industrial Escuela Superior de Ingenieros Universidad de Sevilla Ismael Alcalá Torrego José Ángel Acosta Rodríguez
Más detallesFicheros. Archivo, o fichero: Características:
Ficheros Archivo, o fichero: Es una estructura de datos en memoria externa, cuyo tiempo de vida no está ligado a la ejecución del programa que lo crea o lo maneja. Un fichero existe desde que un programa
Más detallesLEER RECUPERAR EXTRAER DATOS DE FICHEROS O ARCHIVOS EN C. FGETC, GETC, FGETS, FSCANF. EJERCICIOS (CU00538F)
APRENDERAPROGRAMAR.COM LEER RECUPERAR EXTRAER DATOS DE FICHEROS O ARCHIVOS EN C. FGETC, GETC, FGETS, FSCANF. EJERCICIOS (CU00538F) Sección: Cursos Categoría: Curso básico de programación en lenguaje C
Más detalles8- LEX-Expresiones regulares
8- LEX-Expresiones regulares Objetivos: Utilizar la herramienta KEX para trabajar con expresiones regulares Recursos: Maquina virtual Linux distribución Bodhi LXterminal y FLEX Introducción Flex le permite
Más detallesEntorno de programación de nivel 1: La librería PCAP
Entorno de programación de nivel 1: La librería PCAP La librería libpcap nos permite capturar paquetes desde un programa C. En sistemas Windows, la librería se llama Winpcap. Para compilar cualquier programa
Más detalles1. Presentación del lenguaje C Creado en 1972 por D. Ritchie Lenguaje de propósito general Portátil o transportable (generalmente) Inicialmente de niv
Introducción al lenguaje C Informática Belarmino Pulido Junquera Índice 1. Presentación del lenguaje C 2. Estructura de un programa en C 3. Instrucciones del pre-procesador procesador 4. Tipos de datos
Más detallesTema 3: Entrada/Salida de Ficheros
Tema 3: Objetivo: Almacenar datos en un dispositivo de almacenamiento secundario (p.e. disco duro). Pasos a seguir: 1 Abrir fichero 2 Escribir/leer del fichero 3 Cerrar fichero 1 Tema 3: Abrir el fichero:
Más detallesSOLUCION 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 detallesIntroducción general al Lenguaje C (2010/2011)
Luis Valencia Cabrera lvalencia@us.es (http://www.cs.us.es/~lvalencia) Ciencias de la Computacion e IA (http://www.cs.us.es/) Introducción general al Lenguaje C (2010/2011) Universidad de Sevilla Índice
Más detallesApellidos: Nombre: DNI: Parte Sistema Ficheros (Se deben contestar correctamente todas las cuestiones de cada pregunta para puntuar la misma).
Apellidos: Nombre: DNI: Sistemas Operativos Grado Ingeniera Informática UDC. Julio 2016 Sólo puede usar lápiz, bolígrafo y calculadora. Tiempo máximo para todo el examen: 3h Parte Sistema Ficheros (Se
Más detallesUNIVERSIDAD PONTIFICIA COMILLAS Escuela Técnica Superior de Ingeniería (ICAI) Ingeniero en Informática Programación Básica
UNIVERSIDAD PONTIFICIA COMILLAS Escuela Técnica Superior de Ingeniería (ICAI) Ingeniero en Informática Programación Básica 25 de junio de 2004 Alumno/a: Grupo: A B Apartado 1. (1,5 puntos). Indicar mediante
Más detallesMaster SIA 2012/13. Programación de Sistemas Paralelos. OpenMP: Ejercicios prácticos. Facultad de Informática. Ejercicio 1.A. pi.c
Master SIA 2012/13 Facultad de Informática Programación de Sistemas Paralelos OpenMP: Ejercicios prácticos En el directorio templates/practica de tu cuenta msiaxx tienes varios programas que hay que procesar
Más detallesIntroducció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 detalles1000+(4/100)*1000 =1000 * (1+4/100) =1000 * 1.04 = Al finalizar el segundo año, el 4% se aplica sobre los 1040, y obtenemos:
Nombre: Apellidos: Grupo: Nº. Matrícula Ejercicio 1 (2,5 puntos 30 minutos) Al ingresar capital en un banco, pongamos 1000, éste nos ofrece un porcentaje anual de interés, por ejemplo el 4%. Al cabo de
Más detallesPRÁCTICA. Apellidos, Nombre: Calificación:
Examen de Traductores, Intérpretes y Compiladores. Convocatoria ordinaria de Junio de 2004 3 er Curso de I.T. Informática de Sistemas. Apellidos, Nombre: Calificación: PRÁCTICA El lenguaje Protolen posee
Más detallesTema 13: Manejo de archivos en lenguaje C
Tema 13: Manejo de archivos en lenguaje 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)
Más detallesResuelva con una orden UNIX las siguientes tareas:
Examen de Laboratorio de Sistemas Operativos. Convocatoria Diciembre. Curso 2008/09. Tercero Ingeniería Informática Nombre: Apellidos: 25 de Noviembre de 2009 [Cuestión 1.] Resuelva con una orden UNIX
Más detallesPRUEBA DE FUNDAMENTOS DE INFORMÁTICA. 1.- Qué se mostrará por pantalla tras ejecutar el código correspondiente a la función main?
UNIVERSIDD PONTIFICI COMILLS ESCUEL TECNIC SUPERIOR DE INGENIERI (I.C..I.) DEPRTMENTO DE SISTEMS INFORMÁTICOS TITULCIÓN: INGENIERO TÉCNICO INDUSTRIL PRUEB DE FUNDMENTOS DE INFORMÁTIC Nombre Grupo Preguntas
Más detallesExamen escrito de Programación 1
Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 6 de septiembre de 2016 Se debe disponer sobre la mesa en lugar visible un documento
Más detallesUNIVERSIDAD NACIONAL DE SALTA Sede Regional Orán AÑO: 2013 Carreras: TIG - TUP
TRABAJO PRÁCTICO N 4: Modularidad Ejercicio 1: Dados los siguientes prototipos de módulos, explicar cada elemento que los conforman. a) int suma(int a, int b); b) double area(double base, double altura);
Más detallesIntroducció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 detallesIntroducción a Funciones
Introducción a Funciones Departamento de Electrónica Fundación San Valero Funciones Una función sirve para realizar tareas concretas y simplificar el programa. Nos sirve para evitar tener que escribir
Más detallesSistemas Operativos. Grado Ingeniería Informática. TGR Procesos.
Sistemas Operativos. Grado Ingeniería Informática. TGR Procesos. 1.-Considerar los siguientes procesos con los tiempos de llegadas, prioridades y ráfagas de cpu. Proceso Ráfaga de CPU Prioridad Tiempo
Más detallesPor 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 detallesExamen 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 detallesLENGUAJE. Tema 4 Vectores, Matrices y Cadenas de caracteres.
LENGUAJE Tema 4 Vectores, Matrices y Cadenas de caracteres. VECTORES UNIDIMENSIONALES Los vectores (array o arreglo) unidimensionales son secuencias de valores del mismo tipo que se almacenan en localidades
Más detallesEjercicios 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 detallesPrácticas de Sistemas Operativos
Prácticas de Sistemas Operativos Toñi Reina, David Ruiz, Juan Antonio Álvarez, Antonio Tallón, Javier Gutiérrez, Pablo Neira, Paco Silveira, José Ángel Bernal y Sergio Segura Boletín 2: Introducción a
Más detallesEstructuras de Datos Estáticas. Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos estáticas
Fundación Misión Sucre Colegio Universitario de Caracas Taller 2: Estructuras de Datos Estáticas Objetivo Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos estáticas Contenido
Más detallesPrácticas de Sistemas operativos
Prácticas de Sistemas operativos David Arroyo Guardeño Escuela Politécnica Superior de la Universidad Autónoma de Madrid Segunda Semana: Procesos, Procesos Padre y Procesos Hijo, familia exec() 1 Entregas
Más detalles2.1. Abstracción del programa count cuyo código aparecía en el Anexo A1
TÉCNICAS ESTÁTICAS. SOLUCIÓN PARA EL EJERCICIO PRÁCTICO COUNT La estructura de este Anexo es la siguiente: 2.1. Abstracción del programa count cuyo código aparecía en el Anexo D 2.2. Especificación obtenida
Más detallesRelación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática
Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso 2013-2014. 1º Grado en Informática Práctica 1: Punteros Objetivos Se hará hincapié en la aritmética de punteros
Más detallesUnidad IV Arreglos y estructuras. M.C. Juan Carlos Olivares Rojas
Unidad IV Arreglos y estructuras M.C. Juan Carlos Olivares Rojas 4.1 Concepto de arreglo Agenda 4.2 Manejo de cadenas 4.3 Concepto de estructuras 4.4 Concepto de unión 4.5 Empleo de apuntadores 4.1 Concepto
Más detallesAplicaciones de Aritmética Modular
Aplicaciones de Aritmética Modular Laboratorio de Matemática Discreta Jesús Martínez Mateo jmartinez@fi.upm.es Algunas de las aplicaciones más interesantes de la aritmética modular son aquellas en las
Más detallesArchivos. Programación en C 1
Archivos Programación en C 1 Índice Tipos de archivos. Apertura de archivos. Cierre de archivos. Lectura de archivos. Escritura de archivos. Acceso directo en archivos binarios. Programación en C 2 Introducción
Más detallesFicheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen
Fundamentos de Informática. Dpto. de ATC - Página 1 de 8 conceptos Manejo de ficheros en C Contienen los datos que se almacenan en dispositivos de almacenamiento masivo: disquetes, discos duros, DROM,
Más detallesInformática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial Vectores y cadenas en lenguaje C Vectores y cadenas en lenguaje C Vectores Declaración de vectores Vectores unidimensionales Vectores multidimensionales
Más detallesPaso 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 detallesIntroducción a la Computación
Introducción a la Computación Primer Cuatrimestre de 2012 Organización de Computadoras (Brevísima Introducción) 1 Mapa de la materia Programas simples en C. Especificación de problemas. Corrección de algoritmos.
Más detallesRelación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática
Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso 2016-2017. 1º Grado en Informática Práctica 1: Punteros Objetivos Se hará hincapié en la aritmética de punteros
Más detallesTema 3. Estructuras de control
Tema 3. Estructuras de control 3.1. Secuencial 3.2. Selección 3.3. Repetición 2 Objetivos Objetivos del tema: Conocer y saber la utilidad de las tres estructuras de control (secuencial, alternativa y repetitiva)
Más detallesPráctica 1. Primera experiencia con MPI
Práctica 1 Primera experiencia con MPI Septiembre-Diciembre 2008 ÍNDICE 1 VISIÓN GLOBAL DE MPI... 2 2 PRIMITIVAS BÁSICAS DE MPI PARA CREAR PROCESOS Y COMUNICACIÓN... 3 2.1 CONTROL DE PROCESOS... 4 2.2
Más detalles