Hola!!

Esta entrada es sumamente pequeña y solamente de carácter informativo.

Neobits.org y @hecky tienen el placer de participar por segunda ocasión y de manera consecutiva en uno de los eventos de mayor importancia sobre seguridad informática en México, BugCON. Así pues me voy al Instituto Politécnico Nacional este Febrero =)

En esta ocasión de nuevo impartiré un taller, y contrario a lo que muchos puedan pensar, no sera relacionado con esteganografía.

El taller lleva por nombre:

Jugando wargames para desarrollar habilidades de Hacking

El taller nos definirá que es un wargame, ¿para que me sirve?, ¿como puedo participar en uno?, ¿Donde? etc…Se otorgara un wargame privado para los asistentes del taller y ellos procederán a resolverlo, al final en grupo se resolverán todos los retos con ayuda de todos para una sana retroalimentación. El wargame sera lo mas semejante a uno real y tendrá retos de todas las categorías.

Datos:

 

Detalles Técnicos y Requisitos:

  • El taller es de nivel Básico
  • Se requiere traer su Ordenador Portátil
  • Imprescindible tener Instalado Vmware y 7 Gb de espacio. (Se entregara una VM con un servidor local con las pruebas)

 

Quiero hacer hincapié en que el taller es de nivel Básico, así que si sois todos unos expertos o tienen mucha experiencia en estas cosas, podría recomendarles visitar los otros talleres de mis compañeros que se ven buenísimos. Pero si aún así estando bajo advertencia del nivel, deciden darme una oportunidad estaré completamente extasiado de compartir espacio con ustedes.

En cuanto al precio quiero aclarar yo no tengo ninguna injerencia en ello, la organización de BugCON se encarga de ello. Así mismo yo no recibiré ni un solo peso por mi participación, así que el taller no es algo lucrativo para mi, simplemente es por amor al “arte”.

Otro punto a aclarar es que hablando con la organización me comentan que las condiciones no son del todo aptas, por lo que posiblemente no me asignen maquinas, es por ello que se pide traer la propia (En caso de quedarse sin maquina, organizare otra actividad grupal con esas personas).

Así mismo me comentan que probablemente no habrá red puesto que la Institución sede, no lo proporciona, por lo que recomiendo Traer TODAS su herramientas que crean poder utilizar. Por la misma razón es que el wargame sera ofrecido en un servidor local, para no depender de la conexión a internet.

Sin mas si alguno de ustedes se anima espero verlos por esos lugares, y si nó, pasen a saludar =)

Saludos Y nos vemos en BugCON ;)

 

Las fiestas navideñas estan muy próximas, algunos ya festejan que estan de vacaciones, otros ya estan contando las posadas a las que iran…y otros (como yo) que no tienen dinero para nada, estan enfrente de su ordenador escribiendo entradas =P

La entrada de hoy no tiene nada que ver con esteganografía o seguridad informática. Simplemente es un `regalo navideño` que quiero compartir. Una de mis aplicaciones favoritas.

Los que me siguen (y aguantan) en twitter podran haber leido varios tweets donde hacia referencia a un reproductor de música muy especial.

MOC (Music On Console) o MOCP.

Ustedes se preguntaran, ¿Por qué tanto revuelo por un simple reproductor de Música?, ¿Qué tiene de especial?…Vamos a conocerlo paso a paso y ver si los logro convencer =)

¿Qué características tiene MOCP?

  • Es un programa para sistemas UNIX y LINUX
  • Es un programa CLI (Command Line Interface), osea que no es Grafico en sí. Funciona bajo linea de Comandos con una interfaz minimalista.
  • Puede reproducir en Segundo Plano
  • Es muy ligero en consumo de Memoria
  • Tiene todas las opciones comunes de un reproductor de Música
  • Es muy configurable
  • Tiene atajos muy fáciles de usar

Vamos, vamos…suena como `cualquier otro reproductor` ¿Por qué tanto alboroto?…Bueno antes de ver las partes escenciales, veamos como obtenerlo

Instalación

En Ubuntu y derivados Debian solo tenemos que usar el gestor de paquetes

1
apt-get install moc

O para compilarlo nosotros mismos ir a http://moc.daper.net/download

Para correrlo se ejecuta el comando “mocp“. Si se preguntan por que el paquete se llama moc y corremos “mocp“, es por que “moc” esta relacionado con una dependencia de qt y para prevenir problemas se renombro a mocp ;)

Cuando lo ejecutamos veremos nuestra shell de este modo:

Y podemos ingresar a la ayuda para ver los atajos simplemente apretando la tecla “h”

A continuación pongo los atajos que mas uso

1
2
3
4
5
6
7
8
9
10
11
12
13
q Segundo Plano
n Siguiente canción
b Previa
Q Salir
< Menos 1 en Volumen > Mas 1 en Volumen
, Menos 5 en Volumen
. Mas 5 en Volumen
A Agregar canciones de una carpeta Recursivamente
C Limpiar la Lista de Reproducción
z Agregar a cola de Reproducción
/ Buscar
SPACE Play/pause
TAB Saltar entre carpetas y Lista de Reprocucción

Listo ahora si empecemos a ver las amplias ventajas (que YO veo) que tiene frente a otros reproductores.

Consumo de Memoria

De los reproductores que llegue a probar en estos años, MOCP es el reproductor que mejor se comporta en consumo de memoria. Incluso contra otras aplicaciones que se supone de por si son ligeras. Ej:

Vean la gran diferencia entre MOCP y Google-Chrome (Claro que este es un navegador), pero vean contra mi terminal en gnome o contra un simple editor de texto (gedit). MOCP sigue consumiendo menos memoria que cada uno de estos.

Pero mejor veamos la prueba contra otros reproductores de música. Por ejemplo Totem que viene por default en Ubuntu y rhythmbox que es uno tambien muy ligero y que antes usaba. Los tres están en el momento de la captura, reproduciendo una canción.

Como veran la diferencia es NOTABLE.En mis pruebas mocp no me rebasaba los 3.0Mb por mas que lo usara =)

Segundo Plano

Una de las características que mas me ha gustado de MOCP sin duda alguna es su capacidad de ejecutarse en segundo plano como demonio. Esto quiere decir que yo puedo cerrar MOCP y la terminal y seguirá reproduciendo música sin ningún tipo de problema.

Para cerrar MOCP simplemente apretar la tecla “q” (de quit) y lo dejara ejecutando en segundo plano. Si se desea salir COMPLETAMENTE se aprieta “Q” (notar que ahora es Mayúscula == SHIFT+q)

Esta habilidad hace permite que en sistemas donde no existe entorno grafico, tengamos un reproductor de Música completamente accesible =). Incluso desde una Terminal “tty” podemos correrlo.

Prueben con dejar reproduciendo música en segundo plano, ingresen a la terminal “tty1″ con CTRL+ALT+F1 (La música dejara de tocar), pero al ingresar con el usuario seguirá tocando donde se quedo. Pueden controlar desde esta terminal mocp…Para regresar a su entorno gráfico apretar CTRL+ALT+F7

Configurable

Otra cosa que llama mucho la atención es que MOCP es sumamente configurable. Tiene su propio archivo de configuración, aunque por defecto no esta situado. Así que lo tenemos que situar en ~/.moc Para esto ejecutaremos los siguiente comandos:

1
2
3
cp /usr/share/doc/moc/examples/config.example.gz ~/.moc/
cd !$ && gunzip config.example.gz
mv !$ config

Con eso ya tenemos archivo de configuración y podemos editarlo con cualquier editor de texto (nano,gedit,kate,vi,etc…)

Este archivo esta perfectamente explicado así que no hace falta lo explique mas. Y por si alguien esta interesado el mio lo tengo así a mi gusto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ReadTags = yes
Repeat = no
Shuffle = yes
AutoNext = yes
FormatString = "%(t:%t - :)%(a:%a:)%(A: \(%A\):)"
ShowHiddenFiles = no
StartInMusicDir = no
HideFileExtension = no
ShowFormat = no
ShowTime = IfAvailable
Theme = hecky.txt
UseMmap = no
SavePlaylist = yes
ASCIILines = no
Layout2 = "directory:0,0,50%,100% playlist:50%,0,50%,100%"
Layout1 = "playlist:0,0,70%,100% directory:70%,0,30%,100%"
FollowPlayedFile = yes
CanStartInPlaylist = yes
PlaylistFullPaths = no
MessageLingerTime = 1
ModPlug_NoiseReduction = yes

Themes

Otra cosa hermosa es que MOCP acepta incluso configures el “tema” para mejorar el aspecto. Para esto en ~/.moc debe existir la carpeta themes/ y ahí poner su tema.

1
mkdir ~/.moc/themes && cp hecky.txt ~/.moc/themes

Mi theme es este: hecky.txt Y para activarlo cada vez que iniciamos MOCP en el config debemos editar esta linea

1
Theme = hecky.txt

Despues de estas molestias…CON SUERTE puedan llegar a tener un reproductor tan bonito como el mio que tengo justo ahora:

Como verán MOCP es una de mis aplicaciones geek favoritas y no la cambio por nada ya que soy fanatico de los “bueno, bonito y barato” y sobretodo “eficaz,configurable,minimalista y ligero“. Bueno espero los haya podido convencer y si no fue así…que “Windows” y “iTunes” se apiade de sus almas =P

Saludos ;)

Atte. hecky

hecky@neobits.org

Sigueme en twitter: http://twitter.com/hecky

 

En este dia que fue elegido por que era el dia mas especial del año para mi, les presento en el ultimo proyecto que estuve trabajando….

Horrografia!!!

< Presentación para Usuarios >

¿Qué es Horrografia?

Horrografia es un programa que oculta un mensaje de texto plano en otro mensaje de texto plano. Ideal para las redes sociales (Sobre todo para adolescentes en Facebook)

¿Cómo funciona?

Horrografia oculta tu mensaje secreto “dentro” de otro mensaje que sera el visible. Y esto lo hace modificando el mensaje visible cambiando algunas letras a mayusculas y minusculas.

¿Que necesito para que funcione?

.-Por cada letra que quieras esconder, necesitas 5 letras en el portador.
.-No puedes esconder la Ñ (marcara error)
.-Solo puedes esconder los siguientes caracteres:

¿Por que es ideal para Redes Sociales?

.-Con la cantidad de mensajes que enviAN al dia en Facebook o la cantidad de mensajes que enviaMOS en twitter, podemos sacarle provecho para algo
.-Muchos usuarios jovenes, sobre todo en Facebook suelen escribir de esta forma:


..Y esta manera nos es ideal para ocultar algo y que pase COMPLETAMENTE desapercibido

¿Por qué la usaría?

Ultimamente se han visto casos donde el gobierno esta reprimiendo nuestra libertad de expresion, sobre todo con el caso de la “Ley Duarte” y el usuario de twitter que por publicar fue llevado como sospechoso.

Horrografia nos ofrece una manera de poder expresar nuestra opinion de una manera segura y privada.

¿Por que se llama Horrografia?

Bueno se me ocurrió llamarle así, ya que es un juego de palabras muy conocido de “Horror” + “Ortografia” y como el resultado es un texto muy mal escrito, queda perfecto ^.^

¿Funciona?

Claro que funciona he estado probando y hasta ahora nadie a descubierto o sospechado* de estos mensajes ocultos. Yo en twitter puse algunos mensajes, con esta tecnica y pasaron desapercibido hasta ahora con mis 933 seguidores.

Basta de palabrerias, vamos a la accion!!

Ejemplos:

Que se habra imaginado el “Gobernado de Veracruz Javier Duarte” al manderle este tweet (Para el que no lo sepa Duarte encarcelo a dos personas de Veracruz por unos tweets y creo una ley en el estado que castiga a quien altere el orden por cualquier medio, incluido redes sociales)

yO no se uSTedES, perO La VErdad @javier_DUarTe eS mi iDolo =P =) RT

Habra creido que realmente es mi idolo?? Dira otra cosa?? Sea como sea obviamente hubo reacciones hacia este tweet

Lo que no sabian es que decia otra cosa…Con todo respeto dedicandole el mensaje oculto señor “Gobernador”

TextoEscondido: ignorante

…..

Alguien “hackeo” mi cuenta de twitter y escribio esto por mi?

iIo Amoo amii nOViIa,i NOp mE iiMportA para nothiNg haBlaR azzii oki!?? alGuieN, alGun problEmaa o ke? =)

TextoEscondido: LaGuerraSeAcerca

…..

Uno de mis favoritos, esta dedicado al señor pr351d3nt3 de México, Fel1pe C4lderon. Tweet

ustedEs quE opInaN del SeñOr @felIPecaLDeRon??

Texto Escondido: ¿¿??

Otros:

prONTo EStARe libErando UNa TecNIcA que espero leS pArEcera muy iNTEresaNte =) SeRvIra Para reaLIzAR estEGAnoGrafia En rEdeS SoCIales =) ^.^

koN MUxIIsHImo orGushoo DIgO keE IiO tengo la mas mEjOr “HorrografIA” De stoS laReS, a PocO no? =)

uN parANGAriCuTirIMiCUAro, Va a ParANGArIcutIMirIzar Con paRAngaricuTIrimICuIzaDOr A un parangarICUtirIMIAcUAro!! 0_0

Ya que hemos visto ejemplo de como se ve la técnica veamos la herramienta para realizarlo. He desarrollado un servicio Web desde donde realizarlo o un Programa para windows para hacerlo desde la comodidad de nuestro hogar.

Horrografia-Online y Horrografia.exe

Horrografia-Online

Podemos encontrar Horrografia desde http://neobits.org/tools/horrografia.php Donde encontraremos 2 Botones. Ocultar y Recuperar

Ocultar: Simplemente poner el mensaje a Ocultar y el texto portador y nos regresara automaticamente nuestro texto portador modificado.

Recuperar: Solamente escribir el texto “horrografiado” Y nos regresara el mensaje oculto.

Horrografia.exe

Se puede descargar desde http://neobits.org/tools/horrografia.rar

Este sencillo programa de interfaz simple, es muy intuitiva y es igual a la version web. Asi que no necesita mas explicación.


< Detalles Técnicos >

La presentación de arriba esta pensada para usuarios normales que puedan llegar a este articulo, la siguiente parte esta dedicada para informáticos o personas que quieran conocer los detalles tecnicos.

¿Como funciona?

Horrografia es simplemente la IMPLEMENTACIÓN de la “Cifra de Bacon“, al igual que la cifra de Bacon hacemos uso de 5 bits y lo aplicamos a los caracteres ASCII, convirtiendolos a mayuscula o minuscula.

Debido a que se implementa en los caracteres ASCII, es que los caracteres “Ñ” acentos y demas no son soportados (UTF-8)

Horrografia esta Basado en la cifra original de Bacon, aunque la amplié un poco mas hasta ocupar completamente los 5 bits “11111

< Sobre el algoritmo >

Como todo programa,Horrografia tiene sus pros, contras y limitaciones. Aparte de los caracteres restringidos que se pueden ocultar, algo que cabe destacar es que si el texto portador rebasa por mucho la (longitud del texto oculto) * 5 esto al recuperar, agregara basura…Ejemplo:

Texto a ocultar:

1
hecky

Texto Portador:

1
Este es una prueba de un mensaje extremadamente largo. Esto al Recuperar...OBVIAMENTE causara problemas ='(

Texto Horrografiado:

1
esTE Es uNa prueBa dE un MEnSAje extremadamente largo. Esto al Recuperar...OBVIAMENTE causara problemas ='(

Recuperacion:

heckyaaaaria@@aaa

En el ejemplo claramente se ve el problema expuesto, esto sucede por que el mensaje a ocultar “hecky” solo necesitaba 25 caracteres ASCII Osea “Este es una prueba de un mensaj” con eso bastaba, sin embargo al escribir mas siguio decodificando y al encontrar en su mayoria minusculas agrega “a” pero las mayusculas “E” -> “Esto“, “R” -> “Recuperar” , -> “OBVIAMENTE”, hace que se convierta en “aaaaria@@aaa” al decodificar y esta basura no era parte de nuestro mensaje a ocultar.

Con un mensaje justo de los caracteres necesarios, todo funciona perfectamente.

< Sobre Horrografia.exe >

Esta aplicación esta programana en Python 2.7, para el GUI se eligio WX por su facilidad y la exportación se hizo con py2exe. Lamentablemente esto hizo que el script original y funcional de 40.2Kb se convirtiera en un ejecutable de 16M.B por todas las dependencias. Asi mismo se penso empaquetar el ejecutable con la mejor compresion de UPX pero si acaso se reducia en 1.5Mb el peso con la desventaja de que algunos AV podrian lanzar falsos positivos por usar UPX, asi que se dejo como estaba.

La aplicación GUI requiere de 2 imagenes (.png e .ico) Las cuales se forman dentro del script y se localizaran en C:\Windows\Temp y al salir con el boton “Salir” se eliminaran. Sin embargo si se mata la aplicacion de otra manera, estas permaneceran.

Nota: No se recomienda ejecutar la aplicación con permisos Administrativos ya que esto causara que las imágenes creadas en C:\Windows\Temp tengan permisos de Administrador y si despues se vuelve a ejecutar la aplicacion con permisos restringidos y no se eliminaron las imagenes, puede que la aplicacion al intentar sobreescribirlas, usarlas y/o borrarlas cause conflicto.

< Horrografia sobre entornos Linux >

El programa originalmente se hizo bajo entornos linux por lo que tengo 2 scripts completamente funcionales para linux de la aplicacion en version GUI y CLI. Personalmente la que he estado usando es la CLI.

Sin embargo hasta ahora no tengo plan alguno de liberar los scripts, y la razon es que la version CLI son 252 lineas de codigo, codigo feo y que facilmente cualquier pudo realizar en menos lineas. Asi que mi razon es verguenza de mi codigo =(

Sin embargo para usuarios Ubunteros, de Mint, y derivados Debian, pueden usar wine, ya que es 100% compatible.

Y para usuarios no derivados de Debian, recomiendo la version de Horrografia-Online.

Si llegara haber demanda sobre los scripts podria limpiarlos esteticamente un poco y liberar los scripts.

…..
….

..
.

buEno Sin mAS poR ahoRa, estA Es mi horrOGrafIA eSpeRO lEs guste la ideA y LeS pueda serVIR En estOS tiEmpOS EN loS Que caDa veZ Es Mas diFiCil tEneR pRivaCIDAd y lIBeRTad de exPResión.

P.D ustedEs quE opInaN del SeñOr @felIPecaLDeRon??

Ir a Horrografia-Online

Descarga Horrografia.exe

 

Saludos ;)

Atte. hecky

hecky@neobits.org

Sigueme en twitter: http://twitter.com/hecky

Tagged with:
 

Hola en esta entrada quiero compartir un documento que hice para un curso online que tome en UniversIT y que tuve la fortuna de que mi instructor fuera el profesional reconocido Roberto Martinez, el curso era sobre “Digital Forensics Fundamental Skills” y en una sesión sobre formatos de archivos me ofrecí a realizar un documento de como por ejemplo yo en un reto de un wargame me tuve que iniciar en el estudio de un Formato.

Así que aquí comparto dicho documento sobre el formato PNG y como aplique ese estudio a la resolución del reto. Al final se adjunta este mismo documento en PDF para quien prefiera descargarlo


Escenario:

Se nos proporciona una Imagen png corrompida, en algunos visores se puede ver parte de ella y en otros no se abre. La imagen forma parte de un reto de un wargame (El cual no mencionare para no aurrinar dicho reto)

Objetivos:

  • Demostrar como iniciarse con el analisis de un formato desconocido.
  • Documentarse y aprender aspectos basicos del formato PNG
  • Reparar la imagen para que sea completamente visible.

Abordaje:

  • Se mostrara como es posible realizarlo bajo entornos Windows y Linux (Es indistinto ya que el formato no cambia)
  • Se mostraran herramientas similares en ambos entornos y diferentes maneras de realizarlo.

Imagen:

Se puede descargar de http://neobits.org/retos/analizapng/reto.png

Como se alcanza a apreciar solo se ve una parte y este visor (gwenview en linux) toma lo demas como transparencia.

En windows por ejemplo el icono “preview” de la imagen igualmente se ve esa transparencia, y el visor por defecto de windows lo muestra asi:

Pero algunos visores no lo pueden abrir ya que identifican error en el formato, Ej (eog en linux)

Por ejemplo internet explorer tampoco muestra parte de la imagen ya que lo toma como error. Google Chrome y firefox si nos muestra una parte de esa imagen.

eog nos arrojó informacion de donde esta el error. “PNG: IDAT: CRC error” esto poco a poco lo iremos entendiendo.

Pero ahora que hacer? Necesitamos documentarnos!!

El PNG es un formato bastante conocido y muy bien documentado en Internet, sin embargo para mi la mejor documentación sobre este formato que podria haber encontrado esta en:

http://www.w3.org/TR/PNG/

Aqui encontraremos una INMENSA cantidad de información de como trabaja el PNG. Como esta no es una guia del formato PNG, sino una resolución al problema plateado, resumire rapidamente cuestiones básicas que necesitaremos saber,

  • Todo PNG comienza con su firma (0×89 0×50 0x4E 0×47 0x0D 0x0A 0x1A 0x0A )
  • Los PNG tienen la característica de poseer chunks (Fragmento de información caracteristica de formatos multimedia)
  • El PNG tiene 18 diferentes tipos de chunks cada uno con su especificación
  • El chunk IDAT es la que contiene la información de la imagen en si.

Parte importante es saber la estructura de los chunks y en el siguiente apartado se explica perfectamente  http://www.w3.org/TR/PNG/#5Chunk-layout

Todo chunk sigue esta especificacion:

El chunk IDAT trabaja con la primera especificación. Pero ahora veamos cuantos bytes ocupa esta especificación.

  1. 4 bytes para el tamaño de dicho chunk. El tamaño que se especifica SOLO ES PARA LA INFORMACION DEL CHUNK (no incluye los 4 bytes del tamaño, 4 bytes del tipo de chunk y 4 bytes del CRC)
  2. 4 bytes para el tipo de chunk que estan en texto plano y se pueden consultar los 18 tipos aqui
  3. La información del chunk ocupa el numero de bytes que se indico en el LENGTH
  4. El CRC ocupa 4 bytes y calcula el crc32sum del CHUNK TYPE y del CHUNK DATA

Vale mucha teoria? La verdad no, se los deje de lo mejor resumido y con los ejemplos quedara
entendido perfectamente.

Veamos un ejemplo:

Esta es la forma que se ve hexadecimalmente el png. El editor hexadecimal aqui usado es Winhex bajo Windows, Winhex tiene la opcion de colorear ciertas partes para hacerlo mas identificable.

En el ejemplo vemos 4 colores que corresponden a;

  • Amarillo  ->   Firma PNG (Solo una vez y en todo png)
  • Verde        ->   Longitud de la información del chunk
  • Rojo          ->   Tipo/Nombre del chunk
  • Blanco      ->   Información del chunk
  • Azul           ->   CRC calculado del chunk (crc32sum de Rojo+Blanco)

Calcular Longitud:

Para calcular la longitud se debe pasar de hexadecimal a decimal para saber cuantos bytes. Se puede hacer con la calculadora en linux, windows o la fisica. Simplemente elegir el modo programador y listo. Yo lo hice mas rapido con php y la funcion hexdec();

Vemos las longitudes respectivamente y asi sabemos la longitud de información que tiene cada chunk:

  • IHDR 13 bytes de información
  • tEXt 71 bytes de información
  • sRGB 1 byte de información
  • IDAT 8192 bytes de información (Primer IDAT)

Calcular CRC:

Ahora hare uso de otro excelente editor hexadecimal, ahora en linux (OKTETA) Por su facilidad de calcular el crc32sum y mostrarme numero de bytes seleccionados es mi preferido para esta tarea en especifico.

Recordemos que para realizar el calculo del CRC del chunk se debe seleccionar los bytes de informacion del chunk mas el nombre del chunk. Y al final de la información del chunk estaran los 4 bytes que son el CRC.

Veamos un ejemplo de como se calcularia ERRONEAMENTE EL CRC. En el siguiente ejemplo solo se seleccionan los 13 bytes de informacion del chunk IHDR, lo cual al calcular el CRC nos da diferente a lo que debiamos

Ahora veamos como seria lo correcto para el calculo del CRC del chunk IHDR

Ya en este caso elegimos los 13 bytes de la informacion + 4 bytes del nombre del chunk y nos da el CRC correcto =). Lo mismo lo podemos hacer para los demas.

Ahora rapidamente con winhex se selccionan los bytes tambien y nos dirigimos a “Tools>ComputeHash” (Herramientas>Calcular Hash) seleccionamos CRC32 y nos lo calculara de la misma manera.

Ya entendimos (espero) como esta conformado esto pero ahora donde buscamos el error? Bueno lo
podemos hacer de varias maneras.

1.- La teoria dice que los chunks IDAT son los que contiene la información de la imagen en si. Asi que si un pedazo no se ve, podemos decir que el problema esta en este chunk.

2.- Esta ya la hicimos de hecho. Al abrirlo con eog en linux no dio el error: “PNG: IDAT: CRC error” Lo mismo pasa con el visor Irfanview en windows.

Asi que aqui ya nos dice que el error esta en el chunk IDAT y que el crc32sum calculado para ese chunk no corresponde, osease alteraron una parte (bytes) dentro de este chunk.

3.- En windows existe un programa llamado “Tweakpng.exe” que nos ayuda a identificar errores en los PNG

Aqui Tweakpng nos identifica el mismo error que en los anteriores casos dedujimos y nos dice que CRC tiene y cual DEBERIA tener.

4.- Por ultimo tenemos ahora una utilidad para linux llamada “Pngcrush” que igualmente nos puede identificar error y corregirlo (si le es posible)

Bastara con correr el siguiente comando.

1
$pngcrush -fix reto.png out

Y esto repararia si es posible, en esta caso no lo fue, pero nos ayudo a identificar el problema tambien.

PreConclusión:

Hay un chunk IDAT que esta dañado y por ello no concuerda el CRC. Y ahora?

Alguien hasta ahorita que han leido este manual se preguntó ¿Cuantos chunks IDAT puede tener un PNG?

R = Puede contener muchos.

Osease que aqui nosotros estamos con el primer chunk IDAT que vemos. Pero veamos cuantos tiene nuestro archivo.

En Winhex busquemos la cadena “IDAT” con CTRL+F y activando “Count Occurrences” o en linux con el comando;

1
$strings reto.png | grep IDAT -c

Bueno tenemos 96 IDATS ¿Cual es?

Esta parte seria de todas la tardada. Lo que hice fue ir checando el CRC de cada IDAT.

Por ejemplo el del primer IDAT si recuendan eran (0×00 0×00 0×20 0×00) 8192 bytes de información + 4 del nombre IDAT = 8196

Asi que el CRC de ese IDAT es:

Este IDAT Esta correcto, asi que tendremos que hacer esto con todos los demas, y el que este incorrecto analizar por que esta incorrecto y corregirlo.

Afortunadamente el error (les puedo adelantar) esta dentro de los primeros 10 IDAT (no digo cual para animarlos a que lo hagan)

Veamos este IDAT

El nombre del chunk esta bien y la longitud dice que es; (0×00 0×00 0×10 0×00) == 4096

Ahora yo rapidamente analizando los IDAT vi que habia 3 valores en longitud nada mas.

0×00002000 == 8192 (94 IDAT)
0×00001000 == 4096 ( 1 IDAT)
0x000014BF == 5311 ( 1 IDAT)

Asi que analizaremos ese IDAT.

Si la longitud es de 4096 y el nombre del IDAT ocupa 4 bytes. 4096+4 = 5000. Osea despues de 5000
bytes debe comenzar el otro IDAT.

Sin embargo despues de 5000 bytes no se encuentra el IDAT. Aqui esta el error!!!
Si partimos de la premisa de que todos los IDAT deben ser del mismo tamaño entonces vemos que la longitud de este IDAT esta mal. El siguiente IDAT se encuentra 4096 bytes despues de los 4096 ( o 5000 contando el nombre del chunk) entonces 4096+4096= 8192

Y 8192 (base 10) == 0×00002000 (base 16)

Ya lo tenemos!!!

Tenemos que corregir la longitud de ese chunk. Osea nada mas cambiar el byte 0×10 por 0×20

Lo guardamos!!! Y…….

Perfecto reto pasado!! (Borro la respuesta del reto para no aurrinarlo)

Muy dificil? Yo no sabia mucho de este formato y me tuve que documentar todo lo que les explique aqui, la verdad fuera de lo facil,dificil y las 2 horas que me tomo hacer esto, fue muy INSTRUCTIVO.

Diran, TANTO PARA ESTO? Un solo numerito? Quiero terminar con un cuento clasico (mi resumen =P) en estas ocasiones:

“Un señor tiene la mejor computadora del mundo, un dia deja de funcionar, llama al técnico y le dice que la repare.
El técnico la revisa y dice…Ya se que tiene!! Va a su maletin y saca un desarmador, aprieta un tornillo que estaba flojo y la computadora funciono. Se acerca al dueño y le dice son $1000 USD?
>Mil dolares? Por apretar un tornillo, eso yo lo pude hacer. Quiero me de una factura de sus servicios.

Apretar un Tornillo $1 USD
Saber que tornillo apretar $999 USD”

En este caso solo cambiamos un byte.

Pero lo que aprendimos fue que byte, de 784844 bytes que eran. Y considerando que valor deberia tener ya que un byte podia tener 256 posibles valores.

Asi que creo aprendimos bastante en esto. Pero lo mas importante; que un formato desconocido no nos va a detener y documentandonos bien podemos lograr cosas CHULAS!!!

Esto es todo, espero les agradara el manual y ya saben cualquier duda decirmelo.

Dedicado:
#UniversIT
Course:  Digital Forensics Fundamental Skills

Documento Análisis y Reparación de una imagen PNG corrompida [PDF]

Saludos ;)

Atte. hecky

hecky@neobits.org

Sigueme en twitter: http://twitter.com/hecky

 
Navega1234...10...Última »