Autor: Cristian Fuentes Salgado
Competencia: Desarrollo de Software
Palabras Clave: Python, archivos binarios, Desarrollo de Software Ingeniería.
Descripción de la actividad:En esta actividad se nos pidió que mediante el lenguaje de programación Python decodificáramos un archivo binario estructurado, dentro del cual estaban las próximas 3 tareas a realizar en el ramo. La no codificación del archivo significaría la inmediata asignación de 4 notas mínimas.El enunciado del problema es el Sgte:
El archivo data.bin, es un archivo binario estructurado, el cual posee la siguiente tipificación:
class eReg(ctypes.Structure):
_fields_ = [('c',ctypes.c_ushort),('t',ctypes.c_char * 80)]
Donde se encuentran 3 Tareas: Actividades 9, 10 y 11.
El 1er campo 'c' almacena la clave de la CODIFICACION. El 2do campo almacena el string 't' CODIFICADO con la clave 'c'.
Para DECODIFICAR el Texto 't' dentro del archivo, deberá utilizar la función XOR. Vea guía de ejercicios #9, la cual está en la plataforma Moodle. Utilice este ejemplo para DECODIFICAR las Tareas.-
El total de registros del archivo data.bin es = 44.-
Estructura física del Archivo data.bin:
01ctttttttttttttttttttttttttttttttttttttttt
02ctttttttttttttttttttttttttttttttttttttttt
03ctttttttttttttttttttttttttttttttttttttttt
04ctttttttttttttttttttttttttttttttttttttttt
..
..
44ctttttttttttttttttttttttttttttttttttttttt
Recuerde: Si usted no es capaz de DECODIFICAR la Tarea #7, no solo obtendrá la nota mínima en esta Tarea,
sino que ademas, en las 3 Tareas restantes de las actividades 9, 10 y 11.-
Reglas del juego: EXTRICTAMENTE PROHIBIDO COPIAR CODIGOS AJENOS.-
Se revisarán con mucho detalle los códigos presentados por ustedes.
Solución: Posteriormente, mediante la utilización de las estructuras derivadas de C, mediante el modulo c_types de Python y con la ayuda de la compuerta XOR se procedió a decodificar el archivo binario con esta rutina:
#!/usr/bin/python
import ctypes
class eReg(ctypes.Structure):
_fields_ = [('c',ctypes.c_ushort),('t',ctypes.c_char * 80)]
leido = [eReg() for q in range(0,44)]
fin = open('data.bin','rb')
fout= open('Salida_dec.txt','w')
s=''
for i in range(0,44):
fin.readinto(leido[i])
for j in leido[i].t:
k= ord(j) ^ leido[i].c
s+=chr(k)
s+='\n'
fout.write(s)
fout.close()
fin.close()
La primera parte del archivo una vez decodificado decia mas o menos asi:
Hola Amigo!
Si puedes leer esto entonces posiblemente apruebes esta asignatura.
Realiza las siguientes 3 Tareas que siguen a continuacion.
Y que la fuerza te acompañe.
Gracias a esta actividad se logro manejar la de-codificación de archivos binarios, una practica que usamos posteriormente con bastante frecuencia.
Ademas de esto logramos adentrarnos aun mas en la programación con python, que es ahora, este segundo semestre, el lenguaje principal en el que trabajamos en Interfaces Gráficas de Usuario.
No hay comentarios:
Publicar un comentario