En posts anteriores hablamos sobre los metadatos y el porque son importantes en la Seguridad Informática, vimos el manejo de algunas herramientas free disponibles en la red y como sacarles provecho para nuestras investigaciones de pentesting. Una de esas herramientas fue Exiftool una pequeña pero poderosa herramienta escrita en Perl, multiplataforma y capaz de leer, editar o escribir metadatos de una gran variedad de archivos, pero tenia un pequeño inconveniente, funciona por linea de comandos.
Si bien Exiftool te brinda las fuentes para que tu puedas redistribuirlo y/o modificarlo bajo los términos de licencia de Perl, también podemos hacer uso de algunas librerías como «Java ExifTool» programado por Mickael Jeanroy quien se tomo el tiempo de implementar las funcionalidades de Exiftool en una pequeña y cómoda api para el lenguje Java. Según nos cuenta en su web, el objetivo de ese proyecto es el de proporcionar una integración tan precisa, bien diseñada y con un rendimiento tan exacto que cualquier desarrollador de Java pueda aprovechar las ventajas y robustez de ExifTool.
A continuación implementaremos un ejemplo de uso de esta útil biblioteca.
¿Que necesitamos?
Paso 1: El Proyecto
Crea un nuevo proyecto maven en tu IDE favorito con el nombre de JExifTool y añade una clase Main
Paso 2: Dependencias
Agrega la siguiente dependencia:
<dependency> <groupId>com.github.mjeanroy</groupId> <artifactId>exiftool-lib</artifactId> <version>2.1.0</version> </dependency>
Paso 3: Opcional
Si descargaste Exiftool e instalaste este en el PATH de windows, puedes saltar este paso, caso contrario.
Cuando se ejecuta el proyecto junto a la librería, este buscara el *.exe de la aplicación, si este ya esta incluido en el PATH del sistema la aplicación se ejecutara sin problema, sino, debes agregar el *.exe en la carpeta base del proyecto como se ve en la imagen siguiente.
Igualmente si creas el *.jar junto a una GUI, debes incluir el *.exe de Exiftool en la misma carpeta que el jar ejecutable.
Paso 4: La clase Main
Pega el siguiente código en la clase Main.java
package example.org.jexiftool; import com.thebuzzmedia.exiftool.ExifTool; import com.thebuzzmedia.exiftool.ExifToolBuilder; import com.thebuzzmedia.exiftool.Tag; import com.thebuzzmedia.exiftool.core.StandardTag; import java.io.File; import java.util.Map; import static java.util.Arrays.asList; import java.util.HashMap; /** * @see https://www.jc-mouse.net/ * @author mouse */ public class Main { /** * @param image de tipo File, archivo con la direccion del archivo de imagen a leer/editar * @param meta Map con los metadatos a editar/agregar * @return Map metadatos leidos del archivo "image", si no lee ningun metadatos retorna * un Map vacio, si se produce un error retorna NULL * @exception Exception */ public static Map<Tag, String> process(File image, Map<Tag, String> meta) throws Exception { try { ExifTool exifTool = new ExifToolBuilder().build(); //Escritura de metadatos if(meta!=null){ exifTool.setImageMeta(image, meta); } //lee y retorna metadatos return exifTool.getImageMeta(image, asList( StandardTag.TITLE, StandardTag.COPYRIGHT, StandardTag.ISO, StandardTag.IMAGE_WIDTH, StandardTag.IMAGE_HEIGHT, StandardTag.EXIF_VERSION, StandardTag.GPS_LATITUDE, StandardTag.GPS_LONGITUDE, StandardTag.X_RESOLUTION, StandardTag.Y_RESOLUTION )); } catch (Exception ex) { return null; } } public static void main(String[] args) throws Exception { //metadatos a escribir Map<Tag, String> meta = new HashMap<>(); meta.put(StandardTag.COPYRIGHT, "JC Mouse"); meta.put(StandardTag.TITLE, "Mi Foto"); //lee metadatos y asigna a un Map Map<Tag, String> metadatos = process(new File("E:/images/DSC_95510.jpg"), meta); //muestra metadatos por consola metadatos.entrySet().stream().forEach((entry) -> { System.out.println(entry.getKey() + ": " + entry.getValue()); }); } }
Donde en el método process, le pasamos un nuevo File con la dirección del archivo de imagen que queremos leer/editar metadatos.
Ejecutamos y obtenemos
enjoy!!!
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
Un gráfico de barras es una forma de resumir un conjunto de datos por categorías. Muestra los datos usando varias barras...
Guardar un reporte PDF creado en iReport no es tan diferente de solo visualizarlo en pantalla. En este ejemplo se hace u...
En un post anterior vimos como usar la herramienta XJC del JDK para generar clases java desde esquemas XSD (XML Schema D...
Código Único de Factura para el Nuevo Sistema de Facturación Electrónica en Bolivia desarrollado en el lenguaje PHP 7 (H...
Autenticación en una pagina web es el proceso de confirmar que un usuario es quien dice ser, asi de simple. En el siguie...
En este post te enseñamos a utilizar SCRCPY, esta es un aplicación de duplicación de pantalla gratuita y de código abier...
Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...
Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...
En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...