Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Archivo Binario Codificado

Estas en el tema de Archivo Binario Codificado en el foro de Python en Foros del Web. 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)] El 1er campo 'c' ...
  #1 (permalink)  
Antiguo 17/05/2011, 22:03
 
Fecha de Ingreso: mayo-2007
Mensajes: 9
Antigüedad: 16 años, 11 meses
Puntos: 0
De acuerdo Archivo Binario Codificado

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)]

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.

El total de registros del archivo data.bin es = 44.-
Estructura física del Archivo data.bin:
2 80
01 ctttttttttttttttttttttttttttttttttttttttt
02 ctttttttttttttttttttttttttttttttttttttttt
03 ctttttttttttttttttttttttttttttttttttttttt
04 ctttttttttttttttttttttttttttttttttttttttt
..
..
44 ctttttttttttttttttttttttttttttttttttttttt

Necesito su AYUDA, me he cabeceado y no puedo realizar este ejercicio.
  #2 (permalink)  
Antiguo 17/05/2011, 22:48
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Archivo Binario Codificado

¿Seguro que esta codificado en binario? Tu formato mas bien parece de texto plano.

Si estas seguro que esta en binario usa struct.
Si no has un simple parser.
  #3 (permalink)  
Antiguo 17/05/2011, 23:04
 
Fecha de Ingreso: mayo-2007
Mensajes: 9
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Archivo Binario Codificado

....................

Última edición por GHOSTMAN; 18/05/2011 a las 08:13
  #4 (permalink)  
Antiguo 18/05/2011, 11:04
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Archivo Binario Codificado

AAAAAAAAAHHHH me hiciste escribir 7 lineas de código solo para darme cuenta que es parte de una prueba para que pases una materia.

Solo te daré una pista usa el modulo struct.
  #5 (permalink)  
Antiguo 19/05/2011, 17:57
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Archivo Binario Codificado

Bueno te doy mas pistas esto es el inicio del mensaje:
Cita:
Hola Amigo! 
Si puedes leer esto entonces posiblemente apruebes esta asignatura.
Del modulo struct usa la función unpack.
  #6 (permalink)  
Antiguo 19/05/2011, 18:48
 
Fecha de Ingreso: mayo-2007
Mensajes: 9
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Archivo Binario Codificado

No puedo hacerlo....estoy recien aprendiendo...

Tengo esto...

#! /usr/bin/python


import struct
import ctypes


class eReg(ctypes.Structure):
_fields_ = [('c',ctypes.c_ushort),('t',ctypes.c_char * 80)]

archivo1 = open("data.bin",'rb')
archivo2 = open ('decodificado.txt', 'w')

linea = [eReg() for i in range(0,44)]

for i in range(0, 44):


Y no entiendo como decodificarlo ??
  #7 (permalink)  
Antiguo 19/05/2011, 22:36
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Archivo Binario Codificado

¿Que no entiendes?

¿Como decodificarlo? Es fácil usa XOR para encriptar es sencillo.

Tomas t = 'A' valor ascii 65, c = 21
Cuando haga 65 XOR 21 esto me da 84.
Ahora para desencriptarlo solo lo vuelves a pasar por la clave. 84 XOR 21 esto te da 65.

Seguro que entiendes ¿como leer de un archivo? ¿Como pasar de un numero a un carácter y viceversa? ¿Como hacer un xor? ¿Como leer esos 44 registros del archivo?
  #8 (permalink)  
Antiguo 20/05/2011, 11:40
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Archivo Binario Codificado

Te daré mas pistas este es el final del archivo.
Código:
     ___ _   _ ___ _  _   _     ___ _   _ ___ ___ _____ ___ _ 
    | _ ) | | | __| \| | /_\   / __| | | | __| _ \_   _| __| |
    | _ \ |_| | _|| .` |/ _ \  \__ \ |_| | _||   / | | | _||_|
    |___/\___/|___|_|\_/_/ \_\ |___/\___/|___|_|_\ |_| |___(_)

        
                    -----<<<<<<  EOF >>>>>------
  #9 (permalink)  
Antiguo 20/05/2011, 19:47
 
Fecha de Ingreso: mayo-2007
Mensajes: 9
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Archivo Binario Codificado

Ya lo logre muchas gracias por su casi ayuda
  #10 (permalink)  
Antiguo 20/05/2011, 20:37
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Archivo Binario Codificado

Este es el archivo binario encriptado como cadena de python.
Código:
'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00Inm`!@lhfn \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00nm`!@lhfn \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00Pj#svfgfp#offq#fpwl#fmwlm`fp#slpjaofnfmwf#bsqvfafp#fpwb#bpjdmbwvqb-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00j#svfgfp#offq#fpwl#fmwlm`fp#slpjaofnfmwf#bsqvfafp#fpwb#bpjdmbwvqb-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00W`dil\x7fd%idv%vlbpl`kq`v%6%Qdw`dv%tp`%vlbp`k%%d%fjkqlkpdfljk+\x00mbwvqb-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00_&wsc&jg&`sct|g&rc&geikvg\xc5\xb7c(\x00v%tp`%vlbp`k%%d%fjkqlkpdfljk+\x00mbwvqb-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00                                                                 \x00-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00U`sd`!0;\x00                                                        \x00-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00////////\x00                                                        \x00-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x002-.#Jnsofnfmwb#vmb#`bo`vobglqb#fm#szwklm#rvf#qfboj`f#obp#lsfqb`jlmfp\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00$$$$`a>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\x00\x00\x00\x00\x05\x00%%%%%%%%d,%vphd\x00$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\x00\x00\x00\x00\x06\x00&&&&&&&&d/&tcurg\x00$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\x00\x00\x00\x00\x00\x00        c) multi\x00$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\x00\x00\x00\x00\x01\x00!!!!!!!!e(!ehwhrhno\x00$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\x00\x00\x00\x00\x02\x00""""\x00!!!e(!ehwhrhno\x00$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\x00\x00\x00\x00\x03\x00####Olp#ubolqfp#gf#olp#lsfqbmglp##z##lsfqbglqfp#gfafm#pfq#jmdqfpbglp#\x00$$$$$$\x00\x00\x00\x00\x04\x00$$$$tkv$paghe`k*$544$Tpkw*)\x00mglp##z##lsfqbglqfp#gfafm#pfq#jmdqfpbglp#\x00$$$$$$\x00\x00\x00\x00\x05\x00\x00$$$tkv$paghe`k*$544$Tpkw*)\x00mglp##z##lsfqbglqfp#gfafm#pfq#jmdqfpbglp#\x00$$$$$$\x00\x00\x00\x00\x06\x00Rgtcg&4<\x00aghe`k*$544$Tpkw*)\x00mglp##z##lsfqbglqfp#gfafm#pfq#jmdqfpbglp#\x00$$$$$$\x00\x00\x00\x00\x00\x00--------\x00aghe`k*$544$Tpkw*)\x00mglp##z##lsfqbglqfp#gfafm#pfq#jmdqfpbglp#\x00$$$$$$\x00\x00\x00\x00\x01\x000/,!Hlqmdldou`!dm!b`mbtmn!edm!edudslho`oud!ed!to`!l`ush{!ed!2y2/!Mnr!\x00$$$$$$\x00\x00\x00\x00\x02\x00""""tcnmpgq"fg"nc"ocvpkx"qg"m`vkglgl"fg"wl"cpajktm"`klcpkm""fg""vkrm\x00\x00$$$$$$\x00\x00\x00\x00\x03\x00####`\\jmw+*#glmgf#fpwbm#dqbabglp##olp#:##ubolqfp-#Fpwf#bq`kjul#wjfmf\x00\x00$$$$$$\x00\x00\x00\x00\x04\x00$$$$544$$vacmwpvkw$$`a$$=$$rehkvaw$ge`e$qjk*$Qpmhmgaj$vej`mjp,5(544-\x00\x00$$$$$$\x00\x00\x00\x00\x05\x00%%%
wd%b`k`wdw%ijv%<%kph`wjv%a`%ijv%w`blvqwjv%d%bwdgdw%`k%%`i%CLI@\x00\x00$$$$$$\x00\x00\x00\x00\x06\x00&&&&Dohgtoi(&766&Vriu(\x00kph`wjv%a`%ijv%w`blvqwjv%d%bwdgdw%`k%%`i%CLI@\x00\x00$$$$$$\x00\x00\x00\x00\x00\x00\x00&&&Dohgtoi(&766&Vriu(\x00kph`wjv%a`%ijv%w`blvqwjv%d%bwdgdw%`k%%`i%CLI@\x00\x00$$$$$$\x00\x00\x00\x00\x01\x00U`sd`!2;\x00oi(&766&Vriu(\x00kph`wjv%a`%ijv%w`blvqwjv%d%bwdgdw%`k%%`i%CLI@\x00\x00$$$$$$\x00\x00\x00\x00\x02\x00////////\x00oi(&766&Vriu(\x00kph`wjv%a`%ijv%w`blvqwjv%d%bwdgdw%`k%%`i%CLI@\x00\x00$$$$$$\x00\x00\x00\x00\x03\x002-.#Jnsofnfmwf#fo#`bo`vol#gf#obp#qbj`fp#gf#vmb#f`vb`jlm#gf#1gl#Dqbgl-\x00$$$$$$\x00\x00\x00\x00\x04\x00$$$$Hkw$rehkvaw$E($F$}$G$`afaj$wav$mjcvawe`kw$tkv$paghe`k*$544$Tpw*\x00-\x00$$$$$$\x00\x00\x00\x00\x05\x00\x00$$$Hkw$rehkvaw$E($F$}$G$`afaj$wav$mjcvawe`kw$tkv$paghe`k*$544$Tpw*\x00-\x00$$$$$$\x00\x00\x00\x00\x06\x00&&&&Vtscdg&eih&G&;&7*&D&;&+7&\x7f&E&;&+0&*&G&;&7*&D&;&+7&\x7f&E&;&+46(&\x00*\x00-\x00$$$$$$\x00\x00\x00\x00\x00\x00   \x00Vtscdg&eih&G&;&7*&D&;&+7&\x7f&E&;&+0&*&G&;&7*&D&;&+7&\x7f&E&;&+46(&\x00*\x00-\x00$$$$$$\x00\x00\x00\x00\x01\x00!!!!!!!!!@xte`;!Gnsltm`!ed!Db/!3en!Fs`en!@Y_3!*!CY!*!B!<!1!\x00+46(&\x00*\x00-\x00$$$$$$\x00\x00\x00\x00\x02\x00"""""]]]"]"""]"]]]"]""]"""]"""""]]]"]"""]"]]]"]]]"]]]]]"]]]"]"\x00(&\x00*\x00-\x00$$$$$$\x00\x00\x00\x00\x03\x00####\x7f#\\#*#\x7f#\x7f#\x7f#\\\\\x7f#_\x7f#\x7f#,\\_###,#\\\\\x7f#\x7f#\x7f#\x7f#\\\\\x7f#\\#_\\###\\\x7f#\\\\\x7f#\x7f\x00(&\x00*\x00-\x00$$$$$$\x00\x00\x00\x00\x04\x00$$$$x$[$X$x[x$x$[xx$*d$x+$[$X$$X[[$X$x[x$x$[xx$$$+$x$x$x$[xx[x\x00(&\x00*\x00-\x00$$$$$$\x00\x00\x00\x00\x05\x00%%%%yZZZ*YZZZ*yZZZyZyYZ*Z*%YZY%yZZZ*YZZZ*yZZZyZyZY%yZy%yZZZ-Z,\x00(&\x00*\x00-\x00$$$$$$\x00\x00\x00\x00\x06\x00\x00%%%yZZZ*YZZZ*yZZZyZyYZ*Z*%YZY%yZZZ*YZZZ*yZZZyZyZY%yZy%yZZZ-Z,\x00(&\x00*\x00-\x00$$$$$$\x00\x00\x00\x00\x00\x00        \x00YZZZ*yZZZyZyYZ*Z*%YZY%yZZZ*YZZZ*yZZZyZyZY%yZy%yZZZ-Z,\x00(&\x00*\x00-\x00$$$$$$\x00\x00\x00\x00\x01\x00!!!!!!!!!!!!!!!!!!!!,,,,,======!!DNG!?????,,,,,,\x00Y%yZy%yZZZ-Z,\x00(&\x00*\x00-\x00$$$$$$\x00\x00\x00\x00'
Mensaje descodificado.
Código:
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.
                                                                 
Tarea 1:
--------
1.- Implementa una calculadora en python que realice las operaciones
    de:                                                                     
        a) suma
        b) resta
        c) multi
        d) division
    
    Los valores de los operandos  y  operadores deben ser ingresados 
    por teclado. 100 Ptos.-

Tarea 2:
--------
1.- Implementa el calculo del determinante de una matriz de 3x3. Los 
    valores de la matriz se obtienen de un archivo binario  de  tipo
    c_int() donde estan grabados  los 9  valores. Este archivo tiene
    100  registros  de  9  valores cada uno. Utilicen randint(1,100)
    para generar los 9 numeros de los registros a grabar en  el FILE
    Binario. 100 Ptos.

Tarea 3:
--------
1.- Implemente el calculo de las raices de una ecuacion de 2do Grado.
    Los valores A, B y C deben ser ingresados por teclado. 100 Pts.

    Prueba con A = 1, B = -1 y C = -6 , A = 1, B = -1 y C = -20. 
   
         Ayuda: Formula de Ec. 2do Grado AX^2 + BX + C = 0 
     ___ _   _ ___ _  _   _     ___ _   _ ___ ___ _____ ___ _ 
    | _ ) | | | __| \| | /_\   / __| | | | __| _ \_   _| __| |
    | _ \ |_| | _|| .` |/ _ \  \__ \ |_| | _||   / | | | _||_|
    |___/\___/|___|_|\_/_/ \_\ |___/\___/|___|_|_\ |_| |___(_)

        
                    -----<<<<<<  EOF >>>>>------
Código para descodificar.
Código Python:
Ver original
  1. import struct
  2. f = open("/ruta/a/data.bin", "rb")
  3. for i in range(44):
  4.     s = f.read(82)
  5.     c, t = struct.unpack("H80s", s)
  6.     print ''.join(chr(ord(j)^c) for j in t[:t.index('\x00')])
  7. f.close()

Última edición por razpeitia; 22/05/2011 a las 10:27
  #11 (permalink)  
Antiguo 28/09/2015, 10:13
 
Fecha de Ingreso: septiembre-2015
Mensajes: 2
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: Archivo Binario Codificado

Hola razpeitia, lo que pasa es que también estoy intentando un archivo binario, la primera línea es esta: 'A\xb0\x00\x00<\xac\x00\x00\x04\xad\x00\x00\x84\xe 7\x00\x00\xd5\xdd\x01\x00\xd7\x80\x04\x00\xc02\x0f \x00U?\x13\x00\x0e\xbc\x12\x009\xb6\x10\x00-C\x0e\x00\x94\xec\x0b\x00\xdeH\n'

yo estoy intentando usar la función struct.unpack, pero no me funciona, ¿me podrías ayudar?

Muchas gracias

Etiquetas: binario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:31.