Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + automatización eficaz

Remover Metadatos de Imágenes

Nuestros ethical hackers explican que son los metadatos, que tipo de información contienen y para que son usados, también explican que ese tipo de información representan un riesgo para la seguridad, por tanto, explican la manera de eliminarlos usando la ImageIO.

Necesidad

Remover metadatos de imágenes con Java

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se está desarrollando una aplicación en Java.

  2. Se requiere remover los metadatos de las imágenes.

Solución

En términos generales los metadatos son, por así decirlo, datos de los datos, es decir, son aquellos datos que describen el contenido de los archivos o la información de los mismos. La información contenida en los metadatos puede variar de archivo a archivo, pero en su mayoría los metadatos hacen referencia a las características de los datos, el tipo de contenido, la calidad de la información, la ubicación de donde y cuando fue creado el archivo, entre otros.

La principal función de los metadatos es la de ampliar con información adicional la información obvia del archivo del que forman parte, esto con el fin de mejorar la calidad y efectividad de las búsquedas realizadas sobre dicho archivo en cualquier ámbito.

Las imágenes no son la excepción, estas también contienen metadatos, y dichos metadatos contienen información bastante especifica como información del dispositivo (marca y modelo), con el que fue realizada la imagen. En caso de ser una fotografía, pueden revelar la distancia a la que fue tomada, la cantidad de luz, si se uso o no flash y, en última instancia, la ubicación y el momento exacto en que fue realizada la imagen.

A partir de lo anterior, se puede concluir que el uso de metadatos en imágenes representa un riesgo para la seguridad puesto que se está revelando información que podría ser utilizada por un atacante con fines delictivos. Por ejemplo, un delincuente podría generar un patrón de ubicación de una persona a partir de la información de ubicación que revelan los metadatos de las imágenes que dicha persona sube a Internet, entonces, una vez desarrollado el patrón, el delincuente podría encontrar a la víctima con alguna finalidad peligrosa.

Ahora, si bien no es posible evitar la creación de los metadatos al realizar una imagen, si es posible eliminarlos, y precisamente de eso se trata esta solución, de como eliminar los metadatos de una imagen usando Java.

  1. Para eliminar los metadatos de una imagen se utiliza la biblioteca ImageIO.

  2. Lo primero que hay que hacer es importar las clases necesarias y definir el nombre de la clase.

    Metadata.java
    1
    2
    3
    4
    5
    import java.io.*;
    import javax.imageio.*;
    import java.awt.image.*;
    
    public class Metadata {
    
  3. Se crea el método main donde se llamará al método removeMetadata. Eso sí, se deben capturar los posibles errores que se puedan presentar.

    1
    2
    3
    4
    5
    6
    7
    8
    public static void main(String[] args) {
      try {
        removeMetadata("ski.jpg", "jpg");
      }
      catch (IOException e) {
        System.err.println("I/O Exception");
      }
    }
    
  4. El método removeMetadata se encarga de leer la imagen píxel por píxel, sin tener en cuenta otro tipo de dato. Este método recibe dos parámetros, el primero es la ruta donde se encuentra alojada la imagen y el segundo el tipo de imagen.

    1
    2
    public static void removeMetadata(String imagePath, String imageType)
       throws IOException {
    
  5. La imagen se lee y se vuelve a guardar. Al volverla al guardar se eliminan todos los metadatos.

    1
    2
    3
    4
       BufferedImage image = ImageIO.read(new File(imagePath));
       ImageIO.write(image, imageType, new File(imagePath));
      }
    }
    



Haz un comentario

Estado de los servicios - Términos de Uso