Ir al contenido principal

Archivos de imagen: comparaciones de la estructura de los archivos

Obtener los archivos de imagen ofrecidos como prueba en su formato original.

De ser posible solicitar dos o más archivos indubitados tomados a partir del mismo dispositivo. Colocar todos los archivos en la misma carpeta


1. Descargar el aplicativo mediainfo.exe:

1.1. Dirigirse al sitio web: https://mediaarea.net/en/MediaInfo/Download/Windows 

1.2. Identificar la versión CLI de 32 o 64 bits y descargarla. A la fecha el link de descarga directo es:

https://mediaarea.net/download/binary/mediainfo/21.03/MediaInfo_CLI_21.03_Windows_x64.zip

1.3. Descomprimir la carpeta y extraer el archivo mediainfo.exe

2. Crear el archivo mediainfo.bat con el siguiente contenido:

for %%f in (.\IMG\*) do mediainfo --Details=1 --Output=XML "%%f" >> "%%f.xml"
PAUSE

2.1. Colocar el archivo mediainfo.exe y mediainfo.bat en una carpeta. Crear dentro de esa carpeta una subcarpeta de nombre IMG. Colocar todos los archivos a peritar en la subcarpeta IMG.

2.2. Ejecutar el archivo mediainfo.bat. Se generará dentro de la subcarpeta IMG un archivo xml por cada archivo de imagen obrante en dicha carpeta.

3. Realizar una comparación entre la estructura de uno de los archivos indubitados y la estructura del resto de los archivos. Verificar que no existan diferencias entre los archivos indubitados obrantes en la carpeta. 

Observar y analizar las diferencias entre archivos dubitados e indubitados. Identificar patrones que puedan indicar alteraciones. Realizar la alteración manual de una imagen almacenándola con otro nombre y observar las diferencias que se presentan.

Para ello configurar el siguiente programa Python.


import difflib as dl
import xml.etree.ElementTree as ET
import os

directory = r'D:\_UltimosPeritajes\'
extension = '.xml'
archivoIndubitadoTree = ET.ElementTree(file=r'D:\_UltimosPeritajes\PTT-20200523-WA0179.opus.xml')
compararCantidadDeLineas = 100

archivoIndubitadoListado = []  
listado = []  

indent = 0
ignoreElems = ['displayNameKey', 'displayName']

def printRecur(root):
    """Recursively prints the tree."""
    if root.tag in ignoreElems:
        return
    global indent
    global listado
    
    linea = ' '*indent + '%s: %s' % (root.tag.title(), root.attrib.get('name', root.text))
    # print (linea)
    listado.append(linea)
    indent += 4
    for elem in root.getchildren():
        printRecur(elem)
    indent -= 4

archivoIndubitadoRoot = archivoIndubitadoTree.getroot()
printRecur(archivoIndubitadoRoot)
archivoIndubitadoListado = listado
listado = []

archivoIndubitadoListadoTruncado = archivoIndubitadoListado[:compararCantidadDeLineas]

diferenciasListado = []
for filename in os.listdir(directory):
    if (filename.endswith(extension)):
        print(os.path.join(directory, filename))
        filenameTxt = filename + '.txt'

        archivoDubitadoTree = ET.ElementTree(file=os.path.join(directory, filename))
        archivoDubitadoListado = []
        
        archivoDubitadoRoot = archivoDubitadoTree.getroot()
        printRecur(archivoDubitadoRoot)
        archivoDubitadoListado = listado
        archivoDubitadoListadoTruncado=archivoDubitadoListado[:compararCantidadDeLineas]
        listado = []
        
        contadorDeLineas = 0           
        with open(os.path.join(directory, filenameTxt), 'w') as f:
            diferencias = []
            for diff in dl.context_diff(archivoIndubitadoListadoTruncado, archivoDubitadoListadoTruncado):
                f.write(diff)
                f.write('\n')
                diferencias.append(diff)
        diferenciasListado.append((filename, diferencias))
                
                
    else:
        continue
    
    diferenciasListadoArchivos = []
    for tupla in diferenciasListado:
        if( tupla[1] ): 
            diferenciasListadoArchivos.append(tupla)
    
primerElemento = diferenciasListadoArchivos[0]
for tupla in diferenciasListadoArchivos:
    if (tupla[1] != primerElemento[1]): 
        print (tupla[0] + " diferente ")


2. Descargar MozJPEG

https://mozjpeg.codelove.de/binaries.html

utilizar el aplicativo djpeg.exe para obtener la tabla de cuantización.



Comentarios